Devoxx 2015 presentation
This presentation will quickly go over the 3 main smartwatch platforms on the market, namely Pebble, Android Wear and Apple Watch. We will explain the characteristics of each platform, the usage scenarios it supports, the architecture of an app, show the language and the tools that are available to develop apps, describe the development lifecycle and illustrate with code samples (no live-coding). We will demonstrate all that based on a common app developed for the three platforms.
We gave this talk at Devoxx 2016 (Morocco and Belgium) to make software developers aware of the opportunities of developing Apps on Smart TVs. To illustrate these concepts, we have developed the application "TVoxx" available on:
- Apple TV: https://itunes.apple.com/be/app/tvoxx/id1097323734?mt=8
- Android TV: https://play.google.com/store/apps/details?id=net.noratek.tvoxx.androidtv&hl=en
Fashionable XCUITest for iOS Apps by Shashikant JagtapSauce Labs
In this SauceCon 2019 presentation, Shashikant Jagtap discussed how to use a protocol-oriented approach to architect XCUITests that can be scaled easily within iOS CI/CD pipelines. He provides an introduction to XCUITest, covers XCUITest features with Xcode 10, and provides tips for writing CI-friendly XCUITests. e.g Stubs, Accessibility Identifiers, Real Device Tests, Xcode scheme strategy for UI Tests etc.
Devoxx 2015 presentation
We will show you the same application, developed for the three most renowned smartwatch platforms, namely the Pebble, Android Wear and Apple Watch. We will show you the tools, languages, APIs and capabilities of each platform so that you can get a feel for the kind of opportunities offered by this new usage paradigm and the investment required to leverage those opportunities. Be advised there will be some C, Java and Swift in this presentation.
We gave this talk at Devoxx 2016 (Morocco and Belgium) to make software developers aware of the opportunities of developing Apps on Smart TVs. To illustrate these concepts, we have developed the application "TVoxx" available on:
- Apple TV: https://itunes.apple.com/be/app/tvoxx/id1097323734?mt=8
- Android TV: https://play.google.com/store/apps/details?id=net.noratek.tvoxx.androidtv&hl=en
Fashionable XCUITest for iOS Apps by Shashikant JagtapSauce Labs
In this SauceCon 2019 presentation, Shashikant Jagtap discussed how to use a protocol-oriented approach to architect XCUITests that can be scaled easily within iOS CI/CD pipelines. He provides an introduction to XCUITest, covers XCUITest features with Xcode 10, and provides tips for writing CI-friendly XCUITests. e.g Stubs, Accessibility Identifiers, Real Device Tests, Xcode scheme strategy for UI Tests etc.
Devoxx 2015 presentation
We will show you the same application, developed for the three most renowned smartwatch platforms, namely the Pebble, Android Wear and Apple Watch. We will show you the tools, languages, APIs and capabilities of each platform so that you can get a feel for the kind of opportunities offered by this new usage paradigm and the investment required to leverage those opportunities. Be advised there will be some C, Java and Swift in this presentation.
Pada tugas DDP MIPA T.A 2014/2015 dapat memilih KD yang ada pada kurikulum K-13 sebagai berikut. Cantumkan nomor KD yang telah dipilih, pada kolom KD yang ada pada tabel identifikasi.
Presentation to the San Francisco transmedia meetup group - Transmedia SF. Thanks to everyone who came out and for the passionate discussion afterwards. It was a huge pleasure!
Presentation given at the Berkhamsted School IT Open Day on February 28th 2012.
Presented by Peter Nicholls, Vice Principal (Business Operations), exploring how the school has saved thousands by taking away printers and replacing them with MFDs.
Pada tugas DDP MIPA T.A 2014/2015 dapat memilih KD yang ada pada kurikulum K-13 sebagai berikut. Cantumkan nomor KD yang telah dipilih, pada kolom KD yang ada pada tabel identifikasi.
Daftar pembagian tugas presentasi kelompok kelas a bDasrieny Pratiwi
Pembagian tugas kelompok matakuliah Zoologi Vertebrata mulai dari pertemuan 3-16 (Kec UTS dan UAS). Dalam pembuatan makalah, gunakan kolom materi sebagai panduan untuk isi makalah yang akan dibuat, sehingga tidak keluar dari topik yang telah di tentukan...selamat bekerja, semoga selalu diberi kemudahan dan kelancaran untuk menyelesaikannya. Aamiin.
Lifestyle, Safety & Security Benefits
Superior Products and Services at Incredible Discounts
Today, consumers are seeking innovative ways to save money on commonly used products and services without sacrificing quality.
LifePERX has a solution...
Serverless: when functions and GitOps collideEdward Wilde
Abstract
--------
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 seconds (ish). Next we step up and look at the level of architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is openFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
Bio
---
Edward Wilde is a core contributor to the OpenFaaS project and platform architect at Form3
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...SOASTA
How To Set Up Continuous Integration for Mobile Apps, using Real Devices
Past Webinar
Jenkins core architect, Kohsuke Kawaguchi asserts, “Continuous Integration is synonymous with automation.” CI for mobile poses a challenge because to accurately test a mobile app, it must be installed and run on real mobile devices, a formerly manual process.
Built with Kohsuke’s guidance and enhancements, SOASTA’s new Jenkins plugin eliminates all manual tasks around mobile CI using actual mobile devices. In this webinar, CloudBees’ Mark Prichard and SOASTA’s Mike Ostenberg will demonstrate setting up 100% hands-free mobile CI.
Build automated tests with TouchTest that capture and replay complex gestures and mobile actions
Set up the automated build process using CloudBees DEV@Cloud (Jenkins as a Service) to make apps testable as part of the build
Wake up remote mobile devices
Automatically push out testable apps to real device labs located anywhere
Execute realistic automated test cases on a variety of devices in the lab
Reboot devices to assure valid results on subsequent runs
Review and analyze results anywhere directly in Jenkins in the cloud
Register now to reserve you space for this highly popular topic!
Pada tugas DDP MIPA T.A 2014/2015 dapat memilih KD yang ada pada kurikulum K-13 sebagai berikut. Cantumkan nomor KD yang telah dipilih, pada kolom KD yang ada pada tabel identifikasi.
Presentation to the San Francisco transmedia meetup group - Transmedia SF. Thanks to everyone who came out and for the passionate discussion afterwards. It was a huge pleasure!
Presentation given at the Berkhamsted School IT Open Day on February 28th 2012.
Presented by Peter Nicholls, Vice Principal (Business Operations), exploring how the school has saved thousands by taking away printers and replacing them with MFDs.
Pada tugas DDP MIPA T.A 2014/2015 dapat memilih KD yang ada pada kurikulum K-13 sebagai berikut. Cantumkan nomor KD yang telah dipilih, pada kolom KD yang ada pada tabel identifikasi.
Daftar pembagian tugas presentasi kelompok kelas a bDasrieny Pratiwi
Pembagian tugas kelompok matakuliah Zoologi Vertebrata mulai dari pertemuan 3-16 (Kec UTS dan UAS). Dalam pembuatan makalah, gunakan kolom materi sebagai panduan untuk isi makalah yang akan dibuat, sehingga tidak keluar dari topik yang telah di tentukan...selamat bekerja, semoga selalu diberi kemudahan dan kelancaran untuk menyelesaikannya. Aamiin.
Lifestyle, Safety & Security Benefits
Superior Products and Services at Incredible Discounts
Today, consumers are seeking innovative ways to save money on commonly used products and services without sacrificing quality.
LifePERX has a solution...
Serverless: when functions and GitOps collideEdward Wilde
Abstract
--------
This talk introduces OpenFaaS, an open source platform for serverless functions. We begin by installing, running the platform and invoking a machine learning function within 60 seconds (ish). Next we step up and look at the level of architecture and key pillars of OpenFaaS: developer first, operator friendly and community focused. We close by looking at a multiuser platform built on top OpenFaas.
The objective of this talk is openFaaS the serverless platform and OpenFaaS cloud the multi-user environment for practicing git ops with functions.
Bio
---
Edward Wilde is a core contributor to the OpenFaaS project and platform architect at Form3
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...SOASTA
How To Set Up Continuous Integration for Mobile Apps, using Real Devices
Past Webinar
Jenkins core architect, Kohsuke Kawaguchi asserts, “Continuous Integration is synonymous with automation.” CI for mobile poses a challenge because to accurately test a mobile app, it must be installed and run on real mobile devices, a formerly manual process.
Built with Kohsuke’s guidance and enhancements, SOASTA’s new Jenkins plugin eliminates all manual tasks around mobile CI using actual mobile devices. In this webinar, CloudBees’ Mark Prichard and SOASTA’s Mike Ostenberg will demonstrate setting up 100% hands-free mobile CI.
Build automated tests with TouchTest that capture and replay complex gestures and mobile actions
Set up the automated build process using CloudBees DEV@Cloud (Jenkins as a Service) to make apps testable as part of the build
Wake up remote mobile devices
Automatically push out testable apps to real device labs located anywhere
Execute realistic automated test cases on a variety of devices in the lab
Reboot devices to assure valid results on subsequent runs
Review and analyze results anywhere directly in Jenkins in the cloud
Register now to reserve you space for this highly popular topic!
JAX London 2014 "Moving to DevOps Mode: easy, hard or just plain terrifying?"Daniel Bryant
DevOps - is it for you? Heard about the wonderful ways it could benefit your organisation, but put off by the scary stories? Can you really make the transition to DevOps, and is it worth it? Listen and learn from two DevOps practitioners about their hands-on experiences in making the change. Covering a range of real life examples, this talk will explain the real business benefits to be had from using DevOps techniques, as well as the technical and personal aspects involved.
Whether it’s a small team within a startup or one of hundreds within a large organisation, this talk has practical advice on how to approach the challenge, what critical changes need to be considered, and what tools and processes are best suited for the situation. The adoption of DevOps is a game changing event for the industry. Learn why and learn how you can benefit from it too.
This talk was presented with Steve Poole (@spoole167) at JAX London, October 2014
Nebraska Trainer's Institute eLearning Presentaiotneaselsolutions
This presentation covered a few eLearning development tools as well as some mLearning Strategies. It was delivered during a ASTD Nebraska 2012 Trainer's Institute session.
You want JSON? You finally have JSON support within SQL Server! The much-asked-for, long-awaited feature is finally here! In this session, Davide will show how the JSON support works within SQL Server, what are the pros and cons, the capabilities and the limitations, and will also take a look at performance of JSON vs. an equivalent relational(ish) solution to solve the common “unknown-schema-upfront” and “I-wanna-be-flexible” problems.
Intro to DefectDojo at OWASP SwitzerlandMatt Tesauro
You’re tasked with ‘doing AppSec’ for your company and you’ve got more apps and issues than you know how to deal with. How do you make sense of the different tools outputs for all your different apps? DefectDojo can be your one source of truth and become the heart of your AppSec automation program.
DefectDojo grew out of a Product Security program 8 years ago and was created by AppSec people for AppSec people. In this talk, you’ll learn about DefectDojo and how to make the most of the many features it offers including its REST-based API. DefectDojo can be your one source of truth for discovered security vulnerabilities, report generation, aggregation of over 80 different security tools, inventory of applications, tracking testing efforts and metrics on the AppSec program. DefectDojo was the heart of an AppSec automation effort that saw an increase in assessments from 44 to 414 in two years. Don't you want 9.4 times more output from your AppSec program? It's time to ditch spreadsheets and get DefectDojo.
DF14: Drive Salesforce User Productivity with the Pebble SmartWatchjayvinarora
The Pebble Smart Watch combines with Salesforce to create a great user experience. Join us as we show you how to connect to the watch, display critical information on it, and communicate back to Salesforce in real time. You will experience a deep dive into the Pebble SDK and powerful platform technologies like the Streaming API.
MOE: Cross Platform Mobile Apps in JavaGergely Kis
Create cross platform mobile apps in Java with the Multi-OS Engine. This is a presentation by Gergely Kis at the Darwino Workshop November 2016, in Cologne, Germany
Fast deterministic screenshot tests for AndroidArnold Noronha
This is the slides from my presentation at Droidcon NYC 2015. We talk about the library we're open sourcing, and how you can use it to both iterate fast on UI code, and catch regressions in continuous integration.
This presentation was delivered at the ASTD Twin Cities Regional Conference. It discussed different design and development considerations for mLearning.
DevoxxUK 2014 "Moving to a DevOps Mode: Easy, Hard, or Just Plain Terrifying?"Daniel Bryant
DevOps – is it for you? Heard about the wonderful ways it could benefit your organisation, but put off by the scary stories? Can you really make the transition to DevOps, and is it worth it? Listen and learn from two DevOps practitioners about their hands-on experiences in making the change. Covering a range of real life examples, this talk will explain the real business benefits to be had from using DevOps techniques, as well as the technical and personal aspects involved.
Whether it’s a small team within a startup or one of hundreds within a large organisation, this talk has practical advice on how to approach the challenge, what critical changes need to be considered, and what tools and processes are best suited for the situation. The adoption of DevOps is a game changing event for the industry. Learn why and learn how you can benefit from it too.
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.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
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
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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.
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
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.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
2. #Devoxx #smartvoxx @sarbogast @eloudsa
• Who owns a smartwatch?
• Who is an Android developer?
• Who is an iOS developer?
• Who is a Pebble developer?
• Who is a Rolex developer?
• Who has already written a smartwatch app?
• Who is a member of the Night’s Watch?
Survey
3. #Devoxx #smartvoxx @sarbogast @eloudsa
Sébastien Arbogast
@sarbogast
• Java developer for 10 years
• iOS developers for 5 years (developer of the first Devoxx schedule
app)
• Pebble developer for 2 years
• Owner of TikTok Lunatik with iPod Nano
• VP of engineering for Take Eat Easy
4. #Devoxx #smartvoxx @sarbogast @eloudsa
Said Eloudrhiri
@eloudsa
• Developer since 1992
• Agile Coach and trainer
• Devoxx4Kids helper (Sphero, MindStorms, CodeCombat)
• Side Projects: mobile development
• Husband and father of Nora, Rayane and Djenna
5. #Devoxx #smartvoxx @sarbogast @eloudsa
Disclaimer
We are not related to Google,Apple or Pebble.
We are just curious developers sharing our experience.
Materials used in this presentation remains the property of their
owners.
Any questions?
22. #Devoxx #smartvoxx @sarbogast @eloudsa
Apple Watch
• Select the Watch App scheme
• Select your emulator configuration
• Run
• You can debug both emulators at the same time
23. #Devoxx #smartvoxx @sarbogast @eloudsa
Android
• Install Android Wear on your Phone
• Create Wear emulator
• Run Wear emulator
• Open ports to let emulator communicate with physical phone
• Pair the Phone and the Wear Emulator
• Deploy application on Wear and/or Mobile
24. #Devoxx #smartvoxx @sarbogast @eloudsa
Pebble
• Connect Pebble app with CloudPebble
• Enable Developer Connections
• Run in CloudPebble
30. #Devoxx #smartvoxx @sarbogast @eloudsa
Compatibility
• Android Wear:Android phones + iPhone (with some
limitations)
• Apple Watch: iPhones only
• Pebble:Android phones + iPhones (with SDKs to integrate
with apps on both platforms)
36. #Devoxx #smartvoxx @sarbogast @eloudsa
Human Interface Guidelines
• Lightweight interactions
• Holistic design
• Personal communication
37. #Devoxx #smartvoxx @sarbogast @eloudsa
Creative vision for Android Wear
• Suggest: Context Stream
• Demand: Cue Cards
• Glanceable
• Zero or Low interaction
Beam me up!
38. #Devoxx #smartvoxx @sarbogast @eloudsa
Guidelines and patterns
• Cards
• List options with Menus
• Execute actions with action bars
• Prompting User Action on the Phone
• Show Time and Data with the Status Bar
• Show Alerts and Get Decisions with Modal
Windows
• UsingVibrations and Haptic Feedback
• Handling Connection Problems
41. #Devoxx #smartvoxx @sarbogast @eloudsa
Android Wear
• Full-screen apps
• Notifications
• Custom notifications
• Watch face
4
“If you don't have a Rolex by the time you
reach 50,
then you have clearly failed in your life.”
Jacques Séguéla
43. #Devoxx #smartvoxx @sarbogast @eloudsa
Languages
• Apple Watch: Swift or Objective-C
• Android Wear: Java (or Kotlin or Groovy or …)
• Pebble: C or Javascript (Pebble.js)
44. #Devoxx #smartvoxx @sarbogast @eloudsa
self.table.setNumberOfRows(self.schedules!.count, withRowType: "schedule")
for (index,schedule) in self.schedules!.enumerate() {
if let row = self.table.rowControllerAtIndex(index)
as? ScheduleRowController {
row.label.setText(
schedule.title!.stringByReplacingOccurrencesOfString(
NSLocalizedString("Schedule for ", comment:""),
withString: ""
)
)
}
}
Apple Watch
51. #Devoxx #smartvoxx @sarbogast @eloudsa
static void main_window_load(Window *window) {
// Get information about the Window
Layer *window_layer = window_get_root_layer(window);
GRect bounds = layer_get_bounds(window_layer);
// Create the TextLayer with specific bounds
s_time_layer = text_layer_create(
GRect(0, PBL_IF_ROUND_ELSE(58, 52), bounds.size.w, 50));
// Improve the layout to be more like a watchface
text_layer_set_background_color(s_time_layer, GColorClear);
text_layer_set_text_color(s_time_layer, GColorBlack);
text_layer_set_text(s_time_layer, "00:00");
text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_BITHAM_42_BOLD));
text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter);
// Add it as a child layer to the Window's root layer
layer_add_child(window_layer, text_layer_get_layer(s_time_layer));
}
Pebble
61. #Devoxx #smartvoxx @sarbogast @eloudsa
function loadSiteList(accessToken, refreshToken) {
console.log("Loading site list for access token " + accessToken);
var response;
var req = new XMLHttpRequest();
// build the GET request
req.open('GET', "https://api.myfox.me:443/v2/client/site/items?access_token=" + accessToken, true);
req.onload = function(e) {
if (req.readyState == 4) {
// 200 - HTTP OK
if(req.status == 200) {
console.log(req.responseText);
response = JSON.parse(req.responseText);
var siteList;
if (response.status === 'OK') {
siteList = response.payload.items;
var msg = {};
msg.messageType = MessageType.SITE_LIST;
for(var i = 0; i < siteList.length; i++){
var site = siteList[i];
msg['' + site.siteId] = site.label;
}
console.log("Sending response back to Pebble: " + JSON.stringify(msg));
Pebble.sendAppMessage(msg);
} else {
console.log("Status not OK");
Pebble.sendAppMessage({messageType:MessageType.ERROR, errorMessage:"Could not load list of sites. Please try again later."});
}
} else if(req.status == 401 && refreshToken){
getNewAccessToken(refreshToken, loadSiteList);
} else {
console.log("Request returned error code " + req.status.toString());
Pebble.sendAppMessage({messageType:MessageType.ERROR});
}
}
};
req.send(null);
}
Phone to internet and back
63. #Devoxx #smartvoxx @sarbogast @eloudsa
Watch Connectivity
Apple
Watch
update application context
send message
transfer user info
transfer file
replace
live
queue
big data
64. #Devoxx #smartvoxx @sarbogast @eloudsa
if WCSession.isSupported() {
session = WCSession.defaultSession()
session?.delegate = self
session?.activateSession()
if let session = self.session where session.reachable {
session.sendMessage(["talkSlot" : talkSlotMessage as NSDictionary],
replyHandler: { (reply:[String : AnyObject]) -> Void in
},
errorHandler: { (error:NSError) -> Void in
print(error)
}
)
} else {
session?.transferUserInfo(["talkSlot" : talkSlotMessage as NSDictionary])
}
}
Watch Connectivity
65. #Devoxx #smartvoxx @sarbogast @eloudsa
Google API Client
Device
Google Play
Services
Your App
Google API Client
Google Play
services library
Message API
Data API
Node API
66. #Devoxx #smartvoxx @sarbogast @eloudsa
public class ScheduleActivity extends Activity {
// Google Play Services
private GoogleApiClient mApiClient;
…
@Override
protected void onStart() {
super.onStart();
mApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
mApiClient.connect();
}
@Override
protected void onStop() {
if ((mApiClient != null) && (mApiClient.isConnected())) {
Wearable.DataApi.removeListener(mApiClient, this);
mApiClient.disconnect();
}
super.onStop();
}
Google API Client
1
2
3
68. #Devoxx #smartvoxx @sarbogast @eloudsa
public class ScheduleActivity extends Activity {
…
private void sendMessage(final String path, final String message) {
new Thread(new Runnable() {
@Override
public void run() {
// broadcast the message to all connected devices
final NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mApiClient).await();
for (Node node : nodes.getNodes()) {
Wearable.MessageApi.sendMessage(mApiClient, node.getId(), path, message.getBytes()).await();
}
}
}).start();
}
Message API: Send Message
69. #Devoxx #smartvoxx @sarbogast @eloudsa
public class WearService extends WearableListenerService {
…
@Override
public void onMessageReceived(MessageEvent messageEvent) {
// Processing the incoming message
String path = messageEvent.getPath();
String data = new String(messageEvent.getData());
if (path.equalsIgnoreCase(Constants.SCHEDULES_PATH)) {
retrieveSchedules();
return;
}
…
Message API: Message Received
70. #Devoxx #smartvoxx @sarbogast @eloudsa
Data Synchronisation
Phone Watch
Node Node
Data API.putDataItem()
Wearable.DataApi
onDataChanged()
DataApi.DataListener
71. #Devoxx #smartvoxx @sarbogast @eloudsa
// send Schedules to the watch
private void sendSchedules(List<Link> schedules) {
final PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(Constants.SCHEDULES_PATH);
ArrayList<DataMap> schedulesDataMap = new ArrayList<>();
// process each schedule
for (Link schedule : schedules) {
DataMap scheduleDataMap = new DataMap();
// process and push schedule's data
scheduleDataMap.putString("day", Utils.getLastPartUrl(schedule.getHref()));
scheduleDataMap.putString("title", schedule.getTitle());
schedulesDataMap.add(scheduleDataMap);
}
// store the list in the datamap to send it to the watch
putDataMapRequest.getDataMap().putDataMapArrayList(Constants.LIST_PATH, schedulesDataMap);
// send the schedules
if (mApiClient.isConnected()) {
Wearable.DataApi.putDataItem(mApiClient, putDataMapRequest.asPutDataRequest());
}
}
Data API: Send Data
1
2
3
4
72. #Devoxx #smartvoxx @sarbogast @eloudsa
@Override
public void onDataChanged(DataEventBuffer dataEventBuffer) {
for (DataEvent event : dataEventBuffer) {
// Check if list of schedules has changed
if (event.getType() == DataEvent.TYPE_CHANGED && event.getDataItem().getUri().getPath().startsWith(Constants.SCHEDULES_PATH)) {
// get the list of schedules from the incoming data event
SchedulesListWrapper schedulesListWrapper = new SchedulesListWrapper();
final List<Schedule> schedulesList = schedulesListWrapper.getSchedulesList(event);
runOnUiThread(new Runnable() {
@Override
public void run() {
// hide the progress bar
findViewById(R.id.progressBar).setVisibility(View.GONE);
mListViewAdapter.refresh(schedulesList);
}
});
return;
}
}
}
1
2
3
4
Data API: Data changed
79. #Devoxx #smartvoxx @sarbogast @eloudsa
Apple Watch
• Package the Apple Watch app with the iPhone app
• Release the iPhone app like any other
• Wait for review…
• Wait again…
• Wait some more…
81. #Devoxx #smartvoxx @sarbogast @eloudsa
Prepare the build
• Include permissions required by Wear into Phone (Manifest)
• Use same package name and version number (build.gradle)
89. #Devoxx #smartvoxx @sarbogast @eloudsa
Summary
• Huge inequalities in terms of development platform ease-of-
use
• Apple obviously took time to add abstraction layers that make
development more expressive
• Short learning curve on Android Wear compared to Apple
Watch
• Tooling support not up-to-date on Android
• Documentation is not really finished for both platforms
• Not all apps make sense on smartwatches
90. #Devoxx #smartvoxx @sarbogast @eloudsa
Apps that work on smartwatches
• countdowns and timers
• status checks: what’s the temperature? what’s my next
session? what’s the score of the game?
• remote controls: switch off the light, change the music, open
my hotel room, pay for my shopping
• notification responders: invitation to a meeting -> what’s the
meeting about, somebody sent me a message -> what does it
say?
• data trackers: where am I? how many calories am I burning?
what’s my speed?)
91. #Devoxx #smartvoxx @sarbogast @eloudsa
Apps that don’t make sense
• games of any kind
• any long reading (news, books, etc.)
• ecommerce
• video or image viewing
• anything that requires text input