Pull to refresh

How to become an author

Referential Transparency as a mechanism for building Reliable Programs

Level of difficultyEasy
Reading time4 min

Referential transparency, a key concept in functional programming, is often associated with more reliable, easier to test, and safer software. This term refers to a principle in which a function, given the same input, will always produce the same output without producing any side effects.

In the real world of software development, side effects are inevitable. Programs are rarely useful unless they interact with the outside world. This interaction could be reading from or writing to the console, making network requests, querying a database, or modifying a variable.

Yet, despite the necessity of side effects, they introduce risks and complexities. Programs with side effects are harder to test, harder to reason about, and more prone to bugs. They can also make the system as a whole more difficult to understand and maintain, due to hidden dependencies between components.

Enter referential transparency - a concept that means a function, given the same input, will always provide the same output, without creating any side effects. A function that adheres to this principle doesn't read any global state or change any state outside of its scope. The result is code that is more predictable and easier to reason about.

In terms of software safety and reliability, the absence of side effects is not enough. Programs should also be free from external influence - their results should only depend on their arguments. That is, programs should not read data from the console, a file, network, database, or even system variables.

Yes
Total votes 1: ↑1 and ↓0+1
Comments3

Modular grids in UX designer's work

Level of difficultyEasy
Reading time8 min

Most novice web designers at the beginning of their journey still in the courses hear such a concept as modular grid, and wonder what it is and how to properly customize and use this tool.

From personal experience, I know that in many courses with titles "web designer from zero to pro" or " IU / UX designer in a month" this topic is either skipped, or give instructions, where they say everywhere to use a grid of 12 columns with margins of 80 to 100 pixels. And, as a result, it turns out that after taking these gore courses, a person sees beautiful works, thinks to repeat them, but the grid does not work, and the student, simply, does the work without a grid and completely forgets about it.

That's why I want to help beginners to understand this really voluminous issue.

Read more
Rating0
Comments1

Stages of product work on the MVP of the AI course generator

Level of difficultyEasy
Reading time2 min

When developing functional digital products, especially at the preliminary stages (from MVP to alpha versions) many teams use the «technology first» principle. This means a minimum of user convenience, a maximum of engineering competence. When evaluating the potential of a product, further efforts are already in the direction of creating ergonomic visitor paths, design and more. However, here lies the catch - since not two clients or a prospective investor can evaluate the entire user route, touch it with their hands and make sure that the system works, you can lose both clients and partners.

Read more
Rating0
Comments0

SEO Tips to Magento 2 Product Pages

Reading time3 min

Avoid duplicate content

Many online merchants face a common challenge with multiple product variations, leading to duplicate content issues. When similar products have slightly different URLs like "?=sortby" or "?p=2", search engines may view them as duplicates, impacting your website's credibility and search rankings. To tackle this:

Read more
Rating0
Comments0

gookit/goutil — released v0.6.10, an extension library of common Go features

Level of difficultyMedium
Reading time5 min

gookit/goutil An extended library of Go's common functionality. Contains: number, string, slice/array, Map, struct, reflection, text, file, error, time and date, test, CLI, command run, system information, formatting, common information acquisition, etc.

Read more
Total votes 1: ↑1 and ↓0+1
Comments0

Hashing and its C++ applications

Level of difficultyMedium
Reading time6 min

Hash, salt, SHA-1, SHA-2, std::hash.. To a non-programming person that may come up as some kind of a recipe that just does not seem to add up. In a sense, this is indeed supposed to be a gibberish to any third party and a strong, helpful mechanism for us, programmers. 

At the start of writing this article, I had one clear idea to get across the table: to finally unveil this mystery of hashing in C++ for beginners. I, a beginner myself, also wanted to solidify my knowledge in this area; so let’s get started.

Read more
Total votes 2: ↑2 and ↓0+2
Comments0

Alpha Go && Alpha Go Zero

Reading time3 min

Today I would like to discuss the games Chess and Go, the world's champions, algorithms and Al.

In 1997, a computer program developed by IBM Deep Blue defeated the world Chess champion Garry Kasparov. Go remained the last board game in which humans were still better than machines.

Why is that?

Chess is primarily distinguished from Go by the number of variations for each move. Chess, the game is more predictable with more structured rules: we have value for each figure (e.g bishop = 3 pawns, rook = 5 pawns -> rook > bishop), some kind of openings and strategies. Go, in turn, has incredibly simple rules, which creates the complexity of the game for the machine. Go is one of the oldest board games. Until recently, it was assumed that a machine was not capable of playing on an equal footing with a professional player due to the high level of abstraction and the inability to sort through all possible scenarios - exactly as many valid combinations in a game on a standard 19×19 go-ban are 10180 (greater than the number of atoms in the visible universe).

However, almost 20 years later, in 2015, there was a breakthrough. Google's Deep Mind company enhanced AlphaGo, which was the last step for the computer to defeat the world champions in board games. The AlphaGo program defeated the European champion and then, in March 2016 demonstrated a high level of play by defeating Lee Sedol, one of the strongest go players in the world, with a score of 4:1 in favour of the machine. A year later, Google introduced to the world a new version of AlphaGo - AlphaGoZero.

Read more
Total votes 2: ↑2 and ↓0+2
Comments1

What is it about IT. And when will it all end

Reading time21 min

Yes, we need IT

The foundation of our civilization is tools. We didn't just evolve to a state that allowed us to use them, we began to improve them ourselves. The tools are becoming more intricate, more efficient and more perfect. It can be a hammer, an industrial robot, or a monetary relationship. 

Some of our tools are difficult to grasp or comprehend, they are more like an element or a subject of study: the Internet, the media, the transport system. It is even difficult to call them tools, rather it is a reflection of our activities. For simplicity, we will call everything that people do with their own hands a tool, meaning that they speed us up, make our life easier and more comfortable.

Why do we need tools? On the one hand, they help to solve emerging problems, on the other hand, they raise the standard of living. We enjoy creating tools. I would say it's one of our instincts. 

For the functioning of our body, we need some amount of mathematics. The processes in our head reflect this math into our language. We can write the language in the form of symbols. With the help of symbols, we can convey the discovery of one person to another or a thousand others. This allows us to build more and more complex tools. And most importantly, we really like it: the brain encourages us every time we invent or achieve something. Therefore, our tools are developing with us. The mechanisms of their development and improvement are sewn into us.

Migratory birds fly south in autumn, north in spring. It's their instinct. Ants build an anthill — it's their instinct. If people are left in satiety and peace, they begin to encode secret messages in the Bible, create complex etiquette, form mathematics, experiment with materials.

Read more
Total votes 7: ↑6 and ↓1+5
Comments0

How did I increase the website performance score from 35 to 100 for both mobile and desktop?

Level of difficultyEasy
Reading time5 min

Not long ago, I started my personal blog. Instead of opting for the traditional route of using the popular WordPress CMS for blogs, I decided to embrace new technologies. My choice landed on Next.js and a NoSQL-type database.

Read more
Total votes 1: ↑1 and ↓0+1
Comments0

Blinking into Morse code

Level of difficultyEasy
Reading time10 min

Explaining main algorithm.

For a while I’ve been thinking of writing a scientific article. I wanted it to have certain utility.

Morse code is binary: it takes only two values – either dot (short) or hyphen (long). I figured out that short (s) can stand for two-eye blinking whilst long (l) can indicate left-eye blinking. Another question emerged: how to understand when does one-symbol recording stop?

Empty space between two symbols can be presented by right-eye blinking – r. If I input singly symbol of short (dot) and long (hyphen), I will blink my right eye once to indicate the space between two symbols.

To separate independent words, one has to blink her right eye twice and get rr.

Hence, I have collected an ordered set of symbols – r, l, s, - that can be converted into a full-fledged text. Once I accomplish the transformation, I get an answer.

Read more
Total votes 6: ↑6 and ↓0+6
Comments2

How Java works with fonts

Level of difficultyEasy
Reading time3 min

Hello!

In this article, I will try to briefly describe how Java Virtual Machine works with fonts. Once I needed to change the font used by the JVM and, surprisingly, found only pieces of legacy information about this. I spent a little time investigating the problem and now want to share this information with anybody who could find it useful. Feel free to leave any comments :)

Read more
Rating0
Comments1

Setting Up an Experiment Environment for Data-Driven Product Development

Level of difficultyMedium
Reading time8 min

As a product owner, it is common to face the question of whether to proceed with option A or option B. Or, which version of the screen should be implemented to achieve better results? Making such decisions can be challenging, especially when you are under tight deadlines with limited resources. Furthermore, such decisions are made based on personal judgment or copying the approach of a competitor, which can lead to suboptimal results.

The good news is that one can avoid such pitfalls by setting up a simple experiment environment that requires relatively low effort. In this article, we will describe how you can achieve this.

Read more
Rating0
Comments0

Business process management. Part 1. Why bother?

Level of difficultyEasy
Reading time4 min

This is the first post in a series on Business Process Management (BPM). Having worked as a business analyst and product manager in various companies ranging from middle-sized startups to big corporations, I have observed differences in approaches to business process management - from almost complete disregard to excessive attention. So, I decided to share my views on the topic, why I think BPM is important, especially when a company grows fast and switches from the startup stage to a grown company, and what approach I think might work for a company of average size without involving too much time and resources.

Read more
Total votes 3: ↑3 and ↓0+3
Comments0

An introduction to the world of AI for designers

Level of difficultyEasy
Reading time5 min

Every day a new neural network appears and every day more opportunities are opened to designers to simplify their workflow. Someone fundamentally refuses to use them, because “there is no life in machinex and technologies”, and someone is only happy to find a way to reduce the amount of work. Personally, I belong to the second type and want to share the most detailed gait on neurons I have acquired lately. 

Read more
Total votes 1: ↑1 and ↓0+1
Comments0

GNU radio 802.11 black box optimization

Level of difficultyMedium
Reading time5 min

In this post I'll share my experience in adjustment of WiFi physical channel. The channel was implemented on a software defined radio (SDR) platform. WiFi looks like a very complicated thing standardized over hundreds of pages. Could a non-expert with a PC and a couple of 100$ devices (HackRFs) somehow improve it? Here I try to develop a WiFi optimization approach basically agnostic of protocol implementation details. There's some math and Python programming in it.

Read more
Total votes 5: ↑5 and ↓0+5
Comments0