All streams
Search
Write a publication
Pull to refresh

All streams

Show first
Period
Level of difficulty

Robotic Floor Washer

Reading time16 min
Views1.9K

When we think about robots, the first thing that comes to mind are robotic vacuum cleaners. The reason is simple: they are the most "solid" demonstration of success of "consumer" robotics. So making one sounds like a good idea... at first.

But isn't it a bit counter productive - to build something that popular, something we can buy in a store at a commodity (small) price? Should we build something similar, but NOT a vacuum cleaner? Something like... a floor washer, perhaps? Yes, a robotic floor washer.

In this tutorial I am going to build a fully working prototype of a robotic floor washer. By "fully working" I mean that it is going to wash floor, instead of moving dirt around like most robotic "moppers" do. While by "prototype" I mean it is going to be the first step towards production-ready unit, but not a production-ready unit yet. Let me explain.

First of all, it is not going to be THAT solid. You can grab a robotic vacuum cleaner that you got from the store by any part, including wheels and bumper and lift it. It will not fall apart. Ours probably will. The reason is, to make a device "mechanically solid" is a separate task, and if we focus on it, then "robotic" tasks will become more difficult to achieve. So we are going to do what engineers usually do: first they build C3PO without the outside body, wires everywhere and so on. And only then they put a gold-covered outfit on it.

Читать далее

Common misconceptions about space-grade integrated circuits

Reading time27 min
Views22K

Space exploration was always fascinating, and recent developments have reignited the interest to the heights never seen since the last man stood on the Moon. People argue about Mars exploration and features of spaceships as their grandparents would’ve done if the internet existed fifty years ago. I’m an electronics engineer working in the aerospace industry, so I know a thing or two about the technical background of this stuff — and I see that these things aren’t common knowledge, and people often have significantly skewed ideas about the reasons behind many things and decisions. Namely, I’d love to speak of some misconceptions about radiation hardened integrated circuits and the means of protection from radiation-induced damage.

So, let's start our journey

Regular Avalonia

Reading time4 min
Views9.4K
Sometimes we don’t understand how the regular expression that we have composed works and want to check. There are many applications like regex101.com or vs code. I wanted to add one more to this list.

In this article we will see how you can wrap Regex in cross-platform graphics and create a simple application for testing regular expressions.


Read more →

SQL Index Manager – a long story about SQL Server, grave digging and index maintenance

Reading time14 min
Views2.8K
Every now and then we create our own problems with our own hands… with our vision of the world… with our inaction… with our laziness… and with our fears. As a result, it seems to become very convenient to swim in the public flow of sewage patterns… because it is warm and fun, and the rest does not matter – we can smell round. But after a fail comes the realization of the simple truth – instead of generating an endless stream of causes, self-pity and self-justification, it is enough just to do what you consider the most important for yourself. This will be the starting point for your new reality.

For me, the written below is just such a starting point. The way is expected to be lingering…
Let's go?

How Moovit improved its app to help people with disabilities ride transit with confidence

Reading time4 min
Views894

Alexandr Epaneshnikov, a 19-year-old Russian student who is legally blind, recently decided he wanted to be more independent by commuting on his own and relying less on his mom for rides to school. It meant taking a streetcar to a subway to his high school in Moscow, a 30-minute trip that Epaneshnikov assuredly navigates with a cane and Moovit, an urban mobility app optimized for screen readers.


Read more →

Indexes in PostgreSQL — 10 (Bloom)

Reading time11 min
Views7.6K
In the previous articles we discussed PostgreSQL indexing engine and the interface of access methods, as well as hash indexes, B-trees, GiST, SP-GiST, GIN, RUM, and BRIN. But we still need to look at Bloom indexes.

Bloom


General concept


A classical Bloom filter is a data structure that enables us to quickly check membership of an element in a set. The filter is highly compact, but allows false positives: it can mistakenly consider an element to be a member of a set (false positive), but it is not permitted to consider an element of a set not to be a member (false negative).

The filter is an array of $m$ bits (also called a signature) that is initially filled with zeros. $k$ different hash functions are chosen that map any element of the set to $k$ bits of the signature. To add an element to the set, we need to set each of these bits in the signature to one. Consequently, if all the bits corresponding to an element are set to one, the element can be a member of the set, but if at least one bit equals zero, the element is not in the set for sure.

In the case of a DBMS, we actually have $N$ separate filters built for each index row. As a rule, several fields are included in the index, and it's values of these fields that compose the set of elements for each row.

By choosing the length of the signature $m$, we can find a trade-off between the index size and the probability of false positives. The application area for Bloom index is large, considerably «wide» tables to be queried using filters on each of the fields. This access method, like BRIN, can be regarded as an accelerator of sequential scan: all the matches found by the index must be rechecked with the table, but there is a chance to avoid considering most of the rows at all.
Read more →

Citymobil — a manual for improving availability amid business growth for startups. Part 4

Reading time7 min
Views1.1K


This is the next article of the series describing how we’re increasing our service availability in Citymobil (you can read the previous parts here: part 1, part 2, part 3). In further parts, I’ll talk about the accidents and outages in detail.

1. Bad release: database overload


Let me begin with a specific example of this type of outage. We deployed an optimization: added USE INDEX in an SQL query; during testing as well as in production, it sped up short queries, but the long ones — slowed down. The long queries slowdown was only noticed in production. As a result, a lot of long parallel queries caused the database to be down for an hour. We thoroughly studied the way USE INDEX worked; we described it in the Do’s and Dont’s file and warned the engineers against the incorrect usage. We also analyzed the query and realized that it retrieves mostly historical data and, therefore, can be run on a separate replica for historical requests. Even if this replica goes down due to an overload, the business will keep running.
Read more →

Indexes in PostgreSQL — 7 (GIN)

Reading time18 min
Views26K
We have already got acquainted with PostgreSQL indexing engine and the interface of access methods and discussed hash indexes, B-trees, as well as GiST and SP-GiST indexes. And this article will feature GIN index.

GIN


«Gin?.. Gin is, it seems, such an American liquor?..»
«I'm not a drink, oh, inquisitive boy!» again the old man flared up, again he realized himself and again took himself in hand. «I am not a drink, but a powerful and undaunted spirit, and there is no such magic in the world that I would not be able to do.»

— Lazar Lagin, «Old Khottabych».

Gin stands for Generalized Inverted Index and should be considered as a genie, not a drink.
README
Read more →

Interview with Rob Vugteveen — an old-school FORTRAN programmer

Reading time5 min
Views2.1K
I decided to make an interview with one of my American friends — Rob Vugteveen. He was working as a FORTRAN programmer back in 1980s, so it's quite a unique experience.


Rob Vugteveen, Carson City, Nevada, USA

K: Hi Rob. I've heard you were working as a Fortran programmer many years ago. Is that right? How the industry was looking back then?

R: Good morning, Kirill.

In the 1980s I made my living as a FORTRAN programmer in the mining industry, primarily in the processing of exploration data and presenting it graphically. We were using VAX minicomputers from Digital Equipment Corporation. This was a time when desktop PCs were growing in popularity, and procedural languages like FORTRAN were being challenged by object-oriented languages. Also, graphics display systems were shifting away from character-cell terminals to X-window-based displays.

FORTRAN (“FORmula TRANslation”) was built for computationally intensive programs, and it did not have its own graphic libraries to display information. There were companies that sold large FORTRAN subroutine libraries to provide that capability. These were not yet designed for the growing popularity of X-window technology.

When we were forced to move from expensive VAX computers to cheaper PCs, we had to write hybrid programs using FORTRAN for computations and C++ for display. It was a bit messy at first. I left that job for something completely different (building a mining museum) and haven’t really done any programming since.

FORTRAN is still used today in scientific research for computationally intensive work, but I’m sure it’s been adapted to work with graphical display systems through external subroutines written in object-oriented code.
Read more →

The Origins of Startup Culture: How the Early Success Stories Shaped the Modern State of the Tech Industry

Reading time4 min
Views3.5K
In the late 1930s, two Stanford students, William Hewlett and David Packard, were inspired by their professor’s plea to turn the Bay Area into the national capital of high tech. Operating out of the cheapest property they could find — a garage in suburban Palo Alto, they built their first commercial product, the HP200A oscillator. Now a private museum and a California Historic Landmark, this place is a living monument, commemorating the birth of the Silicon Valley startup culture.

This event preceded the similar and widely publicized success stories of Microsoft and Apple by more than 30 years. But it nonetheless perfectly defines the startup culture as we know it today. How come?

Read more →

My and my girlfriend’s first video game. Development with Unity. Part 1

Reading time7 min
Views5.5K
If not to take into account releases for Android and a dozen of abandoned projects just before they were ready, then yes, it is our first game appropriate for more than one platform. How did it all start? Very simply. We worked on another project, let’s call it “project A”, and we’d been working on it for a long time when we decided to make a game during a couple of months and use it to train our marketing skills, and then immediately release our “project A” when we would be more experienced in the promotion of games. But the plan failed and “project A” was kept untouched for the whole year. But this story isn’t about “project A”, it’s about a logical game called «Cubicity: Slide puzzle».


Read more →

Indexes in PostgreSQL — 2

Reading time5 min
Views8.2K

Interface


In the first article, we've mentioned that an access method must provide information about itself. Let's look into the structure of the access method interface.

Properties


All properties of access methods are stored in the «pg_am» table («am» stands for access method). We can also get a list of available methods from this same table:

postgres=# select amname from pg_am;
 amname
--------
 btree
 hash
 gist
 gin
 spgist
 brin
(6 rows)

Although sequential scan can rightfully be referred to access methods, it is not on this list for historical reasons.

In PostgreSQL versions 9.5 and lower, each property was represented with a separate field of the «pg_am» table. Starting with version 9.6, properties are queried with special functions and are separated into several layers:

  • Access method properties — «pg_indexam_has_property»
  • Properties of a specific index — «pg_index_has_property»
  • Properties of individual columns of the index — «pg_index_column_has_property»

The access method layer and index layer are separated with an eye towards the future: as of now, all indexes based on one access method will always have the same properties.
Read more →

Touch typing

Reading time3 min
Views8.5K


20% of efforts produce 80% of the results. And the other 80% of efforts produce only 20% of results.

In other words, you have to spend only 20% of the total time to learn something new and the last 80% you spend to become an expert. To learn touch typing you spend only one week of your life to achieve the same speed which was before. It becomes easier to type and you are getting faster and faster every next day. In this post, I will tell you how to start and give you the basic tips and tricks to make your learning process easier. Challenge yourself to become more productive.

Read more →

Open Source developer's life in GIFs

Reading time2 min
Views4.2K
Sberbank is the largest bank in Russia and Eastern Europe. Our team in Sbertech teaches Sberbank efficient work with Free & Open Source Software. You can read more about this on Habr (what we exactly do, yet in Russian).

One of the main challenges is to open the mind of managers and engineers for using FOSS (Free & Open Source Software) properly. Because we have a lot of them, we have tried to use GIFs for answer the most common questions.

image

Read more →

Why pentesting is important to your Business?

Reading time3 min
Views1.2K
image

In today’s world, it is almost impossible to imagine a business without some type of connection to the Internet — a website, email, employee training, CRM (Customer-relationship management), CMS (Content management system), etc. It simplifies and speeds up the ordering process, search for new clients, records search and keeping, and such.
Read more →

How to learn English

Reading time4 min
Views14K

One one hand I don't want to be the final authority, but on the other hand, I'd like to share my point of view on how to learn English. The English language is not secret knowledge; it is just a lot of hard training. One of the most important bullets is constantly improving English. You should do it from day to day if you want to approach result. It must not loathe torture for you, It means that you should find out something interesting in that process.

Read more →