JavaOne 2009 BoF Presentation
Mobile application features typical in smartphones can also be implemented on mass-market featurephones using Java ME and Web 2.0 back-end services. In this presentation, we explore the multimodality and rich user interface of a search-driven portal application written in Java ME and broadly ported to mass-market featurephones. Multimodality enables the user to search, browse and discover using familiar activities on a mobile device - saying a phrase, entering text and snapping a photo.
Snippets of Java ME code used to implement voice recording, image capture, location awareness and advanced mapping are presented and analyzed.
OSCON 2012: Design and Debug HTML5 Apps for Devices with RIB and Web SimulatorGail Frederick
Learn how to build UI for and debug HTML5 apps for mobile devices using Rapid Interface Builder (RIB) and Web Simulator, two open-source tools recently released by Intel. This session dives deep into the feature sets of both Web app developer tools, with demos, and shows you how you can influence the future of these open-source projects.
Rapid Interface Builder, RIB, is a browser-based design tool for quickly prototyping and creating Web apps for mobile devices and desktops. RIB allows a developer to layout UI by dropping widgets onto a canvas and reviewing the UI in interactive preview mode. RIB generates HTML5 and JavaScript that can be imported into your IDE of choice to complete the app. RIB supports jQueryMobile and Tizen widgets and runs on Google Chrome and Chromium browsers.
Web Simulator is a lightweight open-source tool for debugging mobile web applications. Extending the Google Chrome developer tools, it enables running and debugging web APIs for mobile platforms on the developer’s desktop system. Web Simulator allows you to simulate accelerometer and other sensor data, incoming and outgoing calls, geolocation events and battery status and other mobile device events in your Web app with fine-grained control over events. It currently supports HTML5 and the Tizen Web APIs.
Meego Italian Day 2011 – Andrea Grandi - Qt: l’infrastruttura di programmazione multipiattaforma.
Panoramica di Qt: libreria multipiattaforma per lo sviluppo di programmi con interfaccia grafica tramite l’uso di widget. Perchè usarla? Quali sono i vantaggi? Che linguaggio di programmazione utilizza? E sotto che licenza viene rilasciata? Insomma, tutto quello che abbiamo sempre voluto sapere su Qt, ma non abbiamo mai osato chiedere. Inoltre qualche nozione teorica su Qt Quick e QML.
Andrea Grandi è studente di Informatica presso l’Università di Firenze e ha lavorato per qualche anno come sviluppatore di software. Dal 2007 fa parte della community di Maemo, in cui si impegna attivamente per aiutare i nuovi utenti, organizzare eventi e sviluppare applicazioni; recentemente è stato eletto membro del Maemo Community Council. Ha iniziato da alcuni anni a lavorare con Qt/C++ per creare programmi destinati ai dispositivi Maemo sino ad accumulare un’esperienza tale da essere nominato Nokia Qt Ambassador. Inoltre è socio fondatore del Pistoia Linux User Group.
http://www.meegoit.com/2011
Meego Italian Day 2011 - Dr. Luca Roffia - Smart Space Applications for Mobile Devices: iniziative internazionali nel campo delle applicazioni mobili per spazi intelligenti
L’intervento metterà in evidenza il ruolo dei dispositivi mobili nel collegare il mondo fisico al mondo delle informazioni, presentando alcune iniziative in campo internazionale attualmente in corso. Oltre a fornire una serie di riferimenti per orientarsi in questo contesto, verranno presentati i principi su cui si fonda la sviluppo di applicazioni intelligenti e le relative tecnologie abilitanti.
Dr. Luca Roffia è professore a contratto di Calcolatori Elettronici presso la II Facoltà di Ingegneria dell’Università di Bologna, sede di Cesena e di Information Technology And Arts Organizations presso la Facoltà di Economia dell’Università di Bologna . L’area di ricerca d’interesse si colloca all’interno dei Context Aware Systems e degli Smart Environments. L’esperienza di ricerca è rivolta allo studio e l’implementazione di guide multimediali interattive per la visita in sito di musei e siti archeologici. Dal 2010 è membro del gruppo di lavoro sugli Smart Spaces all’interno del programma FRUCT (Finnish-Russian Cooperation in Telecommunications).
http://www.meegoit.com/2011
An informal conversation about the mobile software/hardware ecosystem and MeeGo (a Linux-based open-source OS for mobile and embedded devices). Slides work best with my color commentary added. Presentation to Portland MeeGo Network on June 20, 2011.
For those to have a quick in technical and business insight of android and to promote open source I am uploading this presentation that I have delivered in multiple institutions.
OSCON 2012: Design and Debug HTML5 Apps for Devices with RIB and Web SimulatorGail Frederick
Learn how to build UI for and debug HTML5 apps for mobile devices using Rapid Interface Builder (RIB) and Web Simulator, two open-source tools recently released by Intel. This session dives deep into the feature sets of both Web app developer tools, with demos, and shows you how you can influence the future of these open-source projects.
Rapid Interface Builder, RIB, is a browser-based design tool for quickly prototyping and creating Web apps for mobile devices and desktops. RIB allows a developer to layout UI by dropping widgets onto a canvas and reviewing the UI in interactive preview mode. RIB generates HTML5 and JavaScript that can be imported into your IDE of choice to complete the app. RIB supports jQueryMobile and Tizen widgets and runs on Google Chrome and Chromium browsers.
Web Simulator is a lightweight open-source tool for debugging mobile web applications. Extending the Google Chrome developer tools, it enables running and debugging web APIs for mobile platforms on the developer’s desktop system. Web Simulator allows you to simulate accelerometer and other sensor data, incoming and outgoing calls, geolocation events and battery status and other mobile device events in your Web app with fine-grained control over events. It currently supports HTML5 and the Tizen Web APIs.
Meego Italian Day 2011 – Andrea Grandi - Qt: l’infrastruttura di programmazione multipiattaforma.
Panoramica di Qt: libreria multipiattaforma per lo sviluppo di programmi con interfaccia grafica tramite l’uso di widget. Perchè usarla? Quali sono i vantaggi? Che linguaggio di programmazione utilizza? E sotto che licenza viene rilasciata? Insomma, tutto quello che abbiamo sempre voluto sapere su Qt, ma non abbiamo mai osato chiedere. Inoltre qualche nozione teorica su Qt Quick e QML.
Andrea Grandi è studente di Informatica presso l’Università di Firenze e ha lavorato per qualche anno come sviluppatore di software. Dal 2007 fa parte della community di Maemo, in cui si impegna attivamente per aiutare i nuovi utenti, organizzare eventi e sviluppare applicazioni; recentemente è stato eletto membro del Maemo Community Council. Ha iniziato da alcuni anni a lavorare con Qt/C++ per creare programmi destinati ai dispositivi Maemo sino ad accumulare un’esperienza tale da essere nominato Nokia Qt Ambassador. Inoltre è socio fondatore del Pistoia Linux User Group.
http://www.meegoit.com/2011
Meego Italian Day 2011 - Dr. Luca Roffia - Smart Space Applications for Mobile Devices: iniziative internazionali nel campo delle applicazioni mobili per spazi intelligenti
L’intervento metterà in evidenza il ruolo dei dispositivi mobili nel collegare il mondo fisico al mondo delle informazioni, presentando alcune iniziative in campo internazionale attualmente in corso. Oltre a fornire una serie di riferimenti per orientarsi in questo contesto, verranno presentati i principi su cui si fonda la sviluppo di applicazioni intelligenti e le relative tecnologie abilitanti.
Dr. Luca Roffia è professore a contratto di Calcolatori Elettronici presso la II Facoltà di Ingegneria dell’Università di Bologna, sede di Cesena e di Information Technology And Arts Organizations presso la Facoltà di Economia dell’Università di Bologna . L’area di ricerca d’interesse si colloca all’interno dei Context Aware Systems e degli Smart Environments. L’esperienza di ricerca è rivolta allo studio e l’implementazione di guide multimediali interattive per la visita in sito di musei e siti archeologici. Dal 2010 è membro del gruppo di lavoro sugli Smart Spaces all’interno del programma FRUCT (Finnish-Russian Cooperation in Telecommunications).
http://www.meegoit.com/2011
An informal conversation about the mobile software/hardware ecosystem and MeeGo (a Linux-based open-source OS for mobile and embedded devices). Slides work best with my color commentary added. Presentation to Portland MeeGo Network on June 20, 2011.
For those to have a quick in technical and business insight of android and to promote open source I am uploading this presentation that I have delivered in multiple institutions.
Nokia Qt SDK in action - Qt developer days 2010Nokia
Presentation for Qt developer days 2010 in Munich covering the details of using Nokia Qt SDK and publishing the applications to Ovi store. Focusing on Symbian but covering the current status of maemo. Explains the Ovi Store Symbian Signing Service.
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Michael Kozloff
Octopod is a mobile application development platform for independent software developers and enterprise IT departments striving to find a flexible, yet powerful way of «IT Mobilization» with fast time to market and low cost of ownership.
This is a presentation to review and summarize the mobile websites that I have involved in. It includes many practical skills and my own experiences in the development of mobile websites.
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
Google Developer Days Japan 2009 - Designing OpenSocial Apps For Speed and Scale
Original slides from Arne Roomann-Kurrik & Chris Chabot with a few Zen quotes and references added by me:-)
"JavaME + Android in action" CCT-CEJUG Dezembro 2008Vando Batista
Mini-cursos de JavaME e Android no evento do CEJUG Café com Tapioca, em Dezembro de 2008.
1. Introdução: overview do desenvolvimento em Java para dispositivos portáteis/móveis
2. Java ME in action: tutorial hands-on de desenvolvimento (mini-curso)
3. Android in action: tutorial hands-on de desenvolvimento (mini-curso)
Autor: Vando Batista
Nokia Qt SDK in action - Qt developer days 2010Nokia
Presentation for Qt developer days 2010 in Munich covering the details of using Nokia Qt SDK and publishing the applications to Ovi store. Focusing on Symbian but covering the current status of maemo. Explains the Ovi Store Symbian Signing Service.
Octopod Mobile Development Platform for rapid cross-platform Enterprise IT Mo...Michael Kozloff
Octopod is a mobile application development platform for independent software developers and enterprise IT departments striving to find a flexible, yet powerful way of «IT Mobilization» with fast time to market and low cost of ownership.
This is a presentation to review and summarize the mobile websites that I have involved in. It includes many practical skills and my own experiences in the development of mobile websites.
GDD Japan 2009 - Designing OpenSocial Apps For Speed and ScalePatrick Chanezon
Google Developer Days Japan 2009 - Designing OpenSocial Apps For Speed and Scale
Original slides from Arne Roomann-Kurrik & Chris Chabot with a few Zen quotes and references added by me:-)
"JavaME + Android in action" CCT-CEJUG Dezembro 2008Vando Batista
Mini-cursos de JavaME e Android no evento do CEJUG Café com Tapioca, em Dezembro de 2008.
1. Introdução: overview do desenvolvimento em Java para dispositivos portáteis/móveis
2. Java ME in action: tutorial hands-on de desenvolvimento (mini-curso)
3. Android in action: tutorial hands-on de desenvolvimento (mini-curso)
Autor: Vando Batista
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Over four year of experience in Full Stack Web Development using JAVA.
Worked on all phases of development life cycle including Analysis, Design Development, Testing, Implementation and Support Excellent web application development skills.
Expert in developing Muti-Tier Web application using JAVA, J2EE Standards, JSP, Spring, Hibernate, Servlets, JSF, JDBC, Core JAVA, XML, HTML, AJAX and JAVA Script.
Experience in deploying the application, and configuring the application servers like Tomcat and Web Logic.
Implemented Connectivity to databases using JDBC API from Servlet and JSP and also through ORM Libraries like Hibernate. Created Mappings for both one-one as well as many-one mappings to Tables as well as Views.
Experienced in MYSQL, DB2 and Microsoft SQL server.
Experienced n design and implementation of projects using concepts of Multi Threading, Singletons, Serialization, Atomicity as well as familiar with JVM Internals.
Implements MVC architecture using STRUTS. Uses MVC, Singleton, DAO, Factory, Service, Locator, Business Delegate, Façade design patterns.
Is a versatile team player with good analytical, communication and interpersonalskills.
Node.js uses JavaScript - a language known to millions of developers worldwide - thus giving it a much lower learning curve even for complete beginners. Using Node.js you can build simple Command Line programs or complex enterprise level web applications with equal ease. Node.js is an event-driven, server-side, asynchronous development platform with lightning speed execution. Node.js helps you to code the most complex functionalities in just a few lines of code.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Accelerate your Kubernetes clusters with Varnish Caching
Smartphone Behavior On A Featurephone Budget
1. Smartphone Behavior
on a Featurephone Budget
using Java ME
Gail Rahn Frederick
Mobile Software Architect
Medio Systems
2. What You Will Learn…
> A Definition of Smartphone Behavior
> Developing Smartphone Features in Java ME
MIDlet Demos
Code Samples
> Real-World Advice about Coding and Porting
Smartphone Features for the Mass-Market
Integrating Java ME and Web 2.0
2
3. Agenda
> Introduction
> Smartphone Features in Mass-Market Devices
using Java ME
Searchbox Suggestions from Web 2.0 API
Search by Voice
Maps with Pan and Zoom
Search by Mobile Location
> Audience Participation and Q & A
3
5. Introduction
About the Presenter
> Gail Rahn Frederick
> Mobile Software Architect at Medio Systems
Mobile search, discovery and content aggregation
for mobile operators and publishers
Native Applications and Mobile Web
> My Background in Mobile
Native mobile applications on 100+ device models
Java ME applications on 50+ device models
Mobile web sites targeting 500+ device models
Distributed in North America and Europe
5
6. Introduction
Audience Participation
> Who are you?
Mobile developers, executives, operators?
> This BoF Session is Informal
> Audience Participation is Encouraged!
Share your Java ME Expertise and Industry Views
Discussion and Q&A at the End
6
7. Smartphone behavior on a featurephone budget…
HOW TO BUILD
SMARTPHONE FEATURES IN
JAVA ME
7
8. Smartphone Features in Java ME
Industry Definition of Terms
> Featurephone
Low-cost, mass-market mobile phone
Third-party software isolated to Applications menu
Less integrated with main phone UI and native OS
Java ME: MIDP, CLDC
> Smartphone
Mobile phone with PC-like functionality
Third-party software is a first-class citizen
Native OS is open development environment
Easy(ier) integration of Apps with OS and Web
Java ME: MIDP, CDC (if device includes a KVM)
8
9. Smartphone Features in Java ME
About the Demo Devices
> Mass-Market Java ME Devices
SonyEricsson C905
MIDP 2.1, CLDC 1.1
MSA (JSR-248)
Nokia N96
MIDP 2.1, CLDC 1.1
MSA (JSR-248)
9
10. Smartphone Features in Java ME
About the Application
> Mobile Search and Discovery
Multimodal, Search-Driven UX
Search by text and voice
Surfaces Web, Information and
Consumables
> Ported to Mass-Market Devices
MIDP 2.0+ and CLDC 1.1
> Asynchronous Network Layer
Manages all transactions
Caches recent network requests
10
11. Smartphone Features in Java ME
The Smartphone Features
> Predictive Searchbox
Suggestions from Web 2.0 Service
> Multimodality
Search by Voice
> Maps with Pan, Zoom and Traffic
Search with Mobile Location
11
12. Smartphone Features in Java ME
Search Suggestions
> How to Integrate Search
Suggestions
User enters search query above
some character length threshold
MIDlet requests suggestions
from Web 2.0 Service
Web Service responds with
suggestions in standard JSON
format
MIDlet reads JSON response
and displays suggestions UI
12
13. Search Suggestions
Server Side is Web 2.0 Service in JSON
> Sample Request URI for Search Suggestions
http://example.com/suggest?q=love
> MIME type for JSON responses
application/x-suggestions+json
> JSON response array contains 4 elements
Query string – the requested search term
Array of completions – list of suggested searches
Array of descriptions – short additional information
Array of URLs – Instant answer for suggested
search
13
14. Search Suggestions
Sample Server Response in JSON
> Example of Search Suggestions response in
JSON format for query “love”:
[quot;lovequot;,
[quot;YouTube - Love Songquot;,
quot;Lovebug - Wikipediaquot;],
[quot;www.youtube.comquot;,
quot;en.wikipedia.orgquot;],
[quot;http://www.youtube.com/watch?v=MR5xv3pt7KIquot;,
quot;http://en.wikipedia.org/wiki/Lovebugquot;]
]
14
15. Search Suggestions
Development Approach
> Keep the Smarts in the Web Server
MIDlet displays all data in JSON response
Use HTTP 1.1 keep-alive
Minimize connection setup and teardown in Java ME
> Read Entire Response as JSON Array
Read Response Components as Arrays or Strings
JSONException thrown for Format Problems
15
16. Search Suggestions
JSON in Java ME
> Helpful JSON References
Open source library from json.org
Java ME package is org.json.me
Sun Developer Network tutorial on reading JSON in
Java ME
16
17. Search Suggestions
Sample Java ME Code
// The 'response' variable is the JSON response body as a String.
try {
JSONArray jsonArray = new JSONArray(response);
String original = jsonArray.getString(0);
JSONArray suggestions = jsonArray.getJSONArray(1);
JSONArray descs = jsonArray.getJSONArray(2);
JSONArray urls = jsonArray.getJSONArray(3);
// Get the values for the first suggestion.
String suggestion = suggestions.getString(0);
String desc = descs.getString(0);
String url = urls.getString(0);
}
catch (JSONException ex) {
// JSON Response is not formatted as expected
}
17
18. Smartphone Features in Java ME
Search by Voice
> How to Search by Voice
UI Cues to Initiate Voice Search
Hold SEND and Speak
Key Event Starts Audio Recording
Canvas.keyPressed()
User Speaks into Microphone
Key Event Stops Audio Recording
Canvas.keyReleased()
Audio Recording Uploaded to
Voice-to-Text or Search Service
18
19. Search by Voice
Development Approach
> Requires JSR-135 Mobile Media API with
Audio Capture
> Use a low-bitrate codec
Minimizes byte size of sound recording
> Audio capture in background thread
Progress updates sent periodically to UI thread
> Audio capture is byte array
Audio data uploaded to voice-to-text service
> Voice-to-text service responds with translation
19
20. Search by Voice
Sample Code for Audio Capture, 1 of 2
// Request audio capture with low-bitrate AMR encoding
String playerURL = quot;capture://audio?encoding=amrquot;;
// Instantiate player for audio capture
Player player = Manager.createPlayer(playerURL);
player.realize();
// Get interface for recording audio.
RecordControl recCtrl =
(RecordControl)player.getControl(quot;RecordControlquot;);
// Instantiate byte stream to receive audio data
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
recCtrl.setRecordStream(outStream);
// Start recording audio
recCtrl.startRecord();
this.player.start();
// Notify UI that player started recording.
20
21. Search by Voice
Sample Code for Audio Capture, 2 of 2
// Periodically update UI during audio recording
long startTime = System.currentTimeMillis();
While( …max recording duration unmet and user still recording… ) {
try {
Thread.sleep(PROGRESS_CALLBACK_PERIOD_MS);
}
catch(InterruptedException ex) {}
// ... Update UI for progress of recording
}
// After audio recording completes, release player resources.
recCtrl.commit();
this.player.close();
// Audio data stored in byte array
byte[] audioData = outStream.toByteArray();
21
22. Smartphone Features in Java ME
Maps with Pan and Zoom
> How to Implement Maps
User presses keys to pan, zoom
and switch map styles
Maps are a Grid of Tiles
Each Tile has an X,Y Position
Relative to Map Center
> Caching Network Manager is
Critical for Performance
Sends Multiple Tile Requests in
One Transaction
Caches Recent Tile Responses
22
23. Maps with Pan and Zoom
Development Approach
> Maps are a Grid of Tiles
Map tile is an image
> Each Tile has an X,Y Position Relative to Map
Center
Tile key is (map centroid, map style, tile X, tile Y)
Sent to mapping server to identify requested tile
> Asynchronous and Caching Network Manager
Sends Multiple Tile Requests in One Transaction
Caches Recent Tile Responses
23
24. Maps with Pan and Zoom
Design Approach
Tiles Currently Displayed in MIDlet
Tiles in Network Cache
Tiles to be Requested On Demand
24
25. Smartphone Features in Java ME
Search with Mobile Location
> How to Search with Mobile Location
User interacts with MIDlet
MIDlet background thread registers
for location updates
When location data is available,
MIDlet incorporates into server
request
Location fix in 5 seconds or 15 minutes
Transparent to User
User can disable LBS in Preferences
25
26. Search with Mobile Location
Development Approach
> MIDlet requests location using JSR-179
> Location requests and callbacks in background
> Last known location cached and re-used
Within some time threshold
> Gotchas?
Phones used in inconvenient locations for LBS
Indoors, high floors, etc.
MIDlet must degrade gracefully and eventually stop trying.
26
27. Search with Mobile Location
Sample Java ME Code
LocationProvider m_locProvider;
// Use default criteria for greatest chance of success.
m_locProvider = LocationProvider.getInstance(null);
// Ask for last known location. If provided, may be stale.
Location loc = m_locProvider.getLastKnownLocation();
// Use default timeout for location lookup.
// This call is blocking – call in dedicated thread
loc = m_locProvider.getLocation(-1);
// Method is data source: cell ID, GPS, network-assisted, etc.
int method = loc.getLocationMethod();
// Get lat/lon co-ordinates and incorporate into search query.
double latitude = loc.getQualifiedCoordinates().getLatitude();
double longitude = loc.getQualifiedCoordinates().getLongitude();
27
28. Smartphone Features in Java ME
Request API Permissions in JAD
> Advanced Java ME APIs are Protected
> Request API Permissions in the JAD
> MIDlet Signing Reduces User Permission Dialogs
Operator, Java Verified and Third-Party Signatures
MIDlet-Permissions:
javax.microedition.io.Connector.http,
javax.microedition.media.control.RecordControl,
javax.microedition.pim.ContactList.read,
javax.microedition.io.Connector.file.read,
javax.microedition.io.Connector.file.write
Text formatting added for readability. MIDlet-Permissions is one line in JAD file.
28
29. Smartphone Features in Java ME
Related APIs for Smart Features in Java ME
> JSR-256: Mobile Sensor API
Uses General Connection Framework to access
sensor hardware on a mobile device
Accelerometer, battery charge state, network field
intensity, etc.
> JSR-172: Web Services API
Web service client for Java ME with XML Parser
> Mobile AJAX in Java ME
Sun Technical Paper
Info and Code Samples @ meapplicationdevelopers.dev.java.net
Streaming ATOM parser, expression language, async I/O library
29
30. Smartphone Features in Java ME
Key Points
> MIDlets with Web 2.0 and other smart features are
possible in Java ME on mass-market devices.
MSA and MSA Subset and open source libraries.
> Asynchronous network manager with caching is
critical to supports Web 2.0 functionality.
30
31. Smartphone Features in Java ME
Audience Participation
> How do you define featurephone and
smartphone?
What is the role of Java ME in each ecosystem?
> What are your challenges to implement
smartphone features in Java ME?
Permissions, OEM Support for Optional APIs,
Fragmentation, etc…
31
This talk is a “postcard from the industry” – an example of our use of Java ME to implement features into mass-market mobile devices that are traditionally seen only on smartphones.You will learn our that definition of smartphone behavior is an application that integrates with native phone features and with Web 2.0 services.
We are going to see 4 feature examples with demonstrations and code samples.
Let’s find out a little bit about the audience.If you are a mobile developer, please raise your hand. How about QA? Those who work with operators or publishers?If you have shipped MIDlets in North America, please raise your hand. Europe? Asia? Other parts of the world?Last one – your experience level with Java ME – Beginner? Intermediate? Advanced?
Feature set convergence between low-end and high-end devices in the near future.Especially with emergence of new classes of mobile devices (netbooks, MIDs, game consoles, media players), lines are blurring between featurephones and smartphones.Features I will demonstrate tonight show tightened integration between: Java ME and native phone features (contact list, location), Java ME and the Internet (voice search, web search result suggestions, mapping).
An asynchronous network layer is essential for implementing advanced networkingThe asynchronous network layer uses one queue of all kinds of network transactions, a cache of recent requests and a listener model for notifying when new information has arrived from the network.
Explain concept of PredictionaryPredictionary = user search history (stored in RMS), Medio suggested terms, contacts list on device and web search result suggestions.Some of these features may seem pretty simple from a technological point of view – but their big usability upsides merit their inclusion.The Network Response Cache allows caching of recent network transactions, for re-use,
Do the demonstration and then review the sample code.
Do the demonstration and then review the sample code
Check device specifications and test for supported low-bitratecodecs. No comprehensive industry reference for which codecs are supported on which devices.
Assuming you know that the mobile device supports audio capture and recording, this sample code
Do the demonstration and then review the sample code
This chart describes possible caching behavior of map tiles as the user pans left and right in a map image. Tiles to the left and right of the image persist in the network cache, as well as tiles directly above and below the current map location.Cache design and thresholds depend on device capabilities.Set cache parameters in JAD attributes to allow for easy cache modification.
No demo – uncertain of a quick GPS fix here in Moscone Center.
Use default criteria for greatest chance of success in LocationProvider.getInstance();OK for simple location queryThis is a synchronous example and a starting point to integrate LBS into a background thread.
Of course, many of these advanced techniques are not possible without requesting permission to use protected APIs in Java ME. Here is an example of requesting permissions in the JAD file that are required to run the application.
JSR-229 (mobile payments) is another API for smartphone features but requires integration with external payment providers
Java ME for Featurephones: MIDP, CLDCJava ME for Smartphones: MIDP, CDCBoth demonstration devices use MIDP 2.1 and CLDC 1.1