web 2.0

The Legacy of Khmer SMS Picture Messages

It was 8 years ago, in year 2000, when I got my first computer. It was a dream came true. Before that I had been watching my neighbor typing his word documents, staring at his shiny computer screen, thinking of what kind of machine it was. I don't know what country you live but here in Cambodia, having a personal computer back in year 2000 was a pride. So... I liked it so much that I was stuck in front of it for hours everyday. My private tutor taught me Word, Excel and Windows 95. It wasn't long until I learnt something useful myself. Dad bought some phone equipments from Hong Kong, and so for a while I played with it *cough* unlocking, flashing and bricking phones *cough*. In 2001 and early 2002, nobody was sending a SMS picture message, since 60% of mobile phones didn't support it. It was totally new when I designed several picture messages in Khmer, my local language. The first one "Eternal Love" ស្នេហ៍អមតៈ was a hit among Cambodian phone users. Apparently, almost every darn phone in Cambodia received it, as people quickly learned to forward to their friends and families, although many old models would see "Message cannot display here" instead of the picture. The funny thing was that I received the picture several times from my friends. Hell no! They didn't believe I was the creator. I guess I played a big role in jumping start the Picture SMS technology here. Subsequently, I created more picture messages in Khmer including "I Love You" and custom-made "My Love" sealed with "Chakrya" my then girlfriend's name, and I guess it played a role to win her heart. You can see those pictures above.

Past is past. Today, years after my first legendary picture SMS, I created a set of three pictures about the upcoming solar eclipse on Friday, August 01 2008 which is visible totally in China and partially across Asia. Will this be my new legacy in which people are mass forwarding my pics? Let's see.

Tags: , ,

Life | My Graphics

The Sun Will Smile At Cambodia-Thailand Friendship

 

 

I know some of you are occupied with the Preah Vihear issue, but there's one important event in the next few days you should not miss. Studied and predicted by NASA, it is a very rare Partial Solar Eclipse (So Kreas - សូគ្រាស) on 01/08/2008 from 5:55 PM to 6:30 PM in the evening. While the sun's setting into the horizon, it will be covered partially by the moon that passes in front of it. People in many Asian countries including Cambodia and Thailand will see this magnificent show of nature. It's as if the Universe, God if you're religious, is trying to ease the conflict of our countries. I do hope this is to coincide with a peaceful withdrawal of all troops both Thai and Cambodian along the border. Soldiers and civilians alike should reunion with their family and take time to enjoy this gift. Imagine how romantic it is, taking your special ones to a high ground to watch the once in a lifetime solar eclipse at sunset. Of course, to protect your eyes, you will need a pair of special viewing glasses which is easily made with a roll of undeveloped camera film. You can also look through the LCD screen of a digital camera. Please never attempt to view it with naked eyes, which could make you go blind. I've got some films left. Let me know should you need one.

By the way, we all know the consequences of war: Poverty, loss of lives, broken families, destruction everywhere it touches. Wars made us live in this state of "your horror stories here". War is endless, and there is no winner in this game. Excuse my humble request, please try not to overreact to the border issue. You may have wanted to boycott Thai products or do harm to any Thai you meet, but in doing so, it will probably further isolate Cambodia from the rest of the world. Believe me, they can make us miserable too if we make them miserable. Instead of doing all bad things, why don't we do something good? We scratch their backs. They will scratch our. It's a win-win. There are too many good deeds you can do that I can't list them all here. Make your own good judgment and make a good foreign friend, will you? Well, you might be now saying that I'm nobody to ask you to reconsider your political ideology. Hell yeah, I'm not graduated in Political Science, but I've got common senses.

Enjoy your solar eclipse viewing! On 01/08/2008 from 5:55 PM to 6:30 PM at sunset. And you should let your friends know about this solar eclipse too!

Sopheap - Your Humble Friend

Tags:

Life

Clinging to The Relationship Framework

Chakrya, I wish we could become friends some day. Thae rek sa kloun na... Cham besdung bang chea sen.

Tags:

Life

Codename: MicroCreditor

All of the previous posts I wrote were for projects in a distant past. This time, it is the current project I'm engaged in. Codename "MicroCreditor" is a distributed enterprise software package for managing micro loans--the ones of $10,000 value or less borrowed by the poors to help fund their family business mainly farming. As it's intended for use by microfinance institutions (MFIs) worldwide, MicroCreditor must be stable and scalable so that it'll run well for decades without major glitches. Therefore, I have to invest twice the time and effort in this project. MicroCreditor has many amazing features that any MFI dreams of, to name a few: client/loan/payment tracking, one-click reporting, automated repayment schedule, choice of repayment schemes, and loan group support. In short, it is a complete backbone system can take care of all the loan operations for a MFI. It will significantly cut the operation costs by requiring fewer staff, equipments and paperworks. As soon as it's finished, MicroCreditor will be used by the Peace and Development Institute (an NGO) in Cambodia to help deliver low-cost, low-interest loans to thousands of Cambodians living in provinces, and I'll be there working closely with them, providing technical assistances and trainings to the staff.

Frankly, working with financial institutions is no fun at all. I've always been reluctant to develop software when it comes to be related with 'Finance', because there are a whole lot more of responsibilities and challenges I would need to undertake. Stress level in creating such software is off the scale, I can tell you that. Developing MicroCreditor is only different in a way that I know my software will help a lot of people, especially the poors. If it weren't for the people, I wouldn't bother with project like this at all--Ahhem! We can talk if you give me a million dollar to develop your financial system.

Tags:

My Software

FxFisherman ZeroCode - MQL Code Maker

 

 

FxFisherman ZeroCode can automate the creation of MetaTrader MQL script in three short and simple steps. I created this program three years ago, on May 28 2005 to be exact. It took about 10 days to finish, but I spent maybe an hour per day coding it during my part time. At that time, I was doing a lot of favors for many people. I was asked to put their trading ideas in code and have their computers automate their trading systems. I loved doing it, as it made me happy to see my fellows happy. But I knew I needed to have time of my own, so I created this program for them so that they could automate such tasks on their own without knowing anything about programming. I was also kind of inspired by a proverb: "Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime." I was thinking "Hey why not give them some kind of tool, like a fishing rod, so that they can do it on their own." Therefore, ZeroCode was born. It was a hit. Many complete strangers recommended ZeroCode to their friends. There were hundreds of users within days, and some Japanese programmers loved it so much that they decided to clone it as a web application. ZeroCode was doing quite well for some people but it's not for some who didn't know how to use it, even after they’ve watched my video tutorials I recorded for them. In addition to that, ZeroCode Beta 1 release was pretty much limited to what type of script could be created, but the problem was not mainly in ZeroCode. Some of them didn't even know what an indicator is or what a trading system is, and they didn't even know what they're doing with ZeroCode at all. Not long that I discontinued ZeroCode due to these issues. I knew I needed to create something much easier to use and much more powerful at the same time. It has never happened, although I do have some solid brainstormed ideas to begin with.

Anyway, you can download it from FxFisherman.com.

Tags:

My Software

Globally Unique Identifier Generator


I know I've been writing long posts lately. Not only is it long but it also doesn't have any freebies for download. Hope this post is as short as possible. Okay, I created a GUID Generator when I was inserting some data into MS SQL tables. Some of the columns were 'uniqueidentifier' type, and well-formed GUIDs must be entered. The thing is MS SQL development tools don't have the generator built in, so I had to make one myself. If you happen to need one, you can download mine (20KB) and use it for free. It requires .NET Framework 2.0/3.0 installed in prior.

Anyway, if you don't know what a GUID is. Here's the snippet I copied from Wikipedia: A Globally Unique Identifier or GUID (pronounced /ˈguːɪd/ or /ˈgwɪd/) is a special type of identifier used in software applications in order to provide a reference number which is unique in any context (hence, "Globally"), for example, in defining the internal reference for a type of access point in a software application, or for creating unique keys in a database. While each generated GUID is not guaranteed to be unique, the total number of unique keys (2128 or 3.4×1038) is so large that the probability of the same number being generated twice is very small. For example, consider the observable universe, which contains about 5×1022 stars; every star could then have 6.8×1015 universally unique GUIDs.

Download Link: GuidGen.exe (20.00 kb). Requirements: .NET Framework 2.0/3.0 installed.

Tags:

My Genes Can Do Reverse Engineering

Nah, it’s not my biological genes that can do the reverse engineering jobs; but it’s the artificial ones that I created for the previous Genetic Algorithm experiments. Do you believe there is a machine that can automatically create just about anything you dream of? You want to make some cool computer programs, games, fashion designs, or trading strategies, but you don’t have any ideas on how to do it? Well, today is your lucky day. Your prayer is answered because this Genetic Machine can produce all of those for you. You won’t need to teach it or feed it. Just tell it what you want, click ‘Start Building’, wait twenty four hours, and there you have it, your own piece of invention without any hassles. Just one thing though. The machine, it doesn’t exist. However, there is a less advanced machine that does exist and can create some items on its own. NASA used it to automate the creation of the UHF antennas for Mars Odyssey spacecraft. Well, the machine is just a today’s computer with special genetic software installed. Well, I can’t show the NASA’s special software to you, but I have something similar to show off today. I built a software program using the same concepts and algorithms (Genetic Algorithm and Genetic Programming) that NASA used. I gave it a temporary name ‘Program Tree Evolver’.

For now, Program Tree Evolver doesn’t produce antennas. It can however reverse engineer some data fed into it to recover some hidden formulas, and these formulas can be used to reproduce the same input data. “Okay, you’ve found some formulas, so what’s the big deal?” you says. I can tell you it’s a big deal. If you know the formulas that can reproduce the data that was first fed into the software, you’ll know the process behind everything. Says, you’ve collected historical data of tornados such as the paths of tornados and the geographical pressures. Now you want to find out how the geographical pressure affects tornado’s movement. So then you feed your tornado data into the software, click “Start” and wait until it generates the formula. With such a clear formula in your hand, you’ll understand exactly how the pressures move the tornados, and ultimately you’ll be able to predict tornados, project their destructive paths, develop early warning systems and save lives. Got it yet? Here’s another interesting example. Says, you want to be able to predict the stock prices so that you can earn a living from stock trading. You want study the reasons why the price goes up and why it goes down. You have historical prices of many companies. So, you put that data into the software and wait until it generates the formula. Bingo! The formula tells you the secrets behind stock market movement, and with it, you can easily predict where companies will go to and make decent money from it. To put it briefly, the software allows you to reverse engineer data back into its original formula.

Well, I made a lot of assumptions in the examples above. You can’t always derive some formulas from data, because formulas might not be in there first place, or Genetic Algorithm simply can’t solve it. Moreover, you can’t always have the formulas in such a short duration especially by working in your comfort zone. In reality, you might have to connect many powerful computers in a big grid to form a supercomputer. You’ll have to collect much data, and before you can feed it into the software, you’ll have to code some evaluation procedures so that the software knows which solutions are better or worst. Many times, you’ll have to code data converters and simulators to the purpose. All I’m saying here is that reverse engineering for formulas is possible but much more difficult than you think.

For a short and simple demo, I fed some numbers generated from Excel using a formula. I then exported and fed the results into Program Tree Evolver. I didn’t enclose formula to the program. Let’s see if it can reverse engineer it. Soon enough, it did! It found the correct formula in ten seconds. The formula (P1 * P0) – (P1 / P2) is presented in a binary tree. See it in the screenshot below. 

Tags: , ,

Artificial Intelligence | My Software

Parameter Optimizer - It is Alive!

Before I tell you more about this program, let’s rewind back to the beginning of it. When I was a small curious boy, I would walk up to many people and ask them questions every day. “Pa, what created human?” He never answered it. I think he wasn’t religious enough to believe that God did it.  “Mom, did God create human?” I asked. “Yes, son. Buddha created this world and human. Now go play outside. Mom is busy.” It didn’t surprise me a bit, as most people had given me the same answers. “But then who created God?” Some replied he created himself. My cousin a few months older than me said “you silly, another God created him.” My grandma gave it her best shot: “Gods live eternally. They always exist before and after.” So by then I just didn’t know who to believe. All the answers only led to more questions. I was kind of waiting for someone to give me one ultimate answer. It hasn’t happened.

In grade twelve, I was introduced to the Darwin’s Theory of Evolution, that it could answer some of those questions, not entirely, but rationally better and with mathematics and fossils to back it up. From some molecules evolving to a single-cell bacterium, from some bacteria evolving to a complex organism, from ape to human, evolutionary process is the self-inducing force behind it all. Now I personally believe that evolution plays a vital role in making everything as we know it—maybe I’m right or maybe I’m wrong but I’m now more satisfied more than ever.

So powerful it is, yet the law behind Evolution is simple: Only the fittest survives and dominates, and they then breed and create better offspring. That’s simple right? In other words, a smarter, stronger person will beat the stupid, weaker one and gets the girl. No doubt about that. After he gets the girl, they *bleep* and give birth to some children. And the process repeats. If my children are better than yours, mines will get the girls, the scholarships, the pay rises, the promotions, etc. Yeah, the fittest survives again. In the wild, the work of evolution is no different. Bigger lions kill the smaller lions to get the females, territories and foods. In stock or forex trading, it is also no different. The more experienced trader wins the money that the less experienced loses. Evolution works the same way everywhere. In a nutshell, evolution is just a way of the nature, but it somehow forces something to be better, or else suffer.

Anyway, this software I created is for solving optimization problems quickly and painlessly. To optimize something, you want find the best inputs that produces the best output. It’s the same way a cook finds the scale of ingredients to make the most delicious disc. Typically, a person finds it by trials and errors. You cook it too sweet this time. You’ll decrease the sugar next times until it tastes just right. But if you’re a math genius, you’ll go through all the wacko numbers, integral, derivation, graphs and then come up with the best inputs—e.g. x = 1.56 gram and y = 40 gram. If you’re an analyst, you’ll create some scenarios and pick the best one. But if you’re a lazy software programmer as I am, you’ll resort to creating a software program that does the jobs for you. Right! Like this software program of mine for solving optimization problems quickly, painlessly and almost automatically.

There are many ways to create such software, just pick an optimization algorithm from the many existing ones and write it in code. Ant colony algorithm, for example, simulates some ants finding the nearest route to the food; hence the best input to result in best output. Simulated annealing algorithm uses the analogy of the cooling of metal to find best inputs. But what took my breath away was the ‘Genetic Algorithm’ which simulates the evolution of genes. Gene evolution take years and generations to see small changes. With today’s computing power, however, you can fast forward the process to just a matter of days or minutes depending on the difficulty of problem, the number of variables and the amount of data. By simulating gene evolution, my program has the very same power to filter out bad inputs (as artificial genes), and breed more of the best inputs at the same time. 'Parameter Optimizer', the software I created as my first shot, is literally breeding digital data. The offspring are better digital data. Scary or funny? You tell me. Although Parameter Optimizer lacks many features of a good optimizer, it can solve some basic problems like the following one. I hope I can find time to create an advanced optimizer and publish it.

Optimization Problem: There are 50 grape vine trees in a vineyard. Each tree produces 8,000 grapes. For each additional grape vine tree planted in the vineyard, the output per tree drops by 1 grape. How many trees should be added to the existing vineyard in order to maximize the total output of grapes?

Answer: If you want to go ahead solving this problem, then don't peek the answer before you do. To solve the problem, I simply write the equation: total output of grapes = 50 * (8000 - x0) + x0 * (8000 - x0), where x0 is the number of additional grape vine trees to be planted. I use the default settings of Genetic Algorithm. Now I simply click "Start" and the program finds the best answer in 10 seconds. It says I should plant about 3,975 additional grape vine trees, and then the vineyard will produce about 16,200,625 grapes which is the maximum. No college math needed. Now how cool is that?!

 

Tags: , ,

Artificial Intelligence | My Software

My Advanced Forex Economic Calendar

This web-based application of mine is big, ranking 6th place out of 880,000 in Google and 3rd place out of 7,990,000 in Yahoo for search keywords "Forex Economic Calendar". Available at FxFisherman.com, it is being used heavily by many forex traders around the world. Plus, about one hundred website owners have integrated my forex economic calendar into their websites, which is kind of cool for me.

To be honest with you, I was inspired by the ForexFactory.com's Economic Calendar. I liked how the data was presented and how the volatility icons were shown. I added some innovative features including the price direction indicator, the future chart indicator, the count-down widget and the Web 2.0 AJAXified user interface. The underlying data is completely different from that of ForexFactory.

One of the reasons that I created this application was that I needed to make money in forex trading. I believed the price movements especially the ones with large spikes were not entirely random. I thought if I could capture these movements, I would be rich before I knew it. So the research begins. After hours and days analyzing currency charts, I noticed some patterns of large spikes. On the first Friday, sometimes Thursday, of each month around 13:30, all currency pairs change about 1% of its value in matter of minutes. Many traders already knew about this, but as a lone trader I didn't. I began tracking the sources of market force behind it, and then I found this economic data release called US Non-Farm Payroll, NFP or Employment Situation which is published at 13:30 sharp by U.S. Bureau of Labor Statistics. I knew I was right. The moment this piece of data was released, the financial market became wild. The swings in price confirmed my findings. Now that I could time when the market is moved, all I needed to know more is the direction of the market. You don't need to be 100% correct reading the direction. Only 60% is enough to gain the edge to make more profits than losses. After days studying the data, I finally figured it out. I wrote this algorithm to predict the direction. It has been perfect. This economic calendar is literally a money printing machine if you know what you are doing.

Tags: , ,

My Web 2.0