Friday, 30 June 2017

How to Get Anybody's Phone Number

Read This carefully before you continue
Clearly note that I would not bear any responsibility with the outcome of how you use the phone number of the anyone you get through this article. This post is made for technology and training purposes and not meant to be misused in anyway. On this not I advice caution in using whatever phone number you get by applying the steps outlined in this article. I would repeat that The Tech Pro, the owner of this blog would not share responsibility or the outcome of misuse of the information contained on this post. So I would kindly advice you handle with caution, any private information exposed to you by applying the methods outlined. In line with our Privacy Policy we respect privacy of personal information.

Background Information
Having made sure you understand the disclaimer, let me provide some background information.
Data or say information is one of the most valuable assets existing today and most of the richest companies in the world today are Information Technology Companies (simply put, they trade on information). The category of information that rank very high in value is personal information or your private information. 

The question is:
What do you pay to use services like Google, Yahoo, WhatsApp, Facebook? Do you think they are free? 😁😁😁😁😁😀😀😀😀😀😀
Very funny! Then how would they maintain their servers? How would they pay their staff? and so on.

The fact is that, you pay with information, just like trade by batter. They give you the services, you give them the most valuable and most expensive asset you have, information about yourself, you personal data, which includes your location friends, whereabouts, your family data, your emails, just name it.
(Note that all these are outlined in the Agreement you are supposed to read when signing up). How many persons take time to read the agreement anyway?
What pains me in all that nobody determines whether the value of the services they provide is equivalent to what you pay with. That is a story for another day.

Back to The Point
This post would be in 3 parts. This is because of the sensitive nature of the topic being discussed. And be sure that you can only get through if you are sure you would not misuse this information. So we begin with the tools you need.

Tool You Need
1. A Smart phone or a tablet
2. Google Account
3. Facebook Account
4. True-caller App
5. Basic knowledge of ethical hacking ( I would take you through this myself as we progress).
6. Proof that you will not misuse this information (provide this information)
7. A little knowledge of MS Excel(or some other spreadsheet)

How It Works
All personal data collected by the IT organizations, which includes phone numbers are maintained in databases, which is available to you. That does not mean that you can just get it in a single click. You need to have a little knowledge of how to search  large information set. If you have a knowledge databases, then you have an advantage. I would take you through all of this. 

Outside the databases held by IT firms like Facebook and Google, Telecoms service provides like MTN, AT&T, Orange etc maintain a database of phone numbers too. To get into this databases which is also available, you will need a little knowledge of hacking ( I will put you through this).

Telecoms equipment manufacturers like Alcatel, Ericsson, Huawei also maintain a database of Mobile numbers in a highly secure database called Mobility Databases. Two of such databases is call Home Location Register(HLR) and Visitor Location Register(VLR). I would talk explain how this works on an different article.

Added to that Government regulatory bodies like NCC also maintain a database of phone numbers. Although these are not public data store, in some way you can access this information since it also contains your data.

We would continue in Part Two, for now reread the disclaimer and provide me with proof on why you need this information in the comment box below. 

Thank for reading...see you in the next part...

Monday, 19 June 2017

How to Check if Your Facebook Account Has Been Hacked

Check If Your Facebook Account Have Been Hacked!
Hacker nowadays are have just got smarter. Most times their objective is not just to compromise or corrupt your data, but to control your data without interrupting you.
So you share your account with them without knowing it!
An example is when a friend called me that someone is using his Facebook account to post porn videos and images. Sadly, the innocent user would not see the posts, but friends would see it, and that create whole lots to confusion.
Just imaging what this can do to relationships, marriages, families etc.

This is why i'm moved to write this article to help you protect yourself.

How It Works
Large Social Sites like Facebook, Twitter, Google and others implement what is called API(Application Programmers Interface). This is like an interface it uses to communicate with other applications from the 'backdoor', that is using codes.
What this means is that hackers can actually write application that can covertly communicate with Facebook or even install in Facebook. 

Some of these application may appear as games or other utilities and once you start using them you are at risk.

So the objective of the hacker is to get the application installed in your account, and once installed, the application could carry out normal action using your account, like posting to wall, sharing liking etc.

The serious part is that even if you change your password, the problem may not be solved because the application have been pre-authenticated. So the application continues to impersonate you  without your knowing.
Follow the procedure below to check if your account have been compromised and the do some clean up.

How  to See Installed Application on Your Account
1. Click on Setting to go to the Settings Page

2. In the Setting Page, Click on Apps on the Left Side of the Page

Under 'Logged In With Facebook', you can see the text "You haven't logged into any app with Facebook". This is fine and means that my account is intact.
However, if you see a list of strange Apps here, then beware.

Take a look at this image below(its in French, because I speak French!):
Here, you can about four different apps. I don't know which apps or how many of them appears on yours and who added them there.
So is time to do some clean up. You can go ahead to remove them.

To remove an app, hover you mouse above an app, then a delete button appears, then proceed with deleting them.

Lets Move On
In the window, you can see four categories of Apps.
Now that you have done this clean up, scroll down to the lower par of the page, and you will see four categories which I explain below.

Apps, Websites an Plugins: This controls applications that can use your Facebook account or app you use with your Facebook account. If you are a normal regular Facebook user, you can go ahead to disable it.

Apps Others Use: This controls which of your data you want applications to access. You can click on it and uncheck which information you don't want other to access.

Game and App Notification: If you don't spend your time playing games over Facebook, you can just turn it off as it can be exploited by hackers. 

Old Version of Facebook for Mobile: You can set this to either 'Friends' or 'Only Me'.

Once you have completed this steps, go ahead to change your password(this is optional) and your Facebook account is protected.
If you have any issues or questions on this, leave a comment to let me know.
Thanks for reading, Follow me on Google to get more useful updates.

Thursday, 15 June 2017

Blockchain Technology Explained (Part 1 - The Estate)

The Estate Analogy
Imagine an unfenced estate made up of block of apartments each occupied by a tenant. All of this tenants work together to maintain the estate. The tenants maintain an account in the bank accessible by all of the other tenants. Tenants are signatory to the account and they can withdraw based on agreed criteria.

Anytime a new tenant rents an apartment, the payment is made into the same bank account and the new tenant is automatically made a signatory to the account. The money in the bank grows to the extent that they are able to build new blocks of apartment each time they are running out of apartments for new tenants. So from this account, they are able to maintain the estate and also build new ones. They continue like this for many years, and as the years pass by, new apartments are build and new tenant continue to rent.

Let's pause for a minute and ask ourselves a few questions:

First, Who Owns the Estate?
From our simple analogy, you can see that as things move on fine, this question become 'irrelevant' provided that the tenants agree to abide by the regulations.
Note that the estate as it is currently is continually built as the years goes by by the tenants.

Who Started the Estate?
For sure, the initial estate was devoted by someone. But believe me, after some time, 'this person' would have completely nothing to to with the running and operation the estate.

What if Armed Robbers Attack
This is possible but unlikely. The reason is that there is stringent security measures employed including electric fence, cctv cameras, barrier gates with armed soldiers, security towers, and heavily armed security men patrolling day and night.
Also note that the the all the security personnel exchange information in real time.  So if there is a breach, in one point, if less than a second, all the security personnel(be is hundreds or thousands) are alerted wherever they are.
However if an attack is attempted, sure it would be smashed in a few minutes and if there is any damage to any property, it is immediately fixed using the available funds.

Who is in charge of the Estate
The answer would be, all the tenants are in charge.

Base on this analogy, let's now define Blockchain

Definition: Blockchain can be defined as a distributed and decentralized database or distributed ledger consisting of a continually growing list of records called blocks(the blocks of flats in our analogy!). Blockchain is simply a secure record keeping system

Analogy With Conventional Banks
I have explained the similarity and differences of this technology wth the technology used in banks in Cryptocurrency: 5 Things You Must Know. The highlights are:
Banks records are centralized (like the estate being managed by a particular landlord, while blockchain records are decentralized(managed by all the participating) tenants.

Features of Blockchain
There are some criteria that makes blockchains what it is. Take note of this feature.

1. Decentralized
The Blockchain system(or database) is not maintained centrally by any organization or bank or government. It is owned and managed by the participants in it (peer-to-peer) and exists on the internet.

2. Security
The Blockchain is described as secure by design. That means there are inherent features that makes it secure. For example, all the blocks are related, so a alteration to a single block become like altering the whole system which is close to impossible. Security is maintained by use of other features such as public and private keys, digital certificates, encryption etc (don't worry if you don't understand these ones!)

3. Replication
The blockchain database is replicated. That means that there are several copies of the database existing which are continuously synchronized to ensure that the integrity of all the records is maintained.

Other questions

1. Who invented Blockchain?
The whole world is still trying to track down this person called Satoshi Nakamoto. He have decide to completely hide his identity. I can tell you that there is no one like Satoshi Nakamoto!  (but trust me, I would let you know in few weeks the organizations behind it)

2. How Do I Get Involved?
Its just like how do you rent an apartment in the estate(from our little analogy).
The answer is simple: just open a blockchain account, after your identity is verified and you have paid the rent (like buying some cryptocurrency), then you can start participating (more on this in another blog).

3. Can I Quit Anytime I want?
Yes. Just like you can leave the apartment to another location.

I would like you  to take some time to get this bit of explanation of mine around your head, make sure you digest it clearly(you can read it more than once). This is because my next blog would explain more in-depth and with a some bit of technical details how it works.

For now, do let me know whether this piece of information has helped you or you can leave a comment in the comment box below. Ask questions, point out areas you need more clarification and I would respond in a very short time.
Continue to Part 2

You can also go through these related topics

Wednesday, 14 June 2017

Encapsulation, Inheritance and Polymorphism in Object Oriented Programming

These three concepts are sometimes considered as the building block of Object Oriented Programming(OOP).


Encapsulation is a construct in OOP that allows both the object and the operations performed on that object (methods) to be bundled into a class and restricts access to the methods of the class.

When a class is defined, it is normally made up of properties and methods. The properties refers to the attributes of the class while the method are the operations that can be carried out on the object.
Lets take for example, a class called Person, defined as follows:

public class person 
     private string Firstname;
     private string Fastname;
     private datetime DateOfBirth;

     protected Age;

     public datetime getDateOfBirth()
        return person.DateOfBirth;

In the example above class definition, the person class have been defined with four attributes, Firstname, Lastname, Age and DateOfBirth.

The class have a method GetDateOfBirth() which returns the Date of Birth of the person.
In the person class, encapsulation is achieved by the used of the keywords, private, public and protected.

The public keyword
This keyword allows makes the method or attribute accessible both from inside and outside the class.

The private keyword
Attributes and methods declared as private can only be accessible by methods inside the class. They can't be accessible by external classes.

The protected Keyword
Attributes declared as protected can be accessed by from within the  class and is also accessible by derived from that class.


Inheritance is an OOP concept that allows us to define a class bases on another class. So if two two object have similar attributes and one have been defined, the second object can inherit from the first one.
This concepts make it easy to reuse existing code as well as reduces the size of code to be written. So when creating a new class, the programmer need not write completely new data members and functions, the programmer can designate the class to inherit attributes and functions of an existing class. Here the existing class is called the bases class and the new class that inherits the attributes is called derived class.

The code below implemented in C# illustrates the concept of inheritance:

//This is the base class
class Shape
    protected int width;
    protected int height;

    public void setWidth (int w)
        width = w;
    public void setHeight (int h)
        height = h;

//This is the derived class
class  Triangle : Shape  //Triangle has Shape as the base class
    public getArea()
         return (1/2 * width * height);

In the first class, Shape, the width and the height have is declared as protected, which means that they can be accessed by classes derived from it.

The second class, Triangle does not have attributes of width and height but is meant to derive these properties from the base class, Shape

The syntax for defining a derived class is

class <derived_class> : <base_class>


Polymorphism in Programming is a feature that allows an entity to have many forms. So a function is polymorphic if it can be applied on various types.
There are three types of polymorphism, namely:

Ad hoc Polymorphism: In this type the same function perform different operations depending on the type of argument supplied.
This is also called function overloading or operator overloading. We can illustrate this using the code fragment below:

class Demo
   public void Add(int x, int y) // Performs integer addition
       int result = x + y

   public Add(string s, string t) //Concatenates the two strings
       string result =  s.Concat(t);

From the above class Demo, we see that two functions have been defined both having the same name. So the question would be: which of the definitions would be used when a call to this function is made? The function that would be called would depend on the parameters that are passed in at run time. If integer parameters are given at run time, then the first Add function is called which adds the two numbers together and displays the result. If however, two strings are passed in as parameter, the second function is called which concatenates the two strings and finds the result.

Parametric Polymorphism: Here, a function or data type is written generically such that it can handle values uniformly irrespective of their types. A function is a polymorphic function if it can evaluate or be applied to different types.

Subtyping: This is also called Subtype Polymorphism or inclusion polymorphism. This is when a method name denotes instances of different classes related by a base class. This is the most common type of polymorphism.

The code fragments below illustrates this various types of polymorphism.

public class Shape
public in x {get; set;}
public int y { get; set;}
public height {get; set}
public width {get; set}

public virtual void Render() //This is a virtual method
      Console.Write("Initializing drawing tasks...");

The above class is the base class, Shape. Other classes would derive from this class for instance, Triangle, Rectangle, Circle, Square etc.
Note that the class method Draw have been declared as virtual. This means that if a class is derived from this base class, the derived class can also have a method with the same name and this method in the derived class can provide a definition that overrides the method in the base class.

About Virtual Methods
A derived class can override a base class member only if the base class member have been declared as virtual or abstract. The derived member must use the override keyword to show that the method should override the one in the base class.

Virtual methods allow you to work with a number of related objects. So if we have a drawing application that have a base class Shape and a number of derived classes for particular shapes, then you may not know at the compile time which specific type of shape the user will create. This means that when the Draw method is invoked on a shape, the definition would be based on the particular shape it is being invoked on and this is determined at run time.

The code below gives example of some derived classes from the base class, Shape.

The code below is the derived class for Triangle

// Derived class for Triangle
class Triangle : Shape
   public double Area()
      return height * width;
   public override void Draw()
      Console.WriteLine("Drawing a Triangle");

The code below is the derived class for Circle

// Derived class for Circle
class Circle : Shape
   private int radius
   public double Area()
      return 22/7 * radius * radius;
   public override void Draw()
      Console.WriteLine("Drawing a circle");

The code below is the derived class for Rectangle

// Derived class for Rectangle
class Rectangle : Shape
    public double Area()
       return width * height;

   public override void Draw()
      Console.WriteLine("Drawing a Rectangle...");

In the three derived classes above, we see that even though the base class of Shape have a function for Draw, each of the derived classes also defines a function Draw. The Draw function in the derived classes have been declared with the override keyword and this is to indicate that the method would be used instead of the method in the base class.


Introduction to Stacks
Stacks are very important in the study of Data Structures. But in this article we would examine the basics of Stack Data Structure and how stack is represented.

Below is what is to be presented in this article.

Definition of Stack
Stack Representation
Application of Stacks
Conversion of Decimal to Binary
Expression Syntax Parsing

Definition of Stack
A stack is a linear data structure that allows for insertion and deletion of items from one end of the stack called the top of the stack. This means that the last item to be inserted into to stack is always the first item to be retrieved from the stack and vice versa. So we can can say that stack supports Last In First Out(LIFO), data storage and retrieval. Stacks are normally used in the computer system for temporary data storage.

Take note of the following terms:
Push: The action of inserting an item on top of the stack
Pop: The action of retrieving an item from the top of the stack
Initialize: Start a new stack

Linked-List Stack Representation
The most common representation of stack is by the use of linked list. Before we examine the Linked-List representation, below are operations that can be performed on a stack. These operation are actually methods that can generally be performed on an object of type Stack.

Adds a new item on top of the stack.

top() : item_type
Returns that last item inserted into the stack

Retrieves that last item from top of the stack

is-empty() : Boolean
Returns true if the Stack is empty else returns false

is-full(): Boolean
Returns True if the stack is full else returns false

get-size() : Integer
Returns an integer representing the size of the stack.

Application of Stacks
Stacks can be applied in many areas of life including: Stack of trays in a restaurant, stack of books, stack of plates etc. But we are going to closely examine the following:

1. Converting Decimal to Binary
Consider the conversion of a decimal number into its binary equivalent. The algorithm goes as follows:

Read a decimal number
While the number is greater than zero, continue
    Divide the number by two
    Find the remainder   
    Write the remainder

Implement the algorithm, to covert the decimal number 25 to binary

If the algorithm above it applied, the program would print out the binary number 10011 and this would be the wrong answer.

To get the right answer, we need to implement this algorithm using a stack data structure. Each of the binary digits is pushed on to a attack as they are generated. At the end of the whole conversion, each digit is retrieved from the stack and printed.
The correct result would be as shown in the figure below.

Other applications of stack include, Expression syntax evaluation, Rearranging Railroad cars and the Quicksort Algorithm.


Introduction to Arrays

Arrays are the most commonly used data structure in Computer Programming and is implemented in some way in almost all programming language.

An array is a data structure that stores a collection of items under the same data and accessible through an ordered set of integers called subscripts or index. The array index is used to reference each of the array elements.

Array may also be viewed as a collection of variables of the same data type stored in a contiguous memory location. Arrays are fixed size meaning that the number of elements are fixe at the time of declaration.
An array can have one, two or more subscripts. When an array have 2 subscripts, it is said to be a 2-dimensional array. For 3 subscripts, it is 2-dimensional array.
Individual elements in an array is called elements.

One-Dimensional Arrays
One-dimensional array also known a single-dimensional array or linear array where the elements can be accessed using a single index.

An example of one-dimensional array is shown in Figure 1.
Figure 1: One-Dimensional Array

The array is made up of 6 elements: A[0] to A[6]. Also note that the index of an array most times start from 0;

Two-Dimensional Array
A two dimensional array has its elements reference by using two subscripts and are referred to as non-linear array. Think of a 2 by 2 matrix where the elements are arranged in rows and columns.
Example of a two dimensional array is shown in Figure 2.

Figure 2: A Two Dimensional Array
To reference an element of a two dimensional array, you need to specify the row index and the column index.
So the element

A[i][j]  (it could also by A(i, j) in another language)

referes  to the element at row i and column j. In the example above, A[0][3] means the element at row 0 and column 3 and that is 34.

Array Declaration
Before an array is used in a program, it is first declared. The declaration sets aside memory space for storage of the array. Array declaration  reserves contagious memory locations for the elements of the array. 
In array declaration, the following is done:
  • Specify the name of the array
  • Specify the data type for the array elements
  • Specify the dimension of the array

In the C programming language, an array can be declared with the following syntax:

int A[5][4];
This means that:
  • The array has a name A
  • The array elements would be integer values
  • The array would have 5 rows and 4 columns

Could you work out the maximum number of elements the above array can hold?
Simply multiply the subscripts, that is 5 x 4 = 20 elements

Adding Elements to Arrays
The computer programmer would have to supply the value of the elements of the array. To assign a value to an array, you assign value using the subscript of the array elements. For example;

A[0] = 87;

This assigns the value of 87 to the first element of the one-dimensional array A

A[1][2] = 34;

This line assigns the value of 34 to the element at the second row and third column(remember the first column is 0 an the first row is 0)

You can also assign values to the array elements using loop. The algorithm below would read input fro the user an continue to assign to the array until all the elements are assigned.

Initialize array A[10]
Initialize i = 0

The loop continues to read integer value from the input and assign to the array until all the elements of the array is filled up, that is the subscript reaches maximum.

Tuesday, 13 June 2017

Introduction to Data Structures

The concept of Data Structures is a very important concept in modern computer science. So, in this course we would examine what data structure is all about and then we briefly look at different data structures being used today.

Data and Data Structure

Data can be  defined in a number of ways but it would suffice to say that data is  a unit of information. 
An example would be biodata which would include:
  • Your Firstname
  • Your Surname
  • Date of Birth
  • Address 

So these pieces of information could be referred to as data.

What is Data Structure?

A piece of information(data) could also be a combination of different other pieces of data.
For example,

Name is made up of Firstname, Lastname and Othername

Students Registration Number could be something like:

Here we see a single piece of data  student registration number, made up of different units like:

  • G – Graduate
  • MSC – Masters
  • COMP – Computer Science
  • FT – Full Time
  • 295 – Serial number of student in the department

Another example would be Address, which would be made up of House number, Street, zip code etc.
So we can define data structure as the way(or structure) different pieces of data is organized  and the relationship between them.
Lets now outline the various data structures in use in computer science.


Arrays are the most common data structure in use and it has an implementation in about every programming language.

Definition: An array is a collections of items of the same data type with the collection having a given name and items arranged in a linear fashion such that each item in the array can be referenced by a given integer called the index or subscript.

Example is Fruit(10) made up of 11 element referenced as follows:


An array data structure is illustrated below

Linked List

Linked list is a data structure developed to address some of the deficiencies of the Array data structure. In a linked lists, the items are not stored in contiguous manner like arrays. Each item is related to the next item by the use of pointers. 

This is illustrated by the figure below


A stack is a linear data structure that allows insertions and deletions to be done only from one end of the list called the top. The last item inserted into the list is always the first item to be retrieved from the list. So a stack support Last In First Out (LIFO) data access.
Add ing an item to the top of a stack is called push while retrieving is called pop.
Stack is mainly applied in procedure call in programs.


A queue is a data structure that allows insertion of items only from one end of the list called the head, while deletions can only be done from the other end called the tail. A queue supports First In First Out(FIFO) data access.
An application of the queue data structure is print jobs. Job sent to the printer are placed in a queue where the first to be sent is the first to be printed.


A tree data structure is a hierarchical non-linear structure having a particular node called the root and other nodes make up the sub-tree(s). A tree have the appearance of an inverted tree, where the root is on top.
Nodes in a tree are connected by edges or branches. The nodes at the lower-most part of the tree with no sub-trees are called the leave nodes.

Tree data structure is shown below

Just like trees, graphs are non-linear data structures made up of a set of nodes and a set of edges. An edge joins two nodes together.
A graph can be directed or non-directed, a graph is directed if the edge joining to nodes have a direction and non-directed if the edge have no direction.

Graph data structure is shown below

Dictionary, Hashing and Hash Tables
Hashing is a techniques applied in the dictionary data structure. Here, two things are used:
  • A Hash Function
  • A Hash Table

The hash function is applied to the key of an element to produce a value to represents the location in the hash table where the element would be stored.

This ends out discussion of Introduction to Data Structures. Spends you time to get used to the concepts and definition of each of the data structures before you drill down to the in-depth study of these data structures.

If you find this helpful, leave a comment to let me know. Thanks for your time.

Monday, 12 June 2017

Cryptocurrency - Five Things You Must Know!

Thanks you for stopping by.
Cryptocurrency  has been a trending topic recently: Bitcoin, BTC, Swisscoin, Giracoin, Ethereum an many more.

The questions are:
  • What does the future hold for cryptocurrencies?
  • Should you put your money on it?
  • How secure is the investment?
You will get answers to these question and more on this post but I would make a details explanation of the underlying technology in a different post.

Sorry for the typo there: Facts not Fact!!

Money as Transactions, How Cryptocurrency Works
To get a clear understanding of the technology, you need to view money in terms of transactions.
What this means is that if Mr xyz has $10 million dollars, it does not mean that $10 million dollars of physical notes are kept somewhere for him!

 It means that there are series of transactions and records held by the bank that proved that figure. And you are sure you have this money as long as these records are not compromised.

Banks store this records using Database Technology which ensures security and consistency of the records. The records are kept on series of related tables and this records are stored in the bank's computers.
The records held by the banks are referred to as centralized, which means that it is controlled  and managed by a central body or organization

Now cryptocurrency is exactly the same: series of transactions and records stored securely!

So what is the difference?
First, Cryptocurrency employs a different technology called BlockChain(I would discuss this later) which is related with databases but is actually more secure than conventional databases used by banks.
Second, cryptocurrency records are decentralized,  which means it is not managed by just a single bank. 

This is shown below:

Let's now look at the 5 facts about Cryptocurrency.

1. Has Been Around Since 1990
The idea of digital currency/cryptocurrency was introduced by a researcher named in David Chacum in 1983 but its actual use was in 1990 when a company called DigiCash was founded.

2. All Modern Banks Use Cryptocurrency.
This should not come as a surprise. Records kept by the banks are encrypted for security reasons and can be used for financial transactions and therefore can be viewed as cryptocurrency. If you want to buy a car, you don't need to collect the physical cash, you use your credit/debit card, the banks simply modify the records for you and for the car dealer and you have the car. So using cryptocurrency simply means modifying the records/transactions. So here we clearly see that cryptocurrency is used every other day.

3. Cryptocurrency is the Future of Transactions
Many years ago, you could not easily talk to someone in another continent, but now you can do that with excellent ease in real time at the comfort of your living room. Mobile Technology have made that possible. Same with monetary transactions, right now its not very easy to transfer money across continents, but in fews years to come, you will be able to do that in seconds with cryptocurrency. That is  simply how technology work, creates an easy way to do things.

4. Financial Institutions  Tries to Suppress Its Popularity
There is an expression that says: "You can't fight the technology". This is actually not very correct, the fact "You can't win the technology". No matter how hard you fight, new technology would replace  old ones. This is very clear because, the technology would change things,  unfortunately to the detriment of persons who have failed keep pace with growth in technology.

The questions is, 'why would people fight a trend they know they cannot win?'. Maybe they cannot stand the effect this trend would have on them. Imagine what would happen to the big banks when everyone can make transactions easily in a decentralized way without interference from the bank. Imagine the millions of bank employees that would be put out of the job, and so on. My advice is: start now to see ways to move along with the changing trend while  the time is still there.

5. To Succeed, You Need to be Well-Informed
One thing i see especially in developing countries is that people get involved so easily anytime a particular scheme promises to yield much returns. At the end of the day, they don't get what they expect and end up disappointed. Same applies here, you need to get all the necessary information before you can delve into this area but be sure that the cryptocurrency technology is moving at a very fast  pace and the waves would sweep across the financial horizon, wrecking much damage and leaving behind the naive and gullible permanently altering our perception of wealth.
I perceive that this would happen sooner than we expect.

I'm sure you may have many questions here, I already expect it. I'm working on a comprehensive explanation of the technology behind cryptocurrency as well as its security.

To understand more on how the technology work you can view this article i wrote recently: Blockchain Technology Explained

Do leave your questions and concerns in the comment box, I would collate them and it would enable me know what areas you would need clarification. 

Compare C# and Scala Programming Languages - Part 2

This is the second part of our comparison between Scala and C# Programming Languages

In this part we are going to examine:
  • Arrays Declaration and Manipulation
  • Collections(List and Sets)
  • Pointers
Then we would look at Object Oriented Programming Concepts:

  • Polymorphism
  • Inheritance
  • Encapsulation


An array holds a fixed-size sequential collection of items which are of the same data type. An array is generally used to store a collection of data or variables of the same time in contiguous memory location.
An example is when we have 20 different scores from students in a class. We made declare and array variable called Scores[19] that holds all the 20 scores. This would be easier than declaring 20 different variable say Score1, Score2, Score3 etc.

Arrays Declaration and Manipulation in C#
To declare an array in C#, you can use the following syntax:

datatype[] arrayName;

datatype is used to specify the data type of the elements in the array. Remember that all elements of an array would be of the same data type.

[ ] is used to specify the size of the array

arrayName specifies the name of the array

Using the student scores example, we have declare an array as follows:

int[ ] Scores;

Initializing an Array in C#
Array declaration does not initialize the array in the memory. For you to assign values to and array variable, the array variable is initialized. An array is a reference type, and this means that the new keyword shod be used to create and instance of an array. For example:

double[ ] Scores = new double[10]

Assigning Values to an Array
Values can be assigned to individual elements of an array.. This is achieved by using the index number (also called subscript) as shown below:

double[ ] Scores = new double[10];
Score[0] = 80.5;
Score[1] = 65.0;

You can also assign values to the array at the time it is declares as shown below:

double[ ] Scores = {80.5, 65.0, 70, 93.6}

The code above declares an array called Scores and assigns 4 elements to the array.

When an array is created in C#, the compiler implicitly initializes the array elements to a default value depending on the type of the array. An example would be an array declared as int, all the elements are initialized to 0;

Accessing Array Elements in C#
An array element is accessed by using an index with the array nam.e this is done by placing the index of the element to be accessed within the square brackets after the name of the array. An example is given below:

double MaxScore = Score[5];

This code retrieves that value of the array element Score[5] and stores it into a variable name MaxScore.

Array Declaration and Manipulation in Scala
Arrays in Scala share the similar meaning and behavior with C# so lets consider Array Declaration, Array Initialization and Access in Scala.

Declaring an Array Variable in Scala
The syntax for declaring an array variable in Scala is:

var x:Array[String] = new Array[String](10)


var x = new Array[String](10)

In the above example, x is declared as an array of Strings that may hold up to 10 elements. Values can be assigned to the individual elements of the array. Additionally, values of the elements can be retrieved like:

x(1) = "Kindson";
x(2) = "Oleander";
x(3) = "Othniel";

and so on.
You can also assign values as follows

var x = Array("Osondu", "Jackasi", "Adaku", "Othniel", "Kindson")


Collections are classes that as specialized to handle data storage and retrieval. These classes provide support for data structures such as stacks, queues, trees, lists etc.
Collections could be used for operations such as dynamic memory allocation, accessing list of items using the index, creating a list by assigning values to the elements etc.

Collections in C#
Four of the collections classes in C# are outlined below.

This represents an ordered collection of objects that can be referenced individually. The ArrayList is similar to the Array, but the ArrayList has more features. For instance, you can add or remove items from a specific location in an ArrayList, and the ArrayList would automatically adjust to reflect the changes.
An ArrayList supports dynamic memory allocation.

In addition to index, the SortedList also uses a key to access items in the list. A SortedList combines the features of both an ArrayList and a Hashtable. It contains a list of elements that can be access by using a key or an index. When element is accessed using a key, then it is a Hashtable, if accessed using an index, then it becomes an array. The unique feature of the SortedList is that it is always sorted based on a key value.

A Hashtable uses a key to access the items in the collection. To access elements in a HashTable, you will need a unique key. Each element in a hash table has a key/value combination

This is a collection object that stored and accessed on a Last In First Out(LIFO) basis. Items can only be accessed and inserted through on end of the stack. Adding an item to the Stack is called pushing while retrieving an item from the stack is called popping

This is a collection object that stored and accessed on a First In First Out(FIFO) basis.

Collections in Scala
Scala provide a rich set of collection objects. An example is Scala Lists.
Scala Lists are very similar to the Arrays in C#. The elements are of the same data type sore using the same name. Lists in Scala are described as immutable, meaning that the items in the list cannot be changed by assigning a value. Additionally, Scala List are linked lists whereas arrays are linear.
Scalar lists can either be one-dimensional or two-dimensional.

Example of implementation of Scala lists is given below:

//List of string objects
val animals: List[Stirng] = List("cat", "monkey", "rabbit", "cattle")

//List of Integer data
varl numbers = List[Int] = List(0,1,2,3,4,5)

//An empty List
val empty = List[Empty] = List()

//Two dimensional List
List( List(1,2,3), List(2,4,6), List(5,10,15))

Pointers in C#

C# provides a feature for using pointer variables. A pointer variable that points to another variable. Its means that the values of a pointer variable is the address of another variable or memory location. Pointers just like other variables needs to be declared before use. Pointers can also be considered as a data type.

A pointer variable is declared as follows:

type *variable_name;

where type is the data type of the variable
* indicates that it is a pointer variable
variable_name is the name of the variable

Example of pointer declarations are as follows:

double *ki;     //pointer to a double type

int *x ;   //pointer to an integer type

Pointers in Scala

The Scala Programing Language does not provide and implementation for a pointer type.