Artem's blog

Mainly .NET (C#, ASP.NET) and my projects

Archives for Old blog

C# Fundamentals and Algorithms via C#

For some weeks now, I have had a course in C# programming. That was really fun, because everyone could learn something new, improve their current knowledge, or simply get an understanding for computer programming. Although, I already know the material quite well, I somehow feel that these weeks gave me an opportunity to improve the way I explain something for an audience with no previous experience in programming better.

My goal with the entire project is to make students enjoy computer programming, and show that there are a lot of interesting aspects that might be useful in the new, technical world.

Sometimes it is difficult to know, how much of the content that I have been talking about is understandable, and if it is understandable at all. Some students do interpret things quicker, and are insatiable, using the positive meaning of this word, and some do need more time.

Currently, I am preparing for the Algorithms via C#, even though I have finished the Course Reference.

Some of the course is available online, and I will try to publish it on the, or

I hope you will enjoy the course, even if it is not that easy to follow, without any attendance. However, If you have any questions, please feel free to ask me, or if you would like, you can attend at the any other occasion, when this course will take place (probably 2013). There is no fee for the course!. Simply contact me at the IB department of the school, and I will register you for it.

The course takes place at Katedralskolan, Uppsala (Skolgatan 2, 753 12 Uppsala, SWEDEN).

Hope to see you soon,

Artem L.

Mathos core library update

I would like to announce that today Mathos Project has been upgraded to version Beta 2 (1.0.1), with more amazing features.

Mathos Project has an aim to develop a mathematical library, in order to facilitate the calculating process in different areas of mathematics.

I am excited to say that during these month, since the project start in Jun, a lot of clever people has contributed, and made this project to what it is today.

Please check out the project website at:

IP-telephony – a troublemaker on the market

All of us have probably tried to use Skype or other software that provide voice and/or video communication through the internet. The only requirement that both users should fulfill, is to have the application installed, and in some cases a registered account. When that is done, we can easily communicate without paying any fees. That sounds great!

Since the smartphone market has grown, more users can now afford a really good phone that allows them to use these software in the same way as on a regular computer. The only cost that might be a problem is probably the internet connection, but by having the right telephone contract, that problem would disappear.

That seems to be good for consumers, because you can call for no cost, but for the company that is providing telephony – no! If the income of the companies was before on the phone calls mainly, from now on, this ip-telephony might change the market dramatically.

However, some companies might block this port to prevent users from using this technique. So, before you consider to sign a new telephone contract, see if that company allows you to use ip-telephony, and if the port that, for instance, Skype is using is open.

A new feature is coming to SKGL Project

In order to decrease the distribution of serial keys over ‘bad’ hacking sites, I would like to present a feature that probably will be released in SKGL – Machine code locking. This means that each serial key will have support for machine code storage, so that the serial key is bounded to a single computer. As you know, the project is open source, and you can join it whenever you want to ( If you think I should change something, please write to me or comment this post. Good Luck!

       static string getMachineCode()
             * Copyright (C) 2012 Artem Los, All rights reserved.
             * This code will generate a 5 digits long key, finger print, of the system
             * where this method is being executed. However, that might be changed in the
             * hash function "GetStableHash", by changing the amount of zeroes in
             * MUST_BE_LESS_OR_EQUAL_TO to the one you want to have. Ex 1000 will return 
             * 3 digits long hash.
             * Please note, that you might also adjust the order of these, but remember to
             * keep them there because as it is stated at 
             * (
             * the processorID might be the same at some machines, which will generate same
             * hashes for several machines.
             * The function will probably be implemented into SKGL Project at
             * and Software Protector at, so I 
             * release this code under the same terms and conditions as stated here:
             * Any questions, please contact me at
             *  *
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
            string collectedInfo = ""; // here we will put the informa

            foreach (ManagementObject share in searcher.Get())
                // first of all, the processorid
                collectedInfo += share.GetPropertyValue("ProcessorId").ToString ();

            searcher.Query = new ObjectQuery("select * from Win32_BIOS");
            foreach (ManagementObject share in searcher.Get())
                //then, the serial number of BIOS
                collectedInfo +=share.GetPropertyValue("SerialNumber").ToString ();

            searcher.Query = new ObjectQuery("select * from Win32_BaseBoard");
            foreach (ManagementObject share in searcher.Get())
                //finally, the serial number of motherboard
                collectedInfo+= share.GetPropertyValue("SerialNumber").ToString();
            return GetStableHash(collectedInfo ).ToString ();

        static public int GetStableHash(string s)
             * modification of code from:
             * modified by Artem Los
            const int MUST_BE_LESS_OR_EQUAL_TO = 100000;
            uint hash = 0;

            foreach (byte b in System.Text.Encoding.Unicode.GetBytes(s))
                hash += b;
                hash += (hash << 10);
                hash ^= (hash >> 6);

            hash += (hash << 3);
            hash ^= (hash >> 11);
            hash += (hash << 15);

            int result = (int)(hash % MUST_BE_LESS_OR_EQUAL_TO);
            int check = MUST_BE_LESS_OR_EQUAL_TO / result;

            if (check > 1)
                result *= check;

            return result;

Microsoft’s Surface – a better version of iPad

Microsoft SurfaceiPad was the only device that actually succeed on the tablet-pc market since 2010, from that “magical day“. No other tablet-pc has gotten much traction as Apple’s iPad (except the Kindle Fire from Amazon). But yesterday, that changed. Microsoft has now a new clear goal: to make a tablet that’s better than the iPad.

By announcing their new product, Surface, which will be available in two versions: one with Windows RT, and the other one with Windows 8 Pro (full list of features), they will probably set a stop for Apple’s monopoly on iPads, because of the good quality of the device and amazing new features that are not avaialable in iPad.

Keyboard is one of the features that will be better in Surface than iPad’s touch keyboard because of following reasons:

  1. When writing something such as an email or a document, it is impossible to do it as quickly as it can be done with a physical keyboard.
  2. There are keyboards that are available for iPad as well (3rd party products), but they are nothing compared to Microsoft’s build-in keyboard, which is in the same time portable, because of the form.
  3. Also, the keyboard is easy to attach to the tablet by magnets.
  4. As an advantage, the keyboard for Microsoft’s Surface will be in several colours, which is a clear benefit of in comparison with iPad.

The size of the screen is also a great benefit of this device. The one with Windows 8 Pro will have a 10.6 ClearType Full HD display, and as it is announced, Microsoft’s Surface will have the same dimension as a movie screen, so no black borders will be shown.

The storage is a big advantage, specially when comparing Windows 8 Pro model with iPad. You will get up to 128GB, whereas iPad only allows you 64GB.

The amount of ports on a Microsoft’s Surface beats iPad totally. In both versions you will have two USB ports, but as a great future, Window’s 8 Pro model will support USB 3.0, whereas Windows RT model only supports USB 2.0.

There are of course other amazing features available that are not listed here, so please visit the official website of Microsoft’s Surface, or the source of this article at CNN.

Software Protector awarded by Softpedia

When I was searching on my project at, and when I found it at Softpedia, I was a bit surprised.

Originally, my plan was to make Software Protector a part of SKGL API, as an example of how people might use the library to generate and/or validate their own serial keys through their .NET projects. This changed yesterday. I think it would be better to say that SKGL API is a part of Software Protector. The positions of the projects have now been changed to something that I did not expect before. That is good!

Something that really impressed me was the description of the software at Softpedia. It was written by someone else!

Software Protector is a handy and reliable utility designed to enable you to protect your software from hackers and theft.

Software Protector is able to generate strong and unbreakable serial keys in order to make sure that your development work is fully protected. You can customize the creation and expiration date for trials.

The idea behind the entire project has always been to make a software protection utility free of charge and also open source based. Because of the fact that almost all programs that really do the same thing are expensive for a single developer, my motto is to make it simple to use, simple to develop the core and adjust it, and finally for no cost!

Extract sound from a flash file

In this article we will look at a very easy way (in terms of software required) of extracting sound from a flash file (.flv). Please note that it might be done quickly, by using a sound converting software, but in case you only have the latest free version of 7-Zip, and just do not have anything better to do, try this out!

As we know, an FLV file is a container-format, which means the system inside it is similar to the one we use in archives, so the media files are converted into an archive. Therefore, you might want to open the file using a zipping software (I recommend 7-Zip), and explore the FLV file. There you will find two files (video’s name is myvideo), and Extract the audio file, and inside, you will find!

Software Protector as a single project

Recently, a part of SKGL API (, called Software Protector was promoted, and now you might find the new versions of it easily at

Visual Basic – Language Syntax

This is my current presentation about Visual Basic that summarizes information from

Visual Basic Tutorial (download as .ppt)

Please notice that you might find other presentations at

Software Protector + SKGL 2.0

Today, it is an important event – release of SKGL library, and also a well-working GUI – Software Protector.

Before, when SKGL was hosted at CliZ Ware, even though the library was free of charge, the source of it was closed by the license. Now, however, the newer versions of SKGL will have an open source, so that you can learn, and maybe, write your own Serial Key Algorithm in future, much more improved and securer.

In order to download the library, enter a link below:


Page 3 of 9:« 1 2 3 4 5 6 »Last »