web 2.0

Make Photos Smaller In One Step With Quick Image Resize

In these days and ages of sophisticated technologies, it is disappointing to see people emailing and uploading their 10-megapixel photos in full size, just to be displayed on computer screens. The problem is that it takes forever to email or upload all those huge photos, several megabytes each, to your friends, not to mention that it will also take forever for them to download these huge images. This is an unacceptably inefficient way to transfer images over the internet.

Now if we think about it, there are over a zillion programs already made for resizing and making images smaller, yet people still share their photos in full size. What gives? Having tried a handful of such programs that can resize images, I think the inherent problem is in the usability. I mean, why did I have to go through a hundred steps before I could resize my images? Why did these app developers make it so difficult to just make images smaller?

Believing that everybody should not have to put up with that, I took the liberty to make this program Quick Image Resize which like the name suggests resizes images as fast as possible in just ONE step. The user interface in my opinion is relatively simple and easy to use (if it is not, I do welcome constructive feedback). The default setting will resize images in various formats and save as JPEG about 40KB each in the 'Small' subfolder.

Give it a try. Download Quick Image Resize 1.0 (FREE) below.

Download Link:

QuickImageResizeSetup.msi (545KB)

Disclaimer: The programs are provided as is without any guarantees or warranty. Although the author has attempted to find and correct any bugs in the free software programs, the author is not responsible for any damage or losses of any kind caused by the use or misuse of the programs. The author is under no obligation to provide support, service, corrections, or upgrades to the free software programs.

Tags: , , ,

My Software | Photography

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

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

BitFolding: Mysteries of The Ultimate Data Compressor

Late in a cold dark night, in front of a small computer screen lies this human figure, meddling with his new piece of software he has just created. His wife is asleep soundly in a soft bed nearby. He would love to turn on the lamp to brighten the darken room but he loves not to arouse a sleeping beauty more. The brightness of the computer screen is high enough to allow one to notice a strange computer program running but low enough not to wake her up. The software looks not any extraordinary than any other software, yet the concept behind it is out of this world. He formulates the secret recipe of data folding onto itself recursively. Maybe for the first time in history, it has folded a megabyte file into a mere ten-kilobyte. A large file has shrunk into a tiny file, a hundred times smaller. This is the world's first that such an amazing feat has been achieved.

From this small bedroom he calls home office, he carefully analyzes the results. The small file is successfully unfolded back into the large original file with every byte and bit fully intact. So exciting he is, for he has invented the ultimate data compression software. Such software could fetch him millions just by selling the license to some large corporations. He would buy himself, his wife and family a big house maybe on his private, heaven island. It is the last promise out of many broken ones he could keep for his girl and his family. The clock hanging low on the white-painted wall has just hit twelve midnight, somehow reminding him not to daydream while daylight was at the other side of the world. Tonight finally he gets the sweetest, good-night sleep he has ever had in his life.

The sun is now up near the horizon, casting its warm orange light into the two-doored bedroom through the open window. One door leads to the outside world; the other leads to nowhere but the lone living room of his small apartment that he rents. Dara is already awake by his bed. He would quickly jump to his workstation but today the electricity is out cold. "Maybe I forgot to pay the bill, or maybe the city is just too poor to afford electricity around the clock," he murmurs to himself. His first love is now too wide awake. Fleur-de-Lys would usually cry for him even before her eyes are fully open, for she loves to have her hubby by her side when she wakes up. Spiritually lonely she has gone through before she met Dara. With cool gentle morning breeze touching their bodies, they hug like it was the first time. "Honey, what would you do if you had one million dollar?" he whispered in a low voice. This is possibly the millionth time he asks the question that Lys has grown tired to answer. They kiss on cheeks and off they go, to their workplace five kilometers away.

It is now twelve post meridiem, a perfect time for daydreaming. Back home they are and soaked wet by the rain while traveling home on this old red second-handed motorbike imported from Korea. The two-hundred-volt electricity is back online. No wonder the city has to cut it for some hours to save the petroleum consumed by those huge generators. After all, they live in one of the poorest countries in the world. Without hesitation Dara boots up old Lucy his lone personal computer. The Pentium III central processor running at six-hundred megahertz takes her forever to boot up.

"An internet service provider could use such software to significantly reduce the traffic," he ponders about the applications of such software while Lucy's black screen is prompting same ol' jumble commands and her storage belly screaming loud. He does not need a calculator to compute how much companies would save on data storage and traffic by his software. It could save them about ninety nine percent. "Right! They could lower the price of a one-hundred-dollar internet connection to merely one dollar. Nice!"

Now that Lucy has completely booted up, he still in disbelief continues to analyze the results and double checks his new software. Apparently, it ceases to work all of a sudden. It is as if somebody sneaked in and changed the algorithm code last night while everybody was asleep. That is not the case because it is exactly the same code, same algorithm; nothing has changed. "Maybe I'm changing the variables. Maybe I accidentally did something unplanned for and now I forgot it. That can't be right!" he thought. "Or maybe, just maybe, it did work but in a dream which I don't recall having."

It wasn't long that he has listed down all possible culprits. He slowly rules them out one by one until none left. "The file did successfully decompress, and it is here in this folder as a hard proof, or maybe, just maybe, I accidentally copied it here." He was kind of confused. It is like a train has collapsed and then its track mysteriously disappeared. Maybe it was off the track for too long before it collapsed far away from its track. He will never know. He codes everything from scratch if it were for some kind of bugs. Nothing works. All that remains is the memory of an unsolved mystery.

 

Tags: ,

My Software

A Blazingly Fast CSV Splitter

It is possibly the world's most popular CSV Splitter. My CSV Splitter ranks #1 among 920,000 results in Google, Yahoo and other search engines for the search term "CSV splitter". Originally, I wroted it for my friend Gazuz. Who would have thought it was such a big hit? Now i'm maintaining it for the benefits of the world. You can download it free from FxFisherman.com. Like the title says, it runs blazingly fast! A gigabyte file could be splited under a few seconds using minimal memory.

 

Tags:

My Software

Ironic Work Timer Program

It was exactly 13 months ago. After sitting hours after hours straight, my muscles hurted like crap. I was on the extreme end doing my works non-stop. So I needed something to remind me periodically to stop working, take a short break, and then alert me shortly after to come back to work. It took me about 30 minutes to create this utility "WorkTimer" to do just that. The irony is that I never actually used it. My biological reminder a.k.a. "pain" was much better. It effectively forced me to take not a few minutes off but days.

 

Tags:

My Software

Spy SignSis: A Symbian Package Signing Program

My brother was desperate for a good Symbian package signing program to zip up his creative contents to install in other phones, so I wrote him this small utility under two hours or so. What it does is simple: Take an unsigned .sis file and sign it with supplied contact information. Everything went perfectly until he test run it. It turned out that not only did Nokia phones need a signed .sis file but it must be also signed by SymbianSigned.com. 

 

 

Tags:

My Software