Musings about random stuff. No attempt at scientific rigor. Take with a grain of salt.

All the opinions stated here are my own. Any resemblance to opinions of other people, living or dead, is purely coincidental.

Institutional Senescence

Consider this toy model: An institution, such as a firm, an association or a state, is formed. It works well in the beginning. It encounters different problems and solves them the best it can. At some point though a small problem arises that happens to be a suboptimal Nash equilibrium: Non of the stakeholders can do better by trying to solve it on their own. Such problems are, almost by definition, unsolvable. Thus the problem persists. It's an annoyance, but it's not a big deal. The institution...

Comments: 1

In Search of Slack

Original article: Studies on Slack 1 Proposition: If you have enough free resources you can evolve irreducibly complex features. Imagine a bunch of yeast cells added to a barrel of malt when beer is being brewed. They have an ocean of free resources at their disposal. Surely, the evolutionary pressure will be low and the yeast cells would be able to escape the local maximum and evolve an irreducibly complex eye. Where this idea fails is not taking the nature of exponential growth into account....

Comments: 4

Partying over Internet: Technological Aspects

Now, with billion people locked down in their homes, social contact over Internet becomes an increasingly important topic. Not only it allows people to stay in touch, it also lowers the incentives to leave one's home and meet people in person and thus contributes to the public health. I threw an online birthday party few days ago and in this article I would like to share some of my observations about how a party over Internet differs from one in the physical world and point out some implications...

Comments: 6

The Missing Piece

In computer science, compiler is a program that translates things that programmers write, such as if CloseButtonPressed then CloseApplication , to things that computers are able to understand and execute, such as 0001010111001010111011000111100010101011110 . When the first compiler was written, someone had to write it in the machine code, the zeroes and ones that computers understand. They had to type in the numbers, or, more likely, punch holes into punchcards. But from that point on,...

Comments: 6

Happy Petrov Day!

I don't care much about feast days or memorial days. Assumption of Mary? Meh. Slovak Constitution Day? Shrug. Labour Day? Real socialism had sucked all the joy out of that one. The only one that I do observe is Petrov Day. Not that I do anything special. I don't even take a day off from work. I just take few minutes to contemplate. But now I am thinking that maybe, on this festive occasion, I should do a little bit more, maybe something that's public, something that has at least a slight feeling...

Comments: 0

On Becoming Clueless

It is said that every year the IQ needed to destroy the world drops by one point. Well, yes, but let me add a different spin on the problem: Every year, the IQ needed to make sense of the world raises by one point. If your IQ is 100 and you want to see yourself in 2039 just ask somebody with IQ 80 and listen carefully. I know that some people are troubled about prospects of those less intellectually gifted in the modern knowledge-based economy. And yes, it's troubling that we are heading towards...

Comments: 1

Type-safeness in Shell

Since writing the post on a hypothetical hull language as an alternative to shell I cannot stop thinking about the shortcomings of shell. And one think that comes to mind over and over is type-safeness. Shell treats everything as a string and that's the source of both its power and its poor maintainability. So when I ask whether shell can be improved, the question is actually more subtle: Can it be improved without compromising its versatility? Can we, for example, be more type-safe without...

Comments: 13

Hull: An alternative to shell that I'll never have time to implement

Here's an idea. It's kind of crazy but it's also fun to think about. Imagine a language which has every piece of its state stored in the filesystem. Yes, I know it sounds weird but do read on! Datatypes Let's say we do this: a = 1 What will happen under the covers is that file a will be created that contains nothing but 1 . Lists could be represented as files where each line corresponds to an item. b = [1, 2, 3] The above would simply create file b with the following content: 1 2 3 ...

Comments: 18

On the Nature of Programming Languages

What are we doing when designing a programming language? We decide whether it's going to be imperative or declarative. We add a bunch of operators. We add some kind of objects and visibility rules. We decide to make it either strongly-typed or weakly-typed. Maybe we add generics or inheritance, or maybe multiple inheritance. And so on. The question that interests me is whether the nature of these tools is determined by the problems we want to solve, whether they are, in some way, inherent to or,...

Comments: 1

The Politics of Age (the Young vs. the Old)

Few days ago I've read an article in the local newspaper about Switzerland considering to lower the voting age to 16. The reason I found it interesting was that it was not one of the old tired political discussions supported by the same old tired arguments that you typically encounter. In fact, it's a question that I have never thought of before. Apparently, the discussion was triggered by the recent school strike for climate that went quite big in Switzerland. I've attended the demonstration in...

Comments: 4

Muqaata'a by Fahad Himsi (I.)

When Black Panther came out I went to cinema hoping to finally see a science fiction movie about Sub-Saharan Africa. (District 9, for obvious reasons, doesn't count.) Needless to say, I was disappointed. The film wasn't really about Africa. It was about America, pretending, half-heartedly, to be about Africa. I was not sure how to feel about it. On one hand trying to relate it to my own cultural background a Hollywood movie about Slovak shepherds with laser weapons would be hilarious. On the...

Comments: 4

Programmatic Code Generation: Composability

After working some more with Tiles, my mini-library for programmatic code generation, I've realized it has a feature that I haven't knowingly baked in, but which makes it a really good tool for the job. Namely, the code you write is composable. Here's what I mean: If you want to generate a C function that prints out names of countries' capitals then you can generate the code that does the actual printing first: data = { Afghanistan : Kabul , Brazil : Brasilia , Canada : ...

Comments: 3

Lydian song

Now, I know that this is super-weird and probably makes sense to nobody by myself. First, it's in lydian scale which is nowadays used nowhere but in some Slovak (and, allegedly, also in Polish) folk songs. Second, the base chord is dissonant (C maj). It's meant to be played by strings so that dissonances do not fade out. Use as you see fit. Feb 25th, 2019

Comments: 0

Tiles: Report on Programmatic Code Generation

Writing programs that generate programs is hard. The programmer has to think at two levels of abstraction at once. She has to follow the logic of the generator. At the same time she can't lose the focus on the logic of the generated code. And the two don't even have to be written in the same language! That's a hard enough feat even when the tools aren't putting obstacles in your way. But, unfortunately, that's exactly what they are doing. Consider this Python program that outputs the classic C ...

Comments: 23

Graceful Shutdown

WARNING: The claims about composability of the graceful shudown construct have been defeated in the discussion here. Or maybe not. Judge for yourself. However, most of the analysis in this article is still relevant. Introduction Within a structured concurrency world, graceful shutdown is a little understood, little addressed and confusing topic. I've been fighting with it myself for almost a year (longer than with any other problem I can recall) and it haven't been a pleasant experience. If felt...

Comments: 1

Structured Concurrency Cross-language Forum

There are structured-concurrency-related efforts going on for different programming languages but the entire effort is kind of scattered, without people being aware of each other and speaking to each other. If we had a common forum, we could share the use cases, the problems, the ideas and the solutions. Each of us, irrespective of which language they are working with, could benefit from this common pool of knowledge And here we go! The forum now exists. Thanks to Nathaniel Smith for setting it...

Comments: 0

Confessions of an Abstraction Hater

I've written about the cost of abstraction before. Once you are in the IT industry for couple of decades and once you've read couple of millions lines on legacy code you become healthily suspicious of any kind of abstraction. Not that we can do without abstraction. We need it to be able to write code at all. However, each time you encounter an abstraction in the code that could have been avoided you get a little bit sadder. And some codebases are sadder than Romeo and Juliet and King Lear...

Comments: 10

Announcement: A talk about structured concurrency at FOSDEM

Generally, I don't tend to give talks (the last one I gave was six or seven years ago) but this time I am going to make an exception. I am going to give a short talk about structured concurrency as FOSDEM 2019. If you are interested in the topic, meet me in Brussels on February 2nd! Details about the event can be found here. If you have no idea what structured concurrency is about, good intro article can be found here. EDIT: The video of the talk can be found here.

Comments: 1

State Machines and the Strange Case of Mutating API

State machines are widely used to implement network protocols, or, generally, objects that have to react to external events. Consider TCP state machine: During its lifetime TCP socket moves throught different states in the diagram. When you start connecting it's in SYN SENT state, when the initial handshake is over, it's in ESTABLISHED state and so on. And here's an interesting observation: The API of the socket changes as you move from one state to another. For example, it doesn't make sense...

Comments: 19

Equivalence of State Machines and Coroutines

In the past I often referred to the equivalence between state machines and coroutines as a kind of obvious fact that doesn't need any additional explanation. It was brought to my attention, however, that that may not always be the case. This article therefore doesn't attempt to express and deep and ground-breaking truth, rather, it illustrates the equivalence of state machines and coroutines using a practical example. The example is stolen from Wikipedia's article on finite state machines: A...

Comments: 4

page 1 of 8123...78next »

Website powered by Wikidot.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License