The performance of an application is determined by its architecture Jun 09, 2025 application performance architecture product fine-tuning
2 min read

The performance of an application is determined by its architecture. At first glance, it seems that this statement should be obvious, but real-world experience shows otherwise. For example, software architects often believe that application performance issues can be resolved simply by switching to software infrastructure from another vendor. The source of this belief may be the advertising hype surrounding testing results – for example, it is claimed that the leading company’s product outperforms the nearest competitor by a certain percentage. However, if the leading product performs an operation in 3 milliseconds, while the competing product does it in 4 milliseconds, the claimed percentage (one millisecond) means very little against the backdrop of overall low performance rooted in architectural inefficiency. Besides IT managers and performance testing teams, there are and other groups of people, such as the support service of the development company and authors of books on application performance management, which they recommend fine-tuning the application infrastructure: play with memory allocation operations, connection pool sizes, the sizes of thread pools and so on.
...
Carefully choose your tools Jun 06, 2025 in • GNU
modern gnu tools code application configuration software
4 min read

Modern applications are extremely rarely created “from scratch.” They are assembled from already existing building blocks – components, libraries, and frameworks, and there are several compelling reasons for this: The volume, complexity, and sophistication of applications are increasing, while the time allocated for their creation is decreasing. It is more beneficial to spend the time and intellect of developers on business logic code rather than application infrastructure code. - Widely used components and frameworks have fewer chances of encountering errors compared to those developed independently. - High-quality tools are available for free on the Internet, which reduces development costs and simplifies the search for interested developers with the necessary experience. - The creation and maintenance of software require a significant amount of human labor, so it can be cheaper to buy ready-made products than to create them.
...
Read the code Jun 06, 2025 start code reading skills today projects
2 min read

We, programmers, are strange creatures. We love writing code. But when it comes to reading code, we usually shy away from it. After all, writing code is much more exciting, and reading code is difficult—sometimes almost impossible. Especially hard is reading code written by others. Not always because it is poorly written, but because another person thinks and solves problems differently than you do. Have you ever thought that reading someone else’s code can help improve your own code? The next time you read some code, stop and think. Is it hard to read or easy? If it’s hard, why? Is it poorly formatted? Is the naming system inconsistent or illogical? Are multiple tasks mixed in one piece of code? Perhaps the chosen language makes the code difficult to read.
...
Write code wisely Jun 05, 2025 below devil code fragments proof function correctness
3 min read

Attempts to prove the correctness of software manually lead to a formal proof that is longer than the code itself and contains errors more frequently than the code. It is preferable to use automated tools, but this is not always possible. Below, a middle ground is described: semi-formal proof of correctness. The method is based on dividing the code under investigation into short fragments ranging from a single line, which may contain a function call, to blocks no longer than 10 lines, and discussing their correctness. The proof must be convincing enough for your colleague playing the role of the “devil’s advocate.” Fragments should be chosen in such a way that at the end point of the block, the program state (namely, the instruction address counter and the values of all “live” objects) satisfies a property that is simple to describe, and the functionality of this fragment (state transformation) can be easily described as a single independent task.
...
Learn foreign languages May 15, 2025 charlemagne language programmers languages machine ideas
3 min read

Programmers need to communicate. And communicate a lot. In a programmer’s life, there are periods when communication mainly occurs with the computer—more precisely, with the programs running on it. This communication is based on expressing ideas in a form understandable to the machine. The ability to turn ideas into reality through programs and with almost no use of physical matter still evokes delight. A programmer must be fluent in machine language—real or virtual—and the abstractions that can be linked to this language using developer tools. It is important to know many different abstractions; otherwise, some ideas are very difficult to express. A good programmer should be able to go beyond everyday routines and recognize that there are other languages that are more expressive for other tasks.
...
Message passing improves the scalability of parallel systems May 08, 2025 in • CC++ERLANGGROOVYJAVAPYTHON
performance c++ java python groovy memory systems system processes data
3 min read

Already in the first lectures on computer science, programmers are taught that concurrent computing – and especially parallel computing as a special subtype of concurrent computing – is a difficult task, and that only the best have a hope of coping with it, and that even the best do not manage to do so. Great attention is invariably paid to threads, semaphores, monitors, and the difficulties of organizing thread safety with simultaneous access to variables. There are indeed many complex problems here, and solving them can be very difficult. But what is the root of the problems? Shared memory. Almost all the problems of concurrent computing that we constantly hear about are related to shared memory with mutable data: race conditions, deadlocks, livelocks, and so on.
...
Programming paradigms May 02, 2025 in • ADACC LANGUAGEC++FORTRANHASKELLPASCALPROLOG
programming pascal fortran c c++ ada haskell prolog language programmer languages difficulties paradigms
3 min read

Psychology of Programming: It has long been known that a programmer’s professionalism directly depends on the number of different programming paradigms they master—not just having heard of them and knowing about them, but being able to actually use them in their work. Every programmer starts with some one language. This language has an the predominant influence on how a programmer sees software. But no matter how long a programmer has worked with this language, if they only work with it, they will only know this language. The thinking of a programmer who knows only one language is limited to the capabilities of that language. A programmer learning a second language will encounter difficulties, especially if the computational model of the second language differs from the first.
...
A verbose journal will deprive you of sleep Apr 30, 2025 system log error systems operation
2 min read

When I encounter a system that has been in development or operation for a long time, the first sign of real trouble is always a “dirty” log. You know what I’m talking about: it’s when clicking a link during normal web page usage results in a whole stream of messages being recorded in the system’s single log. Too many log entries can be just as useless as having none at all. If your systems are similar to mine, then when your work ends, the work of others begins. After the development is completed, the system will be long and successfully serve customers (if you’re lucky). How will you learn about problems if the system is in operation, and what will you do about them?
...
Know your IDE Apr 27, 2025 in • CJAVAMETHODUNIX
code debuggers integrated development environment ide modern java unix ides time tools method
4 min read

In the 1980s, the programming environment, as a rule, did not differ much from an advanced text editor – at best. Today, we take syntax highlighting for granted, but back then it was a luxury not available to everyone. Code formatting tools existed as external tools, the use of which corrected spacing. Debuggers also “lived” separately as programs for step-by-step code execution, and working with them required knowing a multitude of mysterious key combinations. In the 1990s, companies began to realize the profit potential of more convenient and useful development tools. The Integrated Development Environment (IDE) combined previously offered editing features with a compiler, debugger, formatting tools, and other instruments. At that time, menus and mice became popular, which meant that developers no longer needed to memorize complex key combinations to work with their editor.
...
Beauty is the result of simplicity Apr 08, 2025 plato development first code beauty simplicity system methods
2 min read

Plato has one saying that, it seems to me, would be especially useful for all software developers to know and take to heart: The beauty of style, harmony, elegance, and good rhythm are based on simplicity. This single sentence embodies the values that we, as developers, should admire. There are a number of things we aim to achieve in our code: Readability - Ease of maintenance - Development speed - Elusive beauty Plato tells us that all these qualities are possible only thanks to simplicity. What is beautiful code? This is probably a very subjective question. The perception of beauty is heavily dependent on personal experience, just as our perception of anything else is. Those who have studied art perceive beauty differently (at least approach it differently) than those with a technical education.
...