Introduction to Augmented Reality

augmented realityThe primary idea beyond augmented reality is to superimpose pics, audio and other sensory improvements over a real-international environment in real time. Sounds quite easy. besides, have not tv networks been doing that with photographs for decades? but, augmented reality is more superior than any technology you've seen in television broadcasts, despite the fact that some new tv effects come near, including RACEf/x and the wonderful-imposed first down line on televised U.S. football games, both created via Sportvision. but these structures display snap shots for most effective one point of view. next-generation augmented-reality systems will show images for each viewer's perspective.

Using Machine Learning for Text Processing in Natural Languages

machine learning

Today we will touch an interesting topic of machine learning of natural languages. Nowadays very large investmenst are made in this region and many different tasks are being solved. This topic attracts the attention not only of industry, but also of the scientific community.

Can the machine think?

Researchers correlate the analysis of natural languages ​​with the fundamental question: can a machine think? The famous philosopher Rene Descartes gave a unambiguously negative answer. Not surprising, given the level of development of technology of the XVII century. Descartes believed that the machine does not know how and will never learn to think. The machine will never be able to communicate with a person through natural speech. Even if we explain to it how to use and pronounce words, it will still be memorized phrases, standard answers - the machine does not go beyond them.

Turing test

Since then, many years have passed, the technology has changed quite a lot, and in the twentieth century this issue again became relevant. The well-known scientist Alan Turing in 1950 doubted that the machine can not think, and for testing offered his famous test.

The idea of ​​the test, according to legend, is based on the game that was practiced at student parties. Two people from the company - a guy and a girl - went to different rooms, and the remaining people communicated with them with the help of notes. The task of the players was to guess with whom they are dealing: with a man or with a woman. And the guy with the girl pretended to each other to mislead the other players. Turing made a fairly simple modification. He replaced one of the hidden players with a computer and invited the participants to recognize with whom they interact: with a person or with a machine.

The Turing test was invented more than half a century ago. Programmers have repeatedly stated that their offspring passed the test. Every time there were controversial demands and questions, is it really so. The official reliable version, whether someone coped with the main test of Turing is no. Some of its variations have actually been successfully passed.

Blockchain Technology Signify the Beginning of Internet of Value Era

Blockchain development by IQ DIRECT INCThis technology was vigorously discussed at the recent World Economic Forum in Davos. Bankers from Wall Street invest money in it. Mark Andreesen, the famous developer of the world's first Web browser (Netscape) and one of the founders of Netscape Communications, called it the most important technology since the advent of the Internet. What is it about? Of course, about the blockchain.

Created by a mysterious hacker named Satoshi Nakamoto, distributed register technology, which is the basis of the crypto currency, Bitcoin, also known as a blockchain, can drastically change many industries, from finance and real estate to the entertainment industry. This forces the Silicon Valley titans, world financial leaders and even independent developers to hastily calculate the consequences of the appearance of this technology, so as not to be caught unaware.

Tim Swanson, the head of R3's development department (a New York start-up, organized with the support of a consortium of large banks), called the blockchain something like glutene: everybody talks about it, but no one really knows all the details. Quite simply, the blockchain is used to transfer something that has value: money, shares, property rights, digital license fees, even the votes of voters in the elections through the Internet from one party to another...

We offer blockchain development solutions for any kind of buisness: online payments, financial software, royalty collection.

Today, such transactions often pass through many intermediate parties in the process of authorization, clearing and processing, and are stored in centralized registries of organizations such as the Central Bank (if it comes to financial transactions) or the system of electronic registration of mortgage transactions.

Blockchain distributes the functions of validation and storing the transactions between several computers in a safe and open way, eliminating the need for intermediaries. As a result, the time and costs of processing transactions are practically reduced to zero. Alex Tapscott, CEO of Northwest Passage Ventures (specializing in block chains), sees this technology as the next generation of the Internet, which he calls the Internet of Value.

Since both the original technology of block chains for bitcoins and its new variations, according to Tepskott, have the most powerful potential for transforming huge branches of the economy, the first attempts to develop solutions based on blockchain were made in two areas: in financial services and in creativity, namely music and advertising.

Displaying Open File Dialog using WinApi

This article describes sample code that displays an Open dialog box so that a user can choose the directory, and file name of a to open. The process can be done by keyboard or mouse. The sample code first initializes an OPENFILENAME structure, and then calls the GetOpenFileName function to display the dialog box.

In this example, the lpstrFilter member is a pointer to a buffer that specifies two file name filters that the user can select to limit the file names that are displayed. The buffer contains a double-null terminated array of strings in which each pair of strings specifies a filter. The nFilterIndex member specifies that the first pattern is used when the dialog box is created.

This example sets the OFN_PATHMUSTEXIST and OFN_FILEMUSTEXIST flags in the Flags member. These flags cause the dialog box to verify, before returning, that the path and file name specified by the user actually exist.

The GetOpenFileName function returns TRUE if the user clicks the OK button and the specified path and file name exist. In this case, the buffer pointed to by the lpstrFile member contains the path and file name. The sample code uses this information in a call to the function to open the file.

What blockchain is?

blockchain developmentYou may have already heard the term "blockchain", but maybe did not pay much attention to it, considering it a buzzword or technical jargon. But we believe that develeopment of blockchain technology soulutuions is a breakthrough with very large consequences, which will affect not only the sphere of finance, but also many other sectors. In this article we will tell you what a blockchain is, in simple words.

Block (a chain of blocks) is a distributed database, in which storage devices are not connected to a shared server. This database stores an ever-growing list of ordered records, called blocks. Each block contains a timestamp and a link to the previous block. The use of encryption ensures that users can only change parts of the chain of blocks that they "own" in the sense that they have private keys, without which writing to the file is impossible. In addition, encryption provides synchronization of copies of the distributed chain of blocks for all users.

Security in blockchain technology is provided through a decentralized server that places timestamps and peer-to-peer network connections. As a result, a decentralized database is formed, which is managed autonomously, without a single center. This makes the blockchain very convenient for registering events (for example, making medical records) and data operations, identity management and authentication of the source.

How does blockchain technology work?

Electronics Manufacturing Services

poor quality pcbAre you tired of poor-quality assembly?

Are you tired of fighting manufacturing defects?
Do returns kill your business and your reputation?


Poorly assembled electronic part of the product and poorly tested before shipping to the customer result of a breakdown of the device during the warranty period and a huge bill for the replacement of a non-working device with another one, which can also fail. These losses are usually much greater than all your earnings on the device! At least they can be counted… However, how to measure the loss of reputation of your company for customers? How to get the customer to believe in your reliability again? With these questions, our customers come to us first.


Many companies trust us to take care of the electronic manufacturing part of their products. Why? Because it is better to entrust the professionals in such sophisticated field as electronics design.

testingWe begin by conducting an expert evaluation of your product, to identify weaknesses, if necessary, agree with you the changes that will allow the product to be better. We analyze the components and suppliers, because only high-quality components and reliable delivery process will allow you to say that your product is the best on the market. We have huge experience the field of contract manufacturing - and if you want, we will recommend you reliable suppliers, or take this care of this for you.

The process of manufacturing itself requires control that is even more careful. No batch will go into production until we perform a random test of the purchased components. We select components from different parts of the lot bought for production, we collect a small test lot - and we carry out a comprehensive check of the collected prototypes. Only after receiving the approval of our engineers, we start the production of a batch. If a defect is found, it will be corrected before the whole batch is assembled.

During the preparation of production, our engineers prepare test benches, which will allow to check hundreds of devices at the same time. We conduct an engineering test of each device from the lot before sending it to the customer. The engineering test includes testing of all operating modes of every single device. All sensitive characteristics are tested. The operation in declared ranges of input voltage, temperature conditions, working characteristics are controlled. The working test lasts no less than an hour for each device, after which the devices are visually inspected for defects.

Poor packaging and delivery is a way to damage even an admittedly working batch of devices. We carry out professional packaging of products, and cooperate only with reliable delivery services. Large quantities of shipments allow us to have the maximum discount on the delivery of products.

And the last thing after reading this - you will have a though – “I can not afford it”.




How? Because our main office is in Europe, where the salaries of highly qualified affordableengineers are lower than in the US. The maintenance of the factory and equipment is also cheaper. These benefits allow us to offer high-quality professional electronics manufacturing services at the price of the usual irresponsible assembly! At the same time, you save a huge amount of money on refunds. And, you earn on increasing your reputation in the eyes of your customers!

Contact us! We are waiting for you, in the friendly family of our satisfied customers!


Using C# Mutexes for interprocess synchronization

Mutexes are used in multithreaded (multiprocess) environment for organizing a mutually exclusive access to some shared resource. While usually not required for simple applications, these syncronization primitives are crucial once you advance to mutli-threaded world. Consider you have some resource, which can only be accessed from a single process or thread for consistency. Say, you have a connection to some remote server that can process only one operation at a time. Multiple requests are dropped. But you need to write two programs that do some data processing and query the server periodically. Of course, you can run them in chain one after another. Run first program, wait until it finishes, then run second program. But what if you want your programs to do background work simultaneously and only block on server requests? This will be much more effective considering you have enough CPU power at your server. There are many other similar examples like sharing the same serial port when communicating with some peripheral, etc. 

In this example we will discuss how to create and correctly use a named mutex object.

Change the Remote Desktop Connection port on Windows Server

This manual apply to Windows Server 2012, 2008 R2, 2008, 2003


The latest attacks of ransomware viruses exploit poorly protected Remote Desktop access to connect to Windows servers, then crack weak passwords and encrypt sensitive data. Hundreds of hackers continously scan the Internet to find poorly protected servers. Once you install Windows Server, it gets to the scope of hackers rather quickly - in a couple of weeks of so.


Of course, the first countermeasure to avoid accidental hacker attack is to use secure password. Never use simple or easily guessed passwords, use at least 20 character passwords with different letter casing, numbers, special symbols.


One additional countermeasure to fight automated hacker attacks is to move RDP port from default 3389 to different number, which is known only to you. This will get your server off automated port scann alorithms used by hackers and viruses. 


As we said before, default Windows servers' Remote Desktop is listening on TCP port 3389. You can change the port to different number in range 1024-65535. 

Do not use lower port number since it is reserved by system. 


IMPORTANT: Make sure that remote access to your server through the new port is authorized in your Windows firewall before executing the next steps. 

How to get the current executable's path in C#

Sometimes you may want to get the current executable (i.e. the executable your program is currently running in) path, This is needed to access some settings file, database file or resources file residing in the same directory as executable. 

There are several options to find the current executable path. But I found the one working both for console applications and for Windows Forms Applications:

How to download entire web site via FTP recursively using wget

Sometimes you need to download an enire website via FTP to your harddrive. This is needed if you want to make a backup or to move your site from one hosting provider to another. Of course you could use some GUI client like FileZilla, Midnight Commander or Gnome Commander. But what if you want to wrap the download process into shell script or maybe conduct the download as backgroud task to download one server's contents from another?

Page 2 of 3