• Generating multi-brand multi-platform icons with Sketch and a Node.js script — Part #1


      Using a custom build script in Node JS, it is possible to manipulate a series of Sketch files, and then, using an internal Sketch tool, automatically export their assets, to generate multiple icon libraries, for multiple platforms and different brands, that support dynamic colourisation of the assets via design tokens, and also AB testing of the assets via naming convention. Easy peasy :)

      Well, actually it’s not that easy, but it can certainly be done. This post is a detailed explanation of how we did it, and what we discovered along the way.

      The problem we were trying to solve

      At Badoo we build a dating app. Actually, multiple dating apps. For multiple platforms (iOS, Android, Mobile Web, Desktop Web), across multiple teams.

      We use hundreds of icons in our apps. Some of them are the same across different apps, some are very specific to the brands the apps reflect. The icons are continuously evolving, in sync with the evolution of the design. Sometimes completely new icons are added, while others get updated, and still others get dropped (although, they often remain in the codebase).
      Read more →
    • We're in UltraHD Morty! How to watch any movie in 4K

        You’ve probably heard about Yandex’s DeepHD technology they once used to improve the quality of old Soviet cartoons. Unfortunately, it’s not public yet, and we, regular programmers, don’t have the dedication to write our own solution. But I personally really wanted to watch Rick and Morty on my 2880x1880 Retina display. And I was deeply disappointed, as even 1080p video (the highest available for this series) looks really blurry on a Retina display! Don’t get me wrong, 1080p is often good enough, but Retina is designed in such a way that an animation with its pronounced outlines in 1080p looks awfully blurry, like 480p on a FullHD monitor.

        I decided I want to see Rick and Morty in 4K, even though I can’t write neural networks. And, amazingly, I found a solution. You don’t even need to write any code: all you need is around 100GB of free space and a bit of patience. The result is a sharp 4K image that looks better than any interpolation.

        Read more →
      • You Do Not Need Blockchain: Eight Well-Known Use Cases And Why They Do Not Work


          People are resorting to blockchain for all kinds of reasons these days. Ever since I started doing smart contract security audits in mid-2017, I’ve seen it all. A special category of cases is ‘blockchain use’ that seems logical and beneficial, but actually contains a problem that then spreads from one startup to another. I am going to give some examples of such problems and ineffective solutions so that you (developer/customer/investor) know what to do when somebody offers you to use blockchain this way.


          • The described use cases and problems occur at the initial stage. I am not saying these problems are impossible to solve. However, it is important to understand which solutions system creators offer for particular problems.
          • Even though the term ‘blockchain use’ looks strange and I am not sure that blockchain can be used for anything other than money (Bitcoin), I am going to use it without quotes.

          1. Supply chain management

          Let’s say you ordered some goods, and a carrier guarantees to maintain certain transportation conditions, such as keeping your goods cold. A proposed solution is to install a sensor in a truck that will monitor fridge temperature and regularly transmit the data to the blockchain. This way, you can make sure that the promised conditions are met along the entire route.

          Read more →
        • Top 10 Mobile App Development Companies for Enterprise & Startups


            The mobile app developers are exceptionally intrigued by conveying 100% fulfillment outcome for the entrepreneurs. By having top 10 mobile app development companies, it is crucial for working with an effective outcome and does the worldwide system. In this way, get assistance from the professional mobile app developers and grow the business in like manner.

            Read more →
          • .NET Reference Types vs Value Types. Part 2

              The Object base type and implementation of interfaces. Boxing

              It seems we came through hell and high water and can nail any interview, even the one for .NET CLR team. However, let's not rush to microsoft.com and search for vacancies. Now, we need to understand how value types inherit an object if they contain neither a reference to SyncBlockIndex, not a pointer to a virtual methods table. This will completely explain our system of types and all pieces of a puzzle will find their places. However, we will need more than one sentence.

              Now, let's remember again how value types are allocated in memory. They get the place in memory right where they are. Reference types get allocation on the heap of small and large objects. They always give a reference to the place on the heap where the object is. Each value type has such methods as ToString, Equals and GetHashCode. They are virtual and overridable, but don’t allow to inherit a value type by overriding methods. If value types used overridable methods, they would need a virtual methods table to route calls. This would lead to the problems of passing structures to unmanaged world: extra fields would go there. As a result, there are descriptions of value type methods somewhere, but you cannot access them directly via a virtual methods table.

              This may bring the idea that the lack of inheritance is artificial

              This chapter was translated from Russian jointly by author and by professional translators. You can help us with translation from Russian or English into any other language, primarily into Chinese or German.

              Also, if you want thank us, the best way you can do that is to give us a star on github or to fork repository github/sidristij/dotnetbook.
              Read more →
            • AdBlock has stolen the banner, but banners are not teeth — they will be back

            • Weak UI, weak programmer

                UI facepalm

                Why do so many programmers hate UI work? Because it is tedious. Especially, for the Web, but other types of UI are only slightly easier. Layouts, margins, paddings — neverending stream of little tweaks to make it look OK on all sane environments, and somehow this freaking button sometimes overlaps that input field. Rrrr! And yes, it should not hang on button clicks, which means a lot of asynchronous programming, which is a nightmare.

                And don’t even speak about aesthetics and usability! Choose right colours, element sizes and locations, find/draw images and put them where they fit, think about user workflows — isn’t it a designers’ or Ux specialists’ job?! Leave me alone, I’m a programmer. I work with backend layers, where everything is straightforward and linear, there are no buttloads of different environments to adjust to, and design is guided by mere logic without pesky fussing with ‘user friendliness’ and ’beauty’!

                Read more →
              • Making a DIY thermal camera based on a Raspberry Pi


                  Hi everyone!

                  Winter has arrived, and so I had to check the thermal insulation of my out of town residence dacha. And it just turned out a famous Chinese marketplace started to sell cheap thermal camera modules. So I decided to DIY it up and build a rather exotic and useful thing — a heat visor for the home. Why not? Especially since I had a Raspberry Pi lying around anyway… The result is down below.
                  Read more →
                • Is Haskell really the language of geniuses and academia?

                  • Translation

                  I once had a discussion with a founder of an Israeli startup developing a GPU-based database with a focus on speed. The work stack included Haskell and C++, among others, and the founder was complaining about how hard it is to find competent programmers. Which was part of the reason he came to Moscow.

                  I carefully asked if they considered using something more popular and new. And even though the answer was rather polite and well-supported with arguments, it still sounded like “Come on, don’t even bring up these toys”.

                  Until then, all I heard about Haskell could be summarized as “be VERY careful in dealing with it”. To get to know Haskell programmers better, I came to a topical Telegram chat with some questions. I was quite afraid at first, and, as it turned out, I was right.

                  Haskell doesn’t lend itself to popular explanation, and people seemingly don’t even try. If the topic is ever brought up, it’s only talked about in full depth and as objectively as possible. Someone wrote to me: “One of the defining features of both Haskell itself and its community is that they didn’t try to achieve any kind of mainstream recognition. Instead, they focused on building a logical, principal way of solving real problems over trying to appease the widest audience possible”

                  Nevertheless, a couple of people did tell me about their experiences, which are shown below.
                  Read more →
                • Smart Lock: Why sloth is a driver of the IoT progress

                    When you are sitting in your comfy chair in your cool modern office, anything distracting you from your favorite routine is really annoying. Some may call it a sign of sloth, but in fact, it relates to optimization of workflows. Our computers and smartphones provide us with many opportunities to do a lot without leaving our place. Software as such cares about our control over the physical world by just clicking and tapping. Indeed, the digitization advances: what people have had to do with their muscles for centuries in the past, could be done with either a voice command or a text message today thanks to numerous remotely controlled gizmos. And the IoT plays a crucial role in all this for a reason.
                    Read more →
                  • Real-time Chat Solutions vs Chat Platforms — Make Your Choice

                    It’s More Than You Imagine…

                    The possibility of acquiring more profit through a chat app solution is gaining popularity than adopting to monthly plans based chat platforms

                    With the rise of instant conversation among the users, it's not surprising that the global mobile messaging app is estimated to reach around 2.1 billion active users by 2020. When the communication lies as the significant action in nature, then in fact the underlying tool “messaging application” also acquires the same importance. Thus, every chat platforms like WhatsApp demand a great market value according to the features and functionalities listed. Most of the business professionals and enterprises are urged to rely on subscription-based plans to avail such messaging platform.
                    Read more →
                  • False Positives in PVS-Studio: How Deep the Rabbit Hole Goes

                      Единорог PVS-Studio и GetNamedSecurityInfo

                      Our team provides quick and effective customer support. User requests are handled solely by programmers since our clients are programmers themselves and they often ask tricky questions. Today I'm going to tell you about a recent request concerning one false positive that even forced me to carry out a small investigation to solve the problem.
                      Read more →
                    • Blazor 0.8.0 experimental release now available

                        Blazor 0.8.0 is now available! This release updates Blazor to use Razor Components in .NET Core 3.0 and adds some critical bug fixes.

                        Get Blazor 0.8.0

                        To get started with Blazor 0.8.0 install the following:

                        1. .NET Core 3.0 Preview 2 SDK (3.0.100-preview-010184)
                        2. Visual Studio 2019 (Preview 2 or later) with the ASP.NET and web development workload selected.
                        3. The latest Blazor extension from the Visual Studio Marketplace.
                        4. The Blazor templates on the command-line:

                          dotnet new -i Microsoft.AspNetCore.Blazor.Templates::0.8.0-preview-19104-04

                        You can find getting started instructions, docs, and tutorials for Blazor at https://blazor.net.

                        Read more →
                      • Detecting Web Attacks with a Seq2Seq Autoencoder


                          Attack detection has been a part of information security for decades. The first known intrusion detection system (IDS) implementations date back to the early 1980s.

                          Nowadays, an entire attack detection industry exists. There are a number of kinds of products—such as IDS, IPS, WAF, and firewall solutions—most of which offer rule-based attack detection. The idea of using some kind of statistical anomaly detection to identify attacks in production doesn’t seem as realistic as it used to. But is that assumption justified?
                          Read more →
                        • Low-budget stereo rendering in few lines of code (stereogram, anaglyph, stereoscope)

                          • Tutorial
                          Another weekend has come, which means I am am writing another couple dozen lines of code and make an illustration or two. In previous articles I’ve explained how to do ray tracing and even blow stuff up. This might surprise you, but computer graphics is quite easy: even a couple hundred lines of bare C++ can produce some very exciting imagery.

                          Today’s topic is binocular vision, and we won’t even break the 100 lines barrier doing it. Since we can draw 3D scenes, it’d be foolish to ignore stereo pairs, so today we’ll make something like this:

                          Read more →
                        • The Overview of JavaScript Frameworks: Which One to Choose for Your Project?

                          Ten years ago, companies who wanted to create cross-platform projects would have to cooperate with different development teams and experts. However, 2009 has changed the game, because the developers from Nitobi (later purchased by Apache) presented Cordova – a fresh framework that was able to convert web applications into mobile systems. Linking the devices’ APIs via plugins, developers could access smartphones and tablets. Cordova is a JavaScript-based tech compatible with various platforms.

                          In this guide, we will review three more JS-driven systems, look at their unique features and compare them.
                          Read more →