<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <id>https://vlnn.dev/</id>
 <title>Notes — @vlnn</title>
 <subtitle>Working notes of Volodymyr Anokhin</subtitle>
 <link rel="alternate" href="https://vlnn.dev/"/>
 <link rel="self" type="application/atom+xml" href="https://vlnn.dev/atom.xml"/>
 <updated>2026-08-02T00:00:00Z</updated>
 <author>
  <name>Volodymyr Anokhin</name>
 </author>
 <entry>
  <id>https://vlnn.dev/?stack=atom-added-to-rss</id>
  <title>Atom Added To Rss</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=atom-added-to-rss"/>
  <updated>2026-08-02T00:00:00Z</updated>
  <content type="html">&lt;p&gt;After reading &lt;a href=&quot;https://chrismorgan.info/atom%3Erss&quot;&gt;&quot;Atom is better than RSS,
in ways that matter&quot; rant&lt;/a&gt; and not really being too impressed, I still implemented atom support for this site, but not removing rss. I couldn't find a good case where RSS is not working for my kind of the content, but here the backward compatibility wins for me: I want my 3 subscribers not to lose the updates.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=popups-are-bad-mkay</id>
  <title>Popups are bad, Mkay?</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=popups-are-bad-mkay"/>
  <updated>2026-08-01T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Popups on websites are one of the most invasive and focus-eating things (to me)
&lt;/p&gt;&lt;p&gt;Those sites are usually creatively and beautifully made; the info is wonderful; the fonts are artful and easy-to-read. But by some reason every time I'm moving the mouse around these sites (among thousands of others) they start to explode in my face.
&lt;/p&gt;&lt;p&gt;Two things I hate the most:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;duplication of the information as in &lt;code class=&quot;inline-verbatim&quot;&gt;duplication of the information&lt;/code&gt; because the `information being duplicated` and my brain hates it. I guess you understand how duplicated the information can become and how hateful it is. See how same info is in the popup and in the status line:
    &lt;img src=&quot;https://vlnn.dev/static/popup.png&quot;&gt;
&lt;/li&gt;&lt;li&gt;hiding of things I was just reading, and now I suddenly can't anymore, just because I was courageous enough to move the cursor over the &lt;span class=&quot;underline&quot; style=&quot;text-decoration: underline;&quot;&gt;text I'm fucking trying to read&lt;/span&gt;:
    &lt;img src=&quot;https://vlnn.dev/static/popup2.png&quot;&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Strange thing that people care to invest their time and attention to making those. And I'm speaking about people whos design abilities are much higher than mine, I mean I even stole the design from Andy!
&lt;/p&gt;&lt;p&gt;There are either 2 types of people or I don't understand something. Maybe both.
&lt;/p&gt;&lt;div class=&quot;special-block block-test&quot;&gt;&lt;p&gt;Q: Does @vlnn understand the modern design tendencies?
A: Nope.
&lt;/p&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=gatekeeping-at-lobste-rs</id>
  <title>Gatekeeping At Lobste.rs</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=gatekeeping-at-lobste-rs"/>
  <updated>2026-07-30T00:00:00Z</updated>
  <content type="html">&lt;p&gt;For several years &lt;a href=&quot;https://lobste.rs/&quot;&gt;https://lobste.rs/&lt;/a&gt; were my favourite source of professional truth: it's a link aggregator with some attitude, quite transparent in how they operate, and just good overall! There were several dramas, but not something that you don't expect from site that is built on user-provided content.
&lt;/p&gt;&lt;p&gt;It all started with geo/VPN blocking (I guess they started with &lt;a href=&quot;https://lobste.rs/s/ukosa1/uk_users_lobsters_needs_your_help_with&quot;&gt;geoblock of UK&lt;/a&gt; due to some crazy Ofcom regulations, then blocking Brave browser users (due to &lt;a href=&quot;https://lobste.rs/s/iopw1d/what_s_up_with_lobste_rs_blocking_brave&quot;&gt;&quot;years-long pattern of repeated bad actions followed by dismissive statements with no countervailing behaviors&lt;/a&gt;&quot;). Well, while not being fun, I can relate.
&lt;/p&gt;&lt;p&gt;But now they are removing the links to the sites that are created with AI:
&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://vlnn.dev/static/lobsters.png&quot;&gt;
&lt;/p&gt;&lt;p&gt;It's really hard to draw a line between &quot;&lt;code class=&quot;inline-verbatim&quot;&gt;Ad, slop&lt;/code&gt;&quot; and 99% of modern sites, this is disturbing as hell. But gatekeeping things due to &lt;code class=&quot;inline-code&quot;&gt;&quot;They didn’t even bother to change the default Claude theme.&quot;&lt;/code&gt; is even crazier to me.
&lt;/p&gt;&lt;p&gt;To be honest, I think that gatekeeping can be rightful, but can't think of any other cases except the open war. Are we at war with AI already?
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=oldschool-is-closed</id>
  <title>Oldschool Is Closed or Q/KDB are fun, strange and crazy</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=oldschool-is-closed"/>
  <updated>2026-07-30T00:00:00Z</updated>
  <content type="html">&lt;p&gt;&lt;a href=&quot;https://lv1.sh/&quot;&gt;https://lv1.sh/&lt;/a&gt; is another layer of crazyness that seems to be normal for k/q language for decades. Also beware, this link was &lt;a href=&quot;https://vlnn.dev/gatekeeping-at-lobste-rs.org&quot;&gt;removed on lobste.rs&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt; is an array-based language by Arthur Whitney, who worked together with Ken Iverson and Roger Hui (thus ifluencing and being influenced by creators of &lt;code class=&quot;inline-verbatim&quot;&gt;APL&lt;/code&gt; and &lt;code class=&quot;inline-verbatim&quot;&gt;J&lt;/code&gt; languages). Imagine ASCII-based &lt;code class=&quot;inline-verbatim&quot;&gt;APL&lt;/code&gt; (you have &lt;code class=&quot;inline-verbatim&quot;&gt;J&lt;/code&gt;) and then add dictionaries and projections (realtime-updated as far as I understood) and you get &lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt;. It's very laconic, so they added another language on top and called it &lt;code class=&quot;inline-verbatim&quot;&gt;Q&lt;/code&gt;. They called runtime for &lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt;,=Q= and &lt;code class=&quot;inline-verbatim&quot;&gt;kdb+&lt;/code&gt;.
&lt;/p&gt;&lt;p&gt;Try K yourself here: &lt;a href=&quot;https://johnearnest.github.io/ok/index.html&quot;&gt;oK&lt;/a&gt; or &lt;a href=&quot;https://kparc.io/kc&quot;&gt;shakti k console&lt;/a&gt; (with oldschool reference at &lt;a href=&quot;https://ref.kparc.io/#scan&quot;&gt;ref k&lt;/a&gt;)
&lt;/p&gt;&lt;p&gt;Now imagine set of incompatible &lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt; implementations, all of them with close-sourced and sold to fintech companies (the rumour is that AW started each version from scratch). Several attempts of making opensource implementation led to even fancier monsters, all of different functionality and level of non-support. Add some nerdiness to the cocktail and the fact that Arthur Whitney is publishing plans to create &lt;code class=&quot;inline-verbatim&quot;&gt;kOS&lt;/code&gt; that is operating system written in &lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt;. Imagine fans reading something like &lt;code class=&quot;inline-verbatim&quot;&gt;&quot;This summer, Pierre and I got kOS to boot directly into g (the graphical interface; formally called z) with ISR, keymap, modesetting, basic filesystem, etc weighing in around 100 lines of C. That was pretty exciting. Could probably be done with less with some deeper changes to Arthur's code, but it's still very useful to run k under Linux. Oleg made a silly little game in kOS.&quot;&lt;/code&gt; only to find out that it was in 2014.
&lt;/p&gt;&lt;p&gt;Don't forget about the &lt;a href=&quot;https://www.jsoftware.com/ioj/iojATW.htm&quot;&gt;Incunabulum&lt;/a&gt;. Don't forget that &lt;a href=&quot;jsoftware.com&quot;&gt;jsoftware&lt;/a&gt; was not that different and provided closed-sourced binaries for around 15 years before becoming relatively sane. It was pretty OK for the industry; &lt;code class=&quot;inline-code&quot;&gt;we are different from them now, and they are not that crazy&lt;/code&gt;. Or maybe they are and we will become a bit later.
&lt;/p&gt;&lt;div class=&quot;special-block block-test&quot;&gt;&lt;p&gt;Q: Is &lt;code class=&quot;inline-verbatim&quot;&gt;k&lt;/code&gt; having a standard?
A: God no
&lt;/p&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=programming-style</id>
  <title>Elements/Parts of the Programming Style in K</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=programming-style"/>
  <updated>2026-07-30T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Reading &lt;a href=&quot;https://nsl.com/papers/style.pdf&quot;&gt;&quot;K: Remarks on Style&quot;&lt;/a&gt; I've found great quote on great book I've never liked:
&lt;/p&gt;&lt;p&gt;&quot;&quot;&quot;
Kernighan and Plauger, in their classic work on the elements of programming style, organize issues of style under seven headings:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;expression,
&lt;/li&gt;&lt;li&gt;control structure,
&lt;/li&gt;&lt;li&gt;program structure,
&lt;/li&gt;&lt;li&gt;input/ output,
&lt;/li&gt;&lt;li&gt;common blunders,
&lt;/li&gt;&lt;li&gt;efficiency,
&lt;/li&gt;&lt;li&gt;documentation.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&quot;&quot;&quot;
&lt;/p&gt;&lt;p&gt;This is 7 parts to which it's hard to add something. &lt;code class=&quot;inline-verbatim&quot;&gt;K&lt;/code&gt; did some changes though:
&lt;/p&gt;&lt;h1&gt;K maxims&lt;/h1&gt;&lt;h2&gt;Style improves with knowledge of the language.&lt;/h2&gt;&lt;h2&gt;Program with, and not against, the grain of the language.&lt;/h2&gt;&lt;p&gt;(granted the language is sane and enforces proper things)
&lt;/p&gt;&lt;h2&gt;Seek opportunities to throw away code.&lt;/h2&gt;&lt;p&gt;less code =&gt; less bugs
&lt;/p&gt;&lt;h1&gt;Names&lt;/h1&gt;&lt;h2&gt;Names should be easy to type&lt;/h2&gt;&lt;p&gt;(I can see it's 1995 with typing being a problem)
&lt;/p&gt;&lt;h2&gt;Conventions&lt;/h2&gt;&lt;h1&gt;Physical line of code contains exactly one K statement/encodes one thought.&lt;/h1&gt;&lt;p&gt;(We still have problem with it in 2026)
&lt;/p&gt;&lt;h1&gt;Modularity&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;Use subfunctions.
&lt;/li&gt;&lt;li&gt;Making the coupling between modules visible.
&lt;/li&gt;&lt;li&gt;Each module should do one thing well.
&lt;/li&gt;&lt;li&gt;Make sure every module hides something.
&lt;/li&gt;&lt;li&gt;Hide shared subfunctions in subdirectories.
&lt;/li&gt;&lt;li&gt;Localize unshared subfunctions.
&lt;/li&gt;&lt;/ul&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=about-these-notes</id>
  <title>About these notes</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=about-these-notes"/>
  <updated>2026-07-29T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Hi! I'm Volodymyr Anokhin (&lt;a href=&quot;https://github.com/vlnn&quot;&gt;@vlnn&lt;/a&gt;). These are my working notes, all in interlinked disarray. Click any internal link (the &quot;ochre&quot; ones) and it opens as a new pane to the right; the trail you follow lives in the URL, so you can share it. Curious about the machinery? See &lt;a href=&quot;https://vlnn.dev/how-this-site-works.md&quot;&gt;How this site works&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;Note that for some notes you can test yourself clicking on &lt;a href=&quot;https://vlnn.dev/?stack=test&quot;&gt;test yourself&lt;/a&gt; link at the bottom of the note (if available). Moreover, I made a general test link at the top of the page -- it will test you either for all open notes, or for all notes in the system (e.g. if you want an overview of things you supposed to take out of this site).
&lt;/p&gt;&lt;h1&gt;Starting pages&lt;/h1&gt;&lt;h2&gt;War times&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/programming-in-wartime.org&quot;&gt;Programming in wartime&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;On languages and data&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/sql-as-data-analysis-volapuk.org&quot;&gt;SQL as the Data Analysis' Volapük&lt;/a&gt;,
&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/art-of-lisp-questions.org&quot;&gt;Art of Lisp questions&lt;/a&gt;,
&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/historical-bits-and-pieces.org&quot;&gt;Historical bits and pieces&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;On tools and Emacs:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/configuration-maintenance-vs-renovation.org&quot;&gt;Configuration maintainance vs renovation&lt;/a&gt; is about tending configs before they rot.
&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://vlnn.dev/macos-hex-input-problem.org&quot;&gt;Macos problem with HEX input&lt;/a&gt; documents an old wound at the bottom of the Unicode input stack.
&lt;/li&gt;&lt;/ul&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=how-this-site-works</id>
  <title>How this site works</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=how-this-site-works"/>
  <updated>2026-07-29T00:00:00Z</updated>
  <content type="html">&lt;p&gt;This site is a pile of plain text files pretending to be an app. Notes live as raw &lt;code&gt;.org&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;code&gt;.md&lt;/code&gt; files; your browser fetches the file and renders it with &lt;a href=&quot;https://github.com/rasendubi/uniorg&quot;&gt;uniorg&lt;/a&gt; or remark. The only thing computed ahead of time is &lt;code&gt;index.json&lt;/code&gt; — titles and the link graph, because backlinks are a global property no single file can know about itself.&lt;/p&gt;
&lt;p&gt;The stacked panes copy &lt;a href=&quot;https://notes.andymatuschak.org/About_these_notes&quot;&gt;Andy Matuschak's notes&lt;/a&gt;: each link you follow opens a pane to the right, and the whole trail is encoded in the URL, so any view is a shareable permalink.&lt;/p&gt;
&lt;p&gt;Notes link to each other by bare relative filenames, and formats mix freely — this markdown note links back to the org-mode &lt;a href=&quot;about-these-notes.org&quot;&gt;entry note&lt;/a&gt;, and org notes can link to &lt;code&gt;.md&lt;/code&gt; the same way:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;format&lt;/th&gt;
&lt;th&gt;metadata&lt;/th&gt;
&lt;th&gt;link syntax&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;org&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#+title:&lt;/code&gt; etc.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[[file:slug.org][text]]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;md&lt;/td&gt;
&lt;td&gt;YAML frontmatter&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[text](slug.md)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=light-sources-during-the-war</id>
  <title>Light Sources During The War</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=light-sources-during-the-war"/>
  <updated>2026-07-29T00:00:00Z</updated>
  <content type="html">&lt;p&gt;I've discussed my experience with &lt;a href=&quot;https://vlnn.dev/daylight-lamp-first-day.org&quot;&gt;Beurer TL 100&lt;/a&gt;. Of course, things with the light sources got much worse very quickly when the war started -- 10 hours blackouts were norm for months -- and so new market emerged, cheap chinese LED lamps with batteries. Most of them are crazy bad in the context of light temperature and blinking, but they did their job perfectly, showing us the way in the time of darkness.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=sql-as-data-analysis-volapuk2</id>
  <title>Sql As Data Analysis Volapük Part 2</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=sql-as-data-analysis-volapuk2"/>
  <updated>2026-07-29T00:00:00Z</updated>
  <content type="html">&lt;p&gt;4 years ago I wrote a &lt;a href=&quot;https://vlnn.dev/sql-as-data-analysis-volapuk.org&quot;&gt;small note on SQL&lt;/a&gt;, and oh boy things have changed (alas, russia's war in Ukraine hasn't changed that much!):
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Apache Druid moves from SQL to &lt;a href=&quot;https://druid.apache.org/docs/latest/querying/&quot;&gt;its own custom JSON-based native query language&lt;/a&gt; (so my starting idea didn't hold for too long).
&lt;/li&gt;&lt;li&gt;Magnificent &lt;a href=&quot;https://duckdb.org&quot;&gt;DuckDB&lt;/a&gt; appeared, removing both most of the other locally-installed DBs, and also providing lots of analytical possibilities to python or even PostgreSQL.
&lt;/li&gt;&lt;li&gt;Speaking of the beast, PostgreSQL with its extensions for everything got quite a traction.
&lt;/li&gt;&lt;li&gt;I have lots of books on SQL (mostly quickly scanned through, not read deep enough as they all have to be read): The Art of PostgreSQL by Dimitri Fontaine, DuckDB in Action from Manning, even SQL Queries for Mere Mortals by John L. Viescas. Each of those waits for the note in future.
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Alas, I'm not working with Apache Druid anymore, at least for now. But it seems that it's still long until we see the dawn of SQL (also LLMs are writing it beautifully and people are kinda accostumed to not reading it properly).
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=solution-to-the-repl-snippets</id>
  <title>THE Solution to the REPL snippets (using Emacs ofc)</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=solution-to-the-repl-snippets"/>
  <updated>2024-05-20T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Miro Bezjak wrote an interesting post called &lt;a href=&quot;https://mbezjak.github.io/posts/what-to-do-with-evaluated-repl-expressions/&quot;&gt;What to Do With Evaluated REPL Expressions?&lt;/a&gt;. The problem he describes is actually a bit different from the one I thought of when saw the title: it's not about re-using evaluation results in the REPL (which is not really possible without re-evaluation or using weird numbering acces -- as far as I know). No, it's really about the expressions that should not go into the the released code, but the one the developer uses during the development -- small chunks of the code with ops-tasks, small checks, calls to the external systems etc. Miro suggests to create the out-of-classpath user directory for every project developer, and create a common place for all those code snippets called everything.clj or something like that. This file should be committed to the repo (thus shared and easily referenced between the developers), but not become the part of &quot;official code&quot; (hopefully not even being compiled while release process).
&lt;/p&gt;&lt;p&gt;I like the approach but I dislike several little problems that come with it. First of all, &quot;operational&quot; snippets are often bound to the exact configuration -- hostnames, port numbers etc. Even secrets! Thus, you shouldn't share it as is: they should either become some developer environment script, or go away with the repl history. Don't encourage other users look into the pie if you're not sure it is the same pie you're both having.
&lt;/p&gt;&lt;p&gt;But my main concern is that the problem is being resolved on wrong level. There are special programs that are perfect for using and managing snippets called text editors. Every text editor (and hopefully any IDE) provide search, copy and paste capability. Emacs even has a built-in buffer that can be used specifically for that reason called scratch buffer: something written there for the moment, edited, ran, saved somewhere else... and then scratched out as new tasks are coming. You may even configure project-related scratch buffer that will not erase its text after restart of Emacs. So for the development itself you may safely use scratch buffer (or anything having same function in &lt;span class=&quot;underline&quot; style=&quot;text-decoration: underline;&quot;&gt;your&lt;/span&gt; editor of choice). But what if you want to reuse it? Create either a devenv script or yasnippet file. What if you want to share it with colleagues? Use gist (or even better internal wiki). In that way when the code will change the behaviour (due to your or your colleauges' work on the code or infrastructure) the snippet will not be incorrectly bound to the updated code. The script is outdated? Well, update it on separate PR, or let someone else do it. Wiki is outdated? Fix it on the spot. The idea is that the production code should not be contaminated with the operational code -- or it should be a well-designed &lt;span class=&quot;underline&quot; style=&quot;text-decoration: underline;&quot;&gt;part of the code&lt;/span&gt;.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=programming-in-wartime</id>
  <title>Programming in wartime</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=programming-in-wartime"/>
  <updated>2024-05-16T00:00:00Z</updated>
  <content type="html">&lt;p&gt;I'm Ukrainian, and Ukraine is fighting for its very existence right now. I'm a civilian (i.e. not conscripted yet) living in Kyiv. It's relatively quiet here now, except maybe one or two raid attacks alerts per day.
&lt;/p&gt;&lt;p&gt;This post is a mix of insights of how it is to work full day in wartime -- in no particular order or structure. Of course this is very limited point of view, as I'm describing my own experience and my own surroundings. Being in Kharkiv, for instance, I would experienced quite a different conditions (Kharkiv is under constant shellings and bombing for a good year now).
&lt;/p&gt;&lt;h1&gt;Hardware&lt;/h1&gt;&lt;p&gt;My current hardware setup was planned during my onboarding at Apptopia (great company, BTW!) in the beginning of 2022. I've decided to try MacOS for the first time in my life (was a Linux user for ~15 years), and have bought myself a M1 Macbook Pro. This was a great decision, mostly not due to the MacOS bells and whistles, but rather due to great battery life and capable processing power, that both led me through the time of blackouts in the late 2022. I was able to more or less use the whole stack locally, building and testing monorepo in around 30 minutes (including all integration tests that were based on services like Cassandra, Apache Druid and Spark ran in Docker Compose infrastructure).
&lt;/p&gt;&lt;p&gt;I'm also using quite big external monitor (34&quot; Samsung Curved C34H890) that is connected to the M2 Mac Studio. This was my understanding of how ergonomic workplace should look like for me: standing desk, Kinesis Advantage with custom firmware (see &lt;a href=&quot;https://github.com/vlnn/kinesis-advantage-2&quot;&gt;https://github.com/vlnn/kinesis-advantage-2&lt;/a&gt;), the Apple Trackpad mounted on the keyboard etc. All this fine and dandy except one thing: this setup doesn't have a battery and is shut down during the power outage. After russian shellings to the pretty much all the Ukrainian power plants infrastructure we've experienced blackouts as long as for 12-18 hours per day. This have disrupted my work abilities even lower, making me sometime to work in chunks of 2 hours (of which the overhead of constant household chores like getting the power station ready, dishes clean and teapot hot and ready took pretty much a good half). So 1 hour of work with electricity on, then you go into unknown timeslot of darkness and bad internet (my ISP relied on usual power lines too much. Now I have 4 independent ISP lines, one of which is cellular (i.e. works until mobile network is up -- but unreliable and slow) and one is optical (was sluggish at first, requiring the hardware reboots, but quite OK in a year after the installation -- I'm actually posting this text during blackout and have no problems with the internet at all)).
&lt;/p&gt;&lt;p&gt;As I had some time and resources, the orders were made for some power supplies (or rather power accumulators) that made our life much easier. I have now two EcoFlows, the bigger one is connected to the fridge and is more of a reserve of electricity for even worse conditions, and the smaller one is powering the wifi APs and ISP's routers. As I said, desktop and monitor are fully shut down during the power outages, and for now I'm OK with that: I'm just using my macbook.
&lt;/p&gt;&lt;p&gt;But there's a slight problem -- instead of using the ergonomic way of work at my precious stand desk, with hilariously comfortable keyboard and big display, I've taught myself to work at macbook sitting at the sofa even when the electricity is allright. Actually I found that I'm more productive that way! Not sure how it works, I guess it's more of a bad habit becoming a second nature.
&lt;/p&gt;&lt;h1&gt;Software&lt;/h1&gt;&lt;p&gt;Main energy saving solutions I'm using now are Al Dente (program that controls the level of the battery to be always at the healthy level -- even though I'm not sure it's really that useful) and OrbStack instead of usual Docker Desktop. I've experienced &lt;strong&gt;huge&lt;/strong&gt; energy saving after moving from OSS Docker Desktop to evil closed OrbStack. But let me tell you, this migration saved me a ton of time. OrbStack is really Docker made right, only proprietory. But we have to make our decisions.
&lt;/p&gt;&lt;p&gt;Syncing two computers both using MacOs is pretty easy (just use iCloud!) but unreliable (you never can tell if things are really same on both sides). E.g. syncing the directory with org files brings me conflicts every time I'm using org-agenda. I'm sure there is a way to make it work, but for now I'm just using org-mode for the documentation, and calendar (BusyCal) for work planning.
&lt;/p&gt;&lt;p&gt;Main power users on my system (according to Activity Monitor) are Emacs and Safari. Safari seems to be much easier on Memory and CPU consumption than Chrome or Arc, and also syncs good enough between phone and two Macs. So Safari it is.
&lt;/p&gt;&lt;h1&gt;General life tips&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;Have all your shit charged when you have a possibility. That means all your phones, all your powerbanks, all your notebooks, tablets, kindles etc. Just get some kind of USB hub, and let it be busy every minute the power is on. You never know which 2% of battery could be converted into critical information or just a heart warming call from a friend. You need both.
&lt;/li&gt;&lt;li&gt;Prepare a stock of ramen-like stuff, anything that can be prepared quickly and easily. Let it be some high-priced tourist food or just a noodles from the nearest shop, have some extra. There are 1-minute instant soups, 2-minutes porridge, things ike that. Buy yourself a big box of candy or any sugar-high sweets, put it away and eat it when things are sour.
&lt;/li&gt;&lt;li&gt;Have a ready supply of hot drinking water: use thermos or anything like that, so you have have some tea, you can fill the heating bottle etc.
&lt;/li&gt;&lt;li&gt;Try to have your fridge working. I know people who just fill the freezer up so the freezed food itself was working as a cold accumulator, but I wonder how safe and sound the solution is. I'm using power station.
&lt;/li&gt;&lt;li&gt;Minimize the doomscrolling. It doesn't help at all, but it's very good in making yourself miserable. I mean it's really hard to live without information, but don't swim across the different opinions that don't really matters in the time, when your every day can be your last day. You better have some extra brain resources to live through.
&lt;/li&gt;&lt;li&gt;Don't expect to work full time. In reality I was able to work effectively around the half of my usual work time -- and this is my optimistic estimates.
&lt;/li&gt;&lt;li&gt;Overcommunicate. Document everything and send to your colleagues. Push every commit. Write in slack. Talk in zoom. You need the society and society kinda needs you (not really). But it's better to show that you're alive and kicking than disappear for a week and then return with some crazy good PR that is not really needed anymore.
&lt;/li&gt;&lt;li&gt;Buy yourself a proper headlamp -- they are crazy good now, with quite a long battery life. Buy your wife a headlamp. Buy a headlamp for your dog (I'm not joking).
&lt;/li&gt;&lt;li&gt;Don't use elevators at all times. It's easy for me, it's not that easy for everybody -- but you don't want to stuck in the elevator during the air raid.
&lt;/li&gt;&lt;li&gt;Put all the important papers (passports, money etc) in a water-proof package, put that package in a backpack, have this backpack right near the door at all times.
&lt;/li&gt;&lt;/ol&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=antiprogress-of-the-dropbox</id>
  <title>Antiprogress of the Dropbox</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=antiprogress-of-the-dropbox"/>
  <updated>2023-01-24T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Not that long time ago (or was it long time? 10 years ago or so?) &lt;a href=&quot;https://www.dropbox.com&quot;&gt;Dropbox&lt;/a&gt; was the new kind of the services -- very simple, very cheap, very direct kind of service. You want to share the photo or your hipster &lt;code class=&quot;inline-verbatim&quot;&gt;todo.txt&lt;/code&gt;, you put it in a special folder and that's it: it will be delivered automatically to everybody whom you informed the link, or to every PC where Dropbox is running under your creds. That's it! Super easy, super cool!
&lt;/p&gt;&lt;p&gt;I just used current version of Dropbox app for Android, and it is just terrifyingly awful. For starters, it has tutorial wizards that break my needs; I want to press a button, but it is covered with a text cloud of a tutorial. Next, I want to download some video files to my android device: there are buttons &lt;code class=&quot;inline-code&quot;&gt;&quot;Sync&quot;&lt;/code&gt;, &lt;code class=&quot;inline-code&quot;&gt;&quot;Make available offline&quot;&lt;/code&gt; and &lt;code class=&quot;inline-code&quot;&gt;&quot;Save to Device&quot;&lt;/code&gt; -- and also &lt;code class=&quot;inline-code&quot;&gt;&quot;Duplicate&quot;&lt;/code&gt;. Next, it asks to access my photos and my camera. And moreover, it shares the names of people who have access to the folder to anybody who has it already.
&lt;/p&gt;&lt;p&gt;I can't even...
&lt;/p&gt;&lt;p&gt;I understand &lt;a href=&quot;https://syncthing.net&quot;&gt;Syncthing&lt;/a&gt; could be infuriatingly complex, but at least it does one thing, and does it good.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=macos-hex-input-problem</id>
  <title>Macos problem with HEX input</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=macos-hex-input-problem"/>
  <updated>2023-01-24T00:00:00Z</updated>
  <content type="html">&lt;p&gt;If you're typing using non-english symbols like ς or ґ you might have problems with entering those into modern computers -- there are different encoding systems, as well as different keyboard layouts, and it's not that unusual to have problems with one that you can live with. Then you build yourself QMK or ZMK keyboard. They are programmable -- you can make them type anything. ANYTHING! Right? RIGHT?
&lt;/p&gt;&lt;p&gt;No, that's not true. You can't go fully independent of OS language layouts, that are converting scancodes into the keycodes and then into the characters themselves. You press &lt;code class=&quot;inline-verbatim&quot;&gt;Q&lt;/code&gt; in the UA mode, it gets to the OS as &lt;code class=&quot;inline-verbatim&quot;&gt;Q&lt;/code&gt;, layout mapping makes it &lt;code class=&quot;inline-verbatim&quot;&gt;Й&lt;/code&gt;, and you see it like that in the text you're typing. Among others, this should resolve problems with shortcuts like &lt;code class=&quot;inline-verbatim&quot;&gt;CTRL+S&lt;/code&gt; that may become unusable in cyrillic layout (as there's no such thing as &lt;code class=&quot;inline-verbatim&quot;&gt;S&lt;/code&gt; in Ukrainian, so you just can't save!) or get to some very different place on the keyboard if you use COLEMAK or something even weirder (&lt;code class=&quot;inline-verbatim&quot;&gt;ASDF&lt;/code&gt; in QWERTY maps to &lt;code class=&quot;inline-verbatim&quot;&gt;ARDT&lt;/code&gt; in Colemak).
&lt;/p&gt;&lt;p&gt;But why not make keyboard processor work even more? Why not provide the unicode code of the character instead of the scan code? Windows, Linux and Macos have their methods of the so-called &lt;a href=&quot;https://en.wikipedia.org/wiki/Unicode_input&quot;&gt;Unicode input&lt;/a&gt;. Problem solved? Not really!
&lt;/p&gt;&lt;p&gt;Macos has long lasting &lt;a href=&quot;https://discussions.apple.com/thread/253636848&quot;&gt;bug&lt;/a&gt; that prevents you from entering &lt;strong&gt;some&lt;/strong&gt; codes using Unicode input. E.g. you may input &lt;code class=&quot;inline-verbatim&quot;&gt;á&lt;/code&gt; (code 0x00E1), but never could &lt;code class=&quot;inline-verbatim&quot;&gt;à&lt;/code&gt; (code 0x00E0). Similarly using the hex codes you can't enter greek pi (code 0x03C0). You can't enter cyrillic &lt;code class=&quot;inline-verbatim&quot;&gt;р&lt;/code&gt; (it &lt;strong&gt;is&lt;/strong&gt; different from English &lt;code class=&quot;inline-verbatim&quot;&gt;p&lt;/code&gt;) -- seemingly just because their hex code ends with zero! (codes 0x0440).
&lt;/p&gt;&lt;p&gt;It seems to me that in my 40s anywhere I dig deep enough I get to something very different from the diamonds: I get more and more old rancid standards and piles of ancient bugs without wings.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=art-of-lisp-questions</id>
  <title>Art of Lisp questions</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=art-of-lisp-questions"/>
  <updated>2022-10-12T00:00:00Z</updated>
  <content type="html">&lt;h2&gt;What's that&lt;/h2&gt;&lt;p&gt;I'm reading a book, I'm taking notes. Here will be notes for the book &quot;Art of Lisp Programing&quot;
&lt;/p&gt;&lt;h2&gt;What is Art of Lisp Programming&lt;/h2&gt;&lt;p&gt;A 1987 book by Robin Jones and Ian Stewart, seems to be quite a primitive introduction to the LISP. Still, it's written pretty well, illustrated with pictures from Alice in Wonderland and is, well, interesting! Also authors are from ZX Spectrum clique, that is +100500 to their nerdiness.
&lt;/p&gt;&lt;h2&gt;Try simple things&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;car/cdr are named so due to historical reasons, i.e. assembly mnemonics of long gone IBM 709. Let's use &lt;strong&gt;head&lt;/strong&gt; and &lt;strong&gt;tail&lt;/strong&gt; instead.
&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;src-block&quot;&gt;&lt;code class=&quot;language-lisp&quot;&gt;(defun head (x)
 (car x))
(defun tail (x)
  (cdr x))
(- (head '(4 3 2 1)) (head (tail '(4 3 2 1))))  ;; 1 is expected as (- 4 3)
&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;src-block&quot;&gt;&lt;code class=&quot;language-results&quot;&gt;1
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;special-block block-test&quot;&gt;&lt;p&gt;Q: Is &lt;code class=&quot;inline-verbatim&quot;&gt;head&lt;/code&gt; replacing &lt;code class=&quot;inline-verbatim&quot;&gt;car&lt;/code&gt; or &lt;code class=&quot;inline-verbatim&quot;&gt;cdr&lt;/code&gt;?
A: &lt;code class=&quot;inline-verbatim&quot;&gt;car&lt;/code&gt;
&lt;/p&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=daylight-lamp-first-day</id>
  <title>Daylight lamp: first day</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=daylight-lamp-first-day"/>
  <updated>2022-10-12T00:00:00Z</updated>
  <content type="html">&lt;p&gt;I've bought a daylight lamp and not sure about it.
&lt;/p&gt;&lt;p&gt;The idea beside this product is that if human being has less daylight than usual due to bad weather or wrong lifestyle, they may use artificial light source with the spectrum of emission that is similar to natural sunlight. Moreover, it may be constructed in such a way, that no harmful UV radiation is created. And, of course, but companies decided that it's time to make a big buck selling cheap lamps. Let's see how it goes.
&lt;/p&gt;&lt;p&gt;I'm using Beurer TL 100 lamp. This is not a proper review or paid promotion. This is my first day impressions.
&lt;/p&gt;&lt;h2&gt;First look&lt;/h2&gt;&lt;p&gt;&lt;img src=&quot;https://vlnn.dev/static/daylight-lamp.gif&quot;&gt;
&lt;/p&gt;&lt;p&gt;Big, round, milky white lamp needs constant connection to the power outlet. Using buttons on the unit you may switch it on/off and control brightness to some extent.
&lt;/p&gt;&lt;h2&gt;Another sun&lt;/h2&gt;&lt;p&gt;Imagine you close the curtains and then go out of room. When you return to the room first you think that someone has opened the curtains and it's a sunny outside. Everything is illuminated with nice (and surprizingly cold -- meaning more to the blue side of spectrum) light. This is how the lamp is working. The picture doesn't present it too good, but it was pretty sunny even without the lamp switched on, but with the light from the lamp everything else looks like deep shadow. Also it's nice to have two sources of light that comes from different directions (there's even a specific pattern called &quot;Light on Two Sides of Every Room&quot; in a book &quot;A Pattern Language&quot; by Christopher Alexander).
&lt;/p&gt;&lt;h2&gt;Good&lt;/h2&gt;&lt;p&gt;Lots of things are better when illuminated. I like how everything looks under the daylight lamp. This made me a bit happier, of course, but not sure if it's antistress effect of shopping or lamp really works in this context.
&lt;/p&gt;&lt;h2&gt;Bad&lt;/h2&gt;&lt;p&gt;My eyes seems to be a bit sore due to constant bright thingy in unusual place. I've switched the lamp after 2-3 hours of test on it's lowest level.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=historical-bits-and-pieces</id>
  <title>Historical bits and pieces</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=historical-bits-and-pieces"/>
  <updated>2022-10-12T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Some time ago I was a part of a team who introduced modern software development processes (text-based sources, CI, CD, cloud here and there) across the company with humongous and very cleverly written monolith. Yup, internally sources were not stored as text files. Yup, the format was created in-house. Yup, you had to use internal toolings only to work with this code. Yup, it was a great revelation for me to understand how different real work is from the world of js-hipsters deploying things over heroku.
&lt;/p&gt;&lt;p&gt;Interestingly enough, the core of the my team was consisted of people who actually wrote the most clever parts. I was a part of this project for couple years trying my best and watching superheroes around me trying their best to finish this project. At some point I left the company and all I have now is this screenshot of one-week project of providing developers possibility to load customized tools into the work environment.
&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://vlnn.dev/static/things-i-did.jpeg&quot;&gt;
&lt;/p&gt;&lt;p&gt;Two unsettling ideas arise in my brain after I share the picture above:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Software industry is expanding so fast that half of your colleagues perhaps have less than 5 years of experience (stole the idea from someone, but it's as unsettling as my one).
&lt;/li&gt;&lt;li&gt;Some senior clever guys and girls right now are trying to help 'newcomers' to work with legacy code bases they themeselves developed over the years. This task may be much harder than actually developing the legacy code base.
&lt;/li&gt;&lt;/ol&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=configuration-maintenance-vs-renovation</id>
  <title>Configuration maintainance vs renovation</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=configuration-maintenance-vs-renovation"/>
  <updated>2022-10-11T00:00:00Z</updated>
  <content type="html">&lt;p&gt;It's astonishing how much time it takes to support things that are already working. E.g. every upgrade of &lt;a href=&quot;https://github.com/doomemacs/doomemacs/&quot;&gt;Doom Emacs&lt;/a&gt; (which I &lt;strong&gt;love&lt;/strong&gt; to use but hate to tinker with) is about several things at once:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Upgrade itself e.g. &lt;code class=&quot;inline-verbatim&quot;&gt;doom upgrade&lt;/code&gt; and fixing stuff if something goes wrong. It usually does need a bit of research to find out how to fix it. Would be nice to have &lt;code class=&quot;inline-verbatim&quot;&gt;doom rollback&lt;/code&gt; working, but it's impossible as of now.
&lt;/li&gt;&lt;li&gt;Manually check if upgrade broke something: I use several different &quot;stacks&quot; in my setup, e.g. a bit of org, clojure, common lisp, C# from time to time, dictionaries, org agenda.
   This is one of most time consuming and unpredictible part of the upgrade; it's not automated and I'm not sure if it's ever will be; you never sure everything is tested; you have to try it against your real work.
&lt;/li&gt;&lt;li&gt;I have to formalize all the small &quot;current fixes&quot; of my configuration as commits or backups, which is too often becomes a batch of changes called &quot;system as of 2022&quot;. Good luck with understanding why exactly you put this strange line somewhere in the custom.el!
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I like computers. I like programming computers. I don't like computers programming me. But real reason for this problem is wrong level of abstraction. It's something similar to docker images: you find a brittle shitty solution and put it under the clone machine so every time it breaks you just clone same brittle shitty solution. This is fun and techy, but this does not resolve the root of the problem: you had a shitty solution!
&lt;/p&gt;&lt;p&gt;But what can we do about this burden of the maintainance? Could we pay someone else to do it (we do with gmail so we don't administer mail servers ourselves)? Could we make better automation for keeping the system in revertable state (we do it with making system images or dockers)? Could we just throw away the need that made us use the configurable software we have?
&lt;/p&gt;&lt;p&gt;Sorry, I guess this is all wrong approaches, or rather they are all right approaches that are partly applicable. We will outsource lots of things to services, we will have better automation for backups, we will reduce the needs (like soldering your own PC) and get new ones (like, uhmmm, getting subscriptions for time without internet access). But this is not a solution. These are palliatives.
&lt;/p&gt;&lt;p&gt;Renovation is my metaphor for creating life with similar, but better things around. You have your house, it has leaking tubes and small dirty windows: fix tubes, change floors, clean or change windows, call it a day. But &lt;strong&gt;use&lt;/strong&gt; those tubes. &lt;strong&gt;Look&lt;/strong&gt; through the windows. Noone is renovating their house just because they like to tinker around: there's always a more or less clear goal, when you will say &quot;We're done!&quot; or at least &quot;We're out of money!&quot;. I guess the metaphor is working -- you're either cleaning your floors every day from what shit that is leaking or you fix the tubes. Software tubes are leaking all the time, mind you: rss feeds become outdated, old programs that you're not even using keep charging you for the licenses, new computer can't open old formats etc. Don't use docker for this: own the problem, make it formal, write it down, add it to the todo list. And -- perhaps! -- there will be a precious time when you fix it and say: this is my emacs configuration which I hone since times immemorial and it still does things for me!
&lt;/p&gt;&lt;h2&gt;TL;DR&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Acknowledge and understand your problem (e.g. acknowledge that you've spent whole day yesterday juggling REST requests and it took long time to find correct format of request and answer)
&lt;/li&gt;&lt;li&gt;Investigate existing tooling that resolves this kinds of problems.
&lt;ol&gt;&lt;li&gt;Try to find existing solutions, preferably old ones but currently supported.
&lt;/li&gt;&lt;li&gt;Write yours only if you're sure you have failed with previous suggestion.
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Configure this tooling and use it for some time (at least couple days), experimenting and reconfiguring things as it goes.
&lt;/li&gt;&lt;li&gt;&lt;code class=&quot;inline-verbatim&quot;&gt;IF&lt;/code&gt; problem seems different now &lt;code class=&quot;inline-verbatim&quot;&gt;GOTO 1&lt;/code&gt;.
&lt;/li&gt;&lt;/ol&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=hello-wonderful-world</id>
  <title>Привіт, чудовий світе (once again)</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=hello-wonderful-world"/>
  <updated>2022-10-08T00:00:00Z</updated>
  <content type="html">&lt;p&gt;This is to declare that the stuff has been moved from &lt;a href=&quot;https://vlnn.github.io&quot;&gt;vlnn.github.io&lt;/a&gt; to &lt;a href=&quot;https://vlnn.dev/&quot;&gt;vlnn.dev&lt;/a&gt;.
&lt;/p&gt;&lt;h1&gt;WHO:&lt;/h1&gt;&lt;p&gt;My name is Volodymyr Anokhin and this is my blog. You may know me as VLNN (mostly at &lt;a href=&quot;https://github.com/vlnn&quot;&gt;vlnn@github.com)&lt;/a&gt;. I'm Ukrainian and that's why instead of &quot;Hello, wonderful world&quot; you may see some Cyrillics in the title of this record.
&lt;/p&gt;&lt;h1&gt;WHAT:&lt;/h1&gt;&lt;p&gt;This is another try to set up minimalistic mostly technical blog. I plan to write things about my current projects which are mostly software-related at the moment. I was working as a Radio Engineer, as an Engineering Manager, and now I am a software developer. Somehow I always have chosen less-popular programming languages, and so I was writing production code in J, FORTH and APL. Now I moved a bit to more conventional side of Clojure.
&lt;/p&gt;&lt;h1&gt;WHY:&lt;/h1&gt;&lt;p&gt;It's not my first try to set up a place to share some technical or not-that-technical stuff across the internet. But somehow all the &quot;social&quot; platforms tend to become a social burden, and &quot;technical&quot; platforms tend to become more social with time. So I want to create a small piece of the network here, with smaller auditory but much bigger calmness. I'm not even sure that I will enable comments here!
&lt;/p&gt;&lt;h1&gt;WHEN:&lt;/h1&gt;&lt;p&gt;It's a wartime, joint forces of russia and belorussia are attacking and occupying parts of Ukraine right now. Perhaps not the best time to start a blog! But it's creation is not related to less chances of russia to kill or torture me. This is directly related to my plans to make everything I have to do during the war: support Ukrainian army, spend money for Ukrainian goods, and also represent Ukraine in every possible way. We are here. Some of us are still alive. We're kicking.
&lt;/p&gt;&lt;p&gt;And I'll never forgive russians for what they did.
&lt;/p&gt;</content>
 </entry>
 <entry>
  <id>https://vlnn.dev/?stack=sql-as-data-analysis-volapuk</id>
  <title>SQL as the Data Analysis' Volapük</title>
  <link rel="alternate" href="https://vlnn.dev/?stack=sql-as-data-analysis-volapuk"/>
  <updated>2022-09-19T00:00:00Z</updated>
  <content type="html">&lt;p&gt;Lately I've started to work with &lt;a href=&quot;https://druid.apache.org/&quot;&gt;Apache Druid&lt;/a&gt; that is &quot;real-time database to power modern analytics applications&quot;. This is great piece of software, being in it's late version 0.23.0, providing blazing-fast queries to your data. Surely enough, you always pay for the speed: sometimes with old good money (e.g. buy more resources from the powerhouses), sometimes with time needed to prepare the data for being queries (e.g. indexing), sometimes with absence of generality (e.g. make your highly intricate specific DB and go struggle when business needs something unsupported), sometimes just with your brainpower needed to understand and implement new stuff. At the moment, I think Druid is being paid mainly with two latter currencies.
&lt;/p&gt;&lt;p&gt;So, having a bit of experience in Data warehouse project (5 years ago? eternity!), I was really interested how exactly the speed is being gained. If you're interested, please take a look at &lt;a href=&quot;https://druid.apache.org/faq&quot;&gt;this FAQ page&lt;/a&gt; (spoiler: inverted indexes and intricate metadata model). This post is not about it. This post is about SQL that is currently being used as defacto standard for thinking about data -- even when &quot;real&quot; data is not stored in RDBMS.
&lt;/p&gt;&lt;p&gt;As most of the industry-grade programming languages, SQL has lots of qualities from different areas: it's mainly declarative, but has procedural mechanisms. It's made for queries but creates databases and tables. It's based on relational algebra, but  It's structured but sometimes it's hard to find the structure behind 30 screens of the statement. At last, it has been designed for managers and now DB-team is usually sitting very far away from the commercial department. This is how evolution works, nothing unusual here.
&lt;/p&gt;&lt;p&gt;But, being widely used, SQL get into the fields, where I was surprised to see it -- for instance in the NoSQL world. Check out how similar is Cassandra's CQL, even though Cassandra is famous NoSQL DB! Excel files &lt;a href=&quot;https://docs.microsoft.com/en-us/power-automate/desktop-flows/how-to/sql-queries-excel&quot;&gt;could be used as SQL data bases&lt;/a&gt;! Even very non-usual languages like Q are calling the some data-manipulating functions &lt;a href=&quot;https://code.kx.com/q4m3/9_Queries_q-sql/&quot;&gt;q-sql&lt;/a&gt;, using different syntax, but at least partially sharing same mental model of the data manipulation.
&lt;/p&gt;&lt;p&gt;This leads me to the point, at which I should make a bold statement: I don't think SQL is a good programming language. I mean, it's good, but it's not &lt;strong&gt;that good&lt;/strong&gt;, it's not the default language when you write or think about the data. Its main feature is universality, sure; but being wide-spread across the industry, it effectively wipes out all the other possible ways of thinking around the data. It's liek bad english of the internetz: you want to say &lt;strong&gt;I love you so much&lt;/strong&gt;, but sending 🔥🔥🔥 instead; you want to know who wrote the hit and writing
&lt;/p&gt;&lt;pre class=&quot;src-block&quot;&gt;&lt;code class=&quot;language-sql&quot;&gt;SELECT song_id FROM charts FETCH FIRST 1 ROWS ONLY ;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;instead, panicking how long will become the join to the composers table. It's really similar to Volapük in many contexts: it's as artificial, it's designed to be widely used, it's good but not necessary best, and it may be scorched out with some new technology (Esperanto in Volapük's case). Not sure if I will see the dawn of SQL, but it could be a wonderful view!
&lt;/p&gt;</content>
 </entry>
</feed>
