SMS applications have been the most popular technology used so far in the development sector, and there are many examples of such services. The [132]MW4D Wiki is keeping [75]a list of stories and related projects on different domains such as agriculture, education, health, government services and so on. Most of them are SMS services.
Tools
There are many free and open source tools available for SMS applications. Below is a list of some of these tools. The MW4D IG is [133]referencing a longer list of these tools in its wiki. However, this list does not aim at being exhaustive. There are a huge number of SMS Hubs, some are more developer-oriented and some are more user-oriented. The list of tools also includes tools that can be associated with SMS Hub for integrating an SMS channel for feeding or providing information from a Web-based application. See an example of such setup with e.g. [134]Ushahidi crow-sourcing platform.
Future directions
SMS is clearly today the leading platform for delivering content and services to people. While this technology presents some critical limitations related to access barriers existing in the context of developing countries, it is still in many cases the only available option. With the evolution of mobile networks and handsets, and the needs for higher level of applications, the situation will surely change in the near future but in the meantime, it is important to lower the barriers for potential content providers, and ease access to such services.
In order to slightly decrease the access barriers, particularly around the availability of local languages, it is essential to promote a wide support of appropriate encoding by all network operators. This is a critical piece in the infrastructure in order to offer services in all languages.
The cost of sending SMS is the major issue for potential service providers. Lots of voices in the community are advocating for lower costs of SMS for development-oriented applications, particularly because there is no cost associated with SMS and the use of the signalling channel for the operator. See e.g. [140]A Modest Proposal - The 1 cent SMS blog post by Steve Song. Such initiative will surely unleash the number of potential content authors.
The second aspect, which is more in the scope of this document, is to work towards a better integration of SMS channel in web applications. As mentioned earlier in this section, while there are some initiatives and platforms considering SMS has a channel for feeding and retrieving Web applications and content, most of the SMS applications are standalone ones, and SMS Hub are both a piece of the infrastructure and the application development environment. Some work, guidelines or APIs around easing the integration of web applications and SMS infrastructure (hubs and handsets) would surely help having more web applications using this channel, and having more people being able to access and use some Web content and services through SMS.
In this section, we investigate the use of Unstructured Supplementary Services Data (USSD) for delivering content and services to people. In the first part, we introduce the basic idea, and the general strengths and issues associated with this type of applications. In the second part we present the different options and technological solutions to develop such applications.
Overview
USSD is a GSM specification service that allows instant interactive communication between the subscribers and applications platform on a GSM Network. USSD services are a very simple connection-oriented service. They are similar to IVRS (Interactive Voice Response System) that access services using the keypad instead of voice. USSD services can be requested by the user (pull method) or broadcasted by the network operator (push method). From the handset, the access to a specific service is done through dialling a specific string, starting with the character '*', finishing with the character '#', and containing a suite of numbers, and * sign. The interaction with the service is session-oriented, and is achieved through a set of menus sent to the user. Compared to SMS, there isn't a way to store the information received on the handset, and USSD services are not usable off-line. An example of USSD transaction would be dialling a shortcode such as *151# or similar numbers in between * and # to access services such as balance enquiry, receive alerts, information services, voucher transactions, and to top-up prepay phones.
Strengths of USSD
The biggest advantage of USSD is the fact that there is usually no billing mechanism associated with USSD, and therefore, the use of USSD services are free for the user in most countries. However, this might change in the future, as some operators are invoicing the use of USSD channel. See [62]Vodacom and [63]MTN in South Africa.
From an authoring perspective, because the protocol is session-based, USSD is particularly well designed for interactive communication between the user and the service, and for multi-cycle communications.
Weaknesses of USSD
The major weakness of USSD is that a service developer can not implement a service independently of and without the operator. The access to the USSD platform and the use of one specific code for the service have to be dealt by the network operator. In the context of this document, this is a critical limitation, which explains also the relative lack of tools and support for this technology.
Another critical point, due to the strong ties between USSD and network operators, is the limited scope of one USSD service that can be associated with only one network operator.
Finally, it is also important to mention the fact that USSD services are faced with the same issue as voice technologies when it comes to the lack of a persistent record of the information which was communicated during the use of the service.When the USSD session ends, all the information delivered during the session is lost, and there is no way for the user to save it.
Tools
There are generic toolkits integrating USSD modules. An example is [141]the Mobilsr platform. This technology is still very rarely available on most platforms, and it remains very hard to develop such services.
Examples
Due to the limitation of the technology, and the lack of standardized API and easy access, there are only very few examples of services using this technology. One example has been presented at the [5]MW4D Workshop in April 2009: [142]Use of USSD for HIV/AIDS behaviour change communications (South Africa) (see also [143]Cellphones-4-HIV a resource with additional information about the same example).
Most network operators tend to offer USSD services to their customers. Such services include topping-up prepaid card balances, m-banking and call-me back services. See the example of [144]services provided by Zain in Sierra Leone.
In conclusion, as of today, the use of USSD as a technology to deliver content and applications to end-users is not very straightforward due to the lack of tools, and the lack of easy access to the USSD platform without discussions with the network operators.
Cell Broadcast (CB) is a mobile technology that allows messages to be broadcast to all mobile handsets within a designated area. CB messaging can be supported by most mobile network operators as it is defined by the ETSI's GSM committee and is part of the GSM standard. CB is designed for simultaneous delivery of messages to multiple users in a specified area. Whereas the Short Message Service - Point to Point (SMS-PP) is a one-to-one service, or, with the inclusion of an SMS Hub, a one-to-a-few service, Cell Broadcast is a genuine one-to-many, geographically-focused, messaging service.
A Cell Broadcast message page comprises 82 octets, which, using the default character set, equates to 93 characters. Up to 15 of these pages may be concatenated to form a Cell Broadcast message. Each page of the message will have the same message identifier and serial number that identifies the source of the message. Using this information, the mobile telephone is able to identify and ignore broadcasts of already received messages. CB messages are directed to radio cells, rather than to a specific terminal. A Cell Broadcast message is an unconfirmed push service, meaning that the originator of the message does not know who has received the message, allowing for services based on anonymity. CB is similar to other mass distribution media such as Teletext or Radio Data System (RDS). To support this feature the network operator requires a Cell Broadcast Center (CBC) to enable the mass distribution of local information to mobile subscribers via the various base station controllers BSCs while not taxing network resources.
In the developed world, CB technology is typically used in deploying location-based subscriber services, such as local weather and traffic conditions. CB can also be used for managing and communicating with remote teams such as emergency services or volunteers. The emergency services could send an encrypted message to all officers or other staff in a certain area to respond to an incident. Cell Broadcast is ideal for delivering local or regional information suited to all the people in that area, rather than just one or a few people. Examples include hazard warnings, cinema programs, local weather; health concerns flight or bus delays, tourist information, parking and traffic information.
The main use of this technology in developing nations is for deploying Early Warning System (EWS) for citizens. CB can be used warning system by governments to contact citizens on their mobile phones to warn them of incidents in a particular area. Some countries have already adopted this technique for early warning, supplementing existing forms of communication like sirens, or radio and TV.
Strengths of Cell Broadcast
Weaknesses of Cell Broadcast
Tools
The major issue with CB for a service developer is that it is impossible to use this service independently of the network operator. Although access to the CBC center can be provided to a third party, the platform must be installed and maintained by the network operator. In the context of this document, this is a critical limitation, which explains also the complete lack of tools and support for this technology. There are no free tools and utilities, and all components are provided by commercial equipment manufacturers.
Handset Support for CB
Intensive validation tests of GSM mobile terminals by the Cell Broadcast Forum revealed that there is a wide variety of different Cell Broadcast implementations currently in the market. This variety is the result of a missing GSM/UMTS (3GPP) Technical Specification of the series 02.xx. There is no specification that discusses how a mobile phone is to receive, display and store CB messages. This is why the different handsets handle and support the message in different ways. The Cell Broadcast Forum intends to reduce the variety of implementations by defining some basic requirements pointing to a future homogeneous mobile terminal behavior.
Examples
NTT Docomo in Japan offers Alert Mail since November 2007. It is a CB service that provides warnings for earthquake and tsunamis. NTT Docomo supplies mobile handsets to their customers that have a specific configuration menu where the user can chose to receive earthquake warnings and/or tsunami warnings. Furthermore, the volume and duration of the dedicated alert tone can be set in this menu. The Earthquake and Tsunami Warning System (ETWS) is currently being standardized in 3GPP. Once that has been concluded other tsunami and earthquake prone countries, mostly in Asia, may deploy the same service.
The Disaster Management Center (DMC) of Sri Lanka in collaboration with Dialog Telekom launched Sri Lanka's first mass alert warning system in 2009 called Disaster & Emergency Warning Network (DEWN). The Emergency Operations Center of the DMC has been given access to the secure DEWN alerting interface. When information is received by the DMC, the information is verified and alerts can be issued. In a potential disaster scenario, the DMC will first use DEWN to alert the emergency personnel on their individual phones, and public alerts will be issued only when a threat is adequately verified. In addition to messages received on mobile phones, specially designed DEWN remote alarms will also be used to alert nominated emergency personnel.
In this section, we investigate applications relying on data connection. This is, by far the area where the choice of technologies and authoring/development environments are the most important. In the first part, we introduce the basic idea of data connections, and the general strengths and weaknesses of applications relying on this type of service. In the second part, we focus on the mobile web platform (web browsing), and in the last part we briefly note other types of applications relying on data service.
The basic idea of data services is the establishment of a network connection between the handset and the targeted computer hosting the service, or more generally the Internet, using the traditional [145]Internet Protocol (IP). See [146]more details on data service.
The characteristics shared by all content, services and application relying on the use of such network layer are as follows:
Availability on handset: while the service could be available at the network level, not all handsets have the capability to use data services. However, this is changing quickly as [68]92% of the phones sold last year had some browsing capabilities, i.e. support of data services. Therefore, this aspect would not a limiting factor in the near future.
In this category of data-services applications, Web browsers have a particular place. Through a small piece of software on the handset, it is possible today to access all content existing on the World Wide Web. Since 2004, W3C has been leading an initiative, the [147]Mobile Web Initiative, around leveraging Web access from mobile phones. Thanks to the work done in this initiative, and better availability of standard-compliant Web browsers on mobile, it is now possible to author, deploy and very easily access mobile Web sites. In this section, we investigate the strengths and weaknesses of this platform for delivering social-oriented services in Developing Countries.
NB: Mobile Web access is also known as [148]WAP (Wireless Application Protocol) 2.0. The original WAP 1.0 was using a specific markup language called [149]WML, and some of the oldest phones, while having some browsing capabilities, support only this languages and not HTML. There is almost no content available using WML, and since 2002, all phones released supports WAP 2.0 i.e. mobile Web access and HTML support. However, it is important to note that the generic term 'WAP' is still widely use to mention mobile Web access.
Costs
Costs for authoring, delivering, and accessing Mobile Web content is similar to desktop Web. For users, the cost is related to data services as explained in Section 7.3.1. For content authors, they just need to author their content or applications and use one of the thousands of free or low-cost web hosting services existing on the Internet. There no other running or delivery cost for the content author.
Strengths of Mobile Web Content and Applications
Using the Web and Web technologies as the platform for authoring and delivering content, application and services presents numerous interesting characteristics:
Developers can use all the traditional server-side technologies (PHP, Database, CGI, etc.) and client-side ones (e.g. JavaScript)
Weaknesses of Mobile Web Content and Applications
The use of Web technologies also has limitations in regard to the type of services and functionalities content authors can provide. The major challenges are summarized below:
Support and implementation of standards and specifications. Not all mobile browsers implement all of the W3C and other related standard bodies specifications in the same way, or don't implement all features. However, it is important to note that the [151]W3C Mobile Web Best Practices define best practices and guidelines that take into account this lack of homogeneity between implementations, and an author following the recommended techniques can expect his/her content to be rendered homogeneously on all handsets.
Examples
There is not yet a wide availability of examples of services using Mobile Web access. Some examples below:
[152]Cellbazaar, a service for buying and selling goods in Bangladesh
[153]Nedbank, a m-banking service using Mobile Web Access in South Africa
Some platforms are supporting a Mobile Web channel:
[154]Voxiva, a platform for mhealth services have a mobile Web access channel.
[139]Mobilesr, a generic platform for mobile services development by civil society organizations
Finally, Grameen Foundation is conducting [155]a field test with high-end phones and mobile Web access in Uganda. This experience 'Bringing the World Wide Web to the Village' enables village phone operators with high-end phones and GPRS access to allow them to use the Web and offer services to the village.
Tools
There are many different kind of tools that can be useful for a software developer. Below is a list of some of these tools. The MW4D IG is [156]referencing a longer list of these tools on its wiki.
NB: in this section we are referencing tools for basic mobile Web content development. There are higher-level platforms to support specific service development that integrate a mobile Web channel. These platforms are mentioned in the wiki.
It is important to note, that while many different tools exist for completing the different tasks required to author and deploy a mobile Web site, there is no packaged platform that integrates all the steps through a single interface, and drives content developers through the different steps. The development and availability of such an integrated toolkit would lower the barriers for authoring and deploying mobile Web sites.
Due to the current limitations of the Web browser approach mentioned in the previous section, and, until recently, the unavailability of standard-compliant Mobile Web browsers on low-end phones and low-bandwidth networks, there have been numerous applications that are using data-services through other environments than a Web browser.
Some of these applications, while existing as standalone applications, or through APIs using Java or OS specific environments, also exist as Web applications. This is the case for e.g. major [174]Social Networks, [175]Instant Messengers, or [176]RSS readers or writers. Developing services on higher application levels like on top of Social Networks or Instant messengers is an interesting topic, and some experiences have demonstrated the potential of these technologies, See [177]example in South-Africa. While this is out of the topic of this version of the document, it is surely a subject for further investigations in the future.
Potential Reasons for developing applications outside a Web environment
As mentioned in the Weaknesses of Mobile Web technologies, there are some constraints or reasons that can drive the selection of alternate technologies:
Development of applications that requires the use of specific features of the handset, such as GPS, camera, sensors, contact lists, etc. While there are ongoing efforts to define APIs in the browser environment to manage those devices from a Web application (see e.g. [178]W3C Geolocation Working Group or [179]W3C work on Delivery Context: Client Interface, those standardization initiatives are not complete yet, and only specific development environments (iPhone, Android, Java) allow today the management of the complete functionalities of the device.
Weaknesses of the approach
While there might be good reasons for a developer to author an application directly on the handset, such approaches have also many drawbacks, which are summarized below:
Examples
There are many examples of applications relying on data services and not in the Web environment for the handset side. Some examples in different domains:
[180]MXit: a very popular social network and instant messenger in South Africa
[181]JavaRosa: an open-source platform for data collection on mobile devices
[182]Ushahidi Mobile platform: a platform for crowdsourced crisis information
Tools
There are no specific tools for this very broad category of applications. The Java language on mobile is called Java Micro-Edition or JavaME, formerly known as J2ME. Devices are usually implementing a specific profile (a set of features and libraries for JavaME), the most popular on mobile phones being the [183]Mobile Information Device Profile. A specific Software Development Kit (SDK) for JavaME is available for developers: see the [184]Java Platform Micro Edition Software Development Kit 3.0.
Each operating system has also its own SDK ([185]IPhone, [186]Android, [187]Symbian, etc.).
Some Social Networks also offer APIs such as [188]Twitter to be used in a wide environment and platform.
7.3.4 Future Directions
This category of applications enable more advanced services compared to SMS and Voice. It is also the category that provides the easiest access for developers as they don't have to setup an infrastructure. In that area, using the Web browser as the default environment on mobile is surely the most promising option to offer easily lots of services to people, and to empower a big number of non-computer-scientist authors to build and deliver new content. However, the mobile web technology has to evolve to become more powerful.
Some efforts are currently under development such as better management of resources available on phones, or for location-based services, and we can therefore expect quick evolution in a near future.
Several efforts, not specific to a developing countries context, would benefit the Mobile Web at large. Investigating monetization of Web content, through e.g. micropayments would be one of these that would enable small entrepreneurs to start and sell services easily.
Some actions, more specific to the developing countries context, would also be important. The development of a real off-line/disconnected functionality, understanding the specific usage and requirements of mobile-only Web users without prior desktop experience, or investigating the potential of Mobile Widgets and stores to decrease the barriers of computer literacy are topics of significance which mandate further investigation.
As mentioned in Section 7.3.2, there is also a great need of awareness raising and capacity building to demonstrate to content and application authors the potential of the Mobile Web technologies. In terms of tools, better packaging and integration for non-experts are required.
These efforts would improve the current technology, and disseminate information about it to enable people to author, deploy and access more easily all kinds of services.
This roadmap is a first attempt to build a state-of-the-art on mobile applications for social and economic development. The document covers the major families of technology available today, and their strengths and weaknesses. It also identifies the different challenges that have been appearing in the different stories and projects started in the past few years.
The roadmap identifies a series of actions to launch in a near future to increase the availability of services, to empower more people to become authors and contributors, and to enable more people to access those services. Those actions are of two types: R&D and Support.
R&D Actions
R&D actions are proposed in order to address challenges requiring further research, investigations or standardizations. The R&D actions suggested in roadmap are:
Support Actions
Support actions are proposed for addressing challenges that require efforts in the areas of dissemination, capacity building or tools development. The support actions suggested in the roadmap are:
Recommendations
The roadmap also defines a series of recommendations for specific actors of the domain to create an enabling environment:
While this document is an attempt to cover all the dimensions of mobile applications for social development, it is only a first step towards building a large community on this theme. It is critical now to promote the adoption of this roadmap, the launch of the identified actions, and the enforcement of the recommendations.
It is also essential to continue this work further in different directions:
Finally, it is important to note that during the development of this roadmap over the last 18 months, we could observe a shift in the technology usage. While SMS was almost the only technology used during last 3 or 4 years, lots of project are now investigating voice applications and data-service based applications. With the increase of coverage of data service, the far-lower cost compared to SMS, and the availability of ultra-low-cost handsets supporting data service, this technology offers far greater possibility than SMS, and is a powerful alternative. However, this potential is still largely untapped by service developers.
Concerning the use of mobile browsers as an application platform, there are very few examples of the use of this technology in specific field projects. However, the study in this document demonstrates that this solution has the potential to meet most of the challenges identified on both the user and author sides. In order to take advantage of these opportunities, further work addressing comprehensively and adequately issues such as illiteracy, languages, digital literacy, and the monetization of services needs to be embarked on. With the improvement of the technology, the quick increase in data-service coverage, and the continuing reduction in the unit price of web-enabled mobile phones, this technology will surely have a major role in the future.
[1]: Wikipedia Definition for SMS http://en.wikipedia.org/wiki/Short_message_service
[2]: Wikipedia Definition for USSD http://en.wikipedia.org/wiki/Unstructured_Supplementary_Service_Data
[3]: Wikipedia Definition for SMS http://en.wikipedia.org/wiki/SMS
[4]: W3C Workshop on the role of Mobile Technologies in Development, June 2008, Sao Paulo, Brazil http://www.w3.org/2008/02/MS4D_WS/
[5]: W3C Workshop on the role of Mobile Technologies in Development, April 2009, Maputo, Mozambique http://www.w3.org/2008/10/MW4D_WS/
[6]: FP7 Digital World Forum Project http://www.digitalworldforum.eu/
[7]: Universal Access, How Mobile can Bring Communications to All, GSMA Report, 2008 http://www.gsmworld.com/documents/universal_access_full_report.pdf
[8]: ITU Press Release, Worldwide mobile cellular subscribers to reach 4 billion mark late 2008 http://www.itu.int/newsroom/press_releases/2008/29.html
[9]: R. Jensen, The Digital Provide: Information (technology), Market, Performance, and Welfare in the south Indian Fisheries Sector, The Quarterly Journal of Economics, Vol. CXXII August 2007 Issue 3 http://www.mitpressjournals.org/doi/pdf/10.1162/qjec.122.3.879
[10]: The impact of mobile phone coverage expansion on market participation: panel data evidence from Uganda, OECD 2008 http://www.oecd.org/dataoecd/39/8/41713101.pdf
[11]: Does Digital Divide or Provide? The Impact of Cell Phones on Grain Markets in Niger, Jenny C. Aker, University of California, Berkeley, January 2008 http://www.cgdev.org/doc/events/2.12.08/Aker_Job_Market_Paper_15jan08_2.pdf
[12]: W3C MW4D IG Wiki - Projects/Examples http://www.w3.org/2008/MW4D/wiki/Stories
[13]: Mobiles for Development: How mobile technologies can enhance Plan and partners work in Africa, Hannah Beardon, January 2009 http://mobileactive.org/files/file_uploads/Mobiles_for_Development_-_Plan_2009.pdf
[14]: W3C Web Accessibility Initiative http://www.w3.org/WAI/
[15]: Kiwanja.net Mobility Project http://mobility.kiwanja.net/
[16]: Huruma Music Study, Nokia Research Center, Africa, W3C Workshop, Maputo, Mozambique, April 2009 http://www.w3.org/2008/10/MW4D_WS/papers/nokia_slides.pdf
[17]: Co-Present Photo Sharing on Mobile Devices, Leonard M. Ah Kun & Gary Marsden, University of Cape Town, South Africa, Proceedings Mobile HCI 2007 http://people.cs.uct.ac.za/~gaz/papers/leo1.pdf
[18]: Nokia Web-Server on Mobile Phone http://lists.w3.org/Archives/Public/public-mw4d/2009Jul/0002.html
[19]: World Health Organization, Factsheet on Visual impairment and blindness, May 2009 http://www.who.int/mediacentre/factsheets/fs282/en/
[20]: Internet Society Disability and Special Needs Chapter, Accessible Information and Communications Technology (ICT)” & Calls for United Nations International Convention on the Rights of Persons with Disabilities, 3 October 2003 http://www.isocdisab.org/Maniladeclaration.htm
[21]: W3C Web Accessibility Initiative http://www.w3.org/WAI/
[22]: W3C Mobile Web Initiative http://www.w3.org/Mobile
[23]: W3C Web Content Accessibility Guidelines (WCAG) Overview http://www.w3.org/WAI/intro/wcag
[24]: W3C Mobile Web Initiative http://www.w3.org/Mobile/
[25]: Web Content Accessibility and Mobile Web:Making a Web Site Accessible Both for People with Disabilities and for Mobile Devices http://www.w3.org/WAI/mobile/
[26]: Essential Components of Web Accessibility http://www.w3.org/WAI/intro/components.php
[27]: Raising the Floor, international coalition of individuals and organizations working to ensure that the Internet is accessible to people experiencing accessibility or literacy problems http://raisingthefloor.net/
[28]: Raising the Floor Solutions for Those with Extremely Limited Resources Grouphttp://raisingthefloor.net/projects/limitedresource
[29]: Assistive Technology Solutions, Providing Plans for Do-It-Yourself Devices to Assist Persons with Disabilities http://www.atsolutions.org/folders/solutions.htm
[30]: International Literacy Day, September 7, 2001, Washington, DC http://www.sil.org/literacy/litfacts.htm
[31]: UNDP Human Development Reports http://hdrstats.undp.org/en/indicators/3.html
[32]: Map of Literacy Rates in the World (2007-2008) http://upload.wikimedia.org/wikipedia/commons/0/07/World_literacy_map_UNHD_2007_2008.png
[33]: Grameen Foundation Village Phone: Connecting Technology and Innovation http://www.grameenfoundation.org/what-we-do/empowering-poor
[34]: Grameen Foundation Community Knowledge Worker (CKW) Initiative http://www.grameenfoundation.applab.org/section/community-knowledge-worker-project
[35]: Nuance Talks, Text-to-speech engine for Mobile Phones http://www.nuance.com/talks/
[36]: CodeFactory Mobile Speak, Text-to-speech engine for Mobile Phones http://www.codefactory.es/en/products.asp?id=24
[37]: Optimal Audio-Visual Representations for Illiterate Users of Computers, Indrani Medhi, Archana Prasad, Kentaro Toyama, Microsoft Research Labs India, WWW2007 Proceedings http://www2007.org/papers/paper764.pdf
[38]: Developing Design Recommendations for Computer Interfaces Accessible to Illiterate Users, Matthew Paul Huenerfauth, National University of Ireland, University College Dublin, Master of Science (M.Sc.) August 2002 http://eniac.cs.qc.cuny.edu/matt/pubs/huenerfauth-2002-thesis.pdf
[39]: Nokia Life Tools http://www.nokia.com/NOKIA_COM_1/Microsites/Entry_Event/phones/Nokia_Life_Tools_datasheet.pdf
[40]: W3C Internationalization Q&A: Localization vs. Internationalization http://www.w3.org/International/questions/qa-i18n
[41]: W3C Working Draft, Introduction and Overview of W3C Speech Interface Framework December 2000 http://www.w3.org/TR/voice-intro/
[42]: Wikipedia Definition of Unicode http://en.wikipedia.org/wiki/Unicode
[43]: W3C Internationalization Activity http://www.w3.org/International/
[44]: W3C Internationalization Activity: Resources http://www.w3.org/International/resources
[45]: Initiative B@bel http://webworld.unesco.org/imld/babel_en.html
[46]: NRSI: Computers & Writing Systems http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&cat_id=Babel
[47]: FontForge, An outline font editor http://fontforge.sourceforge.net/
[48]: Wikipedia Definition of Metafont http://en.wikipedia.org/wiki/Metafont
[49]: GNU FreeFont, a free family of scalable outline fonts http://www.gnu.org/software/freefont/
[50]: Android Market: Application Store for Android phones http://www.android.com/market/
[51]: OVI: Application Store for Nokia phones https://store.ovi.com/
[52]: Plaza: Qualcomm Application Store http://www.qualcomm.com/news/releases/2008/080529_Qualcomm_Introduces_Plaza.html
[53]: Wikipedia List of digital distribution platforms for mobile devices http://en.wikipedia.org/wiki/List_of_digital_distribution_platforms_for_mobile_devices
[54]: FP7 Digital World Forum - WorkPackage 3 - Broadband Wireless Infrastructure http://www.digitalworldforum.eu/wp3
[55]: African Signals, a site dedicated to finding out and showing local rates for mobile phone and internet connections around Africa http://africansignals.com/
[56]: SMS Costs in Africa – 2008 http://manypossibilities.net/2009/04/sms-costs-in-africa-2008/
[57]: Concept of Missed call in India, blog post, Jan 2006 http://rashmisinha.com/2006/01/09/no-one-uses-voicemail-in-india-and-the-concept-of-missed-calls/
[58]: Example of Free Mobile Voice call in India (Reliance Communications) http://www.efytimes.com/e1/fullnews.asp?edid=19268
[59]: Example of Pay-Per-Call Prepaid Plan of Tata Indicom and Tata Teleservices http://teck.in/pay-per-call-prepaid-plan-of-tata-indicom-and-tata-teleservices.html
[60]: Wikipedia Definition of SMS Premium Rate http://en.wikipedia.org/wiki/SMS
[61]: Freedom Phone, Kubatana.net http://www.kubatana.net/html/ff/ff_cont.asp
[62]: Vodacom USSD Pricing in South Africa http://help.vodacom.co.za/customercare/wss/faq.asp?id=18
[63]: MTN USSD Pricing in South Africa http://www.mtn.co.za/SUPPORT/FAQ/Pages/USSD.aspx
[64]: African Mobile Factbook 2008, Blycroft Publishing, February 2008 http://www.w3.org/2008/MW4D/wiki/FrontPage?action=AttachFile&do=get&target=Africa_Mobile_Fact_Book_2008.pdf
[65]: Executive Summary of the W3C Worksop on the role of Mobile Technologies in Development, April 2009, Maputo, Mozambique http://www.w3.org/2008/10/MW4D_WS/exec_summary.html#Messages
[66]: Wikipedia Definition of Caller ID http://en.wikipedia.org/wiki/Caller_ID
[67]: Below-50$, Internet-enabled Nokia phone http://www.businessweek.com/globalbiz/content/nov2008/gb2008114_268373.htm?chan=globalbiz_europe+index+page_top+stories
[68]: The Size of the Mobile Industry in 2009, Tomi Ahonen, March 2009 http://communities-dominate.blogs.com/brands/2009/03/the-size-of-the-mobile-industry-in-2009-short-overview-of-major-stats.html
[69]: Tradenet/Esoko: a Market Information System http://www.tradenet.biz/
[70]: Voxiva, a provider of mobile centric information solutions http://www.voxiva.com/
[71]: Indonesia 2005 Election Monitoring project http://www.ndi.org/files/2329_sms_engpdf_06242008.pdf
[72]: Texts monitor Nigerian elections, BBC Report April 2007 http://news.bbc.co.uk/2/hi/technology/6570919.stm
[73]: Texting It In: Monitoring Elections With Mobile Phones, mobileactive.org, November 2007 http://mobileactive.org/texting-it-in
[74]: SMS Critical in election monitoring in Ghana, Mobileactive.org, July 2007 http://mobileactive.org/sms-critical-election-observation-ghana
[75]: W3C MW4D IG Wiki - Stories and examples http://www.w3.org/2008/MW4D/wiki/Stories/
[76]: Mobileactive.org mDirectory http://mobileactive.org/directory
[77]: Kiwanja.net Mobile project Database http://www.kiwanja.net/database/kiwanja_search.php
[78]: Open Mobile Consortium http://www.open-mobile.org/
[79]: MIT Africa Information Technology Initiative http://aiti.mit.edu/
[80]: MIT EPROM - Entrepreneurial Programming and Research On Mobiles http://eprom.mit.edu/
[81]: EPROM Wiki and Course Material http://eprom.mit.edu/~eprom/wiki/index.php?title=Course_Materia
[82]: Ushahidi, Crowdsourcing Crisis Information http://www.ushahidi.com
[83]: Integrating mobile data services into an existing information ecology, Andy Dearden, Sheffield Hallam University, UK, W3C Workshop, April 2009http://www.w3.org/2008/10/MW4D_WS/papers/Dearden_slides.pdf
[84]: Vodacom Tanzania Call-me service http://www.vodacom.co.tz/docs/docredir.asp?docid=3317
[85]: India's Mobile Users and Missed Calls http://www.podtech.net/home/3780/indias-mobile-users-and-missed-calls
[86]: Wikipedia Definition of Micro-Payment http://en.wikipedia.org/wiki/Micropayment
[87]: Executive Summary of the W3C Worksop on the role of Mobile Technologies in Development, April 2009, Maputo, Mozambique http://www.w3.org/2008/10/MW4D_WS/exec_summary.html
[88]: Challenges and merits of co-design of mobile concepts, Jenny de Boer, TNO ICT, March 2009 http://www.oppapers.com/essays/Challenges-And-Merits-Of-Co-Design-Of/194797
[89]: Social Dynamics of Early Stage Co-Design In Developing Regions, Divya Ramachandran, Matthew Kam, Jane Chiu, John Canny, James L. Frankel, ACM Human Factors in Computing Systems (CHI) (2007) http://bid.berkeley.edu/papers/chi_2007/co_design_dev_regions/
[90]: The Base of the Pyramid Protocol: Toward Next Generation BoP Strategy, Erik Simanis and Stuart Hart, Cornell University, Second Edition, 2008 http://www.johnson.cornell.edu/sge/docs/BoP_Protocol_2nd_ed.pdf
[91]: Compendium on Impact Assessment of ICT-for-Development Projects, Richard Heeks & Alemayehu Molla, 2009 http://ict4dblog.files.wordpress.com/2009/06/idrc-ia-for-ict4d-compendium1.doc
[92]: The ICT Development Index, ITU, 2009 http://www.itu.int/ITU-D/ict/publications/idi/2009/material/IDI2009_w5.pdf
[93]: Wikipedia Definition of Speech Synthesis http://en.wikipedia.org/wiki/Speech_synthesis
[94]: Wikipedia Definition of Speech Recognition http://en.wikipedia.org/wiki/Speech_recognition
[95]: Speech Recognition Grammar Specification Version 1.0, W3C Recommendation 16 March 2004 http://www.w3.org/TR/speech-grammar/
[96]: The Festival Speech Synthesis System http://www.cstr.ed.ac.uk/projects/festival/
[97]: The CMU Sphinx Group Open Source Speech Recognition Engines http://www.speech.cs.cmu.edu/sphinx/
[98]: Increasing the usability of interactive voice response systems : research and guidelines for phone-based interfaces : Telecommunications, SCHUMACHER R. M., HARDZINSKI M. L., SCHWARTZ A. L, Human factors, 1995, vol. 37, no2, pp. 251-264 http://cat.inist.fr/?aModele=afficheN&cpsidt=3635815
[99]: IVR Usability Guidelines http://www.ivr-usability.com/guidelines.htm
[100]: VOISERV: Creation and Delivery of Converged Services through Voice for Emerging Economies, Arun Kumar, Nitendra Rajput, Dipanjan Chakraborty, Sheetal K Agarwal, Amit Anil Nanavati, IBM India Research Laboratory, 2007 https://domino.research.ibm.com/comm/research_people.nsf/pages/arun_kumar.pubs.html/$FILE/VOISERV-IEEE-WowMom2007.pdf
[101]: VoiKiosk: Content Creation and Dissemination by-and-for Users in Rural Areas, Sheetal Agarwal, Arun Kumar, Amit Anil Nanavati, Nitendra Rajput, Jan 2009, ICTD 2009 http://mobileactive.org/research/voikiosk-content-creation-and-dissemination-and-users-rural-areas
[102]: FOLKSOMAPS - Towards Community Driven Intelligent Maps for Developing Regions, Arun Kumar, Dipanjan Chakraborty, Himanshu Chauhan, Sheetal K. Agarwal, Nitendra Rajput, IBM India Research Lab., ICTD 2009 http://www.researchintouse.com/downloads/spokenweb/Folksomaps_-_ICTD_09_-_April_09.pdf
[103]: Google GOOG-411 Service http://www.google.com/goog411/
[104]: Literacy Bridge http://www.literacybridge.org/
[105]: WWTW - The World Wide Telecom Web (a.k.a. The Spoken Web), Sheetal K. Agarwal, Dipanjan Chakraborty, Anupam Jain, Priyanka Manwani, Sougata Mukherjea, Amit A. Nanavati, Nitendra Rajput : IBM India Research Lab http://domino.research.ibm.com/comm/research_people.nsf/pages/arun_kumar.WWTW.html
[106]: IVR for National Federation of Colombian Coffee Growers, The Computerworld Honors Program, 2007 http://www.cwhonors.org/viewCaseStudy.asp?NominationID=199
[107]: Wikipedia Definition of PBX http://en.wikipedia.org/wiki/Private_branch_exchange
[108]: Asterisk, the open source telephony project http://www.asterisk.org/
[109]: W3C Voice Browser Activity http://www.w3.org/Voice/
[110]: W3C VoiceXML Overview http://www.w3.org/Voice/Guide/#overview
[111]: W3C Speech Synthesis Markup Language (SSML) Version 1.1, W3C Candidate Recommendation, August 2009 http://www.w3.org/TR/speech-synthesis11/
[112]: VoiceXML Related Specificiations http://www.w3.org/Voice/#work
[113]: W3C MW4D Wiki - Voice Related Tools http://www.w3.org/2008/MW4D/wiki/Tools#vtools
[114]: VoiceGlue, a VoiceXML implementation with OpenVXI and Asterisk http://www.voiceglue.org/
[115]: VXI* VoiceXML browser for Asterisk http://www.i6net.com/products/vxi/
[116]: PublicVoiceXML, a free VoiceXML 2.0 browser http://sourceforge.net/projects/publicvoicexml/
[117]: K. Rehor's list of VoiceXML Development Tools http://www.kenrehor.com/voicexml/#tools
[118]: Speech Recognition for Illiterate Access to Information and Technology, Madelaine Plauché, Udhyakumar Nallasamy, Joyojeet Pal, Chuck Wooters, and Divya Ramachandran, ICTD 2006 http://tier.cs.berkeley.edu/docs/ict4d06/speech_recognition_illiterate-mp.pdf
[119]: Tellme Studio, a suite of Web-based VoiceXML development tools and community resources https://studio.tellme.com/
[120]: Wikipedia Definition of Cell Broadcast http://en.wikipedia.org/wiki/Cell_Broadcast
[121]: Wikipedia Definition of Character Encoding http://en.wikipedia.org/wiki/Character_encoding
[122]: Wikipedia Definition of UTF-8 http://en.wikipedia.org/wiki/UTF-8
[123]: Wikipedia Definition of UTF-16 http://en.wikipedia.org/wiki/UTF-16
[124]: Wikipedia Definition of SMS Message Size http://en.wikipedia.org/wiki/Short_message_service
[125]: Forms module of FrontlineSMS http://www.frontlinesms.com/forms/
[126]: TAS, a Tsunami Alert System, developed by Asian Institute of Technology (AIT) http://www.wap.ait.ac.th/tsunami.html
[127]: Tactical Tech SMS Hub Definition http://wiki.mobiles.tacticaltech.org/index.php/SMS_hubs
[128]: Clickatell, a bulk SMS gateway http://www.clickatell.com/
[129]: BulkSMS, Internet based sms messaging solutions http://www.bulksms.com/
[130]: Tactical Tech, Mobiles in-a-box: How to set up an SMS hub http://mobiles.tacticaltech.org/HowtosetupanSMShub
[131]: SMS Forum http://www.smsforum.net/
[132]: W3C MW4D IG Wiki http://www.w3.org/2008/MW4D/wiki/
[133]: W3C MW4D IG Wiki - Tools about SMS http://www.w3.org/2008/MW4D/wiki/Tools#sms
[134]: Ushahidi, Crowdsourcing Crisis Information http://www.ushahidi.com/
[135]: FrontlineSMS, a free SMS HUB for NGOs http://www.frontlinesms.com/
[136]: RapidSMS, a free SMS Hub http://rapidsms.sourceforge.net/
[137]: Microsoft Research SMS Server Toolkit http://research.microsoft.com/en-us/downloads/2bdeb3c6-9945-4804-a9bc-0d53704d35da/default.aspx
[138]: Ushahidi, Crowdsourcing Crisis Information http://ushahidi.com/
[139]: Mobilisr, an open source mobile platform for NGOs http://www.mobilisr.org/features
[140]: A Modest Proposal – The 1 cent SMS, blog post, Steve Song, February 2009 http://manypossibilities.net/2009/02/a-modest-proposal-the-1-cent-sms/
[141]: Mobilisr, an open source mobile platform for NGOs http://www.mobilisr.org/
[142]: Innovative use of cellphone technology for HIV/AIDS, behaviour change communications: 3 pilot projects, Katherine de Tolly and Helen Alexander, Cell-Life, Cape Town, W3C Workshop, April 2009 http://www.w3.org/2008/10/MW4D_WS/papers/kdetolly.pdf
[143]: Cell-Life, an NGO aiming to improve the lives of people infected and affected by HIV in South Africa http://www.cell-life.org/cellphones-4-hiv/mobilisr?1768f84c07a3a208150af5c12451b8b9=7d449c4e5ea2f055cb275d4f0947550f
[144]: Examples of USSD Services in Sierra Leone (ZAIN) http://www.sl.zain.com/en/phone-services/ussd-services/index.html
[145]: Wikipedia Definition of IP http://en.wikipedia.org/wiki/Internet_Protocol
[146]: Wikipedia Definition of GSM Data Transmission http://en.wikipedia.org/wiki/GSM_services
[147]: World Wide Web Consortium http://www.w3.org/
[148]: Wikipedia Definition of WAP 2.0 http://en.wikipedia.org/wiki/WAP_2.0
[149]: Wikipedia Definition of WML http://en.wikipedia.org/wiki/Wireless_Markup_Language
[151]: W3C Mobile Web Best Practices 1.0 http://www.w3.org/TR/mobile-bp/
[152]: CellBazaar, mobile phone market, Mobile Web version http://corp.cellbazaar.com/wap.html
[153]: NedBank, Cellphone Banking, Mobile Web version http://www.nedbank.co.za/website/content/Products/product_detail.asp?SubSubcatid=1865&Subcatid=501&ProductID=102&showmoreBF=1
[154]: Voxiva Platform http://www.voxiva.com/platform.php
[155]: Grameen Foundation, High-End Device Trial, "Bringing the World Wide Web to the Village" http://www.grameenfoundation.applab.org/section/high-end-device-trial-without-map
[156]: W3C MW4D IG Wiki - tools about Mobile Web http://www.w3.org/2008/MW4D/wiki/Tools#mweb
[157]: Opera Software Opera Mini Browser http://www.opera.com/mini/
[158]: Skyfire Mobile Browser http://www.skyfire.com/product
[159]: Bolt Mobile Browser http://boltbrowser.com/home.html
[160]: Wikipedia Definition of Blazer Mobile Browser http://en.wikipedia.org/wiki/Blazer_(web_browser)
[161]: Mobile Firefox https://wiki.mozilla.org/Mobile
[162]: Minimo, the previous Mozilla Mobile Browser http://www-archive.mozilla.org/projects/minimo/
[163]: W3C mobileOK Scheme 1.0, W3C Working Group Note 25 June 2009 http://www.w3.org/TR/2009/NOTE-mobileOK-20090625/
[164]: W3C mobileOK Basic Tests 1.0, W3C Recommendation 08 December 2008 http://www.w3.org/TR/2008/REC-mobileOK-basic10-tests-20081208/
[165]: W3C Device Description Repository Simple API, W3C Recommendation 05 December 2008 http://www.w3.org/TR/2008/REC-DDR-Simple-API-20081205/
[166]: dotMobi Mobile Phone Emulator http://emulator.mtld.mobi/emulator.php
[167]: W3C MobileOK checker http://validator.w3.org/mobile/
[168]: dotMobi Mobile Readyness checker http://ready.mobi/launch.jsp?locale=en_EN
[169]: W3C Mobile Web Training http://www.w3.org/Mobile/training/
[170]: W3C Mobile Web Tutorials http://www.w3.org/Mobile/Dev#tutorials
[171]: dotMobi Mobile Web Developer's Guide http://mobiforge.com/starting/story/dotmobi-mobile-web-developers-guide
[172]: dotMobi Mobile Web Training http://mobiforge.com/starting/story/screencast-beginning-mobile-web-development
[173]: MobiSiteGalore, a free mobile website design tool http://www.mobisitegalore.com/index.html
[174]: Wikipedia Definition of Social Networking http://en.wikipedia.org/wiki/Social_networking_service
[175]: Wikipedia Definition of Instant Messaging http://en.wikipedia.org/wiki/Instant_messaging
[176]: Wikipedia Definition of RSS http://en.wikipedia.org/wiki/RSS
[177]: Mobile social network used in education pilot project, April 2009 http://www.itnewsafrica.com/?p=2539
[178]: W3C Geolocation Working Group http://www.w3.org/2008/geolocation/
[179]: W3C Delivery Context: Client Interfaces (DCCI) 1.0, Accessing Static and Dynamic Delivery Context Properties, W3C Candidate Recommendation 21 December 2007 http://www.w3.org/TR/DPF/
[180]: MXIT, a mobile instant messenger, South Africa http://www.mxitlifestyle.com/
[181]: JavaRosa, an open-source platform for data collection on mobile device http://www.open-mobile.org/technologies/javarosa-open-rosa-consortium
[182]: Goma, a major release of Ushahidi, including mobile versions, August 2009 http://blog.ushahidi.com/index.php/2009/08/13/goma-a-major-ushahidi-update/
[183]: Wikipedia Definition of MIDP http://en.wikipedia.org/wiki/Mobile_Information_Device_Profile
[184]: JaveME SDK http://java.sun.com/javame/downloads/sdk30.jsp
[185]: iPhone SDK http://developer.apple.com/iphone/
[186]: Android SDK http://developer.android.com/sdk/
[187]: Nokia SDK http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/Platforms/
[188]: Twitter API http://apiwiki.twitter.com/
[189]: Executive Summary of the W3C Worksop on the role of Mobile Technologies in Development, June 2008, Sao Paulo, Brazil http://www.w3.org/2008/02/MS4D_WS/exec_summary.html
[190]: Executive Summary of the W3C Worksop on the Mobile Web in Developing Countries, December 2006, Bangalore, India http://www.w3.org/2006/07/MWI-EC/exec_summary.html
[191]: W3C MW4D IG Public Archives http://lists.w3.org/Archives/Public/public-mw4d/
[192]: Participants of the W3C Worksop on the role of Mobile Technologies in Development, June 2008, Sao Paulo, Brazil http://www.w3.org/2008/02/MS4D_WS/ws_participants.html
[193]: Participants of the W3C Worksop on the role of Mobile Technologies in Development, Avril 2009, Maputo, Mozambique http://www.w3.org/2008/10/MW4D_WS/Participants_list.pdf
[194]: Wikipedia Definition of Usability http://en.wikipedia.org/wiki/Usability
[195]: Introduction to W3C Widgets, blog post, Peter-Paul Koch, April 2009 http://www.quirksmode.org/blog/archives/2009/04/introduction_to.html
[196]: Wikipedia Definition of Bearer Services http://en.wikipedia.org/wiki/Bearer_service
[197]: Support for Cell Broadcast as Global Emergency Alert System,Axelsson, Karin (Linköping University, Department of Science and Technology), Student Thesis, 2007 http://urn.kb.se/resolve?urn=urn:nbn:se:liu:diva-9491
It is also important to note that an important part of the content in this document is coming from the discussions which took place during the two workshops in [4]June 2008 in Sao Paulo, Brazil and in [5]April 2009 in Maputo, Mozambique. As such, [192]the participants in Brazil and [193]the participants in Mozambique should also be considered as contributors.
3G : A family of standards for wireless communications, of 3rd Generation
3GPP: 3rd Generation Partnership Project, a
collaboration between groups of telecommunications associations, to make a
globally applicable third generation (3G) mobile phone system specification
API :
Application Programming Interface
AT : Assistive technologies
BOP or BoP: base or bottom of pyramid, the largest, but poorest socio-economic group
BSC: Base Station Controller
CB: Cell Broadcast
CBC: Cell Broadcast Center
DEWN: Disaster & Emergency Warning Network
DMC: Disaster Management Center
EPROM: Entrepreneurial programming and research on mobiles, initiated at MIT
ERCIM: European Research Consortium for Informatics and Mathematics
ETSI: European Telecommunications Standards Institute
ETWS: Earthquake and Tsunami Warning System
EU-FP7 : European Union Seventh Framework Programme
GNI: Gross National Income
GPRS : General packet radio service
GSM : Global System for Mobile
communications: originally from Groupe Special Mobile
GSMA : GSM Association
HTML : Hypertext Markup Language
ICT : Information and communication
technologies
ICTD : Information and Communication
Technologies and Development
IP: Internet Protocol
ISP: Internet Service Provider
ITU : International Telecommunication Union
IVR : Interactive Voice Response
J2ME: Java Micro-Edition, the java language on mobiles
LTE: Long Term Evolution, a mobile telecommunication standard,successor to UMTS
MIDP: Mobile Information Device Profile
MIT: Massachusetts Institute of
Technology
MVNO: Mobile virtual network operator
MW4D IG : Mobile Web for Social Development Interest Group
NGO: Non-governmental organization
PBX: Private branch exchange, a type of telephone exchange that serves a particular business or office
PP: Point to Point
R&D : research and development
RDS: Radio Data System
RSS: Really Simple Syndication, a web feed formats used to publish frequently updated content
SDK: Software Development Kit
SIGCHI: Special Interest Group on
Computer–Human Interaction
SMS : Short message service
SR : Speech recognition
TTS : text-to-speech
UMTS: Universal Mobile Telecommunications
System
UNDP : United Nations Development Programme
UNESCO : United Nations Educational,
Scientific and Cultural Organization
URL : Uniform Resource Locator
USSD : Unstructured Supplementary Service
Data
VoIP : Voice over Internet Protocol
W3C : World Wide Web Consortium
WAI : Web Accessibility Initiative
WAP : Wireless Application Protocol
WCAG : Web Content Accessibility Guidelines
WHO : World Health Organization
WML: Wireless Markup Language, markup used in mobile phones
WWW : World Wide Web
WYSIWYG: What you see is what you get
XML : Extensible Markup Language
Accessibility: Web accessibility means that people with disabilities can use the Web. More specifically, Web accessibility means that people with disabilities can perceive, understand, navigate, and interact with the Web, and that they can contribute to the Web. Web accessibility also benefits others, including older people with changing abilities due to aging.
Application level tool: more advanced tools focusing on specific tasks or type of applications, offering advanced features, complex user interactions, or dynamic content, for authors without programming skills.
Application Store:Also known as digital distribution platforms for mobile devices. The application Store is a service accessible directly from the phone as a specific application which allows users to browse and download applications. These applications are available to purchase or free of charge, depending on the application. The applications are downloaded directly to the phone.
Bearer Services: Bearer service is a telecommunications term referring to a service that allows transmission of information signals between network interfaces. See the complete [196]Wikipedia definition.
Discoverability: Ability for a user to use tools to automatically find existing services, content or applications. The existence of search engines on the Web enables potentially all resources to be found by any user without external intervention
Mobile Browsing: Mobile browsing refers to browser-based web services such as the World Wide Web, WAP and i-Mode (Japan) using a mobile device such as a cell phone, PDA, or other portable gadget connected to a public network. This definition is also usually used for Mobile Web. In the context of this document, the term Mobile Web has a broad scope, as defined below
Mobile Web: In the context of this document, the term ' Mobile Web ' should be understood in its widest sense, accessing and interacting with Web content from a mobile phone. It is not limited to Mobile Browsing only.
PABX or PBX: A private branch exchange (PBX) is a telephone exchange that serves a particular business or office, as opposed to one that a common carrier or telephone company operates for many businesses or for the general public. PBXs are also referred to as:
[107]See a detailed wikipedia definition.
Platform-level tool: Platform-level tools are tools enabling the use of a particular technology in a complete free way, without any specific task focus.
Premium SMS Service: a way to have overcharged SMS number. [3]See a detailed definition
SDK: Software Development Kit
Usability: In human-computer interaction, usability often refers to the elegance and clarity with which the interaction with a computer program or a web site is designed ([194]excerpt from Wikipedia Definition).
Widget: a widget is a local HTML/CSS/JavaScript web application. A mobile phone user downloads a widget once, and from that moment on he has a web application stored locally on his mobile phone. (excerpt from [195]Quirksmode blog)


gee is a percentage-based grid system defaulting to 12 columns. It can be either used in a semantic way by using LESS mixins or in a traditional class-based (unsemantic) way.
The basic components are "grids" and "units" where a grid contains one or more units. The only requirement is that all units are children of a grid.
@import 'gee.less';
/* Semantic grid */
.container {
.gee-grid();
}
.main {
.gee-unit(9);
}
.sidebar {
.gee-unit(3);
}
/* Generate class-based (unsemantic) grid */
.gee-generate(12, 0, gee-);
Copyright (c) 2013- Jan Sorgalla. Released under the MIT license.


Areas that overlap or share a common boundary or attribute value are merged to form a single area.
You can control which boundaries are merged by specifying a field. For example, if you have a layer of counties, and each county has a
State_Nameattribute, you can dissolve boundaries using the
State_Nameattribute. Counties will be merged if they have the same
State_Namevalue. The result is a layer of state boundaries.
The layer containing area features that will be dissolved.
In addition to choosing a layer from your map, you can choose Choose Analysis Layer at the bottom of the drop-down list to browse to your contents for a big data file share dataset or feature layer.
Specifies the method used to dissolve the fields.
You can choose one of two methods for merging area features:
Multipart is a representation of a place or thing that has more than one part but is defined as one feature because it references one set of attributes. In a layer of states, for example, Hawaii could be considered a multipart feature because its separate geometric parts are classified as a single state.
Create multipart features offers two options:
When areas are merged, you can summarize their attribute values with meaningful statistics. For example, if you are dissolving the boundary between counties based on
State_Name, and each county has a Population field, you could calculate the sum of
Populationfor the state.
You can calculate statistics on features that are summarized. You can calculate the following on numeric fields:
You can calculate the following on string fields:
The name of the layer that will be created. If you are writing to an ArcGIS Data Store, your results will be saved in My Content and added to the map. If you are writing to a big data file share, your results will be stored in the big data file share and added to its manifest. It will not be added to the map. The default name is based on the tool name and the input layer name. If the layer already exists, the tool will fail.
When writing to ArcGIS Data Store (relational or spatiotemporal big data store) using the Save result in drop-down box, you can specify the name of a folder in My Content where the result will be saved.


Checklist
I’m starting to come to the end of my master system emulator and thought it best to make a list of what needs doing before I start writing the tutorials.
Easy:
- All control pad buttons including player 2 (Implemented)
- Correct Game Speed (Fixed)
- Reset Interrupt (Fixed)
- CodeMasters Mapper (Fixed)
Medium:
- Zexall test completion (Fixed)
- Speed optimizations (Implemented)
- Render background correctly for larger screen res (Fixed)
- Render mode 2 sprites correctly (Fixed)
- Change screen res for codemaster games (Fixed)
Difficult:
- Sound (Implemented)
- Fix graphical bugs found in Land of Illusion, Lemmings (Fixed)
- Fix bug Street Fighter (Fixed)
- Find out why some roms dont show first screen (Fixed)
- Fix bug in mortal kombat (Fixed)
- Fix black graphic flicker in some games (Fixed)
Whenever I fix one of these items I’ll edit this post and label them as fixed.
Doesn’t look too bad does it?
CS


Welcome to the blog of Kim Hartley
Neuroplasticity is the creation and strengthening of neural (brain) pathways. It will benefit people if they have an understanding on how the mind works.
They will be most likely be able to change there mindset from fixed to growth. They will realise that actually practice makes perfect, that learning and using
there knowledge will make there brain pathways stronger. So by repititive work they can learn new things and make what they have learnt permanent.
For me it's not how I might engage with neuroplasticity, but more so how I am! I'm learning all very new subjects (I do have small parts of knowledge in IT) and
I assume i've got new pathways being built. When learning I try and take something new in and then I will redo what i've learnt or look into it more to add to my
learning. For instance, this is the third or fourth time that i've gone over what neuroplasticity is during this course
.The ways you can increase neuroplasticity is by repitition! So for this exercise and course in regards to this subject i've learnt and read over neuroplasticity
before the orientation, after the orientation and now in sprint 4. I've also done some googling and reading on the matter. Now if the word is said or I had to talk about
the subject I can talk about it reasonably well without looking any info up...
Growth mindset is where a person thinks they are able to learn. Fixed is where they think they can't. So a fixed person would look at a subject like programming
and think there is no way that they would be able to understand it or even learn it so what is the point! A growth mindset differs in where a new topic is a
potential subject to learn and not really an obstacle. It's something they are open to trying and want to learn. Fixed is closed to learning it as they think they can't.
It's relevant in the way that people should want to grow. They say you can't teach an old dog new tricks, so why would you want to be like that?
In my own exploration of the topic I haven't been surprised by anything. I guess over the last years i've been trying to change in various ways. That ranges from learning
new things, be open to new people and situations. I'm slowly but surely i'm changing. Haha I mean i've left the comfort and security of a full time job to learn a new thing and open up my future.
As far as integrating the growth mindset into my life, i'll just be more active with what i've been/what i'm doing. I won't look at thing in the way of I can't do this,
I don't want to do thing or this is boring (not that it has been or is). I'll learn and keep learning whatever I can. I'll never think this is pointless and i've done this before or I already know this so what's the point.


You discovered CP violation!
C (Charge) and P (Parity, which can be thought of as “handedness”) are discrete transformations that can be applied to a physical system.
If a theory is symmetric under C, then it works the same if all particles are exchanged with their antiparticles. If it has P-symmetry, then it is invariant under inversion (“mirroring”) of all spatial coordinates.
For a long time, physicists believed that all of physics is invariant under the combination CP of both symmetries. It turned out that this is wrong, as was discovered by Cronin, Fitch et al. in 1964 when they studied the decay of the neutral K meson.
In 1964, Cronin, Fitch, et al. showed that CP symmetry is broken in the decay of the long-lived neutral K meson.
If all of physics was invariant under CP transformation, then this long-lived version of the K meson would never decay into two pions.
However, this kind of decay was discovered!
You can see their results on the left: In the middle plot (the one relevant for K-meson decays), a clear excess is recognizable.
For their discovery, Cronin and Fitch received the Nobel Prize in Physics in 1980.


Music Performance Sign-Up
Full Name
Email
Type of Instrument Played
--Type in here--
Piano
Cello
Violin
Viola
Flute
Other
Other Comment
Do you need to borrow instrument?


Hi Team,
I wish to apply at your organization for suitable opportunities.
A Brief summary of my work experience:
- Goal-oriented Software professional with a strong
programming skills, having around 7+ Years of experience
in Web Application Development.
- MCP certified in developing Azure services and Web
Services & Microsoft Certified Technology
Specialist(MCTS) in Web Application Development using
.Net Framework 4
- Skilled programmer with a flair for adopting new
technologies, designing/ building applications
- Experienced in .NET 3.5 and 4.0, Bootstrap 3.0, C#,
JavaScript and Jquery,Asp.Net MVC 3.0, Asp.Net MVC
4.0,LinqToSql,WCF, Entity Framework and MEAN stack
developer.
- Good concept development and design skill.
My resume is attached. If I can provide you with any further
information please let me know. I look forward to hearing from
you.
Total Experience: 7 Yrs.
Technical skills are: , C#, MVC, SQL Server, Asp.Net,
Asp.Net MVC specialist, OOPS, Jquery, Entity Framework,
LinqToSql, Angular
JS,NodeJs,ExpressJs,Angular,HTML,CSS,Bootstrap4.0,Docker,Kubernetis,Hyperledger
fabric network
Current Organization: Fujitsu Consulting India Pvt Ltd.
Current CTC: 9,15,000 per annum
Notice Period: 90 days negotiable upto 60 days
Current Job Type: Permanent
Current Location: Pune
Full Name: Sudhir Namdevrao Kadam
Education: MCA.
Ready to attend interview on weekdays
Regards,
SudhiR KadaM
Mob No:8412900085
LinkedIn: https://www.linkedin.com/in/sudhir-kadam-69731346


Lorem ipsum dolor sit amet, nam et viris persequeris comprehensam, ut rebum audire sea, est te primis voluptatibus. Nisl stet volumus in pro. Quod veri verterem sed id. Eum id eros recusabo.
Think of a new tradition to start in the office that celebrates a win for the team. Next, get some coworkers advice and thoughts on the idea. Consider implementing the tradition after the next success.


Click the box to get a surprise!
Drag Messi׳s Picture to see a joke!
Hold any key while inside the box and see how we all really look


| Figure 1 |
Faecal pellet sampling sites in Garhwal region of Uttarakhan ... |
| Figure 2 |
Plant diet richness across an elevation gradient in pre‐mons ... |
| Figure 3 |
Evolutionary origin of plants per pellet sampled in pre‐mons ... |
| Figure 4 |
Upper distribution limit of plants detected per sample in pr ... |
| Figure 5 |
Lower distribution limit of plants detected in pre‐monsoon ( ... |


--- title: "Recap of rstudio::conf 2019 - Derrick Kearney and Will Landau" slug: "feb2019" date: 2019-02-19 ---
Derrick and Will gave an overview of rstudio::conf 2019 and learning from it. Material covered during the meetup along with link to slides is in this location.


A icon picker of all the Material Design icons
The palette used by the icon picker can be configured
The picker can be styled using custom properties


Deno is an anagram of node. This very website was created with Deno! It was created by the same guy who created Node JS.
The creator of Deno had some regrets about Node JS. Without getting too technical, his main concern was making sure Deno was more secure. For now, don't worry about learning Deno, as it's creator said "Node isn't going anywhere". However, if you are interested in what a more modern version of Node JS is, then Deno is it.
By no means will Deno replace Node, for a long time. Deno is in it's first version, while Node has had plenty of updates and fixes through it's run over the years. However, Deno has the potential to replace Node if it receives widespread adoption.
const request = require("request-promise")
const fetch = async () => {
const req = await request.get({url: "https://google.com"})
console.log(req.statusCode)
}
const run = async () => {
await fetch()
}
import * as request from "request-promise-repo-url"
const req = await request.get({url: "https://google.com"})
console.log(req.statusCode)
In the example above, we are trying to send a GET
request to Google using an asynchronous function, which means we must await
it. In Node JS, you can only use the await
keyword in an async
function. Since Deno reliieves us of that restriction, we don't need to wrap our await
of the request.get()
function, allowiing for quicker, and cleaner coding.
Some things that are necessary (maybe even annoying) about Node are fixed in Deno. To keep it short, I'll summarize some examples:
typescript
code without a tsconfig
fileawait
can be ran anywhere, not just inside an async
function
package.json
file or a node_modules
folder, modules are decentralized and distributed by their creators.If you're on Mac or Linux, open terminal and run this command:
curl -fsSL https://deno.land/x/install/install.sh | sh
Windows:
iwr https://deno.land/x/install/install.ps1 -useb | iex
Then run:
deno run https://deno.land/std/examples/welcome.ts
You just ran your first Deno program! Learn more and start writing your own!


ME to MN
Disc Golf
Granny Gears
Barnet
The Winooski
Saranac Lake
Niagara Falls
Ohio
...
$title$
$body$


SCHINDLER'S LIST A film review by John Locke Copyright 1994 John Locke
This film has gotten plenty of praise, some of it deserved. Here's another side.
The fundamental problem is that the stories of thousands (or millions) of people are very appropriate to documentary filmmaking, but not to dramatic filmmaking. It's the intimate knowledge of a few characters that makes empathy personal and not intellectual. SCHINDLER'S LIST gives us an intimate look at a few characters but there are problems with all of these.
First, Schindler himself. He is not a Jew or a prisoner, so from a historical perspective, he is not a central character in the holocaust, merely an interesting sidelight. The choice of putting him at the center of the story reminds me of films like SALVADOR, where El Salvador's history is reduced to the experiences in an American journalist's life, or CRY FREEDOM! which is a biography of Stephen Biko, but makes a white journalist the central character. In all cases, I think the technique is a cop-out to market forces--the largest percentile of the audience is given a character they are more likely to relate to culturally. It is not simply a matter--with SCHINDLER'S LIST--of choosing to tell the Schindler story. A Jew could have been central while Schindler was made subsidiary. The holocaust could have been the foreground and Schindler's factory the background, rather than the other way around.
(A television movie, PLAYING FOR TIME, makes better artistic choices in how the holocaust is portrayed. First, the characters are prisoners and central to the event. At the same time, their recruitment into a camp orchestra gives them a plausible reason for staying around longer than the average prisoner, and experiencing the camp both as a prisoner and with the broader perspective of a long-term inmate.)
So who are the central Jewish characters? Stern, the factory accountant, is the main one. But he has a disembodied life--no background we know of, no family, no passions. He gives up little of himself and hence engenders too little sympathy. Worse still, he is spared from the horrors of the holocaust, other than witnessing them. So he is not at the heart of the matter. How about the camp commandant's Jewish housekeeper. She is closer but, yet, she rarely speaks so we never get to know her except as She Who Suffers in Silence. After her, it's all cameos: the woman engineer who wants to make a good barracks, the hinge-maker, the worker who wants to thank Schindler, etc. These characters come on to illustrate individual points and then leave, but we never know them as individuals. After them, there are simply masses of people running around with rabbit-like fear.
The lack of strong developed Jewish characters, ironically, tends to makes us think more like the guards of the prisoners than their saviors. A guard may be shocked at first by the violence he witnesses but becomes used to it because he doesn't know the people and they are never allowed to speak and become human. It's knowing enough about the characters to care about them as individuals that prevents us from seeing them as unfortunate sheep.
Sadly, the most vivid character is the psychopathic commandant. He is so outrageous and unpredictable he steals all the scenes he is in. What crazy thing will this lunatic do next? Is he central to the holocaust? Yes, in a perverse way, but I think we would all agree that the major theme of the holocaust is suffering, not sadism.
For anyone who has seen documentaries or photographs of the holocaust, the visual impact of the film is greatly diminished. SCHINDLER'S LIST is a grim tour through a holocaust museum, but without the insights of empathetic characters, it doesn't go far enough beyond the historical record.
Putting all that aside, Schindler *is* an interesting character, but in a subtle way. His behavior doesn't really change over the course of the film--he starts off running a factory and ends up running a factory. It's his motivations, his reasons for running a factory that change, and the change takes place over a protracted period. That should be enough, but subtlety is apparently anathema to Spielberg. He can't resist tacking on an emotional wallop to the end of the story, wherein Schindler breaks down pitifully in regrets that he couldn't have saved one more Jew with the sale of some jewelry or ten more with the sale of his car. It's an outrageous sob sell-out on Spielberg's part. Schindler's breakdown lacks common sense--he's already done so much obvious good. The breakdown doesn't appear to be in character at all. Furthermore, it's not plausible that Schindler even thinks that way--he's an entrepreneur, not an accountant; he thinks on a grander scale rather than a smaller. (Note that the breakdown is Spielberg's invention; it's not in the book.)
Still, it's an interesting film, better than most. It will garner many awards, as much for its intentions as its artistry. I give it a $5.50 out of $7.00.
John
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: post title: Mobile games players are not serious date: 2005-02-03 00:00:00 categories: mobile play ---
Mobile Games Players Are Not Serious: "Casual mobile handset users continue to be the key to success in the mobile games market, according to the mobile games publisher, Mr.Goodliving."


ML-Agents Overview
Unity Machine Learning Agents (ML-Agents) is an open-source Unity plugin that enables games and simulations to serve as environments for training intelligent agents. Agents can be trained using reinforcement learning, imitation learning, neuroevolution, or other machine learning methods through a simple-to-use Python API. We also provide implementations (based on TensorFlow) of state-of-the-art algorithms to enable game developers and hobbyists to easily train intelligent agents for 2D, 3D and VR/AR games. These trained agents can be used for multiple purposes, including controlling NPC behavior (in a variety of settings such as multi-agent and adversarial), automated testing of game builds and evaluating different game design decisions pre-release. ML-Agents is mutually beneficial for both game developers and AI researchers as it provides a central platform where advances in AI can be evaluated on Unity’s rich environments and then made accessible to the wider research and game developer communities.
Depending on your background (i.e. researcher, game developer, hobbyist), you may have very different questions on your mind at the moment. To make your transition to ML-Agents easier, we provide several background pages that include overviews and helpful resources on the Unity Engine, machine learning and TensorFlow. We strongly recommend browsing the relevant background pages if you're not familiar with a Unity scene, basic machine learning concepts or have not previously heard of TensorFlow.
The remainder of this page contains a deep dive into ML-Agents, its key components, different training modes and scenarios. By the end of it, you should have a good sense of what ML-Agents allows you to do. The subsequent documentation pages provide examples of how to use ML-Agents.
Running Example: Training NPC Behaviors
To help explain the material and terminology in this page, we'll use a hypothetical, running example throughout. We will explore the problem of training the behavior of a non-playable character (NPC) in a game. (An NPC is a game character that is never controlled by a human player and its behavior is pre-defined by the game developer.) More specifically, let's assume we're building a multi-player, war-themed game in which players control the soldiers. In this game, we have a single NPC who serves as a medic, finding and reviving wounded players. Lastly, let us assume that there are two teams, each with five players and one NPC medic.
The behavior of a medic is quite complex. It first needs to avoid getting injured, which requires detecting when it is in danger and moving to a safe location. Second, it needs to be aware of which of its team members are injured and require assistance. In the case of multiple injuries, it needs to assess the degree of injury and decide who to help first. Lastly, a good medic will always place itself in a position where it can quickly help its team members. Factoring in all of these traits means that at every instance, the medic needs to measure several attributes of the environment (e.g. position of team members, position of enemies, which of its team members are injured and to what degree) and then decide on an action (e.g. hide from enemy fire, move to help one of its members). Given the large number of settings of the environment and the large number of actions that the medic can take, defining and implementing such complex behaviors by hand is challenging and prone to errors.
With ML-Agents, it is possible to train the behaviors of such NPCs (called agents) using a variety of methods. The basic idea is quite simple. We need to define three entities at every moment of the game (called environment):
- Observations - what the medic perceives about the environment. Observations can be numeric and/or visual. Numeric observations measure attributes of the environment from the point of view of the agent. For our medic this would be attributes of the battlefield that are visible to it. Observations can either be discrete or continuous depending on the complexity of the game and agent. For most interesting environments, an agent will require several continuous numeric observations, while for simple environments with a small number of unique configurations, a discrete observation will suffice. Visual observations, on the other hand, are images generated from the cameras attached to the agent and represent what the agent is seeing at that point in time. It is common to confuse an agent's observation with the environment (or game) state. The environment state represents information about the entire scene containing all the game characters. The agents observation, however, only contains information that the agent is aware of and is typically a subset of the environment state. For example, the medic observation cannot include information about an enemy in hiding that the medic is unaware of.
- Actions - what actions the medic can take. Similar to observations, actions can either be continuous or discrete depending on the complexity of the environment and agent. In the case of the medic, if the environment is a simple grid world where only their location matters, then a discrete action taking on one of four values (north, south, east, west) suffices. However, if the environment is more complex and the medic can move freely then using two continuous actions (one for direction and another for speed) is more appropriate.
- Reward signals - a scalar value indicating how well the medic is doing. Note that the reward signal need not be provided at every moment, but only when the medic performs an action that is good or bad. For example, it can receive a large negative reward if it dies, a modest positive reward whenever it revives a wounded team member, and a modest negative reward when a wounded team member dies due to lack of assistance. Note that the reward signal is how the objectives of the task are communicated to the agent, so they need to be set up in a manner where maximizing reward generates the desired optimal behavior.
After defining these three entities (the building blocks of a reinforcement learning task), we can now train the medic's behavior. This is achieved by simulating the environment for many trials where the medic, over time, learns what is the optimal action to take for every observation it measures by maximizing its future reward. The key is that by learning the actions that maximize its reward, the medic is learning the behaviors that make it a good medic (i.e. one who saves the most number of lives). In reinforcement learning terminology, the behavior that is learned is called a policy, which is essentially a (optimal) mapping from observations to actions. Note that the process of learning a policy through running simulations is called the training phase, while playing the game with an NPC that is using its learned policy is called the inference phase.
ML-Agents provides all the necessary tools for using Unity as the simulation engine for learning the policies of different objects in a Unity environment. In the next few sections, we discuss how ML-Agents achieves this and what features it provides.
Key Components
ML-Agents is a Unity plugin that contains three high-level components:
- Learning Environment - which contains the Unity scene and all the game characters.
- Python API - which contains all the machine learning algorithms that are used for training (learning a behavior or policy). Note that, unlike the Learning Environment, the Python API is not part of Unity, but lives outside and communicates with Unity through the External Communicator.
- External Communicator - which connects the Learning Environment with the Python API. It lives within the Learning Environment.
Simplified block diagram of ML-Agents.
The Learning Environment contains three additional components that help organize the Unity scene:
- Agents - which is attached to a Unity GameObject (any character within a scene) and handles generating its observations, performing the actions it receives and assigning a reward (positive / negative) when appropriate. Each Agent is linked to exactly one Brain.
- Brains - which encapsulates the logic for making decisions for the Agent. In essence, the Brain is what holds on to the policy for each Agent and determines which actions the Agent should take at each instance. More specifically, it is the component that receives the observations and rewards from the Agent and returns an action.
- Academy - which orchestrates the observation and decision making process. Within the Academy, several environment-wide parameters such as the rendering quality and the speed at which the environment is run can be specified. The External Communicator lives within the Academy.
Every Learning Environment will always have one global Academy and one Agent for every character in the scene. While each Agent must be linked to a Brain, it is possible for Agents that have similar observations and actions to be linked to the same Brain. In our sample game, we have two teams each with their own medic. Thus we will have two Agents in our Learning Environment, one for each medic, but both of these medics can be linked to the same Brain. Note that these two medics are linked to the same Brain because their space of observations and actions are similar. This does not mean that at each instance they will have identical observation and action values. In other words, the Brain defines the space of all possible observations and actions, while the Agents connected to it (in this case the medics) can each have their own, unique observation and action values. If we expanded our game to include tank driver NPCs, then the Agent attached to those characters cannot share a Brain with the Agent linked to the medics (medics and drivers have different actions).
Example block diagram of ML-Agents for our sample game.
We have yet to discuss how ML-Agents trains behaviors, and what role the Python API and External Communicator play. Before we dive into those details, let's summarize the earlier components. Each character is attached to an Agent, and each Agent is linked to a Brain. The Brain receives observations and rewards from the Agent and returns actions. The Academy ensures that all the Agents and Brains are in sync in addition to controlling environment-wide settings. So how does the Brain control what the Agent does?
In practice, we have four different types of Brains, which enable a wide range of training and inference scenarios:
- External - where decisions are made using the Python API. Here, the observations and rewards collected by the Brain are forwarded to the Python API through the External Communicator. The Python API then returns the corresponding action that needs to be taken by the Agent.
- Internal - where decisions are made using an embedded TensorFlow model. The embedded TensorFlow model represents a learned policy and the Brain directly uses this model to determine the action for each Agent.
- Player - where decisions are made using real input from a keyboard or controller. Here, a human player is controlling the Agent and the observations and rewards collected by the Brain are not used to control the Agent.
- Heuristic - where decisions are made using hard-coded behavior. This resembles how most character behaviors are currently defined and can be helpful for debugging or comparing how an Agent with hard-coded rules compares to an Agent whose behavior has been trained. In our example, once we have trained a Brain for the medics we could assign a medic on one team to the trained Brain and assign the medic on the other team a Heuristic Brain with hard-coded behaviors. We can then evaluate which medic is more effective.
As currently described, it may seem that the External Communicator and Python API are only leveraged by the External Brain. This is not true. It is possible to configure the Internal, Player and Heuristic Brains to also send the observations, rewards and actions to the Python API through the External Communicator (a feature called broadcasting). As we will see shortly, this enables additional training modes.
An example of how a scene containing multiple Agents and Brains might be configured.
Training Modes
Given the flexibility of ML-Agents, there are a few ways in which training and inference can proceed.
Built-in Training and Inference
As mentioned previously, ML-Agents ships with several implementations of state-of-the-art algorithms for training intelligent agents. In this mode, the Brain type is set to External during training and Internal during inference. More specifically, during training, all the medics in the scene send their observations to the Python API through the External Communicator (this is the behavior with an External Brain). The Python API processes these observations and sends back actions for each medic to take. During training these actions are mostly exploratory to help the Python API learn the best policy for each medic. Once training concludes, the learned policy for each medic can be exported. Given that all our implementations are based on TensorFlow, the learned policy is just a TensorFlow model file. Then during the inference phase, we switch the Brain type to Internal and include the TensorFlow model generated from the training phase. Now during the inference phase, the medics still continue to generate their observations, but instead of being sent to the Python API, they will be fed into their (internal, embedded) model to generate the optimal action for each medic to take at every point in time.
To summarize: our built-in implementations are based on TensorFlow, thus, during training the Python API uses the observations it receives to learn a TensorFlow model. This model is then embedded within the Internal Brain during inference to generate the optimal actions for all Agents linked to that Brain. Note that our Internal Brain is currently experimental as it is limited to TensorFlow models and leverages the third-party TensorFlowSharp library.
The Getting Started with the 3D Balance Ball Example tutorial covers this training mode with the 3D Balance Ball sample environment.
Custom Training and Inference
In the previous mode, the External Brain type was used for training to generate a TensorFlow model that the Internal Brain type can understand and use. However, any user of ML-Agents can leverage their own algorithms for both training and inference. In this case, the Brain type would be set to External for both training and inferences phases and the behaviors of all the Agents in the scene will be controlled within Python.
We do not currently have a tutorial highlighting this mode, but you can learn more about the Python API here.
Curriculum Learning
This mode is an extension of Built-in Training and Inference, and is particularly helpful when training intricate behaviors for complex environments. Curriculum learning is a way of training a machine learning model where more difficult aspects of a problem are gradually introduced in such a way that the model is always optimally challenged. This idea has been around for a long time, and it is how we humans typically learn. If you imagine any childhood primary school education, there is an ordering of classes and topics. Arithmetic is taught before algebra, for example. Likewise, algebra is taught before calculus. The skills and knowledge learned in the earlier subjects provide a scaffolding for later lessons. The same principle can be applied to machine learning, where training on easier tasks can provide a scaffolding for harder tasks in the future.
Example of a mathematics curriculum. Lessons progress from simpler topics to more complex ones, with each building on the last.
When we think about how reinforcement learning actually works, the learning signal is reward received occasionally throughout training. The starting point when training an agent to accomplish this task will be a random policy. That starting policy will have the agent running in circles, and will likely never, or very rarely achieve the reward for complex environments. Thus by simplifying the environment at the beginning of training, we allow the agent to quickly update the random policy to a more meaningful one that is successively improved as the environment gradually increases in complexity. In our example, we can imagine first training the medic when each team only contains one player, and then iteratively increasing the number of players (i.e. the environment complexity). ML-Agents supports setting custom environment parameters within the Academy. This allows elements of the environment related to difficulty or complexity to be dynamically adjusted based on training progress.
The Training with Curriculum Learning tutorial covers this training mode with the Wall Area sample environment.
Imitation Learning
It is often more intuitive to simply demonstrate the behavior we want an agent to perform, rather than attempting to have it learn via trial-and-error methods. For example, instead of training the medic by setting up its reward function, this mode allows providing real examples from a game controller on how the medic should behave. More specifically, in this mode, the Brain type during training is set to Player and all the actions performed with the controller (in addition to the agent observations) will be recorded and sent to the Python API. The imitation learning algorithm will then use these pairs of observations and actions from the human player to learn a policy.
The Training with Imitation Learning tutorial covers this training mode with the Banana Collector sample environment.
Flexible Training Scenarios
While the discussion so-far has mostly focused on training a single agent, with ML-Agents, several training scenarios are possible. We are excited to see what kinds of novel and fun environments the community creates. For those new to training intelligent agents, below are a few examples that can serve as inspiration:
- Single-Agent. A single Agent linked to a single Brain, with its own reward signal. The traditional way of training an agent. An example is any single-player game, such as Chicken. Video Link.
- Simultaneous Single-Agent. Multiple independent Agents with independent reward signals linked to a single Brain. A parallelized version of the traditional training scenario, which can speed-up and stabilize the training process. Helpful when you have multiple versions of the same character in an environment who should learn similar behaviors. An example might be training a dozen robot-arms to each open a door simultaneously. Video Link.
- Adversarial Self-Play. Two interacting Agents with inverse reward signals linked to a single Brain. In two-player games, adversarial self-play can allow an agent to become increasingly more skilled, while always having the perfectly matched opponent: itself. This was the strategy employed when training AlphaGo, and more recently used by OpenAI to train a human-beating 1-vs-1 Dota 2 agent.
- Cooperative Multi-Agent. Multiple interacting Agents with a shared reward signal linked to either a single or multiple different Brains. In this scenario, all agents must work together to accomplish a task that cannot be done alone. Examples include environments where each agent only has access to partial information, which needs to be shared in order to accomplish the task or collaboratively solve a puzzle.
- Competitive Multi-Agent. Multiple interacting Agents with inverse reward signals linked to either a single or multiple different Brains. In this scenario, agents must compete with one another to either win a competition, or obtain some limited set of resources. All team sports fall into this scenario.
- Ecosystem. Multiple interacting Agents with independent reward signals linked to either a single or multiple different Brains. This scenario can be thought of as creating a small world in which animals with different goals all interact, such as a savanna in which there might be zebras, elephants and giraffes, or an autonomous driving simulation within an urban environment.
Additional Features
Beyond the flexible training scenarios available, ML-Agents includes additional features which improve the flexibility and interpretability of the training process.
On Demand Decision Making - With ML-Agents it is possible to have agents request decisions only when needed as opposed to requesting decisions at every step of the environment. This enables training of turn based games, games where agents must react to events or games where agents can take actions of variable duration. Switching between decision taking at every step and on-demand-decision is one button click away. You can learn more about the on-demand-decision feature here.
Memory-enhanced Agents - In some scenarios, agents must learn to remember the past in order to take the best decision. When an agent only has partial observability of the environment, keeping track of past observations can help the agent learn. We provide an implementation of Long Short-term Memory (LSTM) in our trainers that enable the agent to store memories to be used in future steps. You can learn more about enabling LSTM during training here.
Monitoring Agent’s Decision Making - Since communication in ML-Agents is a two-way street, we provide an agent Monitor class in Unity which can display aspects of the trained agent, such as the agents perception on how well it is doing (called value estimates) within the Unity environment itself. By leveraging Unity as a visualization tool and providing these outputs in real-time, researchers and developers can more easily debug an agent’s behavior. You can learn more about using the Monitor class here.
Complex Visual Observations - Unlike other platforms, where the agent’s observation might be limited to a single vector or image, ML-Agents allows multiple cameras to be used for observations per agent. This enables agents to learn to integrate information from multiple visual streams. This can be helpful in several scenarios such as training a self-driving car which requires multiple cameras with different viewpoints, or a navigational agent which might need to integrate aerial and first-person visuals. You can learn more about adding visual observations to an agent here.
Broadcasting - As discussed earlier, an External Brain sends the observations for all its Agents to the Python API by default. This is helpful for training or inference. Broadcasting is a feature which can be enabled for the other three modes (Player, Internal, Heuristic) where the Agent observations and actions are also sent to the Python API (despite the fact that the Agent is not controlled by the Python API). This feature is leveraged by Imitation Learning, where the observations and actions for a Player Brain are used to learn the policies of an agent through demonstration. However, this could also be helpful for the Heuristic and Internal Brains, particularly when debugging agent behaviors. You can learn more about using the broadcasting feature here.
Docker Set-up (Experimental) - To facilitate setting up ML-Agents without installing Python or TensorFlow directly, we provide a guide on how to create and run a Docker container.
Cloud Training on AWS - To facilitate using ML-Agents on Amazon Web Services (AWS) machines, we provide a guide on how to set-up EC2 instances in addition to a public pre-configured Amazon Machine Image (AMI).
Summary and Next Steps
To briefly summarize: ML-Agents enables games and simulations built in Unity to serve as the platform for training intelligent agents. It is designed to enable a large variety of training modes and scenarios and comes packed with several features to enable researchers and developers to leverage (and enhance) machine learning within Unity.
To help you use ML-Agents, we've created several in-depth tutorials for installing ML-Agents, getting started with the 3D Balance Ball environment (one of our many sample environments) and making your own environment.


Interaction is a critical part of the teaching process. Often, in large schools, the professor-student interaction is limited due to the dearth of an apt polling system. With the mere Raise of a hand, you can remotely answer questions during the class and build graphical data visualizations, depicting the overall class response of that inquiry. Moreover, our powerful back-end parses the data almost instantaneously and provides a veritable source of student evaluation by the instructor with just the raise of a hand. So, why poll when you can raise?
A dynamic teaching and learning solution for everyone.
Sit back and look at the class results on your very own screen. We have also integrated intuitive pie charts to represent the overall performance of the class.
Data processing is unwieldly. With our lucid, intuitive UI/UX, you can extract data effortlessly.
Raise provides the students and professor with bona-fide data of the results selected by the class. Moreover, it aids the professor in evaluating his students' performance.
Large-sized classes can very often be very mundane and boring. With Raise, professors can maintain an active interpersonal relationship with the students during the entire lecture.
We promise that you'll enjoy interacting with the data we present to you.


Contribute on GitHub
Home
About
Tutorials
Contact
New C
der
five life jackets to throw to the new coder
PDFs of Workshop Materials for Data Viz
Full PDF
Linux Setup
Mac Setup
Windows Setup
Test the Setup
DataViz Dependencies Setup
Part 1: Parsing
Part 2: Graphing
Part 3: Mapping
Resources + URLs


.exitCode
x.map(_ => ExitCode.success) -> x.exitCode x.as(ExitCode.success) -> x.exitCode x.fold(_ => ExitCode.failure, _ => ExitCode.success) -> x.exitCode