When a farmer in Musita, Uganda has questions regarding a decision he must make, he's likely to go visit Michael Malime, the village mobile phone operator, and connect via text message to the Farmer's Friend service. Sending a text message like "rice aphids" or "tomato blight" will result in either a return text message with relevant information, or a phone call from a human (if the database does not contain a relevant response).
This news is reported in the article Beyond Voice, one of 8 articles in this week's Economist magazine special report, Mobile Marvels. The special report is subtitled: "Poor countries have already benefited hugely from mobile phones. Now get ready for a second round."
The subtitle of the Beyond Voice article is: "New uses for mobile phones could launch another wave of development." That indeed seems to be happening, as the price of mobile phones and mobile access drops. The article describes a wave of new mobile applications that are springing up to serve the needs of communities that are poor, and have none of the basic infrastructure that the developed world takes for granted (landline phones, for example, electricity in many places).
The conduit that makes these applications possible is the growing mobile networks in countries like Kenya and Uganda, and in many other developing places in the world. Today, 40% of Africans have a mobile phone. For many who do not have a phone, there is a village phone operator, like Michael Malime in Musita, Uganda, who sells the opportunity to use a mobile phone for a voice call or a text message. Often, the text message destination is a mobile application service like Farmer's Friend.
The Farmer's Friend service:
accepts text-message queries such as "rice aphids", "tomato blight" or "how to plant bananas" and dispenses relevant advice from a database compiled by local partners. More complicated questions ("my chicken's eyes are bulging") are relayed to human experts, who either call back within 15 minutes or, with particularly difficult problems, promise to provide an answer within four days. These answers are then used to improve the database.
Many organizations are getting involved in this effort in developing countries. These include, most notably, the Grameen Foundation, founded by Nobel Prize winner Muhammad Yunus (who also recently received the 2009 U.S. Presidential Medal of Freedom). An organization that readers of this blog will be more familiar with, that is also significantly involved in the effort to develop mobile apps to serve the needs of developing regions, is: Google.
Another aspect: mobile "banking"
You may recall our recent article by Biswajit Sarker, Using the Payment API for Microcredit and Other Applications. In that article, Biswajit showed how to develop an application that applies the Payment API (JSR 229) to enable the transfer of funds using a Java ME app for mobile devices. In his article, Biswajit talks of a user "purchasing a loan voucher" -- that is, a "voucher" is the means of transferring the money you as microcredit lender would like to provide to the person whose business idea you'd like to invest in.
Biswajit's description sounds exactly like what's happening with mobile money transfers in Kenya and other places today. The Economist's lead article for this issue, The power of mobile money (featured in this week's java.net Spotlight), talks about how:
With such phones now so commonplace, a new opportunity beckons: mobile money, which allows cash to travel as quickly as a text message. Across the developing world, corner shops are where people buy vouchers to top up their calling credit. Mobile-money services allow these small retailers to act rather like bank branches. They can take your cash, and (by sending a special kind of text message) credit it to your mobile-money account. You can then transfer money (again, via text message) to other registered users, who can withdraw it by visiting their own local corner shops. You can even send money to people who are not registered users; they receive a text message with a code that can be redeemed for cash.
And there's more...
It's easy, as one who lives in a developed country, to think about mobile applications only from the perspective of the life we live and the things we see in our own world every day. But, the biggest and most important change of all, with respect to mobile applications, may actually be happening in the most underdeveloped regions of the globe.
There's so much in this Economist series -- I've barely scratched the surface of talking about the effect mobile phones and apps are starting to have in the developing world in this post. Take a look at the Economist Special Report (before they make it available only to subscribers) if you'd like to read more.
I've seen the following issue confound customers and colleagues of late, so thought it worth a blog entry. Lets say you have an application that exhibits negative scalability. That is, if you were to plot throughput on the Y-axis and concurrency on the X-axis the shape of the curve would be convex downward -- performance climbs up to an apex and then falls off. (How can this happen? A common reason is that the communication overheads start to dominate and the benefit of concurrency is overcome by communication and synchronization costs). Under such circumstances it's common to introduce some type of admission control -- say, simple back-off or more elaborate mechanisms -- to restrict concurrency. Ideally, this yields an asymptotic curve where performance remains constant after reaching the peak, avoiding any fall-off...
If you've been following this blog recently, you know that I've been developing an application in the SpeedReaderFX category that helps me quickly keep up on new happenings in world events, technology, gadgets, music, and social networks. SpeedReaderFX is located in the JFXtras open source project, and also serves as an example of using JFXtras classes with JavaFX. One of the newest enhancements made to the SpeedReaderFX program takes advantage of the Picker control that David Armitage created in the JFXtras project. Here's a screen shot of a program in the JFXtras project that he created to demonstrate and test the Picker control varieties ...
The deadline for submitting your entry for this months JFXStudio Challenge is almost here. Entries must be in by midnight, Pacific time, the evening of September 30th, which is this Wednesday. We’ve only gotten a few entries so your odds are good. For full rules see our challenge announcement and the secret theme. Just to give you some ideas, I wrote my own entry. Take a look...
We'll be hosting a Hudson community meet up at the upcoming Oracle OpenWorld (October 12th Monday, 2-3pm). If you are coming to the conference, please come see us! ...
While much have been written on checked vs unchecked exceptions, I found very little practical, down to earth, advice on how and why to use them. Here are my thoughts after years of rumination.
The common wisdom: What we are typically told is to use checked exceptions for recoverable conditions and unchecked exceptions for programming errors. For example here or in Effective Java. Don't get me wrong: I do not think this is particularly bad advice, but there are a couple of problems...
When I started the mavenization of my projects, in July, I really didn't
figure out that it would have been such a painful and long process. It
is literally consuming me - also because I'm longing to see the end of
the conversion, so I can resume the development.
The first mavenized projects, BetterBeansBinding,
jrawio and Mistral, were reasonably easy, also considering that I had to learn at the same time Maven under the surface. But they were plain JSE projects, with just a handful of modules. blueMarine has got hundreds of modules partitioned in 7 projects and even though I wrote some scripts and tools to automatically generate the pom files, they are needing tons of manual fixing...
In the Forums, jerle is seeing Chained web service calls crashing Glassfish - any ideas?: "I'm fairly new to Metro and glassfish, and I'm hoping someone with more experience will know what's going on with this bug. I have a web application that makes a call to a metro web service. This webservice does some processing, then calls a..."
mohamedelshami has a question about Using non-http transport in GlassFish: "Hello, I'd appreciate it if anyone could give me any thought on this. I have a scenario where I have an enterprise server application which on one side is RESTful/HTTP and other side may interface with non-http tranport. I understand that an..."
And saturon wonders about Setting the domaindir globally for a user : "HI there, I'm in a process setting up Glassfish v3 Preview on a debian box. I installed glassfish under root, but created a domain under my glassfish server user. Now I need to specifiy the --domaindir for all..."
Our current Spotlight is this week's Economist magazine feature on "The power of mobile money": "mobile phones have evolved in a few short years to become tools of economic empowerment for the world’s poorest people. These phones compensate for inadequate infrastructure, such as bad roads and slow postal services, allowing information to move more freely, making markets more efficient and unleashing entrepreneurship ... With such phones now so commonplace, a new opportunity beckons: mobile money, which allows cash to travel as quickly as a text message..."
Our Feature Articles include Jeff Lowery's A Finite State Machine Supporting Concurrent States, which demonstrates how Java enums and EnumSets can be used as a basis to define and validate application states and state transitions. We're also featuring Jeff Friesen's article Introducing Custom Paints to JavaFX, which shows how you can leverage undocumented JavaFX capabilities to support custom paints in JavaFX Version 1.2.
Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.
Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.