• A bit about our currently nameless game company, and what we’re working on at the moment

      Hey everyone! I represent a game studio without a name, and the project we’re working on goes by the technical name of "CGDrone". I started writing this article earlier today, having tortured myself for ages with sketches, colours, algorithms and correcting bugs in rotations based on quaternions (the last one just about finished me off). You can probably understand I needed a break.

      I’ve often come across stories people have posted online about how they made their game, the difficulties they faced, and the result they achieved at the end. Likewise, our team has its own story, and I’d like to share a bit about it.

      Read more
    • Damned if you do, damned if you don’t: how tech companies can cut through passive-aggressive media

        Entrepreneurs make for easy targets. Whatever your business is doing, it’s guaranteed to ruffle some feathers. But don’t be quick to blame the public. Most times, being sceptical of change is only logical.

        Even those who buy into your product will probably expect it to fail. 20% of businesses shut their doors during their first year, and less then half survive for more than five. We may not know these numbers, but we know it from experience — most of them overpromise, underdeliver and ultimately disappoint.

        As such, it’s no surprise that the internet is full of passive-aggressive tech coverage. No matter what you do, your business is going to be attacked and demeaned. No one is immune.

        Look no further than the original iPhone’s early reviews. It generated a lot of negative coverage for the sake of negative coverage. CNET’s main complaints revolved over a lack of physical buttons, completely missing the entire point of having a touchscreen. A Techcrunch columnist went even further and outright damned it to failure. Sounds funny now, but 14 years ago these people were dead serious.

        Of course, these days everyone is an expert and the comment sections matter more than the articles they follow. Unlike traditionally restrained media professionals, the overconfident amateurs on popular UGC platforms openly take pleasure in attacking whatever they come across. It might be their way of letting off steam from being bullied at work or having financial difficulties, but no matter the reason, you still have to deal with a bunch of people trying to paint you in a negative light. And that’s not easy.

        Continue Reading
      • 10+ Biggest Remote Tech Jobs Aggregators Comparison

          There is a myriad of articles about where to find remote jobs, particularly in tech. Some of them are outdated and most of them don't provide detailed reviews. So that's why I decided to do my own research. I did a basic search by "React" skill (where possible) and expected to see mostly "Frontend Developer" vacancies.

          Read more
        • Speech Analytics: Benefits and its New Importance in Telecommunication Technology

            Speech analytics is the process of analysing recorded speech, such as phone calls, to gather customer information to improve communication and future customer interaction. Speech analytics as a technology has been evolving especially rapidly over the last few years. It gives the ability to structure and analyse previously lost streams of insight-rich data, such as phone conversations. Empowered with this technology, operations can gather incredibly valuable business intelligence to drive call delivery performance improvements. It’s smart in that it automatically identifies focus areas in which customer service or sales teams may need additional call training which then, in turn, improves the call’s successful outcome. Speech analytics, as a process, can isolate buzzwords and phrases used most frequently within a given time period, plus indicate usage is trending up or down. This data is highly useful to call managers to spot changes in consumer behaviour so that action can be taken to improve customer satisfaction.

            Zadarma is a leading global VoIP provider and offers a smart speech analytics feature as part of their incredibly easy to use telecommunications offering. The tool is free as part of the wider PBX phone system bundles, included in the free recognition minutes. Zadarma’s analytics feature allows data access to every internal or external call conversation. The benefits of speech analytics include:

            Read more
          • Finding Typos in the GTK 4 Project by PVS-Studio

              0793_GTK_4_continue/image1.png


              You may have already read a recent article about the first PVS-Studio run and filtration of warnings. We used the GTK 4 project as an example. It's about time we worked with the received report in more detail. Our regular readers may have already guessed that this article will be a description of errors found in the code.

              Read more →
            • Ads
              AdBlock has stolen the banner, but banners are not teeth — they will be back

              More
            • How I create browser applications inside browsers

              • Translation

              GitJS


              In 2013 Canonical tried to crowdfund Ubuntu Edge smartphone. Its main feature could be the ability to use the smartphone as a full-fledged PС. Unfortunatly, the crowdfunding campaign did not accumulate enough money, so a dream of having a universal device remained to be the dream.


              I've been searching for universality, too, on the software side, not the hardware one. Today I can confidently say I found the necessary combination: Git and JavaScript.


              As you know, I have already described the benefits of browser applications (nCKOB static site generator) and the benefits of using Git instead of yet another back-end with API (GitBudget to track personal spendings). Once GitBudget was out, I spent the remaining 2020 to build a system allowing one to create browser applications right inside browsers. GitJS is the name of that system.

              Read more →
            • Coins classifier Neural Network: Head or Tail?

                Home of this article: https://robotics.snowcron.com/coins/02_head_or_tail.htm

                The global objective of these articles is to build a coin classifier, capable of scanning your pocket change and find rare / valuable coins. This is a second article in a series, so let me remind you what happened earlier (https://habr.com/ru/post/538958/).

                During previous step we got a rather large dataset composed of pairs of images, loaded from an online coins site meshok.ru. Those images were uploaded to the Internet by people we do not know, and though they are supposed to contain coin's head in one image and tail in the other, we can not rule out a situation when we have two heads and no tail and vice versa. Also at the moment we have no idea which image contains head and which contains tail: this might be important when we feed data to our final classifier.

                So let's write a program to distinguish heads from tails. It is a rather simple task, involving a convolutional neural network that is using transfer learning.

                Same way as before, we are going to use Google Colab environment, taking the advantage of a free video card they grant us an access to. We will store data on a Google Drive, so first thing we need is to allow Colab to access the Drive:

                Читать далее
              • Implementing Offline traceroute Tool Using Python

                • Translation

                Hey everyone! This post was born from a question asked by an IT forum member. The summary of the question looked as follows:


                • There is a set of text files containing routing tables collected from various network devices.
                • Each file represents one device.
                • Device platforms and routing table formats may vary.
                • It is required to analyze a routing path from any device to an arbitrary subnet or host on-demand.
                • Resulting output should contain a list of routing table entries that are used for the routing to the given destination on each hop.

                The one who asked a question worked as a TAC engineer. It is often that they collect or receive from the customers some text 'snapshots' of the network state for further offline analysis while troubleshooting the issues. Some automation could really save a lot of time.


                I found this task interesting and also applicable to my own needs, so I decided to write a Proof-of-Concept implementation in Python 3 for Cisco IOS, IOS-XE, and ASA routing table format.


                In this article, I’ll try to reconstruct the resulting script development process and my considerations behind each step.


                Let’s get started.

                Read more →
              • The founder’s guide to AngelList

                  AngelList is a social network designed to connect startups with investors and vice versa. The founders of it were dissatisfied with how opaque the VC world was, and found a way to increase the amount of available data. The project began in partnership with just 50 volunteer investors wishing to allocate $80 million in capital, and has grown to be the leading website of its kind. Over the past three years more than 75% of startups that received seed funding from American investors used AngelList to make it happen.

                  Continue Reading
                • Prometheus in Action: from default counters to SLO-related queries

                  • Tutorial

                  All Prometheus metrics are based on time series - streams of timestamped values belonging to the same metric. Each time series is uniquely identified by its metric name and optional key-value pairs called labels. The metric name specifies some characteristics of the measured system, such as http_requests_total - the total number of received HTTP requests. In practice, you often will be interested in some subset of the values of a metric, for example, in the number of requests received by a particular endpoint; and here is where the labels come in handy. We can partition a metric by adding endpoint label and see the statics for a particular endpoint: http_requests_total{endpoint="api/status"}. Every metric has two automatically created labels: job_name and instance. We see their roles in the next section.

                  Prometheus provides a functional query language called PromQL. The result of the query might be evaluated to one of four types:

                  Scalar (aka float)

                  String (currently unused)

                  Instant Vector - a set of time series that have exactly one value per timestamp.

                  Range Vector - a set of time series that have a range of values between two timestamps.

                  At first glance, Instant Vector might look like an array, and Range Vector as a matrix.

                  If that would be the case, then a Range Vector for a single time series "downgrades" to an Instant Vector. However, that's not the case:

                  Read more
                • Distributed Tracing for Microservice Architecture

                  • Tutorial

                  What is distributed tracing? Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance.

                  Let’s have a look at a simple prototype. A user fetches information about a shipment from `logistic` service. logistic service does some computation and fetches the data from a database. logistic service doesn’t know the actual status of the shipment, so it has to fetch the updated status from another service `tracking`. `tracking` service also needs to fetch the data from a database and to do some computation.

                  In the screenshot below, we see a whole life cycle of the request issued to `logistics` service:

                  Read more
                • Algorithms in Go: Merge Intervals

                  • Tutorial

                  This is the third part of a series covering the implementation of algorithms in Go. In this article, we discuss the Merge Interval algorithm. Usually, when you start learning algorithms you have to deal with some problems like finding the least common denominator or finding the next Fibonacci number. While these are indeed important problems, it is not something that we solve every day. What I like about the Merge Interval algorithm is that we apply it in our everyday life, usually without even noticing that we are solving an algorithmic problem.

                  Let's say that we need to organize a meeting for our team. We have three colleagues Jay, May, and Ray and their time schedule look as follows (a colored line represents an occupied timeslot):

                  Read more
                • Revealed: 7 Top Web Development Companies & Trends for 2021

                    image

                    As we enter a new decade, the IT industry has also encountered many loopholes that we must work on. Seeing this, hundreds of motivated young minds have decided to become entrepreneurs. But is it so easy to succeed in a world where competition is already so high?

                    Bluntly, the answer is NO. It is not easy to be successful, and the reason for these startups' failure is the lack of digital presence or inadequate technical support. Another major reason that has been seen is the wrong choice of the web development company.

                    Hiring dedicated web developers may seem like an easy task at first, but it is not. It is one of the most challenging tasks. And to prevent you from falling into the pits of failure, I have created a list of the 7 best web development companies in India and abroad.
                    Read more →
                  • Architectural approaches to authorization in server applications: Activity-Based Access Control Framework

                    • Translation

                    This article is about security. I’ll focus on this in the context of web applications, but I’ll also touch on other types of applications. Before I describe approaches and frameworks, I want to tell you a story.


                    Background


                    Throughout my years working in the IT sphere, I’ve had the opportunity to work on projects in a variety of fields. Even though the process of authenticating requirements remained relatively consistent, methods of implementing the authorization mechanism tended to be quite different from project to project. Authorization had to be written practically from scratch for the specific goals of each project; we had to develop an architectural solution, then modify it with changing requirements, test it, etc. All this was considered a common process that developers could not avoid. Every time someone implemented a new architectural approach, we felt more and more that we should come up with a general approach that would cover the main authorization tasks and (most importantly) could be reused on other applications. This article takes a look at a generalized architectural approach to authorization based on an example of a developed framework.


                    Approaches to Creating a Framework


                    As usual, before developing something new, we need to decide what problems we’re trying to solve, how the framework will help us solve them, and whether or not there is already a solution to these issues. I’ll walk you through each step, starting with identifying issues and describing our desired solution.


                    We’re focusing on two styles of coding: imperative and declarative. Imperative style is about how to get a result; declarative is about what you want to get as a result.

                    Read more →
                  • Coins Classification using Neural Networks

                    • Tutorial

                    See more at robotics.snowcron.comThis is the first article in a serie dedicated to coins classification.Having countless "dogs vs cats" or "find a pedestrian on the street" classifiers all over the Internet, coins classification doesn't look like a difficult task. At first. Unfortunately, it is degree of magnitude harder - a formidable challenge indeed. You can easily tell heads of tails? Great. Can you figure out if the number is 1 mm shifted to the left? See, from classifier's view it is still the same head... while it can make a difference between a common coin priced according to the number on it and a rare one, 1000 times more expensive.Of course, we can do what we usually do in image classification: provide 10,000 sample images... No, wait, we can not. Some types of coins are rare indeed - you need to sort through a BASKET (10 liters) of coins to find one. Easy arithmetics suggests that to get 10000 images of DIFFERENT coins you will need 10,000 baskets of coins to start with. Well, and unlimited time.So it is not that easy.Anyway, we are going to begin with getting large number of images and work from there. We will use Russian coins as an example, as Russia had money reform in 1994 and so the number of coins one can expect to find in the pocket is limited. Unlike USA with its 200 years of monetary history. And yes, we are ONLY going to focus on current coins: the ultimate goal of our work is to write a program for smartphone to classify coins you have received in a grocery store as a change.Which makes things even worse, as we can not count on good lighting and quality cameras anymore. But we'll still try.In addition to "only Russian coins, beginning from 1994", we are going to add an extra limitation: no special occasion coins. Those coins look distinctive, so anyone can figure that this coin is special. We focus on REGULAR coins. Which limits their number severely.Don't take me wrong: if we need to apply the same approach to a full list of coins... it will work. But I got 15 GB of images for that limited set, can you imagine how large the complete set will be?!To get images, I am going to scan one of the largest Russian coins site "meshok.ru".This site allows buyers and sellers to find each other; sellers can upload images... just what we need. Unfortunately, a business-oriented seller can easily upload his 1 rouble image to 1, 2, 5, 10 roubles topics, just to increase the exposure.

                    So we can not count on the topic name, we have to determine what coin is on the photo ourselves.To scan the site, a simple scanner was written, based on the Python's Beautiful Soup library. In just few hours I got over 50,000 photos. Not a lot by Machine Learning standards, but definitely a start.After we got the images, we have to - unfortunately - revisit them by hand, looking for images we do not want in our training set, or for images that should be edited somehow. For example, someone could have uploaded a photo of his cat. We don't need a cat in our dataset.First, we delete all images, that can not be split to head/hail.

                    Читать далее
                  • How PVS-Studio Checked ELKI in January

                      If you feel like the New Year just came, and you missed the first half of January, then all this time you've been busy looking for tricky bugs in the code you maintain. It also means that our article is what you need. PVS-Studio has checked the ELKI open source project to show you errors that may occur in the code, how cunningly they can hide there, and how you can deal with them.


                      ELKI/image1.png

                      Read more →