Sadly, I started devoting too much blogging time to the current agenda, but we’re living in interesting times, and I am not immune to ongoing debates. One thing that bugs me is the general negative sentiment toward modern trends and forces driving them. Folks like Elon Musk get as much hatred as second-rate dictators and war criminals, and technological advances are seen as plainly 'evil' rather…
Let me acknowledge that I usually skip articles of 'why I started/stopped/use X' sort, because thanks, keep me posted, we are all deeply interested in your experience. And yet we are in the middle of generative AI storm of a kind, and it would be weird and silly to avoid discussing personal experience in a personal blog. Social media reveals many extreme views belonging to the generalized…
I somewhat belatedly realized that my little essay on free will would benefit from a short discussion of predestination, how it is different from foreknowledge, and how free will can be imagined in a deterministic world. It seems that the current free will debate within scientifically accepted worldview is mostly about definitions and feelings. Someone like Dennett says, free will is X, and we all…
The problem of free will is one of those ever-tempting, evergreen topics that one simply cannot avoid sooner or later. I vividly remember my first realization (somewhere in my teens, I guess) that the laws of physics are deterministic, so our lives are hardly more 'free' than trajectories of balls on a pool table. Later, I was pleased to learn that quantum mechanics suggests our world is in fact…
Looks like I still can’t get the hang of regular blogging. There are people who write nearly every day, posting bite-size yet interesting pieces of texts. Some manage to write longer posts, maybe twice a week or so. How do they do it? Granted, you do need free time to write, something that I sorely lack these months. In addition, blogging should feel like a welcome change from everyday chores, but…
I have a long history of C++ programming that far predates any commercial software development I participated in. My feeling is a strange mixture of geniune love and Stockholm syndrome: started with BASIC, I had C as my first 'serious' language. After all, real programmers’s don’t use Pascal, so whatever experiences I had with Pascal, they don’t count. After C, going into C++ programming was a…
Российская Федерация — государство-червь, государство-пидор. — Олег Кашин Yuri Trifonov’s novel 'Neterpenie' ('The Impatient Ones') is not the easiest reading. It is a classic Russian work in a sense that it is full of human misery, and hardly any hope. 'Neterpenie' can be translated as 'impatience', but with a strong flavor of 'not being able to stand something anymore'. The novel is devoted to…
Objects as Building Blocks Not sure whether we are already past the era of holywars like 'objects vs functions'. The typical response to a holywarish statement of this kind today seems to be 'it depends on the task', which is both correct and boringly trivial, lacking much insight. Programming languages do converge, adopting interesting tools from any source, and we can’t say anymore that classes…
I prefer writing about tech stuff rather than commenting ongoing news, but thinking about tech takes time and spare brain power, and I am short on both these months. On the other hand, my blog break is becoming uncomfortably long, and I thought I’d jump at the chance to pen this quick piece just for fun, or maybe as a way to evaluate my talents at predicting the future. Let’s see whether my…
It’s interesting to watch both the development of modern AI instruments like ChatGPT or Midjourney and human reaction to this process. Most commenters tend to discuss wide implications for our economy, society, job market, etc. I think many of these talks are highly speculative, but it is completely normal to try forecasting the future, even when the grounds for such predictions are shaky. It’s…
Today’s note is inspired by my short experience with a cooperative variant of the board game Wingspan. Wingspan is designed as a competitive game, where each player tries to score as many points as possible by collecting certain combinations of bird cards. In order to build a combination, the player needs to spend various resources that can be obtained on each turn. By adding new birds to the…
Intro One of the projects I hope to start soon is a game-like environment for teaching and learning concurrent programming. It has a very vague relation to an earlier system CPV, which I created for my graduation thesis around 2002. While collecting notes for the upcoming project, I thought it’s a good chance to review CPV to recall how it actually works, make sure it can be run on a modern…
Хорошо, что нет Царя. Хорошо, что нет России. Хорошо, что Бога нет. Только желтая заря, Только звезды ледяные, Только миллионы лет. Хорошо — что никого, Хорошо — что ничего, Так черно и так мертво, Что мертвее быть не может И чернее не бывать, Что никто нам не поможет. И не надо помогать. Георгий Иванов, 1930 г.
Today’s little essay has no goal other than to be mildly amusing and somewhat informative. We’ll talk about Winograd schemas and other challenges related to the evaluation of computer’s ability to understand natural language texts. Let me state first that I belong to a somewhat 'lower excitement' camp of AI enthusiasts. I tend to believe there is no other-worldly magic in human intelligence, and…
Intro This is one of my reflective notes that merely help me to organize my thoughts rather than offer polished solutions suitable for a broad range of scenarios. Still, I hope I am about to discuss an important topic, and my take on it might have some value. There is a huge topic of 'productivity', 'project management' and so on. In turn, it can be divided into subtopics like 'organizing…
[The author] confesses he dropped a book several times when reading historical sources, and threw away his feather in disgust not because of the thought that Ivan IV could exist, but because of realization that there was a society that could look at him without disgust. — A. K. Tolstoy, 'Prince Serebrenni' There are experiences in life when you know something in theory, but don’t get overly…
To Mark or Not to Mark In today’s short note I want to reflect a bit on my (former?) habit of marking member functions static if they do not access instance data. For me it was the same as marking them const (in case of C++) if they do not modify anything inside their objects. Now I believe these scenarios are different and should be approached differently. The difference between const and…
Recently I’ve been watching a talk by Vint Cerf on the topic of AI vs human intelligence. One part of this talk reminded me of an anecdote from my own experience, which I am going to share today. The relevant video fragment starts at 20:54, where Dr. Cerf explains adversarial neural networks and how they trick image classifiers into mistaking kittens for firetrucks or making other unbelievably…
A vague title of this piece is deliberate: there is no single clear message I am going to send, but I think I am ought to express some feelings and share my thoughts on the ongoing events. In most cases I am inclined to let the things settle down and discuss them later, as I am quite a slow thinker, and it takes time for any consistent picture to form in my head.
A few weeks ago we had a lab meeting, where a student was presenting his summary of a paper he had read earlier. While in general his talk was OK, it was obvious he had difficulties extracting the essence of the paper. His talk was based on a fairly accurate section-by-section summary of the original text, so it was hard for us to figure out which of these parts really captured the authors'…
Intro Let’s have a less serious post this time for a change. Today I will explain how to create your own Minesweeper board game from simple materials, mostly cardboard. Surprisingly, an obvious idea of creating a sort of 'real-life' version of Minesweeper has left little trace on the net. I can mention a couple of projects like Post-it Minesweeper and Minesweeper with tactile interface. The first…
A Quick Intro I needed to cite Dijkstra’s famous 1968 letter the other day, and finally had an easy chance to read it through. It would have been shame not to do it, given its modest size. There are many 'folk beliefs' in our trade, as Bossavit’s book shows, that turn out to have quite a weak foundation. Currently, the 'go to debate' is not on the table at all, as most modern languages have…
The Python Experience It took me a while to sit down and write this post, because I was actively experimenting with the VS Code setup for Python. I used it before, naturally, but having to write about something forces me to do my homework and make sure there are no obvious flaws in the suggestions I propose. Thus, I had to double-check all the tools and extensions I use for Python, and confirm…
Choosing the Editor As I mentioned in one of my previous notes, an integrated development environment is something very natural for me. I feel more comfortable using 'the whole package' rather than thinking about compiling, linking, debugging, profiling, UI building, etc. as about separate activities requiring separate tools. And yet, the 'IDE approach' isn’t universal. I can’t have a full-fledged…
One of the Faces of Complexity Today I am planning to write on a topic that is addressed literally in every book on software engineering. Yet I believe that too many projects (including my own) need more attention to some of the most basic ways of fighting complexity. Complexity is, yeah, a complex phenomenon, discussed in numerous sources, including a highly influential Brooks’s No Silver Bullet…
The Adventure Begins I am not happy with this title, but the whole topic popped up a bit suddenly, and I decided to jot down some thoughts, while they are still fresh. It is going to be a little story about a very innocuous-looking tiny exercise that turned out to be more difficult than I anticipated, and thus made me thinking about the hardships of translating our common language into programming…
On Code and Formatting Styles One of my long-term goals is to setup a powerful development environment that would make the most of today’s technology. As someone who grew up using QuickBasic and C++Builder, I could never understand deliberate efforts to rely on simple text editors and command-line compilers. To me, it is like claiming that the past 20 or 30 years of toolmaking gave us nothing…
The Problem Python is a very reasonable 'default' language of choice for a variety of tasks. At least on desktop platforms, it makes sense to start with Python and see how it goes. Unfortunately, along its way to popularity it lost much of the simplicity that made it fun in the first place. An especially egregious aspect of Python is its poor backward compatibility. In practice it means that your…
M. Mozgovoy Theory of Computation for Software Developers Chapman & Hall, 2026, 244 p. A grand revision of my 'Algorithms, Languages, Automata, and Compilers' book. It is much smaller and much better now. I have carefully revised the whole book, replaced C# with Python, fixed bugs, and added references where appropriate. I think this work is now equally well suited as a sufficiently rigorous yet…
Maxim Mozgovoy Senior associate professor at The University of Aizu Technical director at Helium9 Games mozgovoy@u-aizu.ac.jp Research Interests Machine learning, human-like game AI, computer games. Computer-assisted language learning, natural language processing. Career From 2016. Co-founder and technical director, Helium9 Games (Czech Republic) From 2009. Associate professor, The University of…
Edited Volumes M. Mozgovoy, P. Burelli (Eds). Applied Sciences: Special Issue on Applications of Artificial Intelligence and Machine Learning in Games: 2nd Edition, 2024. M. Mozgovoy, P. Burelli (Eds). Applied Sciences: Special Issue on Applications of Artificial Intelligence and Machine Learning in Games, 2022. M. Mozgovoy, M. Preuss, R. Bidarra (Eds). IEEE Transactions on Games: Special Issue on…
World of Tennis: Roaring '20s and Tennis Arena. Great online tennis games, featured multiple times on Google Play! and iOS App Store. Joe Blade 3 Remake. A modern remake of ZX Spectrum game Joe Blade 3. ZX Recoloring Project. A toolset for giving a modern look to our favorite ZX Spectrum games and make them attractive to the new generation of gamers. Keyboard Trainer. A touch typing training game…
This is the third incarnation of my home page. Its primary purpose had always been to keep some basic 'about me' info, so I could easily send a link to a colleague or a prospective employer. Now I want to make my blog its primary focus. I’ve never tried blogging on a regular basis, being more comfortable writing longer pieces like papers or books. However, occasionally I feel I know something that…
My computer story began with ZX Spectrum-compatible machines, and I still remember them fondly. Original ZX Spectrum was a British home computer created in 1982, and its numerous clones and variations were immensely popular in Russia of early 90s. At that time it was an incomparably cheaper alternative to PC, still providing a lot of fun for game and programming activities. Spectrum keeps its…