Nigerian bankers are from China?

I just can’t help posting one more spam message here, as an example of how spammers run. This time, a very well-known Nigerian 419 spam message where the spammer is trying to collect sensitive information about those whom he’s spamming.

Interestingly enough, many people tend to share this information freely on the Internet already. With sites as Facebook and LinkedIn I would think spammers would not even need this information. Well, except for the bank account numbers, of course. And maybe the phone number.

So let’s look at this message, that seems to be Nigeria. Or China. Or Russia, if I read the mail headers.Nigerian SpamWell, what does it say? It’s about a contract or inheritance file that’s at some desk in Nigeria. I don’t have a clue what it’s supposed to do there, but they have it. Who? Well, The Central Bank of Nigeria, of course. (Yeah, that link goes to the real site!) It seems that I am dealing with some non-officials about this case and that’s supposed to be illegal. The Board of Directors held a meeting to give me a solution, though. They’re willing to pay me the $950,000.00 that’s in some online account which is supposed to be mine. I need to give some details to them which would allow me to log in to my account so I can transfer the money to a different account. And I must stop discussing about this with anyone else, so this post on my blog must be illegal.

Okay, I’m not stupid. The fact that Google dumped this in my spam folder is the first warning. The red warning above the post is the second warning. Even if I’m a complete idiot (and I sometimes am one) then these two warnings should trigger plenty of alarm bells, making sure I won’t respond to this. But I’m interested in the mail header too.

Nigerian Spam HeaderSure, first thing I’ve noticed is another warning: “domain of infocbn@cbn.com does not designate 178.75.0.110 as permitted sender“.

It was sent from Webasto, which happens to be a Russian company that creates air conditioning systems for automobiles. Maybe the Nigerian Board of Directors is in Russia?

And I need to send a reply back to an email address provided by the email services of the Chinese Yahoo website.

Also, even though they knew my email address (helpdesk@example.com), they did not know my name. Or anything else, even. But they seem to know that I’m dealing with non-officials, though.

So, am I dealing here with Russian Nigerians who live in China? Or Chinese Nigerians living in Russia? I don’t know. This is just spam and it’s too ridiculous to even consider believing it. I can’t understand that anyone would be fooled by something stupid like this, yet it happens. At least, it happens often enough for these spammers to continue their attempts. Just send a million of these messages and hope that an Idiot will respond to it. If one in a million people are idiots, they tend to have a reasonable chance of success.

Also interesting is the reference to CBN, which isn’t the Central Bank of Nigeria. It’s the Christian Broadcasting Network. Close enough, I guess.

The true Central Bank of Nigeria has an official warning about 419 scams on their website. A check with RobTex seems to confirm this site is the real website. The fact that it’s a .ORG domain still makes me a bit suspicious but fortunately, there’s also an official gov.ng site, which happens to be a bit slower. All this spam isn’t just annoying for me and other recipients, it’s also bad for the Nigerian government and their bank.

It amazes me that these Nigerian 419 scams still continue for more than a decade. Especially since these emails seem to be so extremely fake that I just wonder if people are just fooled by these spammers simply because they try to scam the spammers themselves. And in trying to do so, they just happen to give away too much real information.

The best response to these kinds of emails is to either ignore them or by warning others about these kinds of emails.

The CART system.

In a earlier post I’ve discussed the Items-Transactions-Contracts principle. Today, I am going to expand my views on this topic with the CART system, which is basically a system that can handle items, transactions and contracts.

CART stands for Catalog, Actions, Rules and Templates. And yes, you might already see how ITC fits into CART. The catalog contains all items in your system. The actions are the transactions of your system. The rules are your contracts. And the templates are all the templates you’ve defined for the items, transactions and contracts.

For those who want to look for a matching database model in this system: don’t! There is no model that can handle it all. These are actually four different class models and classes are more than simple database models. They include code that act upon the data. But if you do want to create a data model, just consider this as a system with four different models that are connected to one another. (Maybe three if the templates are only defined by code and metadata.)

When you create a new system, you first have to set up the catalog. Why? Because the catalog is the inventory of everything that you’re going to handle. Next, you set up the actions so you know what you can do with those items. In general, you can just move them around, create new ones or remove existing items. This is all arranged by the actions system. Once you have defined all actions, you start to combine them into rules. If you want to sell an item to a customer, you’re probably end up with several connected transaction. One that sends the item to the customer, one that receives the payment from the customer and maybe one related to VAT that you have to send to the Tax Office. Thus a single sale actually results in several actions. Once you have defined all catalogs, actions and rules, you’ve probably created the templates too. Because every definition of an item, transaction or contract will end up in your template system.

So, let’s consider a simple example to use this principle upon. Let’s organize a garage sale. Say, you have a goal to reach: $500. You want to reach this by selling all your old stuff thus you announce a garage sale. You create a few flyers and you make some cold lemonade so you have some added expenses that you also have to earn back. And to keep track of it all, you want a system to keep track of all the numbers.

First of all, you already have a basic CART system with simple templates for contracts, transactions and items. An item is just a GUID to identify the item. You won’t need anything more. The transaction is a record with a GUID as identification and three other GUID’s for the sender, receiver and the item itself. Sender and receiver can be null. Last, you will need a contract which will also have a GUID as identifier and a link to the transaction templates that it supports. Which also means that you need a way to store templates in some way, but let’s identify them with a single GUID too, plus a unique name and version number. (The version number is required if you’re going to support it and want to alter the system in the future.)

First of all, you define the persons. One is you, the salesperson. One is the customer. Templates for these are simple and more than the basic item plus a name would not be required. You would also create similar item types for the goal you want to reach and the expenses you have. The goal type could have an extra description to explain the goal in more details. Then you will create the type for the items that you’re going to sell. Call them products and give them a name and a short description. Add a monetary field to the record for the default price. You might give discounts but this would be the price you would ask. And maybe even a picture if this is going to be an online garage sale. Since you’re going to give away lemonade and perhaps snacks too, you might also want to create an item type for these, since these will result in added expenses. These too would have a name and a cost price. This all will be your catalog and all these definitions are stored in your templates system. (Which could have any form. A Database model, class definitions, whatever.)

Next, you will fill them with records. Add yourself as salesperson. If your wife and kids are also helping, add them too as sales persons. However, adding more than one salesperson might need an additional shop item, with transactions between shop ans salesperson to move products. Add a single customer record, unless you have a few customers who are special or when you want to keep track of your customers. In that latter case, you would have to add customer records when you sell an item to a new customer.

Add all the things you want to sell to the products. When you’re selling lemonade, make sure you also add “Glass of lemonade” as product! Finally, add the expenses that you’re likely are going to have. Bags of chips or peanuts, bottles of lemonades or whatever else you use to make lemonade, glasses, if you use real glasses to serve your customers because even if they return the glasses, some might break. Or paper cups if you don’t use glasses. Anything that you think is important to keep track of.

Next, the actions with all possible transactions. And suddenly you will realize that I haven’t added “money” as item. Yeah, that’s right. I forgot, so add a new type to the items for money. Simply the ID and the name “Money”. Then add a money record for the currency of your choice. Add multiple records if you want to support multiple currencies, although that would make trading a bit more difficult, since it means that you will have to convert the base prices of the items to the different currencies.

So, let’s define a few transactions. First of all you can have one where the salesperson sends a product to the customer. The customer would then have to send money back to you. The product transaction is simple: salesperson, product, customer. The money transaction is a bit more complex, since it has a customer, money and salesperson field, but also an amount field to specify the exact amount that is paid.

If you want to allow refunds, you would also need transactions for the reverse order. These would be different transaction types. (Then again, you could also delete existing transaction records but then you’ll lose a historic overview.

Next, you will need money transactions to send money from the salesperson to the goal and to send money from the salesperson to the expenses. But expenses and goal have a limit to the amounts they can receive so whatever remains would be profit. Which reminds me, I’ve forgotten to add “Profit” as an item type. Add it, with one profit record.

Did you notice that I did not add an amount field to the goal and the expenses? That’s because we’re going to set these values by transactions! To set up our goal, we need a transaction with the goal as sender, since we want to reduce its amount. When the goal reaches zero, its solved. (Same for expenses.) And it’s a money transaction so the item we’re sending would be money and we need an additional amount field. The target is void, null. We could define an extra item that we’re using to specify the exact destinations that the money is used for, but for our sales system, it’s just not important enough. Remember: we don’t have to include the whole world in our application!

The expenses are a bit similar, although here the sender is a specific expense. And the amount would default to the amount specified by the expense itself. (Unless we got a discount when we buy a new bottle of lemonade, of course.) And again, these amounts are sent to the void, unless you want to keep track of where you’ve bought the stuff.

So now we have transactions for customers making purchases, customers asking for refunds and for maintaining the expenses and keeping track of reaching our goal. And already we see the rules in this all! One rule is for making purchases. A customer buys something so we have two transactions. A product moves to the customer and money to the salesperson. However, we need more transactions, since the money is used to reach our goal! So the purchase rule would need a transaction to send money to the expenses first, because we first need to pay the expenses before we have money available for our goal. Once the expenses reaches zero, we can add money to our goal. When our goal reaches zero, we add money to our profit.

When we allow refunds, we’ll need a refund rule, which would basically do the reverse of a purchase. But refunds will need us to move money away from our profit, goal or even expenses. So when we do a refund, we first lower our profit, making sure we never get a profit below zero. When we have no profits, we will add the refund as an extra expense. Don’t subtract it from our goal but just remember that we can only reach our goal when our goal and our expenses have reached zero. So, basically if we have to do a lot of refunds, we have a lot of expenses, even though we have reached out goal.

And we need a rule for our expenses, which basically means we’re going to the supermarket to buy snacks and lemonade to serve. Since we don’t really care about the supermarket, we’ll just receive lemonade and snacks from the void while sending money to the void. (Actually, we could have replaced our customers by the void too, but it’s better to use customers so we know which transactions are actually sales and refunds, and which ones are just expenses.

So now we have a bunch of contract and transaction templates:

Purchase contract:

  • Salesperson gives the product to customer.
  • Customer gives money to salesperson.
  • Salesperson adds money to expenses.
  • Salesperson adds money to goal.
  • Salesperson adds money to profit.

Refund contract:

  • Customer gives the product to salesperson.
  • Salesperson gives money to customer.
  • Salesperson removes money from profit.
  • Salesperson removes money from expenses.

Expense contract:

  • Salesperson removes expense item. 

Shopping contract:

  • Salesperson removes money from expenses.
  • Salesperson adds Expense items.

Balance contract:

  • Profit moves money to expenses.
  • Profit moves money to goal.
  • Goal moves money to expenses.

Setup contract:

  • Remove money from goal.
  • Remove money from expenses.
  • Add salesperson.
  • Add shop if multiple sales persons are added.
  • Add customer.
  • Add products to salesperson. (Or shop.)
  • Add expense items.

When you use multiple sales persons, you might consider adding transactions to send products from the shop to the salesperson, and back again for the refunds. You can also choose to have products sent directly from the shop to the customer, with the money being paid to the salesperson. You might want to keep track of how much each salesperson makes, otherwise it’s no use to have multiple sales persons. Your salesperson would be the shop. The products transactions between shop and sales persons would be to keep track of who sold which item…

This all defines our CART system for a simple garage sale. We have a bunch of items in our catalog, a bunch of possible actions and six contracts. All of them defined as templates and the contracts will need some code to check for the actual status of our goal, our expenses and even keeping track of our expense items, because when we run out of lemonade, we might need to buy more.

The next step would be to design some data models for the four different systems, to connect them and to finally create a nice user interface for the application. But that’s a nice challenge for my readers. Just keep in mind that you’re supposed to keep things simple.

Before you start selling, you would need to set up the shop, which would need the setup contract to be used.

And at the end of the sale, what you would like to do is to check if your expenses are zero. If they’re below zero, you will need to balance the three accounts. (Expenses, goal and profit.) This requires the balance contract that I’ve added to the list. Basically, your expenses must reach zero, else the whole thing has been a huge loss. Next, your goal needs to be zero, else you haven’t reached your goal. Finally, whatever is in your profit will be your profit of the garage sale, which you might use to celebrate a great action.

Next, if you want to build the thing in some client-server style, the contracts would be the web methods that you will need to create. You will also need a method to give you all the items in your system, which you will need in your client. Your client might want to display each and every purchase and refund so you might want to get all these contracts with related transactions. But you’re probably more interested in the current status so it’s more likely that you just want to see the amounts left in your goal, expenses and profits, and perhaps also for each salesperson. Basically, that would just be a method that would sum up all money transactions related to a specific item. You would send the item ID to the server and it would return an amount back.

Today I’ve learned…

…that there have been more World Wars than the two we remember from the 20th century. An article at Wikipedia defines a World War as a war that involves the world’s most powerful and populous countries. And although World War I and World War II are best-known for being such wars, there have actually been a few more wars that could qualify as such.

The article mentions at least ten other wars that spanned across multiple continents including the Eighty Years’ War, which involved my country. Although this was a war that originated in Europe between Spain and the Netherlands, it also included the overseas colonies that both countries had in the America’s, Africa and Asia. Actually, the Dutch performed quite well in those colonies, compared to the Spanish. Actually, since the discovery of America by Christopher Columbus in 1492 we finally arrived in a situation where World Wars could be started, since most of the World would be known territories by then.

Also, it seems to suggest that all World Wars will include the European countries, especially the Western European countries like Great Britain, France, Spain, Portugal, Austria, Italy and the Benelux. (And Russia.) And in all those wars, the (former) colonies are also involved. This would suggest to me that we Europeans are extremely aggressive. A strange view, since we also seem to try to be the Peacekeepers of this world.

Now, looking at current events I cannot but consider the Arabian Spring as a prelude to the next World War. But contrary to those previous wars,it’s not one that’s started within Europe. It doesn’t force European countries to fight one another. Europe seems to have united pretty well after these previous conflicts. But in a way I cannot help but compare the current situation in the Arab World to be similar to Europe 500 years ago. A world-wide influence of those conflicts in an area that’s divided over religious and political views.

Tunisia, Egypt, Libya and Yemen have already had a major change in government after some internal conflicts. Bahrain and Syria are still having internal conflicts although it’s still not clear if those conflicts will result in a political change. Algeria, Iraq, Jordan, Kuwait, Morocco and Sudan are still dealing with major protests and many other Arab countries have to handle minor protests against the current politics in those countries.

However, these are all internal conflicts and although the rest of the world might get involved in several of those conflicts, it’s still not a total war. We could wonder if it would ever escalate to a full war between several Arab countries, especially when those countries start to show specific religious beliefs that would conflict with those of the other countries around them. Even though all these countries are Islamic, there’s a major difference between how those countries explain their religious values.

Maybe the United Europe has caused these conflicts to occur in other parts of the world. Europe states to become a singular World Power instead of a group of a dozen or so powerful nations. Maybe humans will continue to need conflicts somewhere on this world so they have some danger in their lives. Something to give them stories about heroes and villains. War also helps innovation, since the fighting parties will continue to need better weapons than their opponents. War seems to be good for the economies of countries that just supply the warring nations with food and weapons.

Will the Arab Spring escalate into the next World War? Who knows? Many of the countries involved will have some major political changes and past friendships between those countries might melt away in the heat of the many battles. Once the internal battles end, these states might turn upon one another, simply because they want to help their “brothers” in the surrounding nations. Kuwait, for example, is a very interesting country to conquer for Iraq or Saudi Arabia because of its oil productions. But Iraq has tried before and lost a few teeth in their attempt, resulting in the death of their dictator and the current, internal conflicts. And the Saudis don’t seem to have that many internal struggles just yet, simply because their enormous wealth manages to keep people reasonable happy.

Just like the Romans did with their “Bread and Games”. Provide the population with enough food and entertainment and they won’t riot too often. This works well for many countries that can offer this all for their population. Then again, the current economic crisis does make this a bit more difficult. And the Internet is providing the modern alternative for the Games the Romans used to organize. But the Internet is showing people how civilians live in other countries, and allows them to see their own poverty compared to e.g. the European and American people have. It makes them want more. Or the exact opposite, since we “westerners” are sinners so all we have are sins.

Just depends on your religious views, actually. Moderately religious people will see the Western lifestyle, consider it very comfortable and they will start to want their own comforts. The fanatics will just see sins after sins and will demand that these sinners are stopped, starting within their own countries. And these different views will continue to cause new conflicts in those countries until one side will have “exterminated” (or suppressed) the opposition.

And again, I have to think about Europe in the past. Especially the Spanish Inquisition. The Inquisition was a very fanatical, religious movement with a powerful army. When they suspected that a town had a few sinners, they would not hesitate to kill the whole population so God could sort it all out at the Gates of Heaven. Innocent or guilty, it just didn’t matter. If you were innocent, you would be welcomed in Heaven. If you were a sinner, you’d end up in Hell. All the inquisition did was to let God decide about this a bit sooner.

Will there be an Islamic Inquisition someday? Actually, it already seems to exist and calls itself “Al-Qaeda”. But this is considered to be a terrorist organisation, related to the Taliban from Afghanistan. It shares similar religious views and has the same origin. It’s views are extremely fanatic and similar to those of the Inquisition, although the religion underneath differs. But Al-Qaeda doesn’t seem to have a clear structure. It’s more like a large collection of small groups that share the same religious values, but without a clear leadership. The Inquisition had a strict structure and clear roles for every member. That actually made it easier to put an end to the inquisition.

But it brings me back to my original question… Will the Arab Spring start the next World War? Might it be that this next War has already started, considering the fact that Al-Qaeda is already operating within six major world powers? (The EU, the U.K., the U.S., India, Russia, Australia and Canada.) However, wars are fought by armies, between countries. Al-Qaeda isn’t representing any country but just a religion. And it doesn’t have a real army but more something that might be called Militia at best, or plain terrorists for most.

And to be honest, I don’t know the answer. But I do realize that if one of those countries that are involved in the Arab Spring manages to create a stable home base for Al-Qaeda then that would result in World War III almost immediately, since the USA has already declared Al-Qaeda as their number one enemy. If, for example, it turns out that e.g. Iran happens to be the home base of Al-Qaeda, then the USA would bombard this country so much and for a very long time until the highest mountain will be lower than any Dutch meadow. The same would apply to other countries that would try to provide Al-Qaeda a home base.