Created
September 6, 2017 13:50
-
-
Save johnjohndoe/1be8b784bc96dff81129d4eb55601106 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
GET /eventfeed/0?start=2017-09-04&end=2017-09-05 HTTP/1.1 | |
Host: droidcon.de | |
Connection: Keep-Alive | |
Accept-Encoding: gzip | |
User-Agent: okhttp/3.8.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
HTTP/1.1 200 OK | |
Date: Wed, 06 Sep 2017 13:45:23 GMT | |
Server: Apache | |
X-Drupal-Cache: MISS | |
Expires: Sun, 19 Nov 1978 05:00:00 GMT | |
Cache-Control: no-cache, must-revalidate | |
X-Content-Type-Options: nosniff | |
Vary: Accept-Encoding,User-Agent | |
Content-Encoding: gzip | |
Content-Length: 45668 | |
Keep-Alive: timeout=4, max=900 | |
Content-Type: application/json | |
Connection: Keep-alive | |
[{"title":"Genetically Modified Tests","url":"\/sessions\/genetically-modified-tests","room":"3518","speakers":[{"name":"Xavier F. Gouchet","url":"\/users\/xavier-f-gouchet"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T14:00:00Z","end":"2017-09-04T14:25:00Z","id":"2430","debug":{"vid":"2430","uid":"659","title":"Genetically Modified Tests","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2430","type":"session","language":"en","created":"1491552882","changed":"1503047007","tnid":"0","translate":"0","revision_timestamp":"1503047007","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"This talk will first explain the theory behind Mutation Testing, and the pros and cons of using it in production, based on the experience acquired while building the Deezer application. We\u0027ll then give a concrete explanation of how it works, how it can easily be added in any Android project, and then explore a few use cases on a sample project.\r\n\r\nAccording to my past experience as a speaker, I gave a talk about Aspect Oriented Programming on Android at DroidconFrance 2015 (https:\/\/www.youtube.com\/watch?v=s8hGWgTaDZU\u0026index=1\u0026t=4s\u0026list=WL) and BigAndroidBBQ Europe 2016, and as a 4 hours workshop during AppDevCon 2017. \r\nI also gave this talk at CodeMobile UK 2017.\r\n","format":null,"safe_value":"This talk will first explain the theory behind Mutation Testing, and the pros and cons of using it in production, based on the experience acquired while building the Deezer application. We\u0026#039;ll then give a concrete explanation of how it works, how it can easily be added in any Android project, and then explore a few use cases on a sample project.\r\n\r\nAccording to my past experience as a speaker, I gave a talk about Aspect Oriented Programming on Android at DroidconFrance 2015 (https:\/\/www.youtube.com\/watch?v=s8hGWgTaDZU\u0026amp;index=1\u0026amp;t=4s\u0026amp;list=WL) and BigAndroidBBQ Europe 2016, and as a 4 hours workshop during AppDevCon 2017. \r\nI also gave this talk at CodeMobile UK 2017.\r\n"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 12:00:00","value2":"2017-09-04 12:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ETesting is recognized as one of the most important best practice in development. Whether you only write a just a few unit test, or have a 100% code coverage, your tests ensure the quality of your app. But what ensures the quality of your tests ? This talk will present the concept of Mutation testing, and how you can use it while writing tests for Android apps\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ETesting is recognized as one of the most important best practice in development. Whether you only write a just a few unit test, or have a 100% code coverage, your tests ensure the quality of your app. But what ensures the quality of your tests ? This talk will present the concept of Mutation testing, and how you can use it while writing tests for Android apps\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"659"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491552882","last_comment_name":null,"last_comment_uid":"659","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"xgouchet","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ETesting is recognized as one of the most important best practice in development. Whether you only write a just a few unit test, or have a 100% code coverage, your tests ensure the quality of your app. But what ensures the quality of your tests ? This talk will present the concept of Mutation testing, and how you can use it while writing tests for Android apps\u003C\/p\u003E\n"},{"title":"Zen Code Reviews","url":"\/sessions\/zen-code-reviews","room":"3519","speakers":[{"name":"Xavier F. Gouchet","url":"\/users\/xavier-f-gouchet"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T16:00:00Z","end":"2017-09-04T16:25:00Z","id":"2431","debug":{"vid":"2431","uid":"659","title":"Zen Code Reviews","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2431","type":"session","language":"en","created":"1491552975","changed":"1503046991","tnid":"0","translate":"0","revision_timestamp":"1503046991","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"After 3 years of improving our code review process, and an android team growing from 2 to 18 developers, we now have a smooth process to make sure our codebase is the best it can be. This talk is our way to share some of the caveats and obstacles we faced and let other teams get up to speed with code reviews\r\n\r\nAccording to my experience as a speaker, I gave a talk about Aspect Oriented Programming on Android at DroidconFrance 2015 (https:\/\/www.youtube.com\/watch?v=s8hGWgTaDZU\u0026index=1\u0026t=4s\u0026list=WL) and BigAndroidBBQ Europe 2016, and as a 4 hours workshop during AppDevCon 2017. \r\nI also gave a talk about Mutation Testing at CodeMobile UK 2017, and a talk on a custom git tool during AndroidMakers 2017\r\n\r\nThis would be the first time this talk is presented in any conference.","format":null,"safe_value":"After 3 years of improving our code review process, and an android team growing from 2 to 18 developers, we now have a smooth process to make sure our codebase is the best it can be. This talk is our way to share some of the caveats and obstacles we faced and let other teams get up to speed with code reviews\r\n\r\nAccording to my experience as a speaker, I gave a talk about Aspect Oriented Programming on Android at DroidconFrance 2015 (https:\/\/www.youtube.com\/watch?v=s8hGWgTaDZU\u0026amp;index=1\u0026amp;t=4s\u0026amp;list=WL) and BigAndroidBBQ Europe 2016, and as a 4 hours workshop during AppDevCon 2017. \r\nI also gave a talk about Mutation Testing at CodeMobile UK 2017, and a talk on a custom git tool during AndroidMakers 2017\r\n\r\nThis would be the first time this talk is presented in any conference."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 14:00:00","value2":"2017-09-04 14:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWhatever the size of your team, code review is one of the best way to keep your code base coherent, safe and to share knowledge across your whole team. This talk will explore a few tools and workflows that you can use to include code review in your team, and all the best practices and things to avoid.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWhatever the size of your team, code review is one of the best way to keep your code base coherent, safe and to share knowledge across your whole team. This talk will explore a few tools and workflows that you can use to include code review in your team, and all the best practices and things to avoid.\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"659"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491552975","last_comment_name":null,"last_comment_uid":"659","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"xgouchet","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWhatever the size of your team, code review is one of the best way to keep your code base coherent, safe and to share knowledge across your whole team. This talk will explore a few tools and workflows that you can use to include code review in your team, and all the best practices and things to avoid.\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n"},{"title":"Get creative and squeeze performance out of SQLite","url":"\/sessions\/get-creative-and-squeeze-performance-out-sqlite","room":"3518","speakers":[{"name":"Jason Feinstein","url":"\/users\/jason-feinstein"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T15:30:00Z","end":"2017-09-05T16:10:00Z","id":"2438","debug":{"vid":"2438","uid":"663","title":"Get creative and squeeze performance out of SQLite","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2438","type":"session","language":"en","created":"1491572909","changed":"1503046973","tnid":"0","translate":"0","revision_timestamp":"1503046973","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I have not yet put together all the slides for this talk, so I may need to tweak the abstract to remove some items if it looks like my slides would make me go over the 40 minute mark.","format":null,"safe_value":"I have not yet put together all the slides for this talk, so I may need to tweak the abstract to remove some items if it looks like my slides would make me go over the 40 minute mark."}]},"field_session_datetime":{"und":[{"value":"2017-09-05 13:30:00","value2":"2017-09-05 14:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWhether you love it or loathe it:\u0026nbsp;SQLite is here to stay on Android, so let\u0027s make the most of it! \u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EDo you deal with a lot of data in your app, and need to insert it as fast as possible? We\u0027ll look at best practices (including how to apply them to the new Architecture Component: Room).\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIs your database so large that queries take a long time to execute? We will discuss how to design indexes on your tables, and even go into how you could shard your tables when indexes don\u0027t provide enough of a boost. \u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWhen it comes time to display your data, does your app run out of memory with all the data it needs to load into the RecyclerView adapter? Let\u0027s look into making an adapter that uses a Cursor.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAnd as a bonus: we\u0027ll talk about how you can cut out the middleman and\u0026nbsp;have your server deliver an SQLiteDatabase file as a response format.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWhether you love it or loathe it:\u00a0SQLite is here to stay on Android, so let\u0027s make the most of it! \u00a0\u003C\/p\u003E\n\u003Cp\u003EDo you deal with a lot of data in your app, and need to insert it as fast as possible? We\u0027ll look at best practices (including how to apply them to the new Architecture Component: Room).\u003C\/p\u003E\n\u003Cp\u003EIs your database so large that queries take a long time to execute? We will discuss how to design indexes on your tables, and even go into how you could shard your tables when indexes don\u0027t provide enough of a boost. \u00a0\u003C\/p\u003E\n\u003Cp\u003EWhen it comes time to display your data, does your app run out of memory with all the data it needs to load into the RecyclerView adapter? Let\u0027s look into making an adapter that uses a Cursor.\u003C\/p\u003E\n\u003Cp\u003EAnd as a bonus: we\u0027ll talk about how you can cut out the middleman and\u00a0have your server deliver an SQLiteDatabase file as a response format.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"185"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"663"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491572909","last_comment_name":null,"last_comment_uid":"663","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"jasonwyatt","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWhether you love it or loathe it:\u00a0SQLite is here to stay on Android, so let\u0027s make the most of it! \u00a0\u003C\/p\u003E\n\u003Cp\u003EDo you deal with a lot of data in your app, and need to insert it as fast as possible? We\u0027ll look at best practices (including how to apply them to the new Architecture Component: Room).\u003C\/p\u003E\n\u003Cp\u003EIs your database so large that queries take a long time to execute? We will discuss how to design indexes on your tables, and even go into how you could shard your tables when indexes don\u0027t provide enough of a boost. \u00a0\u003C\/p\u003E\n\u003Cp\u003EWhen it comes time to display your data, does your app run out of memory with all the data it needs to load into the RecyclerView adapter? Let\u0027s look into making an adapter that uses a Cursor.\u003C\/p\u003E\n\u003Cp\u003EAnd as a bonus: we\u0027ll talk about how you can cut out the middleman and\u00a0have your server deliver an SQLiteDatabase file as a response format.\u003C\/p\u003E\n"},{"title":"Android Things Workshop, From Dev To Maker","url":"\/sessions\/android-things-workshop-dev-maker","room":"3521","speakers":[{"name":"Gautier Mechling","url":"\/users\/gautier-mechling"},{"name":"Romain Menetrier","url":"\/users\/romain-menetrier"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-05T14:00:00Z","end":"2017-09-05T16:15:00Z","id":"2440","debug":{"vid":"2440","uid":"664","title":"Android Things Workshop, From Dev To Maker","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2440","type":"session","language":"en","created":"1491600598","changed":"1502377492","tnid":"0","translate":"0","revision_timestamp":"1502377492","revision_uid":"11","field_session_audio":[],"field_session_comments":{"und":[{"value":"*WARNING* This proposal is a workshop\r\n\r\nWe know the format is not proposed but, why not? :-)\r\nThe best length for this session is 3 hours.\r\nIt has been given to Devoxx France and we received very good feedback.","format":null,"safe_value":"*WARNING* This proposal is a workshop\r\n\r\nWe know the format is not proposed but, why not? :-)\r\nThe best length for this session is 3 hours.\r\nIt has been given to Devoxx France and we received very good feedback."}]},"field_session_datetime":{"und":[{"value":"2017-09-05 12:00:00","value2":"2017-09-05 14:15:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EYou are an Android developer? You want to start building real devices yourself? Android Things is the platform for you!\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAndroid Things is the new OS for embedded systems from Google. Its crazy goal is to make it easy for Android devs to make things in the physical world. And we will try to give you a glimpse of its possibilities.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EDuring this workshop, all attendees will build \u003Cstrong\u003Ea wonderful connected catapult\u003C\/strong\u003E based on a Raspberry Pi.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EYou will need to bring for this session :\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003EYour computer with\u0026nbsp;\u003Ca href=\u0022https:\/\/developer.android.com\/studio\/index.html\u0022\u003EAndroid Studio installed (last stable)\u003C\/a\u003E\u003C\/li\u003E\r\n\t\u003Cli\u003EYour creativity\u003C\/li\u003E\r\n\t\u003Cli\u003ELots of fun\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n\r\n\u003Cp\u003EYou don\u0027t need to bring any other material, we will take care of it for you.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EYou are an Android developer? You want to start building real devices yourself? Android Things is the platform for you!\u003C\/p\u003E\n\u003Cp\u003EAndroid Things is the new OS for embedded systems from Google. Its crazy goal is to make it easy for Android devs to make things in the physical world. And we will try to give you a glimpse of its possibilities.\u003C\/p\u003E\n\u003Cp\u003EDuring this workshop, all attendees will build \u003Cstrong\u003Ea wonderful connected catapult\u003C\/strong\u003E based on a Raspberry Pi.\u003C\/p\u003E\n\u003Cp\u003EYou will need to bring for this session :\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EYour computer with\u00a0\u003Ca href=\u0022https:\/\/developer.android.com\/studio\/index.html\u0022\u003EAndroid Studio installed (last stable)\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003EYour creativity\u003C\/li\u003E\n\u003Cli\u003ELots of fun\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EYou don\u0027t need to bring any other material, we will take care of it for you.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"1924","uid":"664","filename":"Workshop Android Things - Pre\u0301sentation.pdf","uri":"public:\/\/media\/documents\/Workshop Android Things - Pre\u0301sentation.pdf","filemime":"application\/pdf","filesize":"3523200","status":"1","timestamp":"1491600074","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":"The slides contains the theorical content presentated at the beginning of the session and the link to the workshop instructions"}]},"field_session_media_video":{"und":[{"fid":"1925","uid":"664","filename":"Android Things Catapult Workshop","uri":"oembed:\/\/https%3A\/\/www.youtube.com\/watch%3Fv%3D8IJgy1IaCIQ","filemime":"video\/oembed","filesize":"0","status":"1","timestamp":"1491600280","type":"video","rdf_mapping":[],"metadata":{"oembed":{"type":"video","provider_url":"https:\/\/www.youtube.com\/","thumbnail_height":360,"title":"Android Things Catapult Workshop","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/8IJgy1IaCIQ\/hqdefault.jpg","width":480,"provider_name":"YouTube","height":270,"html":"\u003Ciframe width=\u0022480\u0022 height=\u0022270\u0022 src=\u0022https:\/\/www.youtube.com\/embed\/8IJgy1IaCIQ?feature=oembed\u0022 frameborder=\u00220\u0022 allowfullscreen\u003E\u003C\/iframe\u003E","author_name":"Gautier Mechling","version":"1.0","thumbnail_width":480,"author_url":"https:\/\/www.youtube.com\/channel\/UCSQ7TwPaLA5JwyJ-cxD1HyQ","original_url":"https:\/\/www.youtube.com\/watch?v=8IJgy1IaCIQ","provider":"default:youtube"}},"alt":"","title":"","display":"1","description":""}]},"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":"Array"}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"197"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"97"},{"target_id":"665"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491600598","last_comment_name":null,"last_comment_uid":"664","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"eyal","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EYou are an Android developer? You want to start building real devices yourself? Android Things is the platform for you!\u003C\/p\u003E\n\u003Cp\u003EAndroid Things is the new OS for embedded systems from Google. Its crazy goal is to make it easy for Android devs to make things in the physical world. And we will try to give you a glimpse of its possibilities.\u003C\/p\u003E\n\u003Cp\u003EDuring this workshop, all attendees will build \u003Cstrong\u003Ea wonderful connected catapult\u003C\/strong\u003E based on a Raspberry Pi.\u003C\/p\u003E\n\u003Cp\u003EYou will need to bring for this session :\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EYour computer with\u00a0\u003Ca href=\u0022https:\/\/developer.android.com\/studio\/index.html\u0022\u003EAndroid Studio installed (last stable)\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003EYour creativity\u003C\/li\u003E\n\u003Cli\u003ELots of fun\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EYou don\u0027t need to bring any other material, we will take care of it for you.\u003C\/p\u003E\n"},{"title":"Things I wish I knew when I started building Android SDK\/Libraries","url":"\/sessions\/things-i-wish-i-knew-when-i-started-building-android-sdklibraries","room":"3518","speakers":[{"name":"Nishant Srivastava","url":"\/users\/nishant-srivastava"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T14:00:00Z","end":"2017-09-05T14:40:00Z","id":"2443","debug":{"vid":"2443","uid":"667","title":"Things I wish I knew when I started building Android SDK\/Libraries","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2443","type":"session","language":"en","created":"1491612263","changed":"1503046924","tnid":"0","translate":"0","revision_timestamp":"1503046924","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"Link to slides: https:\/\/docs.google.com\/presentation\/d\/1XaD7a0ASqXiRM-cmAOndr3Uu1ROp1DBa-SbaUGtashA\/edit?usp=sharing\r\nLink to related blog post: https:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\r\nLinks to previous talks: https:\/\/github.com\/nisrulz\/nisrulz.github.io#sessionstalks\r\n\r\nLinkedin: https:\/\/www.linkedin.com\/in\/nisrulz\/\r\nGithub: https:\/\/github.com\/nisrulz\r\nBlog: crushingcode.nisrulz.com\r\nSlides.com : https:\/\/slides.com\/nisrulz\/\r\nSpeakerDeck : https:\/\/speakerdeck.com\/nisrulz\r\n\r\nDeveloped Silverpush\u0027s patent UAB (Unique Audio Beacon) Technology \r\nPatent 1: https:\/\/www.google.com\/patents\/WO2016005999A3 \r\nPatent 2: https:\/\/www.google.com\/patents\/WO2016006000A3","format":null,"safe_value":"Link to slides: https:\/\/docs.google.com\/presentation\/d\/1XaD7a0ASqXiRM-cmAOndr3Uu1ROp1DBa-SbaUGtashA\/edit?usp=sharing\r\nLink to related blog post: https:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\r\nLinks to previous talks: https:\/\/github.com\/nisrulz\/nisrulz.github.io#sessionstalks\r\n\r\nLinkedin: https:\/\/www.linkedin.com\/in\/nisrulz\/\r\nGithub: https:\/\/github.com\/nisrulz\r\nBlog: crushingcode.nisrulz.com\r\nSlides.com : https:\/\/slides.com\/nisrulz\/\r\nSpeakerDeck : https:\/\/speakerdeck.com\/nisrulz\r\n\r\nDeveloped Silverpush\u0026#039;s patent UAB (Unique Audio Beacon) Technology \r\nPatent 1: https:\/\/www.google.com\/patents\/WO2016005999A3 \r\nPatent 2: https:\/\/www.google.com\/patents\/WO2016006000A3"}]},"field_session_datetime":{"und":[{"value":"2017-09-05 12:00:00","value2":"2017-09-05 12:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAs more and more people start building Android Libraries, the whole process of building a better API for developers is getting bloated and everyone is coming up with their own ideas. However, if android library developers follow a certain standard with a rationale they can avoid most of the pitfalls. Building an android library is easy, but building one that keeps in mind developer happiness is rare but definitely not hard. The session would cover how one can build android libraries taking in consideration to exposing more informative API, making sure the best resources are utilized efficiently and that one does not force the app developer with redundant dependencies and complexities.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ELink to blog post: \u003Ca href=\u0022https:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u0022\u003Ehttps:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u003C\/a\u003E\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAs more and more people start building Android Libraries, the whole process of building a better API for developers is getting bloated and everyone is coming up with their own ideas. However, if android library developers follow a certain standard with a rationale they can avoid most of the pitfalls. Building an android library is easy, but building one that keeps in mind developer happiness is rare but definitely not hard. The session would cover how one can build android libraries taking in consideration to exposing more informative API, making sure the best resources are utilized efficiently and that one does not force the app developer with redundant dependencies and complexities.\u003C\/p\u003E\n\u003Cp\u003ELink to blog post: \u003Ca href=\u0022https:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u0022\u003Ehttps:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u003C\/a\u003E\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"667"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491612263","last_comment_name":null,"last_comment_uid":"667","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"nisrulz","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAs more and more people start building Android Libraries, the whole process of building a better API for developers is getting bloated and everyone is coming up with their own ideas. However, if android library developers follow a certain standard with a rationale they can avoid most of the pitfalls. Building an android library is easy, but building one that keeps in mind developer happiness is rare but definitely not hard. The session would cover how one can build android libraries taking in consideration to exposing more informative API, making sure the best resources are utilized efficiently and that one does not force the app developer with redundant dependencies and complexities.\u003C\/p\u003E\n\u003Cp\u003ELink to blog post: \u003Ca href=\u0022https:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u0022\u003Ehttps:\/\/android.jlelse.eu\/things-i-wish-i-knew-when-i-started-building-android-sdk-libraries-dba1a524d619\u003C\/a\u003E\u003C\/p\u003E\n"},{"title":"Android Security, an Enterprise perspective","url":"\/sessions\/android-security-enterprise-perspective","room":"3521","speakers":[{"name":"Pietro Maggi","url":"\/users\/pietro-maggi"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T17:00:00Z","end":"2017-09-04T17:40:00Z","id":"2445","debug":{"vid":"2445","uid":"232","title":"Android Security, an Enterprise perspective","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2445","type":"session","language":"en","created":"1491679740","changed":"1503048062","tnid":"0","translate":"0","revision_timestamp":"1503048062","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"This talk has been presented at droidcon Turin with more than 120 attendees and a very good reception.","format":null,"safe_value":"This talk has been presented at droidcon Turin with more than 120 attendees and a very good reception."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 15:00:00","value2":"2017-09-04 15:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Ch3\u003EDebunking Android security Myths with data\u003C\/h3\u003E\r\n\r\n\u003Cp\u003EIn this talk I\u2019m presenting some hot topics for European Corporation in the process to adopt Android as COSU devices.\u003Cbr \/\u003E\r\nHow features introduced in Android 6.0, Google Mobile Services and third party extensions collaborate to provide to the market state of art solutions.\u003Cbr \/\u003E\r\nThis talk will answer to questions like:\u003Cbr \/\u003E\r\n1. Android threats, real or FUD?\u003Cbr \/\u003E\r\n2. Security updates, why are they critical for the Enterprise market\u003Cbr \/\u003E\r\n3. Security and Long Life Cycle of Android devices, what are the market best practices\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session is powered by Zebra\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Ch3\u003EDebunking Android security Myths with data\u003C\/h3\u003E\n\u003Cp\u003EIn this talk I\u2019m presenting some hot topics for European Corporation in the process to adopt Android as COSU devices.\u003Cbr \/\u003E\nHow features introduced in Android 6.0, Google Mobile Services and third party extensions collaborate to provide to the market state of art solutions.\u003Cbr \/\u003E\nThis talk will answer to questions like:\u003Cbr \/\u003E\n1. Android threats, real or FUD?\u003Cbr \/\u003E\n2. Security updates, why are they critical for the Enterprise market\u003Cbr \/\u003E\n3. Security and Long Life Cycle of Android devices, what are the market best practices\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Zebra\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3571"}]},"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"232"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1491679740","last_comment_name":null,"last_comment_uid":"232","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"[email protected]","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Ch3\u003EDebunking Android security Myths with data\u003C\/h3\u003E\n\u003Cp\u003EIn this talk I\u2019m presenting some hot topics for European Corporation in the process to adopt Android as COSU devices.\u003Cbr \/\u003E\nHow features introduced in Android 6.0, Google Mobile Services and third party extensions collaborate to provide to the market state of art solutions.\u003Cbr \/\u003E\nThis talk will answer to questions like:\u003Cbr \/\u003E\n1. Android threats, real or FUD?\u003Cbr \/\u003E\n2. Security updates, why are they critical for the Enterprise market\u003Cbr \/\u003E\n3. Security and Long Life Cycle of Android devices, what are the market best practices\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Zebra\u003C\/p\u003E\n"},{"title":"How I decreased the power consumption of a native Google Android app (and why)","url":"\/sessions\/how-i-decreased-power-consumption-native-google-android-app-and-why","room":"3519","speakers":[{"name":"Olivier Philippot","url":"\/users\/olivier-philippot"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T11:30:00Z","end":"2017-09-04T12:10:00Z","id":"2456","debug":{"vid":"2456","uid":"674","title":"How I decreased the power consumption of a native Google Android app (and why)","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2456","type":"session","language":"en","created":"1492093021","changed":"1503046908","tnid":"0","translate":"0","revision_timestamp":"1503046908","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 09:30:00","value2":"2017-09-04 10:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"It\u0027s not often that an Android developer decides to touch the heart of his favorite OS. The Android Open Source Project (AOSP) comes straight from Google\u0027s plants in Palo Alto. Although not perfect, it is sufficiently powerful and reliable to serve as the basis for the operation of 1.4 billion smartphones in the world.\r\nSo when one of our customers asked me if we could reduce the power consumption of SystemUI, one of the basic applications of the Android user interface (among other things the status bar), I sincerely had fear. But the experience has been rewarding!\r\nA session to tell you why big energy gains are possible on Android (and more generally on all technos) and how to get these gains.","summary":"","format":"plain_text","safe_value":"\u003Cp\u003EIt\u0026#039;s not often that an Android developer decides to touch the heart of his favorite OS. The Android Open Source Project (AOSP) comes straight from Google\u0026#039;s plants in Palo Alto. Although not perfect, it is sufficiently powerful and reliable to serve as the basis for the operation of 1.4 billion smartphones in the world.\u003Cbr \/\u003E\nSo when one of our customers asked me if we could reduce the power consumption of SystemUI, one of the basic applications of the Android user interface (among other things the status bar), I sincerely had fear. But the experience has been rewarding!\u003Cbr \/\u003E\nA session to tell you why big energy gains are possible on Android (and more generally on all technos) and how to get these gains.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"674"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1492093021","last_comment_name":null,"last_comment_uid":"674","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"simplygreenit","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIt\u0026#039;s not often that an Android developer decides to touch the heart of his favorite OS. The Android Open Source Project (AOSP) comes straight from Google\u0026#039;s plants in Palo Alto. Although not perfect, it is sufficiently powerful and reliable to serve as the basis for the operation of 1.4 billion smartphones in the world.\u003Cbr \/\u003E\nSo when one of our customers asked me if we could reduce the power consumption of SystemUI, one of the basic applications of the Android user interface (among other things the status bar), I sincerely had fear. But the experience has been rewarding!\u003Cbr \/\u003E\nA session to tell you why big energy gains are possible on Android (and more generally on all technos) and how to get these gains.\u003C\/p\u003E\n"},{"title":"Doo z z z z z e","url":"\/sessions\/doo-z-z-z-z-z-e","room":"3521","speakers":[{"name":"Ralf Wondratschek","url":"\/users\/ralf-wondratschek"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-04T10:45:00Z","end":"2017-09-04T11:25:00Z","id":"2457","debug":{"vid":"2457","uid":"676","title":"Doo z z z z z e","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2457","type":"session","language":"en","created":"1492107223","changed":"1503046890","tnid":"0","translate":"0","revision_timestamp":"1503046890","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 08:45:00","value2":"2017-09-04 09:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWith Android Marshmallow Google introduced two new power-saving modes: Doze and App Standby. True to their intent, both provide longer battery life and better performance. Their effectiveness further improved in Android Nougat. However, these modes carry some limitations developers should be aware of. To further improve power-saving Android O will be even more restrictive and disable common implicit broadcasts. Many apps rely on implicit broadcasts so if you\u0027re using those, supporting older and newer devices at the same time is going to be more challenging.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis talk will explain why these new APIs are better. We will discuss the given tools and dive into the new APIs. Finally, we will explore effective solutions to avoid duplicating code over and over again for different SDK versions.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWith Android Marshmallow Google introduced two new power-saving modes: Doze and App Standby. True to their intent, both provide longer battery life and better performance. Their effectiveness further improved in Android Nougat. However, these modes carry some limitations developers should be aware of. To further improve power-saving Android O will be even more restrictive and disable common implicit broadcasts. Many apps rely on implicit broadcasts so if you\u0027re using those, supporting older and newer devices at the same time is going to be more challenging.\u003C\/p\u003E\n\u003Cp\u003EThis talk will explain why these new APIs are better. We will discuss the given tools and dive into the new APIs. Finally, we will explore effective solutions to avoid duplicating code over and over again for different SDK versions.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"676"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1492107223","last_comment_name":null,"last_comment_uid":"676","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"vRallev","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWith Android Marshmallow Google introduced two new power-saving modes: Doze and App Standby. True to their intent, both provide longer battery life and better performance. Their effectiveness further improved in Android Nougat. However, these modes carry some limitations developers should be aware of. To further improve power-saving Android O will be even more restrictive and disable common implicit broadcasts. Many apps rely on implicit broadcasts so if you\u0027re using those, supporting older and newer devices at the same time is going to be more challenging.\u003C\/p\u003E\n\u003Cp\u003EThis talk will explain why these new APIs are better. We will discuss the given tools and dive into the new APIs. Finally, we will explore effective solutions to avoid duplicating code over and over again for different SDK versions.\u003C\/p\u003E\n"},{"title":"How to cache and load data without even trying ","url":"\/sessions\/how-cache-and-load-data-without-even-trying","room":"3520","speakers":[{"name":"Brian Plummer","url":"\/users\/brian-plummer"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T11:00:00Z","end":"2017-09-05T11:40:00Z","id":"2460","debug":{"vid":"2460","uid":"679","title":"How to cache and load data without even trying ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2460","type":"session","language":"en","created":"1492257651","changed":"1503046638","tnid":"0","translate":"0","revision_timestamp":"1503046638","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"My talk is currently the most popular video coming out of droidcon Italy 2017. Here is the link https:\/\/m.youtube.com\/watch?v=TvsOsgd0--c","format":null,"safe_value":"My talk is currently the most popular video coming out of droidcon Italy 2017. Here is the link https:\/\/m.youtube.com\/watch?v=TvsOsgd0--c"}]},"field_session_datetime":{"und":[{"value":"2017-09-05 09:00:00","value2":"2017-09-05 09:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAndroid has a wealth of open source libraries covering everything from network clients to UI frameworks. Something that is missing is a library to help load data from multiple sources, particularly 2 levels of caching + network. NY Times has recently open sourced such a library built on RxJava, Guava + OKIO which will dramatically simplifiy the common task of \u201cget from mem cache, if not there get from disk, if not there hit the network, parse and update cache\u201c. I\u0027ll be taking users through the problems that we tried to solve and the solution that we propose for it.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nThe library is Store\u0026nbsp;\u003Ca href=\u0022https:\/\/github.com\/NYTimes\/Store\u0022\u003Ehttps:\/\/github.com\/NYTimes\/Store\u003C\/a\u003E. Stores dramatically simplify data loading and caching while being exposed through reactive interfaces. Stores are the foundation of the NY Times app and allow us to both have best in class startup time as well as allowing us to work offline. In this talk I\u0027ll introduce the library and then go through the open source tools we used to build it. Topics will include: Streaming data from OKHTTP using BufferedSource\/Sink, Creation a blazing fast file system. Using Guava for intelligent caching, leveraging RxJava for combining and transforming multiple data sources\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAndroid has a wealth of open source libraries covering everything from network clients to UI frameworks. Something that is missing is a library to help load data from multiple sources, particularly 2 levels of caching + network. NY Times has recently open sourced such a library built on RxJava, Guava + OKIO which will dramatically simplifiy the common task of \u201cget from mem cache, if not there get from disk, if not there hit the network, parse and update cache\u201c. I\u0027ll be taking users through the problems that we tried to solve and the solution that we propose for it.\u003C\/p\u003E\n\u003Cp\u003EThe library is Store\u00a0\u003Ca href=\u0022https:\/\/github.com\/NYTimes\/Store\u0022\u003Ehttps:\/\/github.com\/NYTimes\/Store\u003C\/a\u003E. Stores dramatically simplify data loading and caching while being exposed through reactive interfaces. Stores are the foundation of the NY Times app and allow us to both have best in class startup time as well as allowing us to work offline. In this talk I\u0027ll introduce the library and then go through the open source tools we used to build it. Topics will include: Streaming data from OKHTTP using BufferedSource\/Sink, Creation a blazing fast file system. Using Guava for intelligent caching, leveraging RxJava for combining and transforming multiple data sources\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"861"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1492257651","last_comment_name":null,"last_comment_uid":"679","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"FriendlyMike","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAndroid has a wealth of open source libraries covering everything from network clients to UI frameworks. Something that is missing is a library to help load data from multiple sources, particularly 2 levels of caching + network. NY Times has recently open sourced such a library built on RxJava, Guava + OKIO which will dramatically simplifiy the common task of \u201cget from mem cache, if not there get from disk, if not there hit the network, parse and update cache\u201c. I\u0027ll be taking users through the problems that we tried to solve and the solution that we propose for it.\u003C\/p\u003E\n\u003Cp\u003EThe library is Store\u00a0\u003Ca href=\u0022https:\/\/github.com\/NYTimes\/Store\u0022\u003Ehttps:\/\/github.com\/NYTimes\/Store\u003C\/a\u003E. Stores dramatically simplify data loading and caching while being exposed through reactive interfaces. Stores are the foundation of the NY Times app and allow us to both have best in class startup time as well as allowing us to work offline. In this talk I\u0027ll introduce the library and then go through the open source tools we used to build it. Topics will include: Streaming data from OKHTTP using BufferedSource\/Sink, Creation a blazing fast file system. Using Guava for intelligent caching, leveraging RxJava for combining and transforming multiple data sources\u003C\/p\u003E\n"},{"title":"The evolution of notifications","url":"\/sessions\/evolution-notifications","room":"3520","speakers":[{"name":"Jeremie Martinez","url":"\/users\/jeremie-martinez"}],"terms":[{"name":"Design \/ UI\/UX","url":"\/session-tracks\/design-uiux-1","tid":"179"}],"start":"2017-09-04T17:45:00Z","end":"2017-09-04T18:25:00Z","id":"2462","debug":{"vid":"2462","uid":"360","title":"The evolution of notifications","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2462","type":"session","language":"en","created":"1492435145","changed":"1503046487","tnid":"0","translate":"0","revision_timestamp":"1503046487","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"The idea of this presentation is to be able to do an overview of notifications on Android. Not only from a Dev point of view but also Design and Product.\r\n\r\nThe first step is to present the notifications and their evolutions through the different versions of Android.\r\nThe second step is a practical summary of best practices of notifications on Android and how to become a good citizen. We will answer the question: How to make the most of the possibilities of notifications without annoying your users?\r\nThe third step is a set of good practices from a dev perspective where we will discover how to trigger, how to style and some unknown APIs of the framework.","format":null,"safe_value":"The idea of this presentation is to be able to do an overview of notifications on Android. Not only from a Dev point of view but also Design and Product.\r\n\r\nThe first step is to present the notifications and their evolutions through the different versions of Android.\r\nThe second step is a practical summary of best practices of notifications on Android and how to become a good citizen. We will answer the question: How to make the most of the possibilities of notifications without annoying your users?\r\nThe third step is a set of good practices from a dev perspective where we will discover how to trigger, how to style and some unknown APIs of the framework."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 15:45:00","value2":"2017-09-04 16:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ENotifications are an essential part of Android applications. Indeed, they are a very interesting entry point to your app and can bring a lot of value to your users if they are used correctly.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIntroduced from the first version of Android,\u0026nbsp;we will start with a bit of history about their evolutions over the versions of Android from an UX\/UI point of view.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThen, we will see how to be a good citizen and follow best practices based on concepts like category, relevance and legitimacy. Indeed,\u0026nbsp;they are often underestimated and misused and can lead to real pain for Android users.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EFinally, we will discuss a series of tips \u0026amp; tricks to perfectly match their uses to the needs of your users. By discussing topics such as \u0026nbsp;triggering, styles and unknown APIs of the framework, we will make a full overview of their possibilities and how to implement them.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ENotifications are an essential part of Android applications. Indeed, they are a very interesting entry point to your app and can bring a lot of value to your users if they are used correctly.\u003C\/p\u003E\n\u003Cp\u003EIntroduced from the first version of Android,\u00a0we will start with a bit of history about their evolutions over the versions of Android from an UX\/UI point of view.\u003C\/p\u003E\n\u003Cp\u003EThen, we will see how to be a good citizen and follow best practices based on concepts like category, relevance and legitimacy. Indeed,\u00a0they are often underestimated and misused and can lead to real pain for Android users.\u003C\/p\u003E\n\u003Cp\u003EFinally, we will discuss a series of tips \u0026amp; tricks to perfectly match their uses to the needs of your users. By discussing topics such as \u00a0triggering, styles and unknown APIs of the framework, we will make a full overview of their possibilities and how to implement them.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"1963","uid":"360","filename":"notifications_final.pdf","uri":"public:\/\/notifications_final_0.pdf","filemime":"application\/pdf","filesize":"25092042","status":"1","timestamp":"1492434997","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":""}]},"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"360"}]},"field_session_track_ref":{"und":[{"target_id":"179"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1492435145","last_comment_name":null,"last_comment_uid":"360","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"jeremiemartinez","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ENotifications are an essential part of Android applications. Indeed, they are a very interesting entry point to your app and can bring a lot of value to your users if they are used correctly.\u003C\/p\u003E\n\u003Cp\u003EIntroduced from the first version of Android,\u00a0we will start with a bit of history about their evolutions over the versions of Android from an UX\/UI point of view.\u003C\/p\u003E\n\u003Cp\u003EThen, we will see how to be a good citizen and follow best practices based on concepts like category, relevance and legitimacy. Indeed,\u00a0they are often underestimated and misused and can lead to real pain for Android users.\u003C\/p\u003E\n\u003Cp\u003EFinally, we will discuss a series of tips \u0026amp; tricks to perfectly match their uses to the needs of your users. By discussing topics such as \u00a0triggering, styles and unknown APIs of the framework, we will make a full overview of their possibilities and how to implement them.\u003C\/p\u003E\n"},{"title":"For optimists, our UI is pretty pessimistic","url":"\/sessions\/optimists-our-ui-pretty-pessimistic","room":"3520","speakers":[{"name":"Joe Birch","url":"\/users\/joe-birch"}],"terms":[{"name":"Design \/ UI\/UX","url":"\/session-tracks\/design-uiux-1","tid":"179"}],"start":"2017-09-04T15:15:00Z","end":"2017-09-04T15:55:00Z","id":"2469","debug":{"vid":"2469","uid":"135","title":"For optimists, our UI is pretty pessimistic","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2469","type":"session","language":"en","created":"1492737478","changed":"1503046464","tnid":"0","translate":"0","revision_timestamp":"1503046464","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I\u0027m giving this talk at 360AnDev in Denver in July. You can view my previous talks here https:\/\/joebirch.co\/speaking-timeline\/","format":null,"safe_value":"I\u0026#039;m giving this talk at 360AnDev in Denver in July. You can view my previous talks here https:\/\/joebirch.co\/speaking-timeline\/"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 13:15:00","value2":"2017-09-04 13:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EIn a lot of applications, users are constantly performing operations that require some form of communication with a server. Whether it\u0027s the loading of content, the sending of a message or the changing of setting - how many times have you used an app that has made you watch a progress bar whilst such an operation has been taking place. For me, too many times. This kind of experience is blocking for the user and in a world where slow network connectivity is still common in some places, it\u0027s very likely that you\u0027re slowing down many users when using your app. This is a pessimistic approach to crafting - the fear of not quite knowing whether what is being done is going to be successful.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EBut really, it\u0027s not even too big a task to design and build for optimism over pessimism. Crafting for optimism allow us to behave as though the best outcome is going to occur but still falling back to another state if something does happen to go wrong. In this talk, we\u0027ll be looking at exactly how we can use a mixture of offline tactics and optimistic UI states to avoid signs of pessimism in our UI and craft a more positive experience for our users.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EIn a lot of applications, users are constantly performing operations that require some form of communication with a server. Whether it\u0027s the loading of content, the sending of a message or the changing of setting - how many times have you used an app that has made you watch a progress bar whilst such an operation has been taking place. For me, too many times. This kind of experience is blocking for the user and in a world where slow network connectivity is still common in some places, it\u0027s very likely that you\u0027re slowing down many users when using your app. This is a pessimistic approach to crafting - the fear of not quite knowing whether what is being done is going to be successful.\u003C\/p\u003E\n\u003Cp\u003EBut really, it\u0027s not even too big a task to design and build for optimism over pessimism. Crafting for optimism allow us to behave as though the best outcome is going to occur but still falling back to another state if something does happen to go wrong. In this talk, we\u0027ll be looking at exactly how we can use a mixture of offline tactics and optimistic UI states to avoid signs of pessimism in our UI and craft a more positive experience for our users.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"135"}]},"field_session_track_ref":{"und":[{"target_id":"179"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1492737478","last_comment_name":null,"last_comment_uid":"135","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"hitherejoe","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIn a lot of applications, users are constantly performing operations that require some form of communication with a server. Whether it\u0027s the loading of content, the sending of a message or the changing of setting - how many times have you used an app that has made you watch a progress bar whilst such an operation has been taking place. For me, too many times. This kind of experience is blocking for the user and in a world where slow network connectivity is still common in some places, it\u0027s very likely that you\u0027re slowing down many users when using your app. This is a pessimistic approach to crafting - the fear of not quite knowing whether what is being done is going to be successful.\u003C\/p\u003E\n\u003Cp\u003EBut really, it\u0027s not even too big a task to design and build for optimism over pessimism. Crafting for optimism allow us to behave as though the best outcome is going to occur but still falling back to another state if something does happen to go wrong. In this talk, we\u0027ll be looking at exactly how we can use a mixture of offline tactics and optimistic UI states to avoid signs of pessimism in our UI and craft a more positive experience for our users.\u003C\/p\u003E\n"},{"title":"Beacons: how it works and some neat use cases","url":"\/sessions\/beacons-how-it-works-and-some-neat-use-cases","room":"3519","speakers":[{"name":"Nemanja Nedic","url":"\/users\/nemanja-nedic"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-05T17:30:00Z","end":"2017-09-05T17:55:00Z","id":"2473","debug":{"vid":"2473","uid":"455","title":"Beacons: how it works and some neat use cases","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2473","type":"session","language":"en","created":"1493061780","changed":"1503046429","tnid":"0","translate":"0","revision_timestamp":"1503046429","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 15:30:00","value2":"2017-09-05 15:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EBeacons are a new way to exploit the Bluetooth Low Energy technology. They give a physical context for an application. Since they are priced very low, they can be deployed in high quantities. This gives the developers a new perspective for creating engaging and really smart solutions. This talk will cover a basis of how BLE beacons work and how we can interact with them. In addition, we will go through some of the existing use cases in different industries.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EBeacons are a new way to exploit the Bluetooth Low Energy technology. They give a physical context for an application. Since they are priced very low, they can be deployed in high quantities. This gives the developers a new perspective for creating engaging and really smart solutions. This talk will cover a basis of how BLE beacons work and how we can interact with them. In addition, we will go through some of the existing use cases in different industries.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"455"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1493061780","last_comment_name":null,"last_comment_uid":"455","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Nemanja Nedi\u0107","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EBeacons are a new way to exploit the Bluetooth Low Energy technology. They give a physical context for an application. Since they are priced very low, they can be deployed in high quantities. This gives the developers a new perspective for creating engaging and really smart solutions. This talk will cover a basis of how BLE beacons work and how we can interact with them. In addition, we will go through some of the existing use cases in different industries.\u003C\/p\u003E\n"},{"title":"Android\u2019s WebView - how (not) to use it with tales from the trenches","url":"\/sessions\/android\u2019s-webview-how-not-use-it-tales-trenches","room":"3519","speakers":[{"name":"Kai Koenig","url":"\/users\/kai-koenig"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T14:45:00Z","end":"2017-09-05T15:25:00Z","id":"2480","debug":{"vid":"2480","uid":"325","title":"Android\u2019s WebView - how (not) to use it with tales from the trenches","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2480","type":"session","language":"en","created":"1493344375","changed":"1503046356","tnid":"0","translate":"0","revision_timestamp":"1503046356","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 12:45:00","value2":"2017-09-05 13:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EHow many times have you heard this or similar: \u201cHey, can\u2019t we just build a \u2018wrapper\u2019 app around our mobile web site or web app? We just need to be present in the Play Store with anything, really\u201d? Then you start to explain to people why that is a good or bad idea and how their mobile web app might be completely wrongly architected for such an endeavour. At this point the topic of Phonegap usually pops up and \u201cthat it should just take a couple of minutes to get that all done, right\u201d. The story goes on and on from here.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EBut in all seriousness, Android\u2019s WebView has its place. It\u2019s a reasonably versatile and more or less well designed component Android developers can use to embed browser-based elements into their app. And yes - it can also be used to drive a complete mobile web app inside of your actual Android app. But it is clearly its own beast and it can create a lot of havoc in the heart of your app, too. Starting with having to deal with performance problems, having to implement support for older implementations of the Android WebView in your Markup, CSS and JS code, up to inadvertently opening up potential security holes.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis talk comprises multiple parts. After an introduction of the WebView as a concept and the current fragmented WebView implementation landscape we\u2019re going to have a look at the APIs involved. From there we\u2019ll talk about how to get a basic implementation of a properly secured and well-working WebView component setup in your App. That alone can contain a variety of rather unexpected challenges. If you haven\u2019t had enough at this stage, it\u2019s gonna get really interesting. How can you deal with what we\u2019ve coined lovingly \u201cOAS\u201d - short for Old Android Support - in your WebView? And how to find out which of all the modern web API stuff you\u2019d probably happily use in a modern version of Chrome? Can it actually be used in your WebView-based Android-App and at what cost?\u003Cbr \/\u003E\r\n\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EHow many times have you heard this or similar: \u201cHey, can\u2019t we just build a \u2018wrapper\u2019 app around our mobile web site or web app? We just need to be present in the Play Store with anything, really\u201d? Then you start to explain to people why that is a good or bad idea and how their mobile web app might be completely wrongly architected for such an endeavour. At this point the topic of Phonegap usually pops up and \u201cthat it should just take a couple of minutes to get that all done, right\u201d. The story goes on and on from here.\u003C\/p\u003E\n\u003Cp\u003EBut in all seriousness, Android\u2019s WebView has its place. It\u2019s a reasonably versatile and more or less well designed component Android developers can use to embed browser-based elements into their app. And yes - it can also be used to drive a complete mobile web app inside of your actual Android app. But it is clearly its own beast and it can create a lot of havoc in the heart of your app, too. Starting with having to deal with performance problems, having to implement support for older implementations of the Android WebView in your Markup, CSS and JS code, up to inadvertently opening up potential security holes.\u003C\/p\u003E\n\u003Cp\u003EThis talk comprises multiple parts. After an introduction of the WebView as a concept and the current fragmented WebView implementation landscape we\u2019re going to have a look at the APIs involved. From there we\u2019ll talk about how to get a basic implementation of a properly secured and well-working WebView component setup in your App. That alone can contain a variety of rather unexpected challenges. If you haven\u2019t had enough at this stage, it\u2019s gonna get really interesting. How can you deal with what we\u2019ve coined lovingly \u201cOAS\u201d - short for Old Android Support - in your WebView? And how to find out which of all the modern web API stuff you\u2019d probably happily use in a modern version of Chrome? Can it actually be used in your WebView-based Android-App and at what cost?\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"325"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1493344375","last_comment_name":null,"last_comment_uid":"325","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"TheRealAgentK","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EHow many times have you heard this or similar: \u201cHey, can\u2019t we just build a \u2018wrapper\u2019 app around our mobile web site or web app? We just need to be present in the Play Store with anything, really\u201d? Then you start to explain to people why that is a good or bad idea and how their mobile web app might be completely wrongly architected for such an endeavour. At this point the topic of Phonegap usually pops up and \u201cthat it should just take a couple of minutes to get that all done, right\u201d. The story goes on and on from here.\u003C\/p\u003E\n\u003Cp\u003EBut in all seriousness, Android\u2019s WebView has its place. It\u2019s a reasonably versatile and more or less well designed component Android developers can use to embed browser-based elements into their app. And yes - it can also be used to drive a complete mobile web app inside of your actual Android app. But it is clearly its own beast and it can create a lot of havoc in the heart of your app, too. Starting with having to deal with performance problems, having to implement support for older implementations of the Android WebView in your Markup, CSS and JS code, up to inadvertently opening up potential security holes.\u003C\/p\u003E\n\u003Cp\u003EThis talk comprises multiple parts. After an introduction of the WebView as a concept and the current fragmented WebView implementation landscape we\u2019re going to have a look at the APIs involved. From there we\u2019ll talk about how to get a basic implementation of a properly secured and well-working WebView component setup in your App. That alone can contain a variety of rather unexpected challenges. If you haven\u2019t had enough at this stage, it\u2019s gonna get really interesting. How can you deal with what we\u2019ve coined lovingly \u201cOAS\u201d - short for Old Android Support - in your WebView? And how to find out which of all the modern web API stuff you\u2019d probably happily use in a modern version of Chrome? Can it actually be used in your WebView-based Android-App and at what cost?\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n"},{"title":"Impress your user\u0027s inner child!","url":"\/sessions\/impress-your-users-inner-child","room":"3521","speakers":[{"name":"Eliza Camberogiannis","url":"\/users\/eliza-camberogiannis"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-04T12:15:00Z","end":"2017-09-04T12:55:00Z","id":"2485","debug":{"vid":"2485","uid":"712","title":"Impress your user\u0027s inner child!","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2485","type":"session","language":"en","created":"1493400802","changed":"1503046333","tnid":"0","translate":"0","revision_timestamp":"1503046333","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I\u0027ve had this talk at DevFest Netherlands 2016, DevFest Istanbul 2016, Droidcon Boston 2017 and DevFest Lille 2017 (this June)","format":null,"safe_value":"I\u0026#039;ve had this talk at DevFest Netherlands 2016, DevFest Istanbul 2016, Droidcon Boston 2017 and DevFest Lille 2017 (this June)"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 10:15:00","value2":"2017-09-04 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ETying up the users to your app is the most important and yet one of the most puzzling parts. Users will already have a strong impression about your app the first 30\u0027\u0027; Yes, including splash screens or empty lists and loading indicators, that are pretty much impossible to avoid in most of the apps. So all we need is some stardust, say the \u0027abracadabra\u0027 3 times, and the boring splash screen or the empty screen will transform to something entertaining and interesting that will impress our users! Wait... what?! How do I do this? A great place to start is learning to leverage Android\u0027s animation SDKs ;-)\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ETying up the users to your app is the most important and yet one of the most puzzling parts. Users will already have a strong impression about your app the first 30\u0027\u0027; Yes, including splash screens or empty lists and loading indicators, that are pretty much impossible to avoid in most of the apps. So all we need is some stardust, say the \u0027abracadabra\u0027 3 times, and the boring splash screen or the empty screen will transform to something entertaining and interesting that will impress our users! Wait... what?! How do I do this? A great place to start is learning to leverage Android\u0027s animation SDKs ;-)\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":{"und":[{"fid":"2011","uid":"712","filename":"Devfest Istanbul 2016 - Eliza Camberogiannis - Impress your user\u0027s inner child!","uri":"oembed:\/\/https%3A\/\/www.youtube.com\/watch%3Fv%3D6w7SVQhS5ZM%26t%3D90s","filemime":"video\/oembed","filesize":"0","status":"1","timestamp":"1493400696","type":"video","rdf_mapping":[],"metadata":{"oembed":{"author_name":"GDG Istanbul","thumbnail_width":480,"width":480,"type":"video","provider_url":"https:\/\/www.youtube.com\/","height":270,"author_url":"https:\/\/www.youtube.com\/user\/GDGIstanbul","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/6w7SVQhS5ZM\/hqdefault.jpg","provider_name":"YouTube","version":"1.0","thumbnail_height":360,"title":"Devfest Istanbul 2016 - Eliza Camberogiannis - Impress your user\u0027s inner child!","html":"\u003Ciframe width=\u0022480\u0022 height=\u0022270\u0022 src=\u0022https:\/\/www.youtube.com\/embed\/6w7SVQhS5ZM?start=90\u0026feature=oembed\u0022 frameborder=\u00220\u0022 allowfullscreen\u003E\u003C\/iframe\u003E","original_url":"https:\/\/www.youtube.com\/watch?v=6w7SVQhS5ZM\u0026t=90s","provider":"default:youtube"}},"alt":"","title":"","display":"1","description":""}]},"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"712"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1493400802","last_comment_name":null,"last_comment_uid":"712","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"elizacamber","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ETying up the users to your app is the most important and yet one of the most puzzling parts. Users will already have a strong impression about your app the first 30\u0027\u0027; Yes, including splash screens or empty lists and loading indicators, that are pretty much impossible to avoid in most of the apps. So all we need is some stardust, say the \u0027abracadabra\u0027 3 times, and the boring splash screen or the empty screen will transform to something entertaining and interesting that will impress our users! Wait... what?! How do I do this? A great place to start is learning to leverage Android\u0027s animation SDKs ;-)\u003C\/p\u003E\n"},{"title":"Tales from the dark side: developing SDKs at scale","url":"\/sessions\/tales-dark-side-developing-sdks-scale","room":"3518","speakers":[{"name":"Kenneth Geisshirt","url":"\/users\/kenneth-geisshirt"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T14:45:00Z","end":"2017-09-05T15:25:00Z","id":"2489","debug":{"vid":"2489","uid":"716","title":"Tales from the dark side: developing SDKs at scale","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2489","type":"session","language":"en","created":"1493726337","changed":"1503046234","tnid":"0","translate":"0","revision_timestamp":"1503046234","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 12:45:00","value2":"2017-09-05 13:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWe love Android because of its diversity, openness, and lack of central control. The openness gives us a highly competitive market with many vendors and a huge number of models. We see inexpensive phones with slow processors and little memory, and we see flagship phones with the highest performance chip makers can produce.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EToday, Android is truly the world phone. When developing for Android, you have the world as your target audience. But the darker side of Android is that a quarter of all active Android devices are running Android 2.x or 4.x, and these devices haven\u2019t seen an update for years.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EDeveloping an app or a SDK for a global scale, you will from time to time be hit by mysterious bugs. Bugs which can only be reproduced on particular devices, bugs only users can reproduce, or bugs that disappear as soon as you start looking for them.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWith Realm being used in more than a billion app installs around the world, we have experienced this first hand. This talk will take you through a horror show of some of the most obscure bugs we encountered, and not least how we found and fixed them. By understanding the root cause of these bugs you will hopefully leave with a better understanding of the diverse eco-system Android is and with some tools and tricks for fixing bugs in your own app or SDK.\u003Cbr \/\u003E\r\n\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWe love Android because of its diversity, openness, and lack of central control. The openness gives us a highly competitive market with many vendors and a huge number of models. We see inexpensive phones with slow processors and little memory, and we see flagship phones with the highest performance chip makers can produce.\u00a0\u003C\/p\u003E\n\u003Cp\u003EToday, Android is truly the world phone. When developing for Android, you have the world as your target audience. But the darker side of Android is that a quarter of all active Android devices are running Android 2.x or 4.x, and these devices haven\u2019t seen an update for years.\u003C\/p\u003E\n\u003Cp\u003EDeveloping an app or a SDK for a global scale, you will from time to time be hit by mysterious bugs. Bugs which can only be reproduced on particular devices, bugs only users can reproduce, or bugs that disappear as soon as you start looking for them.\u003C\/p\u003E\n\u003Cp\u003EWith Realm being used in more than a billion app installs around the world, we have experienced this first hand. This talk will take you through a horror show of some of the most obscure bugs we encountered, and not least how we found and fixed them. By understanding the root cause of these bugs you will hopefully leave with a better understanding of the diverse eco-system Android is and with some tools and tricks for fixing bugs in your own app or SDK.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"716"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1493726337","last_comment_name":null,"last_comment_uid":"716","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"geisshirt","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWe love Android because of its diversity, openness, and lack of central control. The openness gives us a highly competitive market with many vendors and a huge number of models. We see inexpensive phones with slow processors and little memory, and we see flagship phones with the highest performance chip makers can produce.\u00a0\u003C\/p\u003E\n\u003Cp\u003EToday, Android is truly the world phone. When developing for Android, you have the world as your target audience. But the darker side of Android is that a quarter of all active Android devices are running Android 2.x or 4.x, and these devices haven\u2019t seen an update for years.\u003C\/p\u003E\n\u003Cp\u003EDeveloping an app or a SDK for a global scale, you will from time to time be hit by mysterious bugs. Bugs which can only be reproduced on particular devices, bugs only users can reproduce, or bugs that disappear as soon as you start looking for them.\u003C\/p\u003E\n\u003Cp\u003EWith Realm being used in more than a billion app installs around the world, we have experienced this first hand. This talk will take you through a horror show of some of the most obscure bugs we encountered, and not least how we found and fixed them. By understanding the root cause of these bugs you will hopefully leave with a better understanding of the diverse eco-system Android is and with some tools and tricks for fixing bugs in your own app or SDK.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n"},{"title":"Think, Build, Ship and Tweak Your Android Open Source Library","url":"\/sessions\/think-build-ship-and-tweak-your-android-open-source-library","room":"3519","speakers":[{"name":"Sangsoo Nam","url":"\/users\/sangsoo-nam"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-04T14:30:00Z","end":"2017-09-04T15:10:00Z","id":"2497","debug":{"vid":"2497","uid":"99","title":"Think, Build, Ship and Tweak Your Android Open Source Library","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2497","type":"session","language":"en","created":"1493904220","changed":"1503046215","tnid":"0","translate":"0","revision_timestamp":"1503046215","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 12:30:00","value2":"2017-09-04 13:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EOpen source libraries make the development much easier. You don\u0027t have to spend your time for making similar things. If you cannot find what you want, now it\u0027s time to make it and release to everyone.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this talk, I explain how to make an open source library including hosting, testing, continuous integration, and publishing for both types: jar(java) and aar(android)\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EOpen source libraries make the development much easier. You don\u0027t have to spend your time for making similar things. If you cannot find what you want, now it\u0027s time to make it and release to everyone.\u00a0\u003C\/p\u003E\n\u003Cp\u003EIn this talk, I explain how to make an open source library including hosting, testing, continuous integration, and publishing for both types: jar(java) and aar(android)\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"99"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1493904220","last_comment_name":null,"last_comment_uid":"99","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"sangsoonam","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EOpen source libraries make the development much easier. You don\u0027t have to spend your time for making similar things. If you cannot find what you want, now it\u0027s time to make it and release to everyone.\u00a0\u003C\/p\u003E\n\u003Cp\u003EIn this talk, I explain how to make an open source library including hosting, testing, continuous integration, and publishing for both types: jar(java) and aar(android)\u003C\/p\u003E\n"},{"title":"The Good, The Bad and the Ugly - Building Distributed Teams at Realm","url":"\/sessions\/good-bad-and-ugly-building-distributed-teams-realm","room":"3521","speakers":[{"name":"Christian Melchior","url":"\/users\/christan-melchior"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T16:45:00Z","end":"2017-09-05T17:25:00Z","id":"2521","debug":{"vid":"2521","uid":"357","title":"The Good, The Bad and the Ugly - Building Distributed Teams at Realm","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2521","type":"session","language":"en","created":"1494490618","changed":"1503046196","tnid":"0","translate":"0","revision_timestamp":"1503046196","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 14:45:00","value2":"2017-09-05 15:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAt Realm, approximately 1\/3 work remotely across the world. The Android team alone consists of 6 nationalities located in 7 cities across 17 time zones.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis is a candid tale of the successes and failures we have encountered while building out a remote friendly organization. You\u0027ll learn from our insights and lessons learned, what challenges you\u0027ll face and how to be successful. It is an ongoing process, but the cake is not a lie.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAt Realm, approximately 1\/3 work remotely across the world. The Android team alone consists of 6 nationalities located in 7 cities across 17 time zones.\u003C\/p\u003E\n\u003Cp\u003EThis is a candid tale of the successes and failures we have encountered while building out a remote friendly organization. You\u0027ll learn from our insights and lessons learned, what challenges you\u0027ll face and how to be successful. It is an ongoing process, but the cake is not a lie.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"357"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494490618","last_comment_name":null,"last_comment_uid":"357","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"cmelchior","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAt Realm, approximately 1\/3 work remotely across the world. The Android team alone consists of 6 nationalities located in 7 cities across 17 time zones.\u003C\/p\u003E\n\u003Cp\u003EThis is a candid tale of the successes and failures we have encountered while building out a remote friendly organization. You\u0027ll learn from our insights and lessons learned, what challenges you\u0027ll face and how to be successful. It is an ongoing process, but the cake is not a lie.\u003C\/p\u003E\n"},{"title":"Kotlin coroutines","url":"\/sessions\/kotlin-coroutines","room":"3518","speakers":[{"name":"Svetlana Isakova","url":"\/users\/svetlana-isakova"}],"terms":[{"name":"Languages","url":"\/session-tracks\/languages-2","tid":"181"}],"start":"2017-09-05T11:00:00Z","end":"2017-09-05T11:40:00Z","id":"2523","debug":{"vid":"2523","uid":"370","title":"Kotlin coroutines","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2523","type":"session","language":"en","created":"1494499834","changed":"1503046173","tnid":"0","translate":"0","revision_timestamp":"1503046173","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 09:00:00","value2":"2017-09-05 09:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThe async\/await feature allows you to write the asynchronous code in a straightforward way, without a long list of callbacks. Used in C# for quite a while already, it has proven to be extremely useful. In Kotlin 1.1 you have async and await as library functions implemented using coroutines.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nA coroutine is a light-weight thread that can be suspended and resumed later. Very precise definition, but might be confusing at first. What \u2018light-weight thread\u2019 means? How does suspension work? This talk uncovers the magic.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nWe\u2019ll discuss the concept of coroutines, the power of async\/await, and how you can benefit from defining your asynchronous computations using suspend functions.\u003Cbr \/\u003E\r\n\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EThe async\/await feature allows you to write the asynchronous code in a straightforward way, without a long list of callbacks. Used in C# for quite a while already, it has proven to be extremely useful. In Kotlin 1.1 you have async and await as library functions implemented using coroutines.\u003C\/p\u003E\n\u003Cp\u003EA coroutine is a light-weight thread that can be suspended and resumed later. Very precise definition, but might be confusing at first. What \u2018light-weight thread\u2019 means? How does suspension work? This talk uncovers the magic.\u003C\/p\u003E\n\u003Cp\u003EWe\u2019ll discuss the concept of coroutines, the power of async\/await, and how you can benefit from defining your asynchronous computations using suspend functions.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"2054","uid":"370","filename":"kotlin-coroutines.pdf","uri":"public:\/\/kotlin-coroutines.pdf","filemime":"application\/pdf","filesize":"1361067","status":"1","timestamp":"1494499768","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":"https:\/\/speakerdeck.com\/svtk\/koltin-coroutines"}]},"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"370"}]},"field_session_track_ref":{"und":[{"target_id":"181"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494499834","last_comment_name":null,"last_comment_uid":"370","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Svetlana Isakova","picture":"0","data":"a:6:{s:7:\u0022contact\u0022;i:1;s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;}"},"description":"\u003Cp\u003EThe async\/await feature allows you to write the asynchronous code in a straightforward way, without a long list of callbacks. Used in C# for quite a while already, it has proven to be extremely useful. In Kotlin 1.1 you have async and await as library functions implemented using coroutines.\u003C\/p\u003E\n\u003Cp\u003EA coroutine is a light-weight thread that can be suspended and resumed later. Very precise definition, but might be confusing at first. What \u2018light-weight thread\u2019 means? How does suspension work? This talk uncovers the magic.\u003C\/p\u003E\n\u003Cp\u003EWe\u2019ll discuss the concept of coroutines, the power of async\/await, and how you can benefit from defining your asynchronous computations using suspend functions.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n"},{"title":"How to bring a product to reality in a few days: design-dev cooperation and fast Android prototyping","url":"\/sessions\/how-bring-product-reality-few-days-design-dev-cooperation-and-fast-android-prototyping","room":"3520","speakers":[{"name":"Juhani Lehtim\u00e4ki","url":"\/users\/juhani-lehtim\u00e4ki"},{"name":"Pierluigi Rufo","url":"\/users\/pierluigi-rufo"}],"terms":[{"name":"Design \/ UI\/UX","url":"\/session-tracks\/design-uiux-1","tid":"179"}],"start":"2017-09-04T14:30:00Z","end":"2017-09-04T15:10:00Z","id":"2524","debug":{"vid":"2524","uid":"695","title":"How to bring a product to reality in a few days: design-dev cooperation and fast Android prototyping","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2524","type":"session","language":"en","created":"1494501503","changed":"1503046153","tnid":"0","translate":"0","revision_timestamp":"1503046153","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I have a long history of Droidcon talks including, Torino, London and Berlin. There are some videos on line as well.\r\n\r\nFor this talk I\u0027m bringing with me a designer I work with and respect a lot to give the designer\u0027s point of view as well.","format":null,"safe_value":"I have a long history of Droidcon talks including, Torino, London and Berlin. There are some videos on line as well.\r\n\r\nFor this talk I\u0026#039;m bringing with me a designer I work with and respect a lot to give the designer\u0026#039;s point of view as well."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 12:30:00","value2":"2017-09-04 13:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EDevelopers and designers want the same thing: the best possible product out there. However, cooperation between the two vastly different disciplines is rarely seamless.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWhat can be done to make the dev-design interaction work better? How can we improve the communication and cooperation?\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this joint talk, with a developer and a designer, we point out usual pain points from both points of view and explain how to best avoid them.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWe also demonstrate how a seamless cooperation can lead into a new wave of very rapid prototyping using Android as the platform. The tools and libraries available for Android designers and developers now allow small teams of two to build complete functional prototypes in just two days.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWe talk about how to best get detailed designs communicated in a form that developers will understand them and how they best get feedback from designers for adding that extra polish to projects and prototypes.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EDevelopers and designers want the same thing: the best possible product out there. However, cooperation between the two vastly different disciplines is rarely seamless.\u003C\/p\u003E\n\u003Cp\u003EWhat can be done to make the dev-design interaction work better? How can we improve the communication and cooperation?\u003C\/p\u003E\n\u003Cp\u003EIn this joint talk, with a developer and a designer, we point out usual pain points from both points of view and explain how to best avoid them.\u003C\/p\u003E\n\u003Cp\u003EWe also demonstrate how a seamless cooperation can lead into a new wave of very rapid prototyping using Android as the platform. The tools and libraries available for Android designers and developers now allow small teams of two to build complete functional prototypes in just two days.\u003C\/p\u003E\n\u003Cp\u003EWe talk about how to best get detailed designs communicated in a form that developers will understand them and how they best get feedback from designers for adding that extra polish to projects and prototypes.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"695"},{"target_id":"714"}]},"field_session_track_ref":{"und":[{"target_id":"179"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494501503","last_comment_name":null,"last_comment_uid":"695","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"juhani","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EDevelopers and designers want the same thing: the best possible product out there. However, cooperation between the two vastly different disciplines is rarely seamless.\u003C\/p\u003E\n\u003Cp\u003EWhat can be done to make the dev-design interaction work better? How can we improve the communication and cooperation?\u003C\/p\u003E\n\u003Cp\u003EIn this joint talk, with a developer and a designer, we point out usual pain points from both points of view and explain how to best avoid them.\u003C\/p\u003E\n\u003Cp\u003EWe also demonstrate how a seamless cooperation can lead into a new wave of very rapid prototyping using Android as the platform. The tools and libraries available for Android designers and developers now allow small teams of two to build complete functional prototypes in just two days.\u003C\/p\u003E\n\u003Cp\u003EWe talk about how to best get detailed designs communicated in a form that developers will understand them and how they best get feedback from designers for adding that extra polish to projects and prototypes.\u003C\/p\u003E\n"},{"title":"Profile, debug, analyze","url":"\/sessions\/profile-debug-analyze","room":"3520","speakers":[{"name":"Wojtek Kalicinski","url":"\/users\/wojtek-kalicinski"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T12:15:00Z","end":"2017-09-04T12:55:00Z","id":"2526","debug":{"vid":"2526","uid":"174","title":"Profile, debug, analyze","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2526","type":"session","language":"en","created":"1494515885","changed":"1503046129","tnid":"0","translate":"0","revision_timestamp":"1503046129","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 10:15:00","value2":"2017-09-04 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAndroid Studio has a whole new suite of tools for analyzing your apps and for debugging runtime errors and performance problems. Developers are also becoming more aware about the need to make their apps leaner and faster, but often don\u0027t know what tools are at their disposal. I will show several classes of common debugging problems and the appropriate tools to tackle them.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAndroid Studio has a whole new suite of tools for analyzing your apps and for debugging runtime errors and performance problems. Developers are also becoming more aware about the need to make their apps leaner and faster, but often don\u0027t know what tools are at their disposal. I will show several classes of common debugging problems and the appropriate tools to tackle them.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"174"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494515885","last_comment_name":null,"last_comment_uid":"174","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"wkal","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:0;}"},"description":"\u003Cp\u003EAndroid Studio has a whole new suite of tools for analyzing your apps and for debugging runtime errors and performance problems. Developers are also becoming more aware about the need to make their apps leaner and faster, but often don\u0027t know what tools are at their disposal. I will show several classes of common debugging problems and the appropriate tools to tackle them.\u003C\/p\u003E\n"},{"title":"\u266b These are a few of my favourite (Android) Things \u266b","url":"\/sessions\/\u266b-these-are-few-my-favourite-android-things-\u266b","room":"3519","speakers":[{"name":"Marcos Placona","url":"\/users\/marcos-placona"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-04T15:15:00Z","end":"2017-09-04T15:55:00Z","id":"2528","debug":{"vid":"2528","uid":"355","title":"\u266b These are a few of my favourite (Android) Things \u266b","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2528","type":"session","language":"en","created":"1494520098","changed":"1503046101","tnid":"0","translate":"0","revision_timestamp":"1503046101","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"Gave this talk once in Amsterdam and am just about to give it again in Riga. Super fun, with lots of live demos and devices. Had some great feedback with one of the attendees saying they \u0022finally got what the Android Things was\u0022 after my talk.","format":null,"safe_value":"Gave this talk once in Amsterdam and am just about to give it again in Riga. Super fun, with lots of live demos and devices. Had some great feedback with one of the attendees saying they \u0026quot;finally got what the Android Things was\u0026quot; after my talk."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 13:15:00","value2":"2017-09-04 13:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAndroid Things lets you build professional, mass-market products on a trusted platform without previous knowledge of embedded systems. It is estimated that by 2020 there will be 50 billion connected things.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EBut what does it take to get started with Android Things and be able to say you\u2019re truly working with the Internet of Things? How can you learn this platform and get ahead of the IoT revolution using your existing Android skills?\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this session we will explore what Android Things is and how you can get started building IoT applications with your existing Android knowledge.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWe will then build a real life Android Things application using a Raspberry Pi 3 and Android Studio, the IDE you already use and love.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAndroid Things lets you build professional, mass-market products on a trusted platform without previous knowledge of embedded systems. It is estimated that by 2020 there will be 50 billion connected things.\u003C\/p\u003E\n\u003Cp\u003EBut what does it take to get started with Android Things and be able to say you\u2019re truly working with the Internet of Things? How can you learn this platform and get ahead of the IoT revolution using your existing Android skills?\u003C\/p\u003E\n\u003Cp\u003EIn this session we will explore what Android Things is and how you can get started building IoT applications with your existing Android knowledge.\u003C\/p\u003E\n\u003Cp\u003EWe will then build a real life Android Things application using a Raspberry Pi 3 and Android Studio, the IDE you already use and love.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"355"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494520098","last_comment_name":null,"last_comment_uid":"355","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"mplacona","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAndroid Things lets you build professional, mass-market products on a trusted platform without previous knowledge of embedded systems. It is estimated that by 2020 there will be 50 billion connected things.\u003C\/p\u003E\n\u003Cp\u003EBut what does it take to get started with Android Things and be able to say you\u2019re truly working with the Internet of Things? How can you learn this platform and get ahead of the IoT revolution using your existing Android skills?\u003C\/p\u003E\n\u003Cp\u003EIn this session we will explore what Android Things is and how you can get started building IoT applications with your existing Android knowledge.\u003C\/p\u003E\n\u003Cp\u003EWe will then build a real life Android Things application using a Raspberry Pi 3 and Android Studio, the IDE you already use and love.\u003C\/p\u003E\n"},{"title":"A look at the code of tools and libs from an indie developer","url":"\/sessions\/look-code-tools-and-libs-indie-developer","room":"3518","speakers":[{"name":"marcus ligi","url":"\/users\/marcus-ligi"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T12:30:00Z","end":"2017-09-05T12:55:00Z","id":"2529","debug":{"vid":"2529","uid":"709","title":"A look at the code of tools and libs from an indie developer","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2529","type":"session","language":"en","created":"1494532627","changed":"1503046063","tnid":"0","translate":"0","revision_timestamp":"1503046063","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 10:30:00","value2":"2017-09-05 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThis talk showcases code of libraries and tools I created in my life as an indie developer. While looking at code that is used in living applications and tools you can:\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003Eget ideas from the code and methods\u003C\/li\u003E\r\n\t\u003Cli\u003Eknow where to look if you have similar problems\u0026nbsp;as all the code is libre software on github\u003C\/li\u003E\r\n\t\u003Cli\u003Esee some kotlin\u003C\/li\u003E\r\n\t\u003Cli\u003Eget to know some tools\/libs that might be useful to you\u003C\/li\u003E\r\n\t\u003Cli\u003Eenjoy some stories describing how I ended up with some solutions\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EThis talk showcases code of libraries and tools I created in my life as an indie developer. While looking at code that is used in living applications and tools you can:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003Eget ideas from the code and methods\u003C\/li\u003E\n\u003Cli\u003Eknow where to look if you have similar problems\u00a0as all the code is libre software on github\u003C\/li\u003E\n\u003Cli\u003Esee some kotlin\u003C\/li\u003E\n\u003Cli\u003Eget to know some tools\/libs that might be useful to you\u003C\/li\u003E\n\u003Cli\u003Eenjoy some stories describing how I ended up with some solutions\u003C\/li\u003E\n\u003C\/ul\u003E","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"2057","uid":"709","filename":"A look at the code of tools and libs from one indie developer_dc.pdf","uri":"public:\/\/media\/documents\/A look at the code of tools and libs from one indie developer_dc.pdf","filemime":"application\/pdf","filesize":"1619686","status":"1","timestamp":"1494531645","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":""}]},"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"709"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494532627","last_comment_name":null,"last_comment_uid":"709","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"ligi","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThis talk showcases code of libraries and tools I created in my life as an indie developer. While looking at code that is used in living applications and tools you can:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003Eget ideas from the code and methods\u003C\/li\u003E\n\u003Cli\u003Eknow where to look if you have similar problems\u00a0as all the code is libre software on github\u003C\/li\u003E\n\u003Cli\u003Esee some kotlin\u003C\/li\u003E\n\u003Cli\u003Eget to know some tools\/libs that might be useful to you\u003C\/li\u003E\n\u003Cli\u003Eenjoy some stories describing how I ended up with some solutions\u003C\/li\u003E\n\u003C\/ul\u003E"},{"title":"Augmented Reality Indoor Navigation with Google Tango","url":"\/sessions\/augmented-reality-indoor-navigation-google-tango","room":"3518","speakers":[{"name":"Till Krempel","url":"\/users\/till-krempel"}],"terms":[{"name":"Android Game Development \u0026 Virtual Reality","url":"\/session-tracks\/android-game-development-virtual-reality-1","tid":"175"}],"start":"2017-09-04T17:00:00Z","end":"2017-09-04T17:40:00Z","id":"2534","debug":{"vid":"2534","uid":"739","title":"Augmented Reality Indoor Navigation with Google Tango","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2534","type":"session","language":"en","created":"1494581999","changed":"1503046039","tnid":"0","translate":"0","revision_timestamp":"1503046039","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"We held earlier versions of this talk at the Barcamp in DroidconUK 2016, at Digility 2016 and Mobile TechCon 2017. Since then a lot of progress has been made new Tango devices have (hopefully) been released, and a lot of lessons concerning development with the Tango Java API were learned, that are summarized in the session.\r\n\r\nUnfortunately a login is required to watch the video from DroidconUK therefore I could not supply the video as a media link. The Youtube video of the talk held at MobileTechCon in munich still has to be made public, but that should happen within the next days.\r\n\r\nThe general category is not game development itself, but as it is more related to virtual reality than the other topics I chose this one. Please feel free to change that.\r\n\r\nAs the latest version of the slides contain a lot of video, they are approx 125MB as a PDF, even bigger in PowerPoint. Unfortunately the droidcon webpage only supports uploads to a maximum of 24 MB. If you can supply me a location for the upload, I will gladly supply them.\r\n\r\n\r\n","format":null,"safe_value":"We held earlier versions of this talk at the Barcamp in DroidconUK 2016, at Digility 2016 and Mobile TechCon 2017. Since then a lot of progress has been made new Tango devices have (hopefully) been released, and a lot of lessons concerning development with the Tango Java API were learned, that are summarized in the session.\r\n\r\nUnfortunately a login is required to watch the video from DroidconUK therefore I could not supply the video as a media link. The Youtube video of the talk held at MobileTechCon in munich still has to be made public, but that should happen within the next days.\r\n\r\nThe general category is not game development itself, but as it is more related to virtual reality than the other topics I chose this one. Please feel free to change that.\r\n\r\nAs the latest version of the slides contain a lot of video, they are approx 125MB as a PDF, even bigger in PowerPoint. Unfortunately the droidcon webpage only supports uploads to a maximum of 24 MB. If you can supply me a location for the upload, I will gladly supply them.\r\n\r\n\r\n"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 15:00:00","value2":"2017-09-04 15:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EOver the last couple of years, a variety of solutions for realizing augmented user interfaces on\u0026nbsp;mobile devices has evolved. Still one problem remains: Regardless of flawless design,augmentations still are only a mere overlay of the camera picture.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ETango (formerly known as \u201eProject Tango\u201c) by the Google ATAP introduces a hardwarecomponent for a next generation of android smartphones, that claims new use cases by the\u0026nbsp;use of additional sensors, multiple cameras and a powerful software library. Tangos keyfeatures: Motion tracking, area learning and depth perception are a perfect fit for augmented\u0026nbsp;reality and enable a new level of immersion.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAs the physical environment of the device gets quantifiable with centimeter grade precision,\u0026nbsp;the augmentations can be presented at a real location in reality\u2019s three-dimensional space and\u0026nbsp;truly embed into their surroundings. The manifold new possibilities are illustrated using the use\u0026nbsp;case of indoor navigation. Indoor Positioning with a with a precision improved by multiple\u0026nbsp;magnitudes, as well as Tangos area learning features, offer an innovative alternative to existing\u0026nbsp;indoor navigation solutions and makes their infrastructural preconditions (iBeacon grids, Wi-Fi)\u0026nbsp;obsolete.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThe features are not only restricted to mere navigation:\u0026nbsp;Using Firebase as a backend to store the building information model, real time usage statistics can be created and points of interest can be augmented in the application.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThe session illustrates these improvements on the example of a classic two-dimensional indoor\u0026nbsp;map navigation and an augmented reality user interface, where - thanks to the tango hardware\u0026nbsp;- routes embed seamlessly into reality.\u003C\/p\u003E\r\n\r\n\u003Ch3\u003EPrevious Talks\u003C\/h3\u003E\r\n\r\n\u003Cp\u003E\u003Ca href=\u0022http:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u0022\u003Ehttp:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u0022\u003Ehttps:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Ch3\u003EFURTHER Information\u003C\/h3\u003E\r\n\r\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EOver the last couple of years, a variety of solutions for realizing augmented user interfaces on\u00a0mobile devices has evolved. Still one problem remains: Regardless of flawless design,augmentations still are only a mere overlay of the camera picture.\u003C\/p\u003E\n\u003Cp\u003ETango (formerly known as \u201eProject Tango\u201c) by the Google ATAP introduces a hardwarecomponent for a next generation of android smartphones, that claims new use cases by the\u00a0use of additional sensors, multiple cameras and a powerful software library. Tangos keyfeatures: Motion tracking, area learning and depth perception are a perfect fit for augmented\u00a0reality and enable a new level of immersion.\u003C\/p\u003E\n\u003Cp\u003EAs the physical environment of the device gets quantifiable with centimeter grade precision,\u00a0the augmentations can be presented at a real location in reality\u2019s three-dimensional space and\u00a0truly embed into their surroundings. The manifold new possibilities are illustrated using the use\u00a0case of indoor navigation. Indoor Positioning with a with a precision improved by multiple\u00a0magnitudes, as well as Tangos area learning features, offer an innovative alternative to existing\u00a0indoor navigation solutions and makes their infrastructural preconditions (iBeacon grids, Wi-Fi)\u00a0obsolete.\u00a0\u003C\/p\u003E\n\u003Cp\u003EThe features are not only restricted to mere navigation:\u00a0Using Firebase as a backend to store the building information model, real time usage statistics can be created and points of interest can be augmented in the application.\u003C\/p\u003E\n\u003Cp\u003EThe session illustrates these improvements on the example of a classic two-dimensional indoor\u00a0map navigation and an augmented reality user interface, where - thanks to the tango hardware\u00a0- routes embed seamlessly into reality.\u003C\/p\u003E\n\u003Ch3\u003EPrevious Talks\u003C\/h3\u003E\n\u003Cp\u003E\u003Ca href=\u0022http:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u0022\u003Ehttp:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u0022\u003Ehttps:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u003C\/a\u003E\u003C\/p\u003E\n\u003Ch3\u003EFURTHER Information\u003C\/h3\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"739"}]},"field_session_track_ref":{"und":[{"target_id":"175"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494581999","last_comment_name":null,"last_comment_uid":"739","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"till.krempel","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EOver the last couple of years, a variety of solutions for realizing augmented user interfaces on\u00a0mobile devices has evolved. Still one problem remains: Regardless of flawless design,augmentations still are only a mere overlay of the camera picture.\u003C\/p\u003E\n\u003Cp\u003ETango (formerly known as \u201eProject Tango\u201c) by the Google ATAP introduces a hardwarecomponent for a next generation of android smartphones, that claims new use cases by the\u00a0use of additional sensors, multiple cameras and a powerful software library. Tangos keyfeatures: Motion tracking, area learning and depth perception are a perfect fit for augmented\u00a0reality and enable a new level of immersion.\u003C\/p\u003E\n\u003Cp\u003EAs the physical environment of the device gets quantifiable with centimeter grade precision,\u00a0the augmentations can be presented at a real location in reality\u2019s three-dimensional space and\u00a0truly embed into their surroundings. The manifold new possibilities are illustrated using the use\u00a0case of indoor navigation. Indoor Positioning with a with a precision improved by multiple\u00a0magnitudes, as well as Tangos area learning features, offer an innovative alternative to existing\u00a0indoor navigation solutions and makes their infrastructural preconditions (iBeacon grids, Wi-Fi)\u00a0obsolete.\u00a0\u003C\/p\u003E\n\u003Cp\u003EThe features are not only restricted to mere navigation:\u00a0Using Firebase as a backend to store the building information model, real time usage statistics can be created and points of interest can be augmented in the application.\u003C\/p\u003E\n\u003Cp\u003EThe session illustrates these improvements on the example of a classic two-dimensional indoor\u00a0map navigation and an augmented reality user interface, where - thanks to the tango hardware\u00a0- routes embed seamlessly into reality.\u003C\/p\u003E\n\u003Ch3\u003EPrevious Talks\u003C\/h3\u003E\n\u003Cp\u003E\u003Ca href=\u0022http:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u0022\u003Ehttp:\/\/uk.droidcon.com\/skillscasts\/9311-indoor-navigation-with-google-tango\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u0022\u003Ehttps:\/\/www.youtube.com\/watch?v=Ndq7kOwMtMY\u0026amp;feature=youtu.be\u003C\/a\u003E\u003C\/p\u003E\n\u003Ch3\u003EFURTHER Information\u003C\/h3\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/blog\/detail\/show\/indoor-navigation-mit-google-tango\/?L=0\u0026amp;cHash=6587b96567a7b5ea18ef9812bf0a72a6\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Ca href=\u0022https:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u0022\u003Ehttps:\/\/www.cologne-intelligence.de\/ci-mobile-minds\/cases\/no-beacon-no-cry-auf-der-mobiletechcon\/\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n"},{"title":"Scaling Android @Facebook","url":"\/sessions\/scaling-android-facebook","room":"3518","speakers":[{"name":"Marco Cova","url":"\/users\/marco-cova"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T11:30:00Z","end":"2017-09-04T12:10:00Z","id":"2535","debug":{"vid":"2535","uid":"740","title":"Scaling Android @Facebook","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2535","type":"session","language":"en","created":"1494605897","changed":"1503414867","tnid":"0","translate":"0","revision_timestamp":"1503414867","revision_uid":"11","field_session_audio":[],"field_session_comments":{"und":[{"value":"We are going to give the talk I gave to Droidcon London last year: https:\/\/skillsmatter.com\/skillscasts\/8706-scaling-android-facebook","format":null,"safe_value":"We are going to give the talk I gave to Droidcon London last year: https:\/\/skillsmatter.com\/skillscasts\/8706-scaling-android-facebook"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 09:30:00","value2":"2017-09-04 10:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"Before Marco joined Facebook, he would read all these absurd news and stories about Android development at Facebook. Crazy, unnecessary, overcomplicated hacks everywhere... he knew better... well... with an inside perspective it turns out they are not so crazy after all (for the most part at least).\r\n\r\nFacebook engineering is all about scale. Marco will introduce you to Facebook\u0027s development processes and sometime unintuitive or unorthodox technical solutions to cope with their unique scale of users, engineers and codebase.\r\n","summary":"","format":"plain_text","safe_value":"\u003Cp\u003EBefore Marco joined Facebook, he would read all these absurd news and stories about Android development at Facebook. Crazy, unnecessary, overcomplicated hacks everywhere... he knew better... well... with an inside perspective it turns out they are not so crazy after all (for the most part at least).\u003C\/p\u003E\n\u003Cp\u003EFacebook engineering is all about scale. Marco will introduce you to Facebook\u0026#039;s development processes and sometime unintuitive or unorthodox technical solutions to cope with their unique scale of users, engineers and codebase.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"740"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494605897","last_comment_name":null,"last_comment_uid":"740","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"marcoc","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EBefore Marco joined Facebook, he would read all these absurd news and stories about Android development at Facebook. Crazy, unnecessary, overcomplicated hacks everywhere... he knew better... well... with an inside perspective it turns out they are not so crazy after all (for the most part at least).\u003C\/p\u003E\n\u003Cp\u003EFacebook engineering is all about scale. Marco will introduce you to Facebook\u0026#039;s development processes and sometime unintuitive or unorthodox technical solutions to cope with their unique scale of users, engineers and codebase.\u003C\/p\u003E\n"},{"title":"The Key Concepts of App Tracking for Developers","url":"\/sessions\/key-concepts-app-tracking-developers","room":"3520","speakers":[{"name":"Sergii Zhuk","url":"\/users\/sergii-zhuk"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T14:00:00Z","end":"2017-09-04T14:25:00Z","id":"2536","debug":{"vid":"2536","uid":"238","title":"The Key Concepts of App Tracking for Developers","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2536","type":"session","language":"en","created":"1494626087","changed":"1503912005","tnid":"0","translate":"0","revision_timestamp":"1503912005","revision_uid":"11","field_session_audio":[],"field_session_comments":{"und":[{"value":"The talk was originally presented at Droidcon PL 2016.\r\nFor Berlin I\u0027m going to update information about Firebase Analytics experience and introduce advanced design patterns for tracking systems.","format":null,"safe_value":"The talk was originally presented at Droidcon PL 2016.\r\nFor Berlin I\u0026#039;m going to update information about Firebase Analytics experience and introduce advanced design patterns for tracking systems."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 12:00:00","value2":"2017-09-04 12:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EIf you have a mobile application or are going to develop one, it is important to remember about one thing on the side\u200a\u2014\u200amobile analytics, and a process behind it\u200a\u2014\u200aapplication tracking. Simply put, tracking means collecting, enriching, formatting and passing data about your app to your analytics tools. In this talk we will discuss why you need tracking and how to get the maximum out of it.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nWe will check use cases on when to track data, some popular tracking\/analytics tools, configuration options, and customer privacy issues. Also, we will take a look at common developer challenges and possible ways to test the tracking output.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EIf you have a mobile application or are going to develop one, it is important to remember about one thing on the side\u200a\u2014\u200amobile analytics, and a process behind it\u200a\u2014\u200aapplication tracking. Simply put, tracking means collecting, enriching, formatting and passing data about your app to your analytics tools. In this talk we will discuss why you need tracking and how to get the maximum out of it.\u003C\/p\u003E\n\u003Cp\u003EWe will check use cases on when to track data, some popular tracking\/analytics tools, configuration options, and customer privacy issues. Also, we will take a look at common developer challenges and possible ways to test the tracking output.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"2064","uid":"238","filename":"sergii_droidconpl_7_pub2.pdf","uri":"public:\/\/media\/documents\/sergii_droidconpl_7_pub2.pdf","filemime":"application\/pdf","filesize":"802199","status":"1","timestamp":"1494625919","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":""}]},"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"238"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494626087","last_comment_name":null,"last_comment_uid":"238","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Serge","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIf you have a mobile application or are going to develop one, it is important to remember about one thing on the side\u200a\u2014\u200amobile analytics, and a process behind it\u200a\u2014\u200aapplication tracking. Simply put, tracking means collecting, enriching, formatting and passing data about your app to your analytics tools. In this talk we will discuss why you need tracking and how to get the maximum out of it.\u003C\/p\u003E\n\u003Cp\u003EWe will check use cases on when to track data, some popular tracking\/analytics tools, configuration options, and customer privacy issues. Also, we will take a look at common developer challenges and possible ways to test the tracking output.\u003C\/p\u003E\n"},{"title":"React Native: Is It Worth It?","url":"\/sessions\/react-native-it-worth-it","room":"3520","speakers":[{"name":"Andy Dyer","url":"\/users\/andy-dyer"}],"terms":[{"name":"Languages","url":"\/session-tracks\/languages-2","tid":"181"}],"start":"2017-09-04T17:00:00Z","end":"2017-09-04T17:40:00Z","id":"2537","debug":{"vid":"2537","uid":"743","title":"React Native: Is It Worth It?","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2537","type":"session","language":"en","created":"1494683318","changed":"1503045975","tnid":"0","translate":"0","revision_timestamp":"1503045975","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 15:00:00","value2":"2017-09-04 15:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E\u003Cstrong\u003EWhen new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, \u201cIs it worth it?\u201d After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003EReact Native may be on its way to earning a place in the same club. Once we get past the fact that JavaScript on Android and HTML in JavaScript seem pretty damn weird at first, there\u2019s a lot to like. Seeing your changes on a device almost instantly is a love-at-first-sight kind of thing. And rethinking your app architecture as a series of actions, state changes, and UI render phases can eliminate a surprising number of silly bugs.\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003EA dive into every new technology starts with the flashy \u201ctype these commands and run your \u2018Hello World\u2019 app\u201d tutorial. This is not that kind of talk. Instead, I\u2019ll recap my experience digging into React Native for real world use. From integrating RN code into an existing Java\/Kotlin app to dealing with the kind of problems they never mention in the README, I\u2019ll cover what you need to know to decide if React Native is really worth your time.\u003C\/strong\u003E\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E\u003Cstrong\u003EWhen new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, \u201cIs it worth it?\u201d After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EReact Native may be on its way to earning a place in the same club. Once we get past the fact that JavaScript on Android and HTML in JavaScript seem pretty damn weird at first, there\u2019s a lot to like. Seeing your changes on a device almost instantly is a love-at-first-sight kind of thing. And rethinking your app architecture as a series of actions, state changes, and UI render phases can eliminate a surprising number of silly bugs.\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EA dive into every new technology starts with the flashy \u201ctype these commands and run your \u2018Hello World\u2019 app\u201d tutorial. This is not that kind of talk. Instead, I\u2019ll recap my experience digging into React Native for real world use. From integrating RN code into an existing Java\/Kotlin app to dealing with the kind of problems they never mention in the README, I\u2019ll cover what you need to know to decide if React Native is really worth your time.\u003C\/strong\u003E\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"743"}]},"field_session_track_ref":{"und":[{"target_id":"181"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494683318","last_comment_name":null,"last_comment_uid":"743","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"andydyer","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E\u003Cstrong\u003EWhen new technologies start gaining momentum in the Android community, the pragmatic (or lazy) among us eventually have to ask ourselves, \u201cIs it worth it?\u201d After the initial arrival and departure of the hype train, some of these become trusted tools we use in almost every app. Think RxJava and Dagger.\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EReact Native may be on its way to earning a place in the same club. Once we get past the fact that JavaScript on Android and HTML in JavaScript seem pretty damn weird at first, there\u2019s a lot to like. Seeing your changes on a device almost instantly is a love-at-first-sight kind of thing. And rethinking your app architecture as a series of actions, state changes, and UI render phases can eliminate a surprising number of silly bugs.\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EA dive into every new technology starts with the flashy \u201ctype these commands and run your \u2018Hello World\u2019 app\u201d tutorial. This is not that kind of talk. Instead, I\u2019ll recap my experience digging into React Native for real world use. From integrating RN code into an existing Java\/Kotlin app to dealing with the kind of problems they never mention in the README, I\u2019ll cover what you need to know to decide if React Native is really worth your time.\u003C\/strong\u003E\u003C\/p\u003E\n"},{"title":"Building a p2p darknet app: Lessons learned","url":"\/sessions\/building-p2p-darknet-app-lessons-learned","room":"3520","speakers":[{"name":"Ernir Erlingsson","url":"\/users\/ernir-erlingsson"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T16:00:00Z","end":"2017-09-04T16:25:00Z","id":"2539","debug":{"vid":"2539","uid":"710","title":"Building a p2p darknet app: Lessons learned","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2539","type":"session","language":"en","created":"1494710479","changed":"1503912002","tnid":"0","translate":"0","revision_timestamp":"1503912002","revision_uid":"11","field_session_audio":[],"field_session_comments":{"und":[{"value":"Briar is a serious FOSS project that has received funding from Small Media, the Open Internet Tools Project, Access, and the Open Technology Fund. The Android application is currently in private beta but is scheduled for public beta this summer (2017).\r\n\r\nMore information on the Briar project: https:\/\/briarproject.org\/\r\nCode and issue tracker: https:\/\/code.briarproject.org\/akwizgran\/briar","format":null,"safe_value":"Briar is a serious FOSS project that has received funding from Small Media, the Open Internet Tools Project, Access, and the Open Technology Fund. The Android application is currently in private beta but is scheduled for public beta this summer (2017).\r\n\r\nMore information on the Briar project: https:\/\/briarproject.org\/\r\nCode and issue tracker: https:\/\/code.briarproject.org\/akwizgran\/briar"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 14:00:00","value2":"2017-09-04 14:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"Briar is a free and open-source software project that includes a secure Android messaging app. The app is built using peer-to-peer architecture and transmits messages via Tor to protect users and their relationships from surveillance. It\u0027s designed for activists, journalists, or anyone else who needs a safe and secure way to communicate.\r\n\r\nThis session gives a short introduction to Tor and the p2p architecture in order to subsequently discuss their integration on Android, focusing on a selection of challenges encountered during the development of the Briar app, namely: Android-specific issues such as keeping a background service alive with recent OS constraints; general mobile software-engineering problems, e.g. connectivity losses; user experience concerns due to the nature of decentralized applications employing an asynchronous messaging network.","summary":"","format":"plain_text","safe_value":"\u003Cp\u003EBriar is a free and open-source software project that includes a secure Android messaging app. The app is built using peer-to-peer architecture and transmits messages via Tor to protect users and their relationships from surveillance. It\u0026#039;s designed for activists, journalists, or anyone else who needs a safe and secure way to communicate.\u003C\/p\u003E\n\u003Cp\u003EThis session gives a short introduction to Tor and the p2p architecture in order to subsequently discuss their integration on Android, focusing on a selection of challenges encountered during the development of the Briar app, namely: Android-specific issues such as keeping a background service alive with recent OS constraints; general mobile software-engineering problems, e.g. connectivity losses; user experience concerns due to the nature of decentralized applications employing an asynchronous messaging network.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"710"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494710479","last_comment_name":null,"last_comment_uid":"710","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"ernir","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EBriar is a free and open-source software project that includes a secure Android messaging app. The app is built using peer-to-peer architecture and transmits messages via Tor to protect users and their relationships from surveillance. It\u0026#039;s designed for activists, journalists, or anyone else who needs a safe and secure way to communicate.\u003C\/p\u003E\n\u003Cp\u003EThis session gives a short introduction to Tor and the p2p architecture in order to subsequently discuss their integration on Android, focusing on a selection of challenges encountered during the development of the Briar app, namely: Android-specific issues such as keeping a background service alive with recent OS constraints; general mobile software-engineering problems, e.g. connectivity losses; user experience concerns due to the nature of decentralized applications employing an asynchronous messaging network.\u003C\/p\u003E\n"},{"title":"The power of Kotlin for your tests","url":"\/sessions\/power-kotlin-your-tests","room":"3518","speakers":[{"name":"Danny Preussler","url":"\/users\/danny-preussler"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T15:15:00Z","end":"2017-09-04T15:55:00Z","id":"2542","debug":{"vid":"2542","uid":"90","title":"The power of Kotlin for your tests","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2542","type":"session","language":"en","created":"1494719865","changed":"1503903623","tnid":"0","translate":"0","revision_timestamp":"1503903623","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 13:15:00","value2":"2017-09-04 13:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EIf you use Kotlin in production or not, you should use it\u0027s power for your tests.\u003Cbr \/\u003E\r\nWhen\u0026nbsp;it comes to extension functions, infix notation or possibilities for method names, Kotlin\u0026nbsp;offers a lot that Java won\u0027t give you.\u0026nbsp;Combined with the powers of libraries like Kotlin Mockito or Kluent this brings testing to a new level.\u003Cbr \/\u003E\r\nIn this session we will convert some boring Java tests to fun tests.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EIf you use Kotlin in production or not, you should use it\u0027s power for your tests.\u003Cbr \/\u003E\nWhen\u00a0it comes to extension functions, infix notation or possibilities for method names, Kotlin\u00a0offers a lot that Java won\u0027t give you.\u00a0Combined with the powers of libraries like Kotlin Mockito or Kluent this brings testing to a new level.\u003Cbr \/\u003E\nIn this session we will convert some boring Java tests to fun tests.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"90"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494719865","last_comment_name":null,"last_comment_uid":"90","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dpreussler","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIf you use Kotlin in production or not, you should use it\u0027s power for your tests.\u003Cbr \/\u003E\nWhen\u00a0it comes to extension functions, infix notation or possibilities for method names, Kotlin\u00a0offers a lot that Java won\u0027t give you.\u00a0Combined with the powers of libraries like Kotlin Mockito or Kluent this brings testing to a new level.\u003Cbr \/\u003E\nIn this session we will convert some boring Java tests to fun tests.\u003C\/p\u003E\n"},{"title":"Where we need you most - Browsers as App Platform","url":"\/sessions\/where-we-need-you-most-browsers-app-platform","room":"3520","speakers":[{"name":"Friedger M\u00fcffke","url":"\/users\/friedger-m\u00fcffke"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T12:30:00Z","end":"2017-09-05T12:55:00Z","id":"2556","debug":{"vid":"2556","uid":"216","title":"Where we need you most - Browsers as App Platform","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2556","type":"session","language":"en","created":"1494786450","changed":"1503045886","tnid":"0","translate":"0","revision_timestamp":"1503045886","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I am occasionally contributor to an open source browser","format":null,"safe_value":"I am occasionally contributor to an open source browser"}]},"field_session_datetime":{"und":[{"value":"2017-09-05 10:30:00","value2":"2017-09-05 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ENew standards in the W3C have brought back the discussion about native vs web. Under the label \u0022Progressive Web Apps\u0022, the use of web technologies on mobile devices is promoted by the web community. Is this a thing for Android developers?\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session starts with an overview of modern web browsers on Android and how good they are as a web app platform. Then it will be explained what is needed to build a modern browser on Android.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session should inspire Android developers to contribute to open source browsers.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ENew standards in the W3C have brought back the discussion about native vs web. Under the label \u0022Progressive Web Apps\u0022, the use of web technologies on mobile devices is promoted by the web community. Is this a thing for Android developers?\u003C\/p\u003E\n\u003Cp\u003EThis session starts with an overview of modern web browsers on Android and how good they are as a web app platform. Then it will be explained what is needed to build a modern browser on Android.\u003C\/p\u003E\n\u003Cp\u003EThis session should inspire Android developers to contribute to open source browsers.\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"216"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494786450","last_comment_name":null,"last_comment_uid":"216","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"friedger","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:0;}"},"description":"\u003Cp\u003ENew standards in the W3C have brought back the discussion about native vs web. Under the label \u0022Progressive Web Apps\u0022, the use of web technologies on mobile devices is promoted by the web community. Is this a thing for Android developers?\u003C\/p\u003E\n\u003Cp\u003EThis session starts with an overview of modern web browsers on Android and how good they are as a web app platform. Then it will be explained what is needed to build a modern browser on Android.\u003C\/p\u003E\n\u003Cp\u003EThis session should inspire Android developers to contribute to open source browsers.\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n"},{"title":"Managing User Feedback: How to Set Expectations and Translating Feedback into Features","url":"\/sessions\/managing-user-feedback-how-set-expectations-and-translating-feedback-features","room":"3518","speakers":[{"name":"Modupe Akinnawonu","url":"\/users\/modupe-akinnawonu"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T17:45:00Z","end":"2017-09-04T18:25:00Z","id":"2559","debug":{"vid":"2559","uid":"742","title":"Managing User Feedback: How to Set Expectations and Translating Feedback into Features","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2559","type":"session","language":"en","created":"1494790589","changed":"1503045866","tnid":"0","translate":"0","revision_timestamp":"1503045866","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 15:45:00","value2":"2017-09-04 16:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EDevelopers have multiple opportunities to publicly engage with their users, whether it\u2019s through reviews in the Google Play Store, public beta and alpha channels, or through social media. But sometimes these interactions create situations that are more fraught than necessary, and these moments can lead to features that users say they want, but then don\u2019t use.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this session, I will use The New York Times as a case study for how to interact with users in public forums, showing you how to leverage this two-way relationship to increase their satisfaction with your apps. I will also dive into ways that developers can translate user feedback into an understanding of core user needs, helping you build more effective solutions to their reported problems and feature requets.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EDevelopers have multiple opportunities to publicly engage with their users, whether it\u2019s through reviews in the Google Play Store, public beta and alpha channels, or through social media. But sometimes these interactions create situations that are more fraught than necessary, and these moments can lead to features that users say they want, but then don\u2019t use.\u003C\/p\u003E\n\u003Cp\u003EIn this session, I will use The New York Times as a case study for how to interact with users in public forums, showing you how to leverage this two-way relationship to increase their satisfaction with your apps. I will also dive into ways that developers can translate user feedback into an understanding of core user needs, helping you build more effective solutions to their reported problems and feature requets.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"742"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494790589","last_comment_name":null,"last_comment_uid":"742","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Modupe Akinnawonu","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EDevelopers have multiple opportunities to publicly engage with their users, whether it\u2019s through reviews in the Google Play Store, public beta and alpha channels, or through social media. But sometimes these interactions create situations that are more fraught than necessary, and these moments can lead to features that users say they want, but then don\u2019t use.\u003C\/p\u003E\n\u003Cp\u003EIn this session, I will use The New York Times as a case study for how to interact with users in public forums, showing you how to leverage this two-way relationship to increase their satisfaction with your apps. I will also dive into ways that developers can translate user feedback into an understanding of core user needs, helping you build more effective solutions to their reported problems and feature requets.\u003C\/p\u003E\n"},{"title":"Dagger 2 Android : Defeat the Dahaka","url":"\/sessions\/dagger-2-android-defeat-dahaka","room":"3518","speakers":[{"name":"Garima Jain","url":"\/users\/garima-jain"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T12:15:00Z","end":"2017-09-04T12:55:00Z","id":"2560","debug":{"vid":"2560","uid":"755","title":"Dagger 2 Android : Defeat the Dahaka","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2560","type":"session","language":"en","created":"1494792405","changed":"1503045840","tnid":"0","translate":"0","revision_timestamp":"1503045840","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I will require Travel and accommodation assistance.","format":null,"safe_value":"I will require Travel and accommodation assistance."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 10:15:00","value2":"2017-09-04 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E\u003Cstrong\u003EDagger 2 Android\u003C\/strong\u003E : \u003Cem\u003EDefeat the Dahaka\u003C\/em\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWe have had many talks and blog posts on Dagger and Dependency Injection till now. I must say that people have done a great job at explaining various concepts of dependency injection, it\u2019s technical details and also case studies. But, in my opinion, Dagger is something which has become a part of our coding lives now. Yet, from time-to-time we still find ourselves lost in the world of dependencies and dealing with \u201cThe Dahaka (a beast of generated classes)\u201d.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003EStarting to learn about Dagger?\u003C\/em\u003E Start by creating a Module and a Component. Add a Singleton scope to it.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003EDependencies getting out of hand?\u003C\/em\u003E Create another dependent component.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003ECreating a dependent component?\u003C\/em\u003E You should create another scope!! And if this is not enough Create some subcomponents, create Qualifiers, use Lazy injection, use Provider, use static Injection, use Async Injection.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003EStill alive?\u003C\/em\u003E Now we present you with Dagger Android and I am sure that it will certainly kill you\u0026nbsp;:P\u003C\/p\u003E\r\n\r\n\u003Cp\u003EBut wait! What exactly is the relation between a \u003Cem\u003EModule\u003C\/em\u003E and a \u003Cem\u003EComponent\u003C\/em\u003E? We don\u2019t know that. Thankfully! Dagger 2 generates all it\u2019s code at compile time and we can actually see for ourselves what\u2019s going on behind the scenes. We can see that for our every Component, Dagger generates a \u003Cem\u003EDaggerComponent\u003C\/em\u003E which has a \u0022\u003Cem\u003Ehas-a\u003C\/em\u003E\u201d relationship with our \u003Cem\u003EModule\u003C\/em\u003E. So far so good? Here comes \u201cThe Dahaka\u201d (an infinite storm in an ocean of P\u003Cem\u003Eroviders, Factories, Builders, MemberInjectors, DoubleChecks, Lazy, Producers...\u003C\/em\u003E ) You can easily get lost in those classes.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003E\u201cMost people think dependency injection is like a river that flows swift and sure in one direction, but I have seen the face of dependencies and I can tell you they are wrong. Dependency Injection is an ocean in a storm. You may wonder who I am and why I say this; sit down and I will tell you a tale like none that you have ever heard!\u201d\u003C\/em\u003E\u200a\u2014\u200aQuote inspired from \u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003EPrince of Persia\u003C\/a\u003E (\u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003Ehttp:\/\/www.imdb.com\/title\/tt0384444\/quotes\u003C\/a\u003E)\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this talk I aim to \u003Cstrong\u003EDefeat \u201cThe Dahaka\u003C\/strong\u003E (a storm in the ocean of classes and Generics)\u201d or at least try to tame the beast. I will firstly go over the basics of Dagger and try to unleash the beast by going into the generated classes and finding out the patterns. I will then talk about applying those patterns to gradually learn the technicalities of Dagger Android. How can we move towards Dagger Android without blindly applying those annotations and also trying not to die in the hands of \u201cThe Dahaka\u201d by putting the leash back on the Beast.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAfter attending this talk you will get a better sense of what goes on behind the scenes and how to smartly move towards Dagger Android and still keep your cool\u0026nbsp;:)\u003C\/p\u003E\r\n\r\n\u003Cp\u003EFor more information, lookout for the series \u201cDagger and The Dahaka\u201d on medium\u0026nbsp;: \u003Ca href=\u0022https:\/\/medium.com\/@ragdroid\u0022\u003Ehttps:\/\/medium.com\/@ragdroid\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003EHere\u2019s how I am going to tame the Beast\u0026nbsp;:\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003E\u003Cstrong\u003EIntroduction\u003C\/strong\u003E\u0026nbsp;: Quick walkthrough of The Basics (Codes of Time)\u003C\/li\u003E\r\n\t\u003Cli\u003E\u003Cstrong\u003EDefinitions\u003C\/strong\u003E\u0026nbsp;: A sneak peek at the generated code (Face of the Dahaka)\u003C\/li\u003E\r\n\t\u003Cli\u003E\u003Cstrong\u003EDoubleCheck\u003C\/strong\u003E: A deadly dive into Scopes (Unleash the Beast)\u003C\/li\u003E\r\n\t\u003Cli\u003E\u003Cstrong\u003ERelationships\u003C\/strong\u003E\u0026nbsp;: Components, Subcomponents, Dependent Components, Subcomponent Builder (Defeat the Dahaka)\u003C\/li\u003E\r\n\t\u003Cli\u003E\u003Cstrong\u003EImplementation\u003C\/strong\u003E\u0026nbsp;: Dagger 2 Android! (Befriend the Beast)\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E\u003Cstrong\u003EDagger 2 Android\u003C\/strong\u003E : \u003Cem\u003EDefeat the Dahaka\u003C\/em\u003E\u003C\/p\u003E\n\u003Cp\u003EWe have had many talks and blog posts on Dagger and Dependency Injection till now. I must say that people have done a great job at explaining various concepts of dependency injection, it\u2019s technical details and also case studies. But, in my opinion, Dagger is something which has become a part of our coding lives now. Yet, from time-to-time we still find ourselves lost in the world of dependencies and dealing with \u201cThe Dahaka (a beast of generated classes)\u201d.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EStarting to learn about Dagger?\u003C\/em\u003E Start by creating a Module and a Component. Add a Singleton scope to it.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EDependencies getting out of hand?\u003C\/em\u003E Create another dependent component.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003ECreating a dependent component?\u003C\/em\u003E You should create another scope!! And if this is not enough Create some subcomponents, create Qualifiers, use Lazy injection, use Provider, use static Injection, use Async Injection.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EStill alive?\u003C\/em\u003E Now we present you with Dagger Android and I am sure that it will certainly kill you\u00a0:P\u003C\/p\u003E\n\u003Cp\u003EBut wait! What exactly is the relation between a \u003Cem\u003EModule\u003C\/em\u003E and a \u003Cem\u003EComponent\u003C\/em\u003E? We don\u2019t know that. Thankfully! Dagger 2 generates all it\u2019s code at compile time and we can actually see for ourselves what\u2019s going on behind the scenes. We can see that for our every Component, Dagger generates a \u003Cem\u003EDaggerComponent\u003C\/em\u003E which has a \u0022\u003Cem\u003Ehas-a\u003C\/em\u003E\u201d relationship with our \u003Cem\u003EModule\u003C\/em\u003E. So far so good? Here comes \u201cThe Dahaka\u201d (an infinite storm in an ocean of P\u003Cem\u003Eroviders, Factories, Builders, MemberInjectors, DoubleChecks, Lazy, Producers...\u003C\/em\u003E ) You can easily get lost in those classes.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003E\u201cMost people think dependency injection is like a river that flows swift and sure in one direction, but I have seen the face of dependencies and I can tell you they are wrong. Dependency Injection is an ocean in a storm. You may wonder who I am and why I say this; sit down and I will tell you a tale like none that you have ever heard!\u201d\u003C\/em\u003E\u200a\u2014\u200aQuote inspired from \u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003EPrince of Persia\u003C\/a\u003E (\u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003Ehttp:\/\/www.imdb.com\/title\/tt0384444\/quotes\u003C\/a\u003E)\u003C\/p\u003E\n\u003Cp\u003EIn this talk I aim to \u003Cstrong\u003EDefeat \u201cThe Dahaka\u003C\/strong\u003E (a storm in the ocean of classes and Generics)\u201d or at least try to tame the beast. I will firstly go over the basics of Dagger and try to unleash the beast by going into the generated classes and finding out the patterns. I will then talk about applying those patterns to gradually learn the technicalities of Dagger Android. How can we move towards Dagger Android without blindly applying those annotations and also trying not to die in the hands of \u201cThe Dahaka\u201d by putting the leash back on the Beast.\u003C\/p\u003E\n\u003Cp\u003EAfter attending this talk you will get a better sense of what goes on behind the scenes and how to smartly move towards Dagger Android and still keep your cool\u00a0:)\u003C\/p\u003E\n\u003Cp\u003EFor more information, lookout for the series \u201cDagger and The Dahaka\u201d on medium\u00a0: \u003Ca href=\u0022https:\/\/medium.com\/@ragdroid\u0022\u003Ehttps:\/\/medium.com\/@ragdroid\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003EHere\u2019s how I am going to tame the Beast\u00a0:\u00a0\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EIntroduction\u003C\/strong\u003E\u00a0: Quick walkthrough of The Basics (Codes of Time)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EDefinitions\u003C\/strong\u003E\u00a0: A sneak peek at the generated code (Face of the Dahaka)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EDoubleCheck\u003C\/strong\u003E: A deadly dive into Scopes (Unleash the Beast)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ERelationships\u003C\/strong\u003E\u00a0: Components, Subcomponents, Dependent Components, Subcomponent Builder (Defeat the Dahaka)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EImplementation\u003C\/strong\u003E\u00a0: Dagger 2 Android! (Befriend the Beast)\u003C\/li\u003E\n\u003C\/ul\u003E","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"755"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494792405","last_comment_name":null,"last_comment_uid":"755","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"ragdroid","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E\u003Cstrong\u003EDagger 2 Android\u003C\/strong\u003E : \u003Cem\u003EDefeat the Dahaka\u003C\/em\u003E\u003C\/p\u003E\n\u003Cp\u003EWe have had many talks and blog posts on Dagger and Dependency Injection till now. I must say that people have done a great job at explaining various concepts of dependency injection, it\u2019s technical details and also case studies. But, in my opinion, Dagger is something which has become a part of our coding lives now. Yet, from time-to-time we still find ourselves lost in the world of dependencies and dealing with \u201cThe Dahaka (a beast of generated classes)\u201d.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EStarting to learn about Dagger?\u003C\/em\u003E Start by creating a Module and a Component. Add a Singleton scope to it.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EDependencies getting out of hand?\u003C\/em\u003E Create another dependent component.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003ECreating a dependent component?\u003C\/em\u003E You should create another scope!! And if this is not enough Create some subcomponents, create Qualifiers, use Lazy injection, use Provider, use static Injection, use Async Injection.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EStill alive?\u003C\/em\u003E Now we present you with Dagger Android and I am sure that it will certainly kill you\u00a0:P\u003C\/p\u003E\n\u003Cp\u003EBut wait! What exactly is the relation between a \u003Cem\u003EModule\u003C\/em\u003E and a \u003Cem\u003EComponent\u003C\/em\u003E? We don\u2019t know that. Thankfully! Dagger 2 generates all it\u2019s code at compile time and we can actually see for ourselves what\u2019s going on behind the scenes. We can see that for our every Component, Dagger generates a \u003Cem\u003EDaggerComponent\u003C\/em\u003E which has a \u0022\u003Cem\u003Ehas-a\u003C\/em\u003E\u201d relationship with our \u003Cem\u003EModule\u003C\/em\u003E. So far so good? Here comes \u201cThe Dahaka\u201d (an infinite storm in an ocean of P\u003Cem\u003Eroviders, Factories, Builders, MemberInjectors, DoubleChecks, Lazy, Producers...\u003C\/em\u003E ) You can easily get lost in those classes.\u00a0\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003E\u201cMost people think dependency injection is like a river that flows swift and sure in one direction, but I have seen the face of dependencies and I can tell you they are wrong. Dependency Injection is an ocean in a storm. You may wonder who I am and why I say this; sit down and I will tell you a tale like none that you have ever heard!\u201d\u003C\/em\u003E\u200a\u2014\u200aQuote inspired from \u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003EPrince of Persia\u003C\/a\u003E (\u003Ca href=\u0022http:\/\/www.imdb.com\/title\/tt0384444\/quotes\u0022\u003Ehttp:\/\/www.imdb.com\/title\/tt0384444\/quotes\u003C\/a\u003E)\u003C\/p\u003E\n\u003Cp\u003EIn this talk I aim to \u003Cstrong\u003EDefeat \u201cThe Dahaka\u003C\/strong\u003E (a storm in the ocean of classes and Generics)\u201d or at least try to tame the beast. I will firstly go over the basics of Dagger and try to unleash the beast by going into the generated classes and finding out the patterns. I will then talk about applying those patterns to gradually learn the technicalities of Dagger Android. How can we move towards Dagger Android without blindly applying those annotations and also trying not to die in the hands of \u201cThe Dahaka\u201d by putting the leash back on the Beast.\u003C\/p\u003E\n\u003Cp\u003EAfter attending this talk you will get a better sense of what goes on behind the scenes and how to smartly move towards Dagger Android and still keep your cool\u00a0:)\u003C\/p\u003E\n\u003Cp\u003EFor more information, lookout for the series \u201cDagger and The Dahaka\u201d on medium\u00a0: \u003Ca href=\u0022https:\/\/medium.com\/@ragdroid\u0022\u003Ehttps:\/\/medium.com\/@ragdroid\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003EHere\u2019s how I am going to tame the Beast\u00a0:\u00a0\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EIntroduction\u003C\/strong\u003E\u00a0: Quick walkthrough of The Basics (Codes of Time)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EDefinitions\u003C\/strong\u003E\u00a0: A sneak peek at the generated code (Face of the Dahaka)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EDoubleCheck\u003C\/strong\u003E: A deadly dive into Scopes (Unleash the Beast)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003ERelationships\u003C\/strong\u003E\u00a0: Components, Subcomponents, Dependent Components, Subcomponent Builder (Defeat the Dahaka)\u003C\/li\u003E\n\u003Cli\u003E\u003Cstrong\u003EImplementation\u003C\/strong\u003E\u00a0: Dagger 2 Android! (Befriend the Beast)\u003C\/li\u003E\n\u003C\/ul\u003E"},{"title":"Android Instant Apps","url":"\/sessions\/android-instant-apps","room":"3518","speakers":[{"name":"Ben Weiss","url":"\/users\/ben-weiss"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-04T14:30:00Z","end":"2017-09-04T15:10:00Z","id":"2562","debug":{"vid":"2562","uid":"178","title":"Android Instant Apps","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2562","type":"session","language":"en","created":"1494850377","changed":"1503045818","tnid":"0","translate":"0","revision_timestamp":"1503045818","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 12:30:00","value2":"2017-09-04 13:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThis session will introduce Android Instant Apps and show developers how to migrate their existing installable app into an instant app.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EThis session will introduce Android Instant Apps and show developers how to migrate their existing installable app into an instant app.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"178"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494850377","last_comment_name":null,"last_comment_uid":"178","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"keyboardsurfer","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThis session will introduce Android Instant Apps and show developers how to migrate their existing installable app into an instant app.\u003C\/p\u003E\n"},{"title":"Data Persistence in Android: There\u0027s Room For Improvement","url":"\/sessions\/data-persistence-android-theres-room-improvement","room":"3519","speakers":[{"name":"Florina Muntenescu","url":"\/users\/florina-muntenescu"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-04T10:45:00Z","end":"2017-09-04T11:25:00Z","id":"2565","debug":{"vid":"2565","uid":"285","title":"Data Persistence in Android: There\u0027s Room For Improvement","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2565","type":"session","language":"en","created":"1494856876","changed":"1503045781","tnid":"0","translate":"0","revision_timestamp":"1503045781","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 08:45:00","value2":"2017-09-04 09:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAt Google I\/O we launched Room: a persistence component designed to make your life easier when working with SQLite databases on Android. Entities and data access objects are defined using annotations, your queries are now checked at compile time and the database migrations are easy to implement. In this talk you\u2019ll find out whether you should or not integrate Room in your project. You\u2019ll learn how Room works, how it handles multi-threading, how to write queries and work with different return types, how to migrate your database, and finally, how to test your code.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAt Google I\/O we launched Room: a persistence component designed to make your life easier when working with SQLite databases on Android. Entities and data access objects are defined using annotations, your queries are now checked at compile time and the database migrations are easy to implement. In this talk you\u2019ll find out whether you should or not integrate Room in your project. You\u2019ll learn how Room works, how it handles multi-threading, how to write queries and work with different return types, how to migrate your database, and finally, how to test your code.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"285"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494856876","last_comment_name":null,"last_comment_uid":"285","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Florina Muntenescu","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAt Google I\/O we launched Room: a persistence component designed to make your life easier when working with SQLite databases on Android. Entities and data access objects are defined using annotations, your queries are now checked at compile time and the database migrations are easy to implement. In this talk you\u2019ll find out whether you should or not integrate Room in your project. You\u2019ll learn how Room works, how it handles multi-threading, how to write queries and work with different return types, how to migrate your database, and finally, how to test your code.\u003C\/p\u003E\n"},{"title":"Doppl Code Sharing","url":"\/sessions\/doppl-code-sharing","room":"3520","speakers":[{"name":"Kevin Galligan","url":"\/users\/kevin-galligan"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-05T16:45:00Z","end":"2017-09-05T17:25:00Z","id":"2571","debug":{"vid":"2571","uid":"761","title":"Doppl Code Sharing","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2571","type":"session","language":"en","created":"1494893455","changed":"1503045760","tnid":"0","translate":"0","revision_timestamp":"1503045760","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"This is a talk about a new framework, which from my own experience tends not to score highly in conference talk selection, but by September should have some traction. Talk link is from Droidcon NYC, much earlier version of framework. Thanks!","format":null,"safe_value":"This is a talk about a new framework, which from my own experience tends not to score highly in conference talk selection, but by September should have some traction. Talk link is from Droidcon NYC, much earlier version of framework. Thanks!"}]},"field_session_datetime":{"und":[{"value":"2017-09-05 14:45:00","value2":"2017-09-05 15:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ECode sharing is the new Cross Platform. There are a few options out in the market, but all of them require a third platform, immature libraries, and more than a little risk and hope. The dream would be to build two native apps, with very little of the risk and hope, and maximum shared logic.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EOur entry into this mix is called Doppl. It is a build tool and set of libraries built around Google\u2019s J2ObjC to facilitate maximum code sharing, with minimal risk, and minimal impact on development time and processes. In summary, you can share your business logic from Android to iOS, and leverage popular Android libraries such as: Retrofit, RxJava, Dagger, Gson, various ORM\u2019s, as well as SQLiteDatabase, shared preferences, Android threading, etc.\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThe Android side is 100% native, the iOS side uses generated Objective-C, and both use the best IDE\u2019s for their tasks (and yes, you can code in Swift). This talk will go through the what\u2019s and why\u2019s, show some live coding, and talk about how your best practice architecture can be leveraged on both platforms.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cem\u003EDoppl is currently available for demo purposes and early access folks. Release in June. Core tools and libraries will be open source.\u003C\/em\u003E\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ECode sharing is the new Cross Platform. There are a few options out in the market, but all of them require a third platform, immature libraries, and more than a little risk and hope. The dream would be to build two native apps, with very little of the risk and hope, and maximum shared logic.\u003C\/p\u003E\n\u003Cp\u003EOur entry into this mix is called Doppl. It is a build tool and set of libraries built around Google\u2019s J2ObjC to facilitate maximum code sharing, with minimal risk, and minimal impact on development time and processes. In summary, you can share your business logic from Android to iOS, and leverage popular Android libraries such as: Retrofit, RxJava, Dagger, Gson, various ORM\u2019s, as well as SQLiteDatabase, shared preferences, Android threading, etc.\u00a0\u003C\/p\u003E\n\u003Cp\u003EThe Android side is 100% native, the iOS side uses generated Objective-C, and both use the best IDE\u2019s for their tasks (and yes, you can code in Swift). This talk will go through the what\u2019s and why\u2019s, show some live coding, and talk about how your best practice architecture can be leveraged on both platforms.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EDoppl is currently available for demo purposes and early access folks. Release in June. Core tools and libraries will be open source.\u003C\/em\u003E\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":{"und":[{"fid":"2095","uid":"761","filename":"Droidcon NYC 2016 - J2objc for fun and profit (updated)","uri":"oembed:\/\/https%3A\/\/www.youtube.com\/watch%3Fv%3DaZxN6xw47p4%26t%3D10s%26index%3D12%26list%3DPLnVy79PaFHMXJha06t6pWfkYcATV4oPvC","filemime":"video\/oembed","filesize":"0","status":"1","timestamp":"1494893246","type":"video","rdf_mapping":[],"metadata":{"oembed":{"type":"video","provider_url":"https:\/\/www.youtube.com\/","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/aZxN6xw47p4\/hqdefault.jpg","author_name":"touchlab","title":"Droidcon NYC 2016 - J2objc for fun and profit (updated)","thumbnail_width":480,"width":480,"version":"1.0","html":"\u003Ciframe width=\u0022480\u0022 height=\u0022270\u0022 src=\u0022https:\/\/www.youtube.com\/embed\/videoseries?list=PLnVy79PaFHMXJha06t6pWfkYcATV4oPvC\u0022 frameborder=\u00220\u0022 allowfullscreen\u003E\u003C\/iframe\u003E","thumbnail_height":360,"height":270,"author_url":"https:\/\/www.youtube.com\/channel\/UC_LIW0OUdsRI21D0xnWkexw","provider_name":"YouTube","original_url":"https:\/\/www.youtube.com\/watch?v=aZxN6xw47p4\u0026t=10s\u0026index=12\u0026list=PLnVy79PaFHMXJha06t6pWfkYcATV4oPvC","provider":"default:youtube"}},"alt":"","title":"","display":"1","description":""}]},"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"761"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494893455","last_comment_name":null,"last_comment_uid":"761","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"kpgalligan","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ECode sharing is the new Cross Platform. There are a few options out in the market, but all of them require a third platform, immature libraries, and more than a little risk and hope. The dream would be to build two native apps, with very little of the risk and hope, and maximum shared logic.\u003C\/p\u003E\n\u003Cp\u003EOur entry into this mix is called Doppl. It is a build tool and set of libraries built around Google\u2019s J2ObjC to facilitate maximum code sharing, with minimal risk, and minimal impact on development time and processes. In summary, you can share your business logic from Android to iOS, and leverage popular Android libraries such as: Retrofit, RxJava, Dagger, Gson, various ORM\u2019s, as well as SQLiteDatabase, shared preferences, Android threading, etc.\u00a0\u003C\/p\u003E\n\u003Cp\u003EThe Android side is 100% native, the iOS side uses generated Objective-C, and both use the best IDE\u2019s for their tasks (and yes, you can code in Swift). This talk will go through the what\u2019s and why\u2019s, show some live coding, and talk about how your best practice architecture can be leveraged on both platforms.\u003C\/p\u003E\n\u003Cp\u003E\u003Cem\u003EDoppl is currently available for demo purposes and early access folks. Release in June. Core tools and libraries will be open source.\u003C\/em\u003E\u003C\/p\u003E\n"},{"title":"Flutter - 60fps UI of the future","url":"\/sessions\/flutter-60fps-ui-future","room":"3520","speakers":[{"name":"Pascal Welsch","url":"\/users\/pascal-welsch"},{"name":"Albrecht Noll","url":"\/users\/albrecht-noll"}],"terms":[{"name":"Languages","url":"\/session-tracks\/languages-2","tid":"181"}],"start":"2017-09-04T11:30:00Z","end":"2017-09-04T12:10:00Z","id":"2572","debug":{"vid":"2572","uid":"121","title":"Flutter - 60fps UI of the future","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2572","type":"session","language":"en","created":"1494894503","changed":"1503045737","tnid":"0","translate":"0","revision_timestamp":"1503045737","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 09:30:00","value2":"2017-09-04 10:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E10 years Android - what\u0027s next? \u003Ca href=\u0022https:\/\/github.com\/fuchsia-mirror\u0022\u003EFuchsia\u003C\/a\u003E and \u003Ca href=\u0022https:\/\/flutter.io\/\u0022\u003EFlutter\u003C\/a\u003E!\u003C\/p\u003E\r\n\r\n\u003Cp\u003EPascal and Albrecht (Android developer) talk\u0026nbsp;about their experience of writing an app\u0026nbsp;with the current alpha version of flutter for Android and iOS.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThe Android UI evolved a lot in the last decade. With\u0026nbsp;Holo, Android became kind of nice looking and with Material Design,\u0026nbsp;Android became beautiful. What hasn\u0027t changed is the UI Framework where layouts are inflated, layouted and measured\u0026nbsp;on the main thread. Decisions made in 2005 which can\u0027t be changed now.\u0026nbsp;This makes it harder than it should to run you app constantly on 60fps.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EFlutter, a mobile app SDK from Google is designed to render your app constantly at 60fps. It already comes with a rich catalog of pixel perfect Material Design which look and feel like widgets from the Android design support library. Flutter apps are written in Dart\u0026nbsp;and cross compile to Android and iOS to native code (not JavaScript!!!). Java glue code is only required when you\u0027re talking to system services like GPS or notifications.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EFlutter could be Googles transition plan for Fuchsia, Googles next operating system for mobile devices. Instead of supporting Android Apps on Fuchsia, apps for Fuchsia can be compiled to iOS and Android apps.\u0026nbsp;Fuchsia supports Dart as first class language and the system UI is written with flutter.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIt\u0027s time to look what\u0027s next!\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E10 years Android - what\u0027s next? \u003Ca href=\u0022https:\/\/github.com\/fuchsia-mirror\u0022\u003EFuchsia\u003C\/a\u003E and \u003Ca href=\u0022https:\/\/flutter.io\/\u0022\u003EFlutter\u003C\/a\u003E!\u003C\/p\u003E\n\u003Cp\u003EPascal and Albrecht (Android developer) talk\u00a0about their experience of writing an app\u00a0with the current alpha version of flutter for Android and iOS.\u003C\/p\u003E\n\u003Cp\u003EThe Android UI evolved a lot in the last decade. With\u00a0Holo, Android became kind of nice looking and with Material Design,\u00a0Android became beautiful. What hasn\u0027t changed is the UI Framework where layouts are inflated, layouted and measured\u00a0on the main thread. Decisions made in 2005 which can\u0027t be changed now.\u00a0This makes it harder than it should to run you app constantly on 60fps.\u003C\/p\u003E\n\u003Cp\u003EFlutter, a mobile app SDK from Google is designed to render your app constantly at 60fps. It already comes with a rich catalog of pixel perfect Material Design which look and feel like widgets from the Android design support library. Flutter apps are written in Dart\u00a0and cross compile to Android and iOS to native code (not JavaScript!!!). Java glue code is only required when you\u0027re talking to system services like GPS or notifications.\u003C\/p\u003E\n\u003Cp\u003EFlutter could be Googles transition plan for Fuchsia, Googles next operating system for mobile devices. Instead of supporting Android Apps on Fuchsia, apps for Fuchsia can be compiled to iOS and Android apps.\u00a0Fuchsia supports Dart as first class language and the system UI is written with flutter.\u003C\/p\u003E\n\u003Cp\u003EIt\u0027s time to look what\u0027s next!\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"121"},{"target_id":"284"}]},"field_session_track_ref":{"und":[{"target_id":"181"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494894503","last_comment_name":null,"last_comment_uid":"121","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"passsy","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E10 years Android - what\u0027s next? \u003Ca href=\u0022https:\/\/github.com\/fuchsia-mirror\u0022\u003EFuchsia\u003C\/a\u003E and \u003Ca href=\u0022https:\/\/flutter.io\/\u0022\u003EFlutter\u003C\/a\u003E!\u003C\/p\u003E\n\u003Cp\u003EPascal and Albrecht (Android developer) talk\u00a0about their experience of writing an app\u00a0with the current alpha version of flutter for Android and iOS.\u003C\/p\u003E\n\u003Cp\u003EThe Android UI evolved a lot in the last decade. With\u00a0Holo, Android became kind of nice looking and with Material Design,\u00a0Android became beautiful. What hasn\u0027t changed is the UI Framework where layouts are inflated, layouted and measured\u00a0on the main thread. Decisions made in 2005 which can\u0027t be changed now.\u00a0This makes it harder than it should to run you app constantly on 60fps.\u003C\/p\u003E\n\u003Cp\u003EFlutter, a mobile app SDK from Google is designed to render your app constantly at 60fps. It already comes with a rich catalog of pixel perfect Material Design which look and feel like widgets from the Android design support library. Flutter apps are written in Dart\u00a0and cross compile to Android and iOS to native code (not JavaScript!!!). Java glue code is only required when you\u0027re talking to system services like GPS or notifications.\u003C\/p\u003E\n\u003Cp\u003EFlutter could be Googles transition plan for Fuchsia, Googles next operating system for mobile devices. Instead of supporting Android Apps on Fuchsia, apps for Fuchsia can be compiled to iOS and Android apps.\u00a0Fuchsia supports Dart as first class language and the system UI is written with flutter.\u003C\/p\u003E\n\u003Cp\u003EIt\u0027s time to look what\u0027s next!\u003C\/p\u003E\n"},{"title":"Upgrading to Moshi","url":"\/sessions\/upgrading-moshi","room":"3518","speakers":[{"name":"Eric Cochran","url":"\/users\/eric-cochran"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T16:45:00Z","end":"2017-09-05T17:25:00Z","id":"2573","debug":{"vid":"2573","uid":"762","title":"Upgrading to Moshi","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2573","type":"session","language":"en","created":"1494895159","changed":"1503045717","tnid":"0","translate":"0","revision_timestamp":"1503045717","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 14:45:00","value2":"2017-09-05 15:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EMoshi is the successor to Gson. I will briefly contrast Moshi to Gson and explain the advantages of Moshi\u0027s API and implementation. I will cover the power of the streaming API for complex use cases, like polymorphic deserialization, and how Okio\u0027s types make building off of Moshi fun and easy. Finally, we will go through how to use Moshi effectively with Retrofit and Auto-Value-Moshi and some tricks to employ when upgrading.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EMoshi is the successor to Gson. I will briefly contrast Moshi to Gson and explain the advantages of Moshi\u0027s API and implementation. I will cover the power of the streaming API for complex use cases, like polymorphic deserialization, and how Okio\u0027s types make building off of Moshi fun and easy. Finally, we will go through how to use Moshi effectively with Retrofit and Auto-Value-Moshi and some tricks to employ when upgrading.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"762"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1494895159","last_comment_name":null,"last_comment_uid":"762","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Eric","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EMoshi is the successor to Gson. I will briefly contrast Moshi to Gson and explain the advantages of Moshi\u0027s API and implementation. I will cover the power of the streaming API for complex use cases, like polymorphic deserialization, and how Okio\u0027s types make building off of Moshi fun and easy. Finally, we will go through how to use Moshi effectively with Retrofit and Auto-Value-Moshi and some tricks to employ when upgrading.\u003C\/p\u003E\n"},{"title":"Making the Android Wear UI magical","url":"\/sessions\/making-android-wear-ui-magical","room":"3520","speakers":[{"name":"Hoi Lam","url":"\/users\/hoi-lam"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-04T10:45:00Z","end":"2017-09-04T11:25:00Z","id":"2850","debug":{"vid":"2850","uid":"279","title":"Making the Android Wear UI magical","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2850","type":"session","language":"en","created":"1495565032","changed":"1503045695","tnid":"0","translate":"0","revision_timestamp":"1503045695","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 08:45:00","value2":"2017-09-04 09:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EIn this talk, Hoi will talk about how to make the Android Wear UI magical. There are a number of platform improvements since API 23 to help make developing for circular and square screens a breeze. With new framework improvements since then, developers have an array of powerful tools to make things shine on the most personal device.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EIn this talk, Hoi will talk about how to make the Android Wear UI magical. There are a number of platform improvements since API 23 to help make developing for circular and square screens a breeze. With new framework improvements since then, developers have an array of powerful tools to make things shine on the most personal device.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"279"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1495565032","last_comment_name":null,"last_comment_uid":"279","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"hoitab","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIn this talk, Hoi will talk about how to make the Android Wear UI magical. There are a number of platform improvements since API 23 to help make developing for circular and square screens a breeze. With new framework improvements since then, developers have an array of powerful tools to make things shine on the most personal device.\u003C\/p\u003E\n"},{"title":"Using Android Things to detect \u0026 exterminate Reptilians","url":"\/sessions\/using-android-things-detect-exterminate-reptilians","room":"3518","speakers":[{"name":"Gautier Mechling","url":"\/users\/gautier-mechling"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-05T11:45:00Z","end":"2017-09-05T12:25:00Z","id":"2968","debug":{"vid":"2968","uid":"97","title":"Using Android Things to detect \u0026 exterminate Reptilians","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2968","type":"session","language":"en","created":"1495929475","changed":"1503045667","tnid":"0","translate":"0","revision_timestamp":"1503045667","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"I was a speaker at droidcon Berlin last year. The conference was great!\r\n\r\nI\u0027ve been experimenting with Android Things for the last 6 months already.\r\nThis talk is a sum up of everything I learned (and wrote on my blog http:\/\/nilhcem.com\/) so far.","format":null,"safe_value":"I was a speaker at droidcon Berlin last year. The conference was great!\r\n\r\nI\u0026#039;ve been experimenting with Android Things for the last 6 months already.\r\nThis talk is a sum up of everything I learned (and wrote on my blog http:\/\/nilhcem.com\/) so far."}]},"field_session_datetime":{"und":[{"value":"2017-09-05 09:45:00","value2":"2017-09-05 10:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWhether you believe it or not, the Reptilians are everywhere, and we have never been ready to face them so far.\u003Cbr \/\u003E\r\nWe \u003Cstrong\u003EWERE \u003C\/strong\u003Enot ready... But this will finally change, now that \u003Cem\u003EAndroid Things\u003C\/em\u003E has been released. Trust me, they didn\u0027t want to see that happen.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWe could still hear them laughing when we finally succeeded in developing stunning mobile applications a few years ago. They were not impressed. But now that we can use the power of Android to build physical stuff, it\u0027s a different story. Ever seen any Reptilian having goosebumps? Now you will.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ETogether, we will discover Android Things and see how we can create a moving machine capable of detecting Reptilians (with touch\/skin temperature sensors, and machine learning), but also capable of exterminating them (btw, I would appreciate if the droidcon staff could lend me a flame-thrower, it would make a great demo).\u003C\/p\u003E\r\n\r\n\u003Cp\u003EHow? Using a Raspberry Pi, an Arduino, and discovering+using some specific Android Things APIs, such as gpio, pwm, i2c, spi, uart, allowing us to interact with physical components.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ECome see the power of Android Things.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWhether you believe it or not, the Reptilians are everywhere, and we have never been ready to face them so far.\u003Cbr \/\u003E\nWe \u003Cstrong\u003EWERE \u003C\/strong\u003Enot ready... But this will finally change, now that \u003Cem\u003EAndroid Things\u003C\/em\u003E has been released. Trust me, they didn\u0027t want to see that happen.\u003C\/p\u003E\n\u003Cp\u003EWe could still hear them laughing when we finally succeeded in developing stunning mobile applications a few years ago. They were not impressed. But now that we can use the power of Android to build physical stuff, it\u0027s a different story. Ever seen any Reptilian having goosebumps? Now you will.\u003C\/p\u003E\n\u003Cp\u003ETogether, we will discover Android Things and see how we can create a moving machine capable of detecting Reptilians (with touch\/skin temperature sensors, and machine learning), but also capable of exterminating them (btw, I would appreciate if the droidcon staff could lend me a flame-thrower, it would make a great demo).\u003C\/p\u003E\n\u003Cp\u003EHow? Using a Raspberry Pi, an Arduino, and discovering+using some specific Android Things APIs, such as gpio, pwm, i2c, spi, uart, allowing us to interact with physical components.\u003C\/p\u003E\n\u003Cp\u003ECome see the power of Android Things.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"97"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1495929475","last_comment_name":null,"last_comment_uid":"97","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Nilhcem","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWhether you believe it or not, the Reptilians are everywhere, and we have never been ready to face them so far.\u003Cbr \/\u003E\nWe \u003Cstrong\u003EWERE \u003C\/strong\u003Enot ready... But this will finally change, now that \u003Cem\u003EAndroid Things\u003C\/em\u003E has been released. Trust me, they didn\u0027t want to see that happen.\u003C\/p\u003E\n\u003Cp\u003EWe could still hear them laughing when we finally succeeded in developing stunning mobile applications a few years ago. They were not impressed. But now that we can use the power of Android to build physical stuff, it\u0027s a different story. Ever seen any Reptilian having goosebumps? Now you will.\u003C\/p\u003E\n\u003Cp\u003ETogether, we will discover Android Things and see how we can create a moving machine capable of detecting Reptilians (with touch\/skin temperature sensors, and machine learning), but also capable of exterminating them (btw, I would appreciate if the droidcon staff could lend me a flame-thrower, it would make a great demo).\u003C\/p\u003E\n\u003Cp\u003EHow? Using a Raspberry Pi, an Arduino, and discovering+using some specific Android Things APIs, such as gpio, pwm, i2c, spi, uart, allowing us to interact with physical components.\u003C\/p\u003E\n\u003Cp\u003ECome see the power of Android Things.\u003C\/p\u003E\n"},{"title":"[Keynote] How to be an Android Expert","url":"\/sessions\/keynote-how-be-android-expert","room":"3518","speakers":[{"name":"Chiu-Ki Chan","url":"\/users\/chiu-ki-chan"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T10:00:00Z","end":"2017-09-04T10:40:00Z","id":"2970","debug":{"vid":"2970","uid":"777","title":"[Keynote] How to be an Android Expert","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"2970","type":"session","language":"en","created":"1495937367","changed":"1503045647","tnid":"0","translate":"0","revision_timestamp":"1503045647","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"This keynote is not specifically targeted to women, but by being a women and talking candidly about the benefits and also the roadblocks to public speaking, I hope to encourage more women to step up and share their knowledge, and make the Android community more inclusive as a result.","format":null,"safe_value":"This keynote is not specifically targeted to women, but by being a women and talking candidly about the benefits and also the roadblocks to public speaking, I hope to encourage more women to step up and share their knowledge, and make the Android community more inclusive as a result."}]},"field_session_datetime":{"und":[{"value":"2017-09-04 08:00:00","value2":"2017-09-04 08:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThink of an Android expert. Why do you consider this person an expert? \u201cShe knows a lot about Android\u201d, you say. But how do you know? You know because she shares her knowledge, through blogs, talks, StackOverflow etc.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EExperts are just that, people who share their knowledge. Sharing puts you in a positive feedback loop: the more you share, the more knowledgeable you become. Let me walk you through some concrete steps you can take to start sharing and build up your expertise.\u003C\/p\u003E\r\n","summary":"","format":"guest_html","safe_value":"\u003Cp\u003EThink of an Android expert. Why do you consider this person an expert? \u201cShe knows a lot about Android\u201d, you say. But how do you know? You know because she shares her knowledge, through blogs, talks, StackOverflow etc.\u003C\/p\u003E\n\u003Cp\u003EExperts are just that, people who share their knowledge. Sharing puts you in a positive feedback loop: the more you share, the more knowledgeable you become. Let me walk you through some concrete steps you can take to start sharing and build up your expertise.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":{"und":[{"fid":"2128","uid":"777","filename":"D2 1ChiuKi v3","uri":"oembed:\/\/https%3A\/\/www.youtube.com\/watch%3Fv%3DoHEJJNYO83g","filemime":"video\/oembed","filesize":"0","status":"1","timestamp":"1495937243","type":"video","rdf_mapping":[],"metadata":{"oembed":{"author_url":"https:\/\/www.youtube.com\/channel\/UCOExahQQ588Da8Nft_Ltb9w","provider_name":"YouTube","author_name":"SlidesLive Guest2","version":"1.0","html":"\u003Ciframe width=\u0022480\u0022 height=\u0022270\u0022 src=\u0022https:\/\/www.youtube.com\/embed\/oHEJJNYO83g?feature=oembed\u0022 frameborder=\u00220\u0022 allowfullscreen\u003E\u003C\/iframe\u003E","height":270,"thumbnail_height":360,"width":480,"provider_url":"https:\/\/www.youtube.com\/","thumbnail_url":"https:\/\/i.ytimg.com\/vi\/oHEJJNYO83g\/hqdefault.jpg","type":"video","title":"D2 1ChiuKi v3","thumbnail_width":480,"original_url":"https:\/\/www.youtube.com\/watch?v=oHEJJNYO83g","provider":"default:youtube"}},"alt":"","title":"","display":"1","description":""}]},"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"777"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1495937367","last_comment_name":null,"last_comment_uid":"777","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"chiuki","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThink of an Android expert. Why do you consider this person an expert? \u201cShe knows a lot about Android\u201d, you say. But how do you know? You know because she shares her knowledge, through blogs, talks, StackOverflow etc.\u003C\/p\u003E\n\u003Cp\u003EExperts are just that, people who share their knowledge. Sharing puts you in a positive feedback loop: the more you share, the more knowledgeable you become. Let me walk you through some concrete steps you can take to start sharing and build up your expertise.\u003C\/p\u003E\n"},{"title":"Brave new world!? Exploring App design with Architecture Components and Kotlin","url":"\/sessions\/brave-new-world-exploring-app-design-architecture-components-and-kotlin","room":"3519","speakers":[{"name":"Hendrik Kokocinski","url":"\/users\/hendrik-kokocinski"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T14:00:00Z","end":"2017-09-05T14:40:00Z","id":"3005","debug":{"vid":"3005","uid":"719","title":"Brave new world!? Exploring App design with Architecture Components and Kotlin","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3005","type":"session","language":"en","created":"1496137274","changed":"1503312250","tnid":"0","translate":"0","revision_timestamp":"1503312250","revision_uid":"11","field_session_audio":[],"field_session_comments":{"und":[{"value":"Although I submitted two talks I only plan to give one of those so please pick your favourite.","format":null,"safe_value":"Although I submitted two talks I only plan to give one of those so please pick your favourite."}]},"field_session_datetime":{"und":[{"value":"2017-09-05 12:00:00","value2":"2017-09-05 12:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ESoftware architecture in Android has come a long way in the past years. With MVP and MVVM currently being very popular and concepts like React Native and Redux on the horizon Android developers can not complain about a lack of viable options these days.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EWith \u0022Architecture Components\u0022 Google finally presented their own solutions to some of the biggest problems Android developers face every day. This talk will give an introduction to\u0026nbsp;these components and will show how they can be intregrated into a Kotlin based App.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ESoftware architecture in Android has come a long way in the past years. With MVP and MVVM currently being very popular and concepts like React Native and Redux on the horizon Android developers can not complain about a lack of viable options these days.\u003C\/p\u003E\n\u003Cp\u003EWith \u0022Architecture Components\u0022 Google finally presented their own solutions to some of the biggest problems Android developers face every day. This talk will give an introduction to\u00a0these components and will show how they can be intregrated into a Kotlin based App.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"719"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496137274","last_comment_name":null,"last_comment_uid":"719","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"hkokocin","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ESoftware architecture in Android has come a long way in the past years. With MVP and MVVM currently being very popular and concepts like React Native and Redux on the horizon Android developers can not complain about a lack of viable options these days.\u003C\/p\u003E\n\u003Cp\u003EWith \u0022Architecture Components\u0022 Google finally presented their own solutions to some of the biggest problems Android developers face every day. This talk will give an introduction to\u00a0these components and will show how they can be intregrated into a Kotlin based App.\u003C\/p\u003E\n"},{"title":"Fingerprint authentication in mobile banking applications","url":"\/sessions\/fingerprint-authentication-mobile-banking-applications","room":"3521","speakers":[{"name":"Sina Yazdanmehr","url":"\/users\/sina-yazdanmehr"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T17:45:00Z","end":"2017-09-04T18:25:00Z","id":"3285","debug":{"vid":"3285","uid":"775","title":"Fingerprint authentication in mobile banking applications","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3285","type":"session","language":"en","created":"1496520474","changed":"1504538834","tnid":"0","translate":"0","revision_timestamp":"1504538834","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 15:45:00","value2":"2017-09-04 16:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EBy adding the fingerprint reader, a new way to authenticate users has been introduced to smart phones. This new authentication feature is attractive to both developers and users.\u003Cbr \/\u003E\r\nAlthough this biometric authentication manner has simplified the authentication process, incorrect implementations can introduce critical security problems.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EEarly adopters of fingerprint authentication are in many cases mobile banking applications, where this authentication vector can be used instead of a PIN for the login process. However, other, more sensitive actions such as money transactions pose a greater challenge when migrating to fingerprint authentication.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAdditionally, in order to increase security, virtually all mobile banking application nowadays depend on OTP algorithms to generate time-based secrets, which ultimately depend on a secret key (the seed). This secret key is the ultimate secret for access to mobile banking.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ESince this secret key needs to be available for the login and transaction authentication process, most current mobile banking applications solve this by encrypting the secret key with the user\u2019s PIN code, and then storing the PIN code on the device encrypted in such a way that it will be accessible with fingerprint authentication.\u003Cbr \/\u003E\r\nThe problem with this approach is that the keystore is accessible for root user without authentication.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EDevelopers utilize this solution because it does not require a lot of changes in the server side code or in the backend database. Other solutions require substantial changes.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis presentation is going to introduce a novel approach which is secure and does not need any change in the backend database. Programmers will be able to use this way with a small change in the backend web-service and mobile application.\u003Cbr \/\u003E\r\nAdditionally, it is going to be shown how this manner can be employed for two-factor, and multi level authentication even when the device supports hardware-backed keystore in order to make the application more secure.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EBy adding the fingerprint reader, a new way to authenticate users has been introduced to smart phones. This new authentication feature is attractive to both developers and users.\u003Cbr \/\u003E\nAlthough this biometric authentication manner has simplified the authentication process, incorrect implementations can introduce critical security problems.\u003C\/p\u003E\n\u003Cp\u003EEarly adopters of fingerprint authentication are in many cases mobile banking applications, where this authentication vector can be used instead of a PIN for the login process. However, other, more sensitive actions such as money transactions pose a greater challenge when migrating to fingerprint authentication.\u003C\/p\u003E\n\u003Cp\u003EAdditionally, in order to increase security, virtually all mobile banking application nowadays depend on OTP algorithms to generate time-based secrets, which ultimately depend on a secret key (the seed). This secret key is the ultimate secret for access to mobile banking.\u003C\/p\u003E\n\u003Cp\u003ESince this secret key needs to be available for the login and transaction authentication process, most current mobile banking applications solve this by encrypting the secret key with the user\u2019s PIN code, and then storing the PIN code on the device encrypted in such a way that it will be accessible with fingerprint authentication.\u003Cbr \/\u003E\nThe problem with this approach is that the keystore is accessible for root user without authentication.\u003C\/p\u003E\n\u003Cp\u003EDevelopers utilize this solution because it does not require a lot of changes in the server side code or in the backend database. Other solutions require substantial changes.\u003C\/p\u003E\n\u003Cp\u003EThis presentation is going to introduce a novel approach which is secure and does not need any change in the backend database. Programmers will be able to use this way with a small change in the backend web-service and mobile application.\u003Cbr \/\u003E\nAdditionally, it is going to be shown how this manner can be employed for two-factor, and multi level authentication even when the device supports hardware-backed keystore in order to make the application more secure.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"775"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496520474","last_comment_name":null,"last_comment_uid":"775","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"sina","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EBy adding the fingerprint reader, a new way to authenticate users has been introduced to smart phones. This new authentication feature is attractive to both developers and users.\u003Cbr \/\u003E\nAlthough this biometric authentication manner has simplified the authentication process, incorrect implementations can introduce critical security problems.\u003C\/p\u003E\n\u003Cp\u003EEarly adopters of fingerprint authentication are in many cases mobile banking applications, where this authentication vector can be used instead of a PIN for the login process. However, other, more sensitive actions such as money transactions pose a greater challenge when migrating to fingerprint authentication.\u003C\/p\u003E\n\u003Cp\u003EAdditionally, in order to increase security, virtually all mobile banking application nowadays depend on OTP algorithms to generate time-based secrets, which ultimately depend on a secret key (the seed). This secret key is the ultimate secret for access to mobile banking.\u003C\/p\u003E\n\u003Cp\u003ESince this secret key needs to be available for the login and transaction authentication process, most current mobile banking applications solve this by encrypting the secret key with the user\u2019s PIN code, and then storing the PIN code on the device encrypted in such a way that it will be accessible with fingerprint authentication.\u003Cbr \/\u003E\nThe problem with this approach is that the keystore is accessible for root user without authentication.\u003C\/p\u003E\n\u003Cp\u003EDevelopers utilize this solution because it does not require a lot of changes in the server side code or in the backend database. Other solutions require substantial changes.\u003C\/p\u003E\n\u003Cp\u003EThis presentation is going to introduce a novel approach which is secure and does not need any change in the backend database. Programmers will be able to use this way with a small change in the backend web-service and mobile application.\u003Cbr \/\u003E\nAdditionally, it is going to be shown how this manner can be employed for two-factor, and multi level authentication even when the device supports hardware-backed keystore in order to make the application more secure.\u003C\/p\u003E\n"},{"title":"Home Improvement: Architecture \u0026 Kotlin","url":"\/sessions\/home-improvement-architecture-kotlin","room":"3519","speakers":[{"name":"Jorge D. Ortiz-Fuentes","url":"\/users\/jorge-d-ortiz-fuentes"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-04T17:45:00Z","end":"2017-09-04T18:25:00Z","id":"3302","debug":{"vid":"3302","uid":"684","title":"Home Improvement: Architecture \u0026 Kotlin","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3302","type":"session","language":"en","created":"1496657296","changed":"1503045345","tnid":"0","translate":"0","revision_timestamp":"1503045345","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"You have a listing of some of my talks both about Android and iOS here: http:\/\/powwau.com\/en\/talks\/\r\n","format":null,"safe_value":"You have a listing of some of my talks both about Android and iOS here: http:\/\/powwau.com\/en\/talks\/\r\n"}]},"field_session_datetime":{"und":[{"value":"2017-09-04 15:45:00","value2":"2017-09-04 16:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003ETwo of the most relevant news from the recent Google IO were the Guide to App Architecture and the adoption of Kotlin as a first-class language. Both have a very positive impact in our applications.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn my talk I will introduce and advanced architecture inspired in the Clean Architecture of Uncle Bob and I will\u0026nbsp;show the impact of these two elements.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EFirst I will cover the components provided for integration with the lifecycle and how this saves a lot of effort to preserve view models or presenters. \u0026nbsp;I will briefly cover th methods that we had available until know focusing on the use of a fragment with no view that had the retained instance property set to true.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThen I will cover some real scenarios explaining the improvements that Kotlin provide us with. Some examples:\u003Cbr \/\u003E\r\n- Conciseness of data classes (and limitations)\u003Cbr \/\u003E\r\n- Property observation\u003Cbr \/\u003E\r\n- Use of extensions in presentation logic\u003Cbr \/\u003E\r\n- Sealed classes for results (as an either-like type)\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis is a \u0022Code or it didn\u0027t happen\u0022 (TM) talk. ;-)\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003ETwo of the most relevant news from the recent Google IO were the Guide to App Architecture and the adoption of Kotlin as a first-class language. Both have a very positive impact in our applications.\u003C\/p\u003E\n\u003Cp\u003EIn my talk I will introduce and advanced architecture inspired in the Clean Architecture of Uncle Bob and I will\u00a0show the impact of these two elements.\u003C\/p\u003E\n\u003Cp\u003EFirst I will cover the components provided for integration with the lifecycle and how this saves a lot of effort to preserve view models or presenters. \u00a0I will briefly cover th methods that we had available until know focusing on the use of a fragment with no view that had the retained instance property set to true.\u003C\/p\u003E\n\u003Cp\u003EThen I will cover some real scenarios explaining the improvements that Kotlin provide us with. Some examples:\u003Cbr \/\u003E\n- Conciseness of data classes (and limitations)\u003Cbr \/\u003E\n- Property observation\u003Cbr \/\u003E\n- Use of extensions in presentation logic\u003Cbr \/\u003E\n- Sealed classes for results (as an either-like type)\u003C\/p\u003E\n\u003Cp\u003EThis is a \u0022Code or it didn\u0027t happen\u0022 (TM) talk. ;-)\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":{"und":[{"fid":"2145","uid":"684","filename":"Droidcon Italy 2017 \/\/ Architectural Superpowers - Jorge D. Ortiz-Fuentes","uri":"oembed:\/\/https%3A\/\/www.youtube.com\/watch%3Fv%3D48RAvM4HVFI","filemime":"video\/oembed","filesize":"0","status":"1","timestamp":"1496655473","type":"video","rdf_mapping":[],"metadata":{"oembed":{"thumbnail_height":360,"thumbnail_url":"https:\/\/i.ytimg.com\/vi\/48RAvM4HVFI\/hqdefault.jpg","provider_url":"https:\/\/www.youtube.com\/","html":"\u003Ciframe width=\u0022480\u0022 height=\u0022270\u0022 src=\u0022https:\/\/www.youtube.com\/embed\/48RAvM4HVFI?feature=oembed\u0022 frameborder=\u00220\u0022 allowfullscreen\u003E\u003C\/iframe\u003E","type":"video","version":"1.0","author_name":"Droidcon Italy","height":270,"provider_name":"YouTube","width":480,"thumbnail_width":480,"title":"Droidcon Italy 2017 \/\/ Architectural Superpowers - Jorge D. Ortiz-Fuentes","author_url":"https:\/\/www.youtube.com\/channel\/UC9f8652addezs8ZUuKPB4Ow","original_url":"https:\/\/www.youtube.com\/watch?v=48RAvM4HVFI","provider":"default:youtube"}},"alt":"","title":"","display":"1","description":""}]},"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"684"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496657296","last_comment_name":null,"last_comment_uid":"684","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"jdortiz","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003ETwo of the most relevant news from the recent Google IO were the Guide to App Architecture and the adoption of Kotlin as a first-class language. Both have a very positive impact in our applications.\u003C\/p\u003E\n\u003Cp\u003EIn my talk I will introduce and advanced architecture inspired in the Clean Architecture of Uncle Bob and I will\u00a0show the impact of these two elements.\u003C\/p\u003E\n\u003Cp\u003EFirst I will cover the components provided for integration with the lifecycle and how this saves a lot of effort to preserve view models or presenters. \u00a0I will briefly cover th methods that we had available until know focusing on the use of a fragment with no view that had the retained instance property set to true.\u003C\/p\u003E\n\u003Cp\u003EThen I will cover some real scenarios explaining the improvements that Kotlin provide us with. Some examples:\u003Cbr \/\u003E\n- Conciseness of data classes (and limitations)\u003Cbr \/\u003E\n- Property observation\u003Cbr \/\u003E\n- Use of extensions in presentation logic\u003Cbr \/\u003E\n- Sealed classes for results (as an either-like type)\u003C\/p\u003E\n\u003Cp\u003EThis is a \u0022Code or it didn\u0027t happen\u0022 (TM) talk. ;-)\u003C\/p\u003E\n"},{"title":"Marketing for developers: get your app in the users hands","url":"\/sessions\/marketing-developers-get-your-app-users-hands","room":"3519","speakers":[{"name":"Sylwester Madej","url":"\/users\/sylwester-madej"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T11:45:00Z","end":"2017-09-05T12:25:00Z","id":"3304","debug":{"vid":"3304","uid":"772","title":"Marketing for developers: get your app in the users hands","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3304","type":"session","language":"en","created":"1496660464","changed":"1503045318","tnid":"0","translate":"0","revision_timestamp":"1503045318","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 09:45:00","value2":"2017-09-05 10:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EDevelopers love to create stuff. Yes, we do. Most times it is the easier part of the product lifecycle.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this short presentation, I will take you to the other side. The side of \u0022personas\u0022, \u0022landing pages\u0022, \u0022sales funnels\u0022 and all of this marketing mumbo jumbo.\u0026nbsp;My goal is to show you how to create the app that people want and how to make it visible. Sadly, most developers don\u0027t know much\u0026nbsp;about marketing process for finding user needs, building the audience and getting users for their apps.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis talk is based on workshop \u0022Selling your product - basics of marketing for developers.\u0022 that I have conducted on Codepot conference. I have presented it on Droidcon Turin 2015, but it is now updated based on my experiences from the last 2 years.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EDevelopers love to create stuff. Yes, we do. Most times it is the easier part of the product lifecycle.\u003C\/p\u003E\n\u003Cp\u003EIn this short presentation, I will take you to the other side. The side of \u0022personas\u0022, \u0022landing pages\u0022, \u0022sales funnels\u0022 and all of this marketing mumbo jumbo.\u00a0My goal is to show you how to create the app that people want and how to make it visible. Sadly, most developers don\u0027t know much\u00a0about marketing process for finding user needs, building the audience and getting users for their apps.\u003C\/p\u003E\n\u003Cp\u003EThis talk is based on workshop \u0022Selling your product - basics of marketing for developers.\u0022 that I have conducted on Codepot conference. I have presented it on Droidcon Turin 2015, but it is now updated based on my experiences from the last 2 years.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":{"und":[{"fid":"2147","uid":"772","filename":"presentation.pdf","uri":"public:\/\/presentation.pdf","filemime":"application\/pdf","filesize":"224550","status":"1","timestamp":"1496660260","type":"document","rdf_mapping":[],"metadata":[],"alt":"","title":"","display":"1","description":"Presentation from Droidcon Turin 2015"}]},"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"772"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496660464","last_comment_name":null,"last_comment_uid":"772","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"smdremedy","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EDevelopers love to create stuff. Yes, we do. Most times it is the easier part of the product lifecycle.\u003C\/p\u003E\n\u003Cp\u003EIn this short presentation, I will take you to the other side. The side of \u0022personas\u0022, \u0022landing pages\u0022, \u0022sales funnels\u0022 and all of this marketing mumbo jumbo.\u00a0My goal is to show you how to create the app that people want and how to make it visible. Sadly, most developers don\u0027t know much\u00a0about marketing process for finding user needs, building the audience and getting users for their apps.\u003C\/p\u003E\n\u003Cp\u003EThis talk is based on workshop \u0022Selling your product - basics of marketing for developers.\u0022 that I have conducted on Codepot conference. I have presented it on Droidcon Turin 2015, but it is now updated based on my experiences from the last 2 years.\u003C\/p\u003E\n"},{"title":"Animations + Physics = cool App transitions","url":"\/sessions\/animations-physics-cool-app-transitions","room":"3519","speakers":[{"name":"Richa Khanna","url":"\/users\/richa-khanna"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-05T11:00:00Z","end":"2017-09-05T11:40:00Z","id":"3305","debug":{"vid":"3305","uid":"790","title":"Animations + Physics = cool App transitions","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3305","type":"session","language":"en","created":"1496685786","changed":"1503045297","tnid":"0","translate":"0","revision_timestamp":"1503045297","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 09:00:00","value2":"2017-09-05 09:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E\u003Cstrong\u003EAbstract:\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003EI will showcase how to create richer and more dynamic animations using the new \u003Cstrong\u003Ephysics-based animation library\u003C\/strong\u003E that provides a set of APIs for building animations that would use concepts like velocity, friction, spring effect. I will show examples of different cool transitions and how all of this can be utilized. In short, you will get to see, cool animations with physics effect.\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003EOutline\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EWhat is Physics-based Animation?\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EHow is physics-based animation different from animator based animation?\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EDifferent types of Dynamic Animations\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003ESpringAnimation, FlingAnimation\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EHow to use them to create beautiful \u0026amp; natural-looking animations?\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003EMedium article:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/medium.com\/@richa.khanna\/introduction-to-physics-based-animations-in-android-1be27e468835\u0022\u003EIntroduction to Physics-based Animations in Android\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u003Cstrong\u003EGithub project:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/github.com\/richakhanna\/physicsbasedanimation\u0022\u003Ehttps:\/\/github.com\/richakhanna\/physicsbasedanimation\u003C\/a\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E\u003Cstrong\u003EAbstract:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EI will showcase how to create richer and more dynamic animations using the new \u003Cstrong\u003Ephysics-based animation library\u003C\/strong\u003E that provides a set of APIs for building animations that would use concepts like velocity, friction, spring effect. I will show examples of different cool transitions and how all of this can be utilized. In short, you will get to see, cool animations with physics effect.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EOutline\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n\u003Cp\u003EWhat is Physics-based Animation?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EHow is physics-based animation different from animator based animation?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EDifferent types of Dynamic Animations\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003ESpringAnimation, FlingAnimation\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EHow to use them to create beautiful \u0026amp; natural-looking animations?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003E\u003Cstrong\u003EMedium article:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/medium.com\/@richa.khanna\/introduction-to-physics-based-animations-in-android-1be27e468835\u0022\u003EIntroduction to Physics-based Animations in Android\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EGithub project:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/github.com\/richakhanna\/physicsbasedanimation\u0022\u003Ehttps:\/\/github.com\/richakhanna\/physicsbasedanimation\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"790"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496685786","last_comment_name":null,"last_comment_uid":"790","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"richakhanna","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E\u003Cstrong\u003EAbstract:\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EI will showcase how to create richer and more dynamic animations using the new \u003Cstrong\u003Ephysics-based animation library\u003C\/strong\u003E that provides a set of APIs for building animations that would use concepts like velocity, friction, spring effect. I will show examples of different cool transitions and how all of this can be utilized. In short, you will get to see, cool animations with physics effect.\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EOutline\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n\u003Cp\u003EWhat is Physics-based Animation?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EHow is physics-based animation different from animator based animation?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EDifferent types of Dynamic Animations\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003ESpringAnimation, FlingAnimation\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EHow to use them to create beautiful \u0026amp; natural-looking animations?\u003C\/p\u003E\n\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003E\u003Cstrong\u003EMedium article:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/medium.com\/@richa.khanna\/introduction-to-physics-based-animations-in-android-1be27e468835\u0022\u003EIntroduction to Physics-based Animations in Android\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u003Cstrong\u003EGithub project:\u003C\/strong\u003E \u003Ca href=\u0022https:\/\/github.com\/richakhanna\/physicsbasedanimation\u0022\u003Ehttps:\/\/github.com\/richakhanna\/physicsbasedanimation\u003C\/a\u003E\u003C\/p\u003E\n\u003Cp\u003E\u00a0\u003C\/p\u003E\n"},{"title":"Kotlinify your unit tests (and specs!)","url":"\/sessions\/kotlinify-your-unit-tests-and-specs","room":"3518","speakers":[{"name":"Paulina Strychacz","url":"\/users\/paulina-strychacz"},{"name":"Grzegorz Dec","url":"\/users\/grzegorz-dec"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T16:00:00Z","end":"2017-09-04T16:25:00Z","id":"3346","debug":{"vid":"3346","uid":"793","title":"Kotlinify your unit tests (and specs!)","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3346","type":"session","language":"en","created":"1496764586","changed":"1503045233","tnid":"0","translate":"0","revision_timestamp":"1503045233","revision_uid":"657","field_session_audio":[],"field_session_comments":{"und":[{"value":"2 prelegents. ","format":null,"safe_value":"2 prelegents. "}]},"field_session_datetime":{"und":[{"value":"2017-09-04 14:00:00","value2":"2017-09-04 14:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EKotlin is finally supported by Google as a first-class language. We\u2019ll present tips on how to write readable unit tests utilizing Kotlin and already available libraries. Let\u2019s check what benefits we can get from libraries like \u003Cstrong\u003Ekotlintest\u003C\/strong\u003E and how it may speed up your work. We\u2019re gonna tell you also how to apply \u003Cstrong\u003ESpek Framework\u003C\/strong\u003E to make your tests a live specification. You will be introduced to \u003Cstrong\u003EExpekt\u003C\/strong\u003E library, which can be also used for assertions. With our hints you can easily choose the best library to include in your projects.\u003C\/p\u003E\r\n\r\n\u003Cp\u003ESqueeze what\u0027s best from Kotlin libs making your tests maintainable and beautiful!\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EKotlin is finally supported by Google as a first-class language. We\u2019ll present tips on how to write readable unit tests utilizing Kotlin and already available libraries. Let\u2019s check what benefits we can get from libraries like \u003Cstrong\u003Ekotlintest\u003C\/strong\u003E and how it may speed up your work. We\u2019re gonna tell you also how to apply \u003Cstrong\u003ESpek Framework\u003C\/strong\u003E to make your tests a live specification. You will be introduced to \u003Cstrong\u003EExpekt\u003C\/strong\u003E library, which can be also used for assertions. With our hints you can easily choose the best library to include in your projects.\u003C\/p\u003E\n\u003Cp\u003ESqueeze what\u0027s best from Kotlin libs making your tests maintainable and beautiful!\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"793"},{"target_id":"792"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496764586","last_comment_name":null,"last_comment_uid":"793","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Paulina","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EKotlin is finally supported by Google as a first-class language. We\u2019ll present tips on how to write readable unit tests utilizing Kotlin and already available libraries. Let\u2019s check what benefits we can get from libraries like \u003Cstrong\u003Ekotlintest\u003C\/strong\u003E and how it may speed up your work. We\u2019re gonna tell you also how to apply \u003Cstrong\u003ESpek Framework\u003C\/strong\u003E to make your tests a live specification. You will be introduced to \u003Cstrong\u003EExpekt\u003C\/strong\u003E library, which can be also used for assertions. With our hints you can easily choose the best library to include in your projects.\u003C\/p\u003E\n\u003Cp\u003ESqueeze what\u0027s best from Kotlin libs making your tests maintainable and beautiful!\u003C\/p\u003E\n"},{"title":"Reactive, Clean Architecture and Android Architecture Components, a solid formula for a MVVM based architecture. ","url":"\/sessions\/reactive-clean-architecture-and-android-architecture-components-solid-formula-mvvm-based","room":"3519","speakers":[{"name":"Lucia Payo","url":"\/users\/lucia-payo"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T16:45:00Z","end":"2017-09-05T17:25:00Z","id":"3354","debug":{"vid":"3354","uid":"797","title":"Reactive, Clean Architecture and Android Architecture Components, a solid formula for a MVVM based architecture. ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3354","type":"session","language":"en","created":"1496822990","changed":"1503312251","tnid":"0","translate":"0","revision_timestamp":"1503312251","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 14:45:00","value2":"2017-09-05 15:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E\u003Cstrong\u003EReactive development\u003C\/strong\u003E that links long-lived objects with pure functions is hot for good reason. \u003Cstrong\u003EClean architecture\u003C\/strong\u003E helps with the separation of concerns making our code unit testable and separated from the framework. The recently released \u003Cstrong\u003EAndroid Architecture Components\u003C\/strong\u003E, and more specifically,\u0026nbsp;the LiveData and ViewModel, make it easy to connect to the framework. If we mix this three and add some sparks of \u003Cstrong\u003EDagger\u003C\/strong\u003E on top we get a solid formula for a Model-View-ViewModel based architecture. \u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThe talk starts with a reminder of the characteristics any good architecture should have. This characteristics include: testability, separation of concerns, modularity, \u0026nbsp;among some other good practices. The next step is to cover the three layers from clean architecture:\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EData: This is the layer that keeps the entities. We\u2019ll show how to create a fully reactive data layer that serves the entities in streams.\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EDomain: This is a connection layer that holds the business logic to create use cases. We\u2019ll show how to make it stateless and 100% free of framework code.\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\t\u003Cli\u003E\r\n\t\u003Cp\u003EPresentation: This is the layer where the new LiveData and ViewModel classes come into play. We will show how to transform the use cases from the domain layer into view specific models using the new android architecture components.\u003C\/p\u003E\r\n\t\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n\r\n\u003Cp\u003EThe goal of the talk is to provide insights and guidelines on how to build a solid MVVM based reactive architecture. There will be links to meaningful resources that will cover the topics of the talk, like a GitHub example project and blog posts.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E\u003Cstrong\u003EReactive development\u003C\/strong\u003E that links long-lived objects with pure functions is hot for good reason. \u003Cstrong\u003EClean architecture\u003C\/strong\u003E helps with the separation of concerns making our code unit testable and separated from the framework. The recently released \u003Cstrong\u003EAndroid Architecture Components\u003C\/strong\u003E, and more specifically,\u00a0the LiveData and ViewModel, make it easy to connect to the framework. If we mix this three and add some sparks of \u003Cstrong\u003EDagger\u003C\/strong\u003E on top we get a solid formula for a Model-View-ViewModel based architecture. \u00a0\u003C\/p\u003E\n\u003Cp\u003EThe talk starts with a reminder of the characteristics any good architecture should have. This characteristics include: testability, separation of concerns, modularity, \u00a0among some other good practices. The next step is to cover the three layers from clean architecture:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n\u003Cp\u003EData: This is the layer that keeps the entities. We\u2019ll show how to create a fully reactive data layer that serves the entities in streams.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EDomain: This is a connection layer that holds the business logic to create use cases. We\u2019ll show how to make it stateless and 100% free of framework code.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EPresentation: This is the layer where the new LiveData and ViewModel classes come into play. We will show how to transform the use cases from the domain layer into view specific models using the new android architecture components.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThe goal of the talk is to provide insights and guidelines on how to build a solid MVVM based reactive architecture. There will be links to meaningful resources that will cover the topics of the talk, like a GitHub example project and blog posts.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"797"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496822990","last_comment_name":null,"last_comment_uid":"797","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Lucia","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E\u003Cstrong\u003EReactive development\u003C\/strong\u003E that links long-lived objects with pure functions is hot for good reason. \u003Cstrong\u003EClean architecture\u003C\/strong\u003E helps with the separation of concerns making our code unit testable and separated from the framework. The recently released \u003Cstrong\u003EAndroid Architecture Components\u003C\/strong\u003E, and more specifically,\u00a0the LiveData and ViewModel, make it easy to connect to the framework. If we mix this three and add some sparks of \u003Cstrong\u003EDagger\u003C\/strong\u003E on top we get a solid formula for a Model-View-ViewModel based architecture. \u00a0\u003C\/p\u003E\n\u003Cp\u003EThe talk starts with a reminder of the characteristics any good architecture should have. This characteristics include: testability, separation of concerns, modularity, \u00a0among some other good practices. The next step is to cover the three layers from clean architecture:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003E\n\u003Cp\u003EData: This is the layer that keeps the entities. We\u2019ll show how to create a fully reactive data layer that serves the entities in streams.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EDomain: This is a connection layer that holds the business logic to create use cases. We\u2019ll show how to make it stateless and 100% free of framework code.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003Cli\u003E\n\u003Cp\u003EPresentation: This is the layer where the new LiveData and ViewModel classes come into play. We will show how to transform the use cases from the domain layer into view specific models using the new android architecture components.\u003C\/p\u003E\n\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThe goal of the talk is to provide insights and guidelines on how to build a solid MVVM based reactive architecture. There will be links to meaningful resources that will cover the topics of the talk, like a GitHub example project and blog posts.\u003C\/p\u003E\n"},{"title":"Room and ObjectBox: New Persistence Solutions","url":"\/sessions\/room-and-objectbox-new-persistence-solutions","room":"3520","speakers":[{"name":"Markus Junginger","url":"\/users\/markus-junginger"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-05T15:30:00Z","end":"2017-09-05T16:10:00Z","id":"3355","debug":{"vid":"3355","uid":"359","title":"Room and ObjectBox: New Persistence Solutions","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3355","type":"session","language":"en","created":"1496916840","changed":"1503045032","tnid":"0","translate":"0","revision_timestamp":"1503045032","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 13:30:00","value2":"2017-09-05 14:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAt I\/O 2017,\u0026nbsp;Google presented \u0022Room,\u0022 a new ORM\u0026nbsp;which is quite different from existing ones. With it unique features it separates itself and also polarizes developers.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EAnother newcomer is ObjectBox, a NoSQL\/Object database that claims to be faster than anything else. Just like ORMs it offers relations, queries, indexing,\u0026nbsp;and some special features.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis talk gives you an extensive update on new persistence developments. Learn about pros and cons to help you choose for your next Android project.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAt I\/O 2017,\u00a0Google presented \u0022Room,\u0022 a new ORM\u00a0which is quite different from existing ones. With it unique features it separates itself and also polarizes developers.\u003C\/p\u003E\n\u003Cp\u003EAnother newcomer is ObjectBox, a NoSQL\/Object database that claims to be faster than anything else. Just like ORMs it offers relations, queries, indexing,\u00a0and some special features.\u003C\/p\u003E\n\u003Cp\u003EThis talk gives you an extensive update on new persistence developments. Learn about pros and cons to help you choose for your next Android project.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"359"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1496916840","last_comment_name":null,"last_comment_uid":"359","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"greenrobot","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAt I\/O 2017,\u00a0Google presented \u0022Room,\u0022 a new ORM\u00a0which is quite different from existing ones. With it unique features it separates itself and also polarizes developers.\u003C\/p\u003E\n\u003Cp\u003EAnother newcomer is ObjectBox, a NoSQL\/Object database that claims to be faster than anything else. Just like ORMs it offers relations, queries, indexing,\u00a0and some special features.\u003C\/p\u003E\n\u003Cp\u003EThis talk gives you an extensive update on new persistence developments. Learn about pros and cons to help you choose for your next Android project.\u003C\/p\u003E\n"},{"title":"Driver Assistant Solutions with Android","url":"\/sessions\/driver-assistant-solutions-android","room":"3519","speakers":[{"name":"Giorgio Natili","url":"\/users\/giorgio-natili"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-04T12:15:00Z","end":"2017-09-04T12:55:00Z","id":"3569","debug":{"vid":"3569","uid":"886","title":"Driver Assistant Solutions with Android","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3569","type":"session","language":"en","created":"1498648967","changed":"1503047582","tnid":"0","translate":"0","revision_timestamp":"1503047582","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 10:15:00","value2":"2017-09-04 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EOne of most exciting engineering challenges today is building a reliable self-driving car or driving support system.\u0026nbsp;\u003Cbr \/\u003E\r\nToday\u0027s vehicles offer a huge variety of sensors that can feed any algorithm with enough data to provide a pretty solid driving support experience. On top of this, despite some differences, smartphones sensors are robust enough to provide a rich set of environmental information.\u003Cbr \/\u003E\r\nDuring this presentation, we\u0027ll discover how to implement computer vision solutions on Android with OpenCV, and how to mash-up device and vehicle data to build a driver assistant solution with open source technologies.\u003Cbr \/\u003E\r\n\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EOne of most exciting engineering challenges today is building a reliable self-driving car or driving support system.\u00a0\u003Cbr \/\u003E\nToday\u0027s vehicles offer a huge variety of sensors that can feed any algorithm with enough data to provide a pretty solid driving support experience. On top of this, despite some differences, smartphones sensors are robust enough to provide a rich set of environmental information.\u003Cbr \/\u003E\nDuring this presentation, we\u0027ll discover how to implement computer vision solutions on Android with OpenCV, and how to mash-up device and vehicle data to build a driver assistant solution with open source technologies.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"886"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1498648967","last_comment_name":null,"last_comment_uid":"886","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"giorgionatili","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EOne of most exciting engineering challenges today is building a reliable self-driving car or driving support system.\u00a0\u003Cbr \/\u003E\nToday\u0027s vehicles offer a huge variety of sensors that can feed any algorithm with enough data to provide a pretty solid driving support experience. On top of this, despite some differences, smartphones sensors are robust enough to provide a rich set of environmental information.\u003Cbr \/\u003E\nDuring this presentation, we\u0027ll discover how to implement computer vision solutions on Android with OpenCV, and how to mash-up device and vehicle data to build a driver assistant solution with open source technologies.\u003Cbr \/\u003E\n\u00a0\u003C\/p\u003E\n"},{"title":"Voice Everywhere","url":"\/sessions\/voice-everywhere","room":"3518","speakers":[{"name":"David Low","url":"\/users\/david-low"}],"terms":[{"name":"Internet of Things","url":"\/session-tracks\/internet-things-0","tid":"180"}],"start":"2017-09-04T10:45:00Z","end":"2017-09-04T11:25:00Z","id":"3580","debug":{"vid":"3580","uid":"975","title":"Voice Everywhere","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3580","type":"session","language":"en","created":"1500031148","changed":"1503044925","tnid":"0","translate":"0","revision_timestamp":"1503044925","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 08:45:00","value2":"2017-09-04 09:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWe are currently witnessing the greatest shift in consumer behaviour since the move from web experience to the \u2018mobile moment\u2019, and it\u2019s all around us. Reminders, music, shopping, information, smart home control and more can now be summoned with just a simple utterance, enabled by devices which don\u2019t resemble the grey-box computer or the smart phones we\u2019ve grown used to.\u0026nbsp; In this talk we will discuss:\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003EHow the Alexa community creates more and more delightful experiences for customers every day\u003C\/li\u003E\r\n\t\u003Cli\u003EHow Alexa helps people with their daily lives in so many ways\u003C\/li\u003E\r\n\t\u003Cli\u003EWhat we mean by voice and Alexa being truly everywhere\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n\r\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EWe are currently witnessing the greatest shift in consumer behaviour since the move from web experience to the \u2018mobile moment\u2019, and it\u2019s all around us. Reminders, music, shopping, information, smart home control and more can now be summoned with just a simple utterance, enabled by devices which don\u2019t resemble the grey-box computer or the smart phones we\u2019ve grown used to.\u00a0 In this talk we will discuss:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EHow the Alexa community creates more and more delightful experiences for customers every day\u003C\/li\u003E\n\u003Cli\u003EHow Alexa helps people with their daily lives in so many ways\u003C\/li\u003E\n\u003Cli\u003EWhat we mean by voice and Alexa being truly everywhere\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":"Array"}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3579"}]},"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"975"}]},"field_session_track_ref":{"und":[{"target_id":"180"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1500031148","last_comment_name":null,"last_comment_uid":"975","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Nadine Rothkamp","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWe are currently witnessing the greatest shift in consumer behaviour since the move from web experience to the \u2018mobile moment\u2019, and it\u2019s all around us. Reminders, music, shopping, information, smart home control and more can now be summoned with just a simple utterance, enabled by devices which don\u2019t resemble the grey-box computer or the smart phones we\u2019ve grown used to.\u00a0 In this talk we will discuss:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EHow the Alexa community creates more and more delightful experiences for customers every day\u003C\/li\u003E\n\u003Cli\u003EHow Alexa helps people with their daily lives in so many ways\u003C\/li\u003E\n\u003Cli\u003EWhat we mean by voice and Alexa being truly everywhere\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n"},{"title":"Starting from scratch in 2017","url":"\/sessions\/starting-scratch-2017","room":"3521","speakers":[{"name":"Stefano Bonetta","url":"\/users\/stefano-bonetta"},{"name":"Simon Joecks","url":"\/users\/simon-joecks"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T11:30:00Z","end":"2017-09-04T12:10:00Z","id":"3583","debug":{"vid":"3583","uid":"989","title":"Starting from scratch in 2017","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3583","type":"session","language":"en","created":"1500551881","changed":"1503044902","tnid":"0","translate":"0","revision_timestamp":"1503044902","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 09:30:00","value2":"2017-09-04 10:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAndroid development changed significantly in 2017 (Kotlin, Architecture Components and much more). Some of the most tricky and debatable questions now are: how to start a scalable project from scratch? How to decide which technology\/library to use?\u003Cbr \/\u003E\r\nThe HERE WeGo App team has worked for years to define a sophisticated release and development process, with a high level of automation that allowed to quickly followup on user issues and actively develop features. But legacy code and a large framework made it difficult to move even faster.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nLessons learned? We will discuss how to start over with all the learnings on a greenfield project.\u003Cbr \/\u003E\r\n\u003Cbr \/\u003E\r\nTechnologies that will be covered: Kotlin, Jenkins, JobDsl, Architecture Components, GraphQL, gRPC and more.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session is powered by HERE\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EAndroid development changed significantly in 2017 (Kotlin, Architecture Components and much more). Some of the most tricky and debatable questions now are: how to start a scalable project from scratch? How to decide which technology\/library to use?\u003Cbr \/\u003E\nThe HERE WeGo App team has worked for years to define a sophisticated release and development process, with a high level of automation that allowed to quickly followup on user issues and actively develop features. But legacy code and a large framework made it difficult to move even faster.\u003C\/p\u003E\n\u003Cp\u003ELessons learned? We will discuss how to start over with all the learnings on a greenfield project.\u003C\/p\u003E\n\u003Cp\u003ETechnologies that will be covered: Kotlin, Jenkins, JobDsl, Architecture Components, GraphQL, gRPC and more.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by HERE\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3582"}]},"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"989"},{"target_id":"990"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1500551881","last_comment_name":null,"last_comment_uid":"989","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"bonnyfone","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAndroid development changed significantly in 2017 (Kotlin, Architecture Components and much more). Some of the most tricky and debatable questions now are: how to start a scalable project from scratch? How to decide which technology\/library to use?\u003Cbr \/\u003E\nThe HERE WeGo App team has worked for years to define a sophisticated release and development process, with a high level of automation that allowed to quickly followup on user issues and actively develop features. But legacy code and a large framework made it difficult to move even faster.\u003C\/p\u003E\n\u003Cp\u003ELessons learned? We will discuss how to start over with all the learnings on a greenfield project.\u003C\/p\u003E\n\u003Cp\u003ETechnologies that will be covered: Kotlin, Jenkins, JobDsl, Architecture Components, GraphQL, gRPC and more.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by HERE\u003C\/p\u003E\n"},{"title":"How to build for Voice: foundations, and why mobile developers are already one step ahead (beginner)","url":"\/sessions\/how-build-voice-foundations-and-why-mobile-developers-are-already-one-step-ahead-beginner","room":"3521","speakers":[{"name":"Jeff Blankenburg","url":"\/users\/jeff-blankenburg"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-04T14:00:00Z","end":"2017-09-04T16:00:00Z","id":"3585","debug":{"vid":"3585","uid":"11","title":"How to build for Voice: foundations, and why mobile developers are already one step ahead (beginner)","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3585","type":"session","language":"en","created":"1501075198","changed":"1502966632","tnid":"0","translate":"0","revision_timestamp":"1502966632","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 12:00:00","value2":"2017-09-04 14:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EJoin us in a hands-on workshop to learn the foundational pillars of voice design, how voice differs from mobile, and how to build a simple voice-enabled experience from the ground up leveraging the Alexa Skills Kit (ASK). \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/45qv7k\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\r\n\r\n\u003Cp\u003E-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Foundations of voice design\u003Cbr\u003E\r\n-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Differences and similarities with mobile\u0026nbsp;development\u003Cbr\u003E\r\n-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;How to build a simple\u0026nbsp;skill\u0026nbsp;with the Alexa Skills Kit (ASK)\u003C\/p\u003E\r\n\r\n\u003Cp\u003EPreparation requirements:\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E1.\u0026nbsp;\u003Cstrong\u003ESign up\u003C\/strong\u003E\u0026nbsp;for an\u0026nbsp;\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr\u003E\r\n2.\u0026nbsp;\u003Cstrong\u003ESign up\u003C\/strong\u003E\u0026nbsp;for an\u0026nbsp;\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u0026nbsp;In the AWS account, select\u0026nbsp;\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u0026nbsp;as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\n\u003Cp\u003EJoin us in a hands-on workshop to learn the foundational pillars of voice design, how voice differs from mobile, and how to build a simple voice-enabled experience from the ground up leveraging the Alexa Skills Kit (ASK). \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/45qv7k\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\n\u003Cp\u003E-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Foundations of voice design\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Differences and similarities with mobile\u00a0development\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0How to build a simple\u00a0skill\u00a0with the Alexa Skills Kit (ASK)\u003C\/p\u003E\n\u003Cp\u003EPreparation requirements:\u00a0\u003C\/p\u003E\n\u003Cp\u003E1.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr \/\u003E\n2.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u00a0In the AWS account, select\u00a0\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u00a0as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"197"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3579"}]},"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"1023"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1501075198","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\n\u003Cp\u003EJoin us in a hands-on workshop to learn the foundational pillars of voice design, how voice differs from mobile, and how to build a simple voice-enabled experience from the ground up leveraging the Alexa Skills Kit (ASK). \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/45qv7k\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\n\u003Cp\u003E-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Foundations of voice design\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Differences and similarities with mobile\u00a0development\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0How to build a simple\u00a0skill\u00a0with the Alexa Skills Kit (ASK)\u003C\/p\u003E\n\u003Cp\u003EPreparation requirements:\u00a0\u003C\/p\u003E\n\u003Cp\u003E1.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr \/\u003E\n2.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u00a0In the AWS account, select\u00a0\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u00a0as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n"},{"title":"How to build Alexa Skills: learn to create voice-enabled experiences with Alexa (advanced)","url":"\/sessions\/how-build-alexa-skills-learn-create-voice-enabled-experiences-alexa-advanced","room":"3521","speakers":[{"name":"Andrea Muttoni","url":"\/users\/andrea-muttoni"}],"terms":[{"name":"APIs","url":"\/session-tracks\/apis-1","tid":"176"}],"start":"2017-09-05T11:00:00Z","end":"2017-09-05T13:00:00Z","id":"3586","debug":{"vid":"3586","uid":"11","title":"How to build Alexa Skills: learn to create voice-enabled experiences with Alexa (advanced)","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3586","type":"session","language":"en","created":"1501075325","changed":"1502966701","tnid":"0","translate":"0","revision_timestamp":"1502966701","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 09:00:00","value2":"2017-09-05 11:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EIn this hands-on workshop, you will apply the foundations of voice design by building different types of voice-enabled experiences e.g. a game\u0026nbsp;from the ground up. To do this we will leverage the Alexa Skills Kit (ASK) and explore advanced techniques to make your\u0026nbsp;skills more natural and more engaging. \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/f5qg8z\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\r\n\r\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\r\n\r\n\u003Cp\u003E-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;How to build a skill\u0026nbsp;with the Alexa Skills Kit (ASK)\u003Cbr\u003E\r\n-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Advanced skill design techniques like:\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003Cbr\u003E\r\n- \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; Internationalization (i18n)\u003Cbr\u003E\r\n- \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; Session persistence\u003Cbr\u003E\r\n- \u0026nbsp; \u0026nbsp;\u0026nbsp; Multi-turn dialog\u003Cbr\u003E\r\n- \u0026nbsp; \u0026nbsp;\u0026nbsp; State management\u003Cbr\u003E\r\n-\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;Voice design best practices\u003C\/p\u003E\r\n\r\n\u003Cp\u003EPreparation requirements:\u0026nbsp;\u003C\/p\u003E\r\n\r\n\u003Cp\u003E1.\u0026nbsp;\u003Cstrong\u003ESign up\u003C\/strong\u003E\u0026nbsp;for an\u0026nbsp;\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr\u003E\r\n2.\u0026nbsp;\u003Cstrong\u003ESign up\u003C\/strong\u003E\u0026nbsp;for an\u0026nbsp;\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u0026nbsp;In the AWS account, select\u0026nbsp;\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u0026nbsp;as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\n\u003Cp\u003EIn this hands-on workshop, you will apply the foundations of voice design by building different types of voice-enabled experiences e.g. a game\u00a0from the ground up. To do this we will leverage the Alexa Skills Kit (ASK) and explore advanced techniques to make your\u00a0skills more natural and more engaging. \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/f5qg8z\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\n\u003Cp\u003E-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0How to build a skill\u00a0with the Alexa Skills Kit (ASK)\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Advanced skill design techniques like:\u00a0\u00a0\u00a0\u003Cbr \/\u003E\n- \u00a0\u00a0\u00a0\u00a0 Internationalization (i18n)\u003Cbr \/\u003E\n- \u00a0\u00a0\u00a0\u00a0 Session persistence\u003Cbr \/\u003E\n- \u00a0 \u00a0\u00a0 Multi-turn dialog\u003Cbr \/\u003E\n- \u00a0 \u00a0\u00a0 State management\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Voice design best practices\u003C\/p\u003E\n\u003Cp\u003EPreparation requirements:\u00a0\u003C\/p\u003E\n\u003Cp\u003E1.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr \/\u003E\n2.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u00a0In the AWS account, select\u00a0\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u00a0as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"185"}]},"field_session_format_ref":{"und":[{"target_id":"197"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3579"}]},"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"1022"}]},"field_session_track_ref":{"und":[{"target_id":"176"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1501075325","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E10 years ago, mobile changed the way users access information. This was made possible by the relentless innovation brought about by developers who built experiences from the ground up to be mobile-first. Today, as millions of users get accustomed to speaking to their devices, mobile developers have an opportunity to pioneer again, with voice.\u003C\/p\u003E\n\u003Cp\u003EIn this hands-on workshop, you will apply the foundations of voice design by building different types of voice-enabled experiences e.g. a game\u00a0from the ground up. To do this we will leverage the Alexa Skills Kit (ASK) and explore advanced techniques to make your\u00a0skills more natural and more engaging. \u003Cstrong\u003ETo attend the workshop, please \u003Ca href=\u0022http:\/\/www.cvent.com\/d\/f5qg8z\u0022 target=\u0022_blank\u0022\u003E register here\u003C\/a\u003E\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EYou will learn:\u003C\/p\u003E\n\u003Cp\u003E-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0How to build a skill\u00a0with the Alexa Skills Kit (ASK)\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Advanced skill design techniques like:\u00a0\u00a0\u00a0\u003Cbr \/\u003E\n- \u00a0\u00a0\u00a0\u00a0 Internationalization (i18n)\u003Cbr \/\u003E\n- \u00a0\u00a0\u00a0\u00a0 Session persistence\u003Cbr \/\u003E\n- \u00a0 \u00a0\u00a0 Multi-turn dialog\u003Cbr \/\u003E\n- \u00a0 \u00a0\u00a0 State management\u003Cbr \/\u003E\n-\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Voice design best practices\u003C\/p\u003E\n\u003Cp\u003EPreparation requirements:\u00a0\u003C\/p\u003E\n\u003Cp\u003E1.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/developer.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAmazon developer account\u003C\/a\u003E.\u003Cbr \/\u003E\n2.\u00a0\u003Cstrong\u003ESign up\u003C\/strong\u003E\u00a0for an\u00a0\u003Ca href=\u0022https:\/\/aws.amazon.com\/\u0022 target=\u0022_blank\u0022\u003EAWS account\u003C\/a\u003E.\u00a0In the AWS account, select\u00a0\u003Cstrong\u003EEU (Ireland)\u003C\/strong\u003E\u00a0as your location. Credit card details are needed, no fee applied.\u003C\/p\u003E\n\u003Cp\u003EThis session is powered by Amazon Alexa\u003C\/p\u003E\n"},{"title":"Developing a Streaming Android App for TV in Minutes","url":"\/sessions\/developing-streaming-android-app-tv-minutes","room":"3520","speakers":[{"name":"Mario Viviani","url":"\/users\/mario-viviani"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T14:00:00Z","end":"2017-09-05T14:40:00Z","id":"3598","debug":{"vid":"3598","uid":"767","title":"Developing a Streaming Android App for TV in Minutes","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3598","type":"session","language":"en","created":"1501601194","changed":"1503044747","tnid":"0","translate":"0","revision_timestamp":"1503044747","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 12:00:00","value2":"2017-09-05 12:40:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EIn this session, we cover what\u0027s needed to bring your \u003Cstrong\u003EMedia Streaming Android App\u003C\/strong\u003E to the living room the easiest way possible: we\u2019ll see how to \u003Cstrong\u003Ecreate high quality\u0026nbsp;Android Media Streaming apps in minutes\u003C\/strong\u003E using a new development tool Amazon has created: the \u003Cstrong\u003EFire App Builder\u003C\/strong\u003E template for Android Apps for TV (\u003Ca href=\u0022http:\/\/bit.ly\/FireAppBuilderDoc\u0022\u003Ehttp:\/\/bit.ly\/FireAppBuilderDoc\u003C\/a\u003E). Using this new tool, we\u2019ll understand how to easily connect a native Android app to video streaming services with just a few lines of code!\u003C\/p\u003E\r\n\r\n\u003Cp\u003ETogether we will see how to:\u003C\/p\u003E\r\n\r\n\u003Cul\u003E\r\n\t\u003Cli\u003EBuild a full-fledged Android app for TV in a few minutes by connecting it to a feed\u003C\/li\u003E\r\n\t\u003Cli\u003ECustomize the template\u003C\/li\u003E\r\n\t\u003Cli\u003EAdd modules for IAP, Subscription, Live Streaming, Ads and much more\u003C\/li\u003E\r\n\t\u003Cli\u003ESubmit the app!\u003C\/li\u003E\r\n\u003C\/ul\u003E\r\n\r\n\u003Cp\u003EThis session is powered by Amazon Appstore\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EIn this session, we cover what\u0027s needed to bring your \u003Cstrong\u003EMedia Streaming Android App\u003C\/strong\u003E to the living room the easiest way possible: we\u2019ll see how to \u003Cstrong\u003Ecreate high quality\u00a0Android Media Streaming apps in minutes\u003C\/strong\u003E using a new development tool Amazon has created: the \u003Cstrong\u003EFire App Builder\u003C\/strong\u003E template for Android Apps for TV (\u003Ca href=\u0022http:\/\/bit.ly\/FireAppBuilderDoc\u0022\u003Ehttp:\/\/bit.ly\/FireAppBuilderDoc\u003C\/a\u003E). Using this new tool, we\u2019ll understand how to easily connect a native Android app to video streaming services with just a few lines of code!\u003C\/p\u003E\n\u003Cp\u003ETogether we will see how to:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EBuild a full-fledged Android app for TV in a few minutes by connecting it to a feed\u003C\/li\u003E\n\u003Cli\u003ECustomize the template\u003C\/li\u003E\n\u003Cli\u003EAdd modules for IAP, Subscription, Live Streaming, Ads and much more\u003C\/li\u003E\n\u003Cli\u003ESubmit the app!\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThis session is powered by Amazon Appstore\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3573"}]},"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"767"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1501601194","last_comment_name":null,"last_comment_uid":"767","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Mariuxtheone","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EIn this session, we cover what\u0027s needed to bring your \u003Cstrong\u003EMedia Streaming Android App\u003C\/strong\u003E to the living room the easiest way possible: we\u2019ll see how to \u003Cstrong\u003Ecreate high quality\u00a0Android Media Streaming apps in minutes\u003C\/strong\u003E using a new development tool Amazon has created: the \u003Cstrong\u003EFire App Builder\u003C\/strong\u003E template for Android Apps for TV (\u003Ca href=\u0022http:\/\/bit.ly\/FireAppBuilderDoc\u0022\u003Ehttp:\/\/bit.ly\/FireAppBuilderDoc\u003C\/a\u003E). Using this new tool, we\u2019ll understand how to easily connect a native Android app to video streaming services with just a few lines of code!\u003C\/p\u003E\n\u003Cp\u003ETogether we will see how to:\u003C\/p\u003E\n\u003Cul\u003E\u003Cli\u003EBuild a full-fledged Android app for TV in a few minutes by connecting it to a feed\u003C\/li\u003E\n\u003Cli\u003ECustomize the template\u003C\/li\u003E\n\u003Cli\u003EAdd modules for IAP, Subscription, Live Streaming, Ads and much more\u003C\/li\u003E\n\u003Cli\u003ESubmit the app!\u003C\/li\u003E\n\u003C\/ul\u003E\u003Cp\u003EThis session is powered by Amazon Appstore\u003C\/p\u003E\n"},{"title":"Optimizing Android apps for desktop experience","url":"\/sessions\/optimizing-android-apps-desktop-experience","room":"3520","speakers":[{"name":"Victor Okunev","url":"\/users\/victor-okunev"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T11:45:00Z","end":"2017-09-05T12:25:00Z","id":"3599","debug":{"vid":"3599","uid":"1019","title":"Optimizing Android apps for desktop experience","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3599","type":"session","language":"en","created":"1501718424","changed":"1504095049","tnid":"0","translate":"0","revision_timestamp":"1504095049","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 09:45:00","value2":"2017-09-05 10:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThe mobile devices of the latest generation are now capable of powering the desktop user experience. Get your Android apps ready for the big screen. Learn what it takes to optimize your apps for enhanced interactions, desktop mode capabilities, and an overall amplified in-app experience.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EStay for the quiz and for a Samsung DeX station giveaway at the end of the session!\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EThe mobile devices of the latest generation are now capable of powering the desktop user experience. Get your Android apps ready for the big screen. Learn what it takes to optimize your apps for enhanced interactions, desktop mode capabilities, and an overall amplified in-app experience.\u003C\/p\u003E\n\u003Cp\u003EStay for the quiz and for a Samsung DeX station giveaway at the end of the session!\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"1019"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1501718424","last_comment_name":null,"last_comment_uid":"1019","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"v.okunev","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThe mobile devices of the latest generation are now capable of powering the desktop user experience. Get your Android apps ready for the big screen. Learn what it takes to optimize your apps for enhanced interactions, desktop mode capabilities, and an overall amplified in-app experience.\u003C\/p\u003E\n\u003Cp\u003EStay for the quiz and for a Samsung DeX station giveaway at the end of the session!\u003C\/p\u003E\n"},{"title":"Open Source mobile phone - a dream come true","url":"\/sessions\/open-source-mobile-phone-dream-come-true","room":"3519","speakers":[{"name":"Alin Jerpelea","url":"\/users\/alin-jerpelea"}],"terms":[{"name":"Android Architecture","url":"\/session-tracks\/android-architecture-1","tid":"174"}],"start":"2017-09-05T12:30:00Z","end":"2017-09-05T12:55:00Z","id":"3600","debug":{"vid":"3600","uid":"451","title":"Open Source mobile phone - a dream come true","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3600","type":"session","language":"en","created":"1501837205","changed":"1503044693","tnid":"0","translate":"0","revision_timestamp":"1503044693","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 10:30:00","value2":"2017-09-05 10:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003E\u201cOpen Devices is a Sony Developer Program initiative that provides a Base Platform built from Open Source Software,\u003Cbr \/\u003E\r\nusing new kernels (4.4) and minimal vendor binaries, with the goal to ensure privacy and security over proprietary features.\u003Cbr \/\u003E\r\nDuring the last 6 years of working within the Open Source community we\u0027ve seen the pains involved in keeping a complete portfolio, not just the latest flagships, up to date. At the same time there has been a major shift from just features to privacy oriented custom software. The latter requiring fast releases and fast security updates.\u003Cbr \/\u003E\r\nIn this session we will go into detail on how to accomplish this, what obstacles we\u0027ve encountered and the lessons learned from our work towards that goal. And something about the future.\u201d\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003E\u201cOpen Devices is a Sony Developer Program initiative that provides a Base Platform built from Open Source Software,\u003Cbr \/\u003E\nusing new kernels (4.4) and minimal vendor binaries, with the goal to ensure privacy and security over proprietary features.\u003Cbr \/\u003E\nDuring the last 6 years of working within the Open Source community we\u0027ve seen the pains involved in keeping a complete portfolio, not just the latest flagships, up to date. At the same time there has been a major shift from just features to privacy oriented custom software. The latter requiring fast releases and fast security updates.\u003Cbr \/\u003E\nIn this session we will go into detail on how to accomplish this, what obstacles we\u0027ve encountered and the lessons learned from our work towards that goal. And something about the future.\u201d\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"451"}]},"field_session_track_ref":{"und":[{"target_id":"174"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1501837205","last_comment_name":null,"last_comment_uid":"451","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Alin Jerpelea","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003E\u201cOpen Devices is a Sony Developer Program initiative that provides a Base Platform built from Open Source Software,\u003Cbr \/\u003E\nusing new kernels (4.4) and minimal vendor binaries, with the goal to ensure privacy and security over proprietary features.\u003Cbr \/\u003E\nDuring the last 6 years of working within the Open Source community we\u0027ve seen the pains involved in keeping a complete portfolio, not just the latest flagships, up to date. At the same time there has been a major shift from just features to privacy oriented custom software. The latter requiring fast releases and fast security updates.\u003Cbr \/\u003E\nIn this session we will go into detail on how to accomplish this, what obstacles we\u0027ve encountered and the lessons learned from our work towards that goal. And something about the future.\u201d\u003C\/p\u003E\n"},{"title":"Lessons from building Android apps for poor networks and low-end devices","url":"\/sessions\/lessons-building-android-apps-poor-networks-and-low-end-devices","room":"3519","speakers":[{"name":"Alex Sourov","url":"\/users\/alex-sourov"},{"name":"Daniel Colascione","url":"\/users\/daniel-colascione"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T15:30:00Z","end":"2017-09-05T16:10:00Z","id":"3607","debug":{"vid":"3607","uid":"1035","title":"Lessons from building Android apps for poor networks and low-end devices","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3607","type":"session","language":"en","created":"1502379943","changed":"1503044659","tnid":"0","translate":"0","revision_timestamp":"1503044659","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 13:30:00","value2":"2017-09-05 14:10:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThis session will focus on how to build android apps designed for poor networks and low-end devices. We\u2019ll cover examples of innovations in this space that range from low-level improvements on the VM and system initialization level to clever product designs that make the app engaging even when offline.\u003C\/p\u003E\r\n","summary":"","format":"auth_user_html","safe_value":"\u003Cp\u003EThis session will focus on how to build android apps designed for poor networks and low-end devices. We\u2019ll cover examples of innovations in this space that range from low-level improvements on the VM and system initialization level to clever product designs that make the app engaging even when offline.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"1035"},{"target_id":"1036"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1502379943","last_comment_name":null,"last_comment_uid":"1035","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"Alex Sourov","picture":"0","data":"a:1:{s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThis session will focus on how to build android apps designed for poor networks and low-end devices. We\u2019ll cover examples of innovations in this space that range from low-level improvements on the VM and system initialization level to clever product designs that make the app engaging even when offline.\u003C\/p\u003E\n"},{"title":"No-Privacy will not be an option \u2013 A legal insight on privacy within apps","url":"\/sessions\/no-privacy-will-not-be-option-\u2013-legal-insight-privacy-within-apps","room":"3519","speakers":[{"name":"Hans-Christian Woger","url":"\/users\/hansen-christian-woger"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T14:00:00Z","end":"2017-09-04T14:25:00Z","id":"3610","debug":{"vid":"3610","uid":"657","title":"No-Privacy will not be an option \u2013 A legal insight on privacy within apps","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3610","type":"session","language":"en","created":"1502723759","changed":"1503044458","tnid":"0","translate":"0","revision_timestamp":"1503044458","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 12:00:00","value2":"2017-09-04 12:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EData protection has been one of the buzzwords within the last years. But the legal issues are just getting started. With the new General Data Protection Directive in effect and applicable from May next year the legal requirements for apps have already changed. But the additional new e-privacy-directive is on its way and will be a \u0022gamechanger\u0022. Not to obey privacy by design and privacy by default will not be an option in the future.\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EData protection has been one of the buzzwords within the last years. But the legal issues are just getting started. With the new General Data Protection Directive in effect and applicable from May next year the legal requirements for apps have already changed. But the additional new e-privacy-directive is on its way and will be a \u0022gamechanger\u0022. Not to obey privacy by design and privacy by default will not be an option in the future.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"184"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3519"}]},"field_session_speaker":{"und":[{"target_id":"1038"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1502723759","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EData protection has been one of the buzzwords within the last years. But the legal issues are just getting started. With the new General Data Protection Directive in effect and applicable from May next year the legal requirements for apps have already changed. But the additional new e-privacy-directive is on its way and will be a \u0022gamechanger\u0022. Not to obey privacy by design and privacy by default will not be an option in the future.\u003C\/p\u003E\n"},{"title":" Huawei bridges the success of Western Android developers into China. ","url":"\/sessions\/huawei-bridges-success-western-android-developers-china","room":"3520","speakers":[{"name":"Dr. Jaime Gonzalo","url":"\/users\/dr-jaime-gonzalo"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T14:45:00Z","end":"2017-09-05T15:25:00Z","id":"3622","debug":{"vid":"3622","uid":"657","title":" Huawei bridges the success of Western Android developers into China. ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3622","type":"session","language":"en","created":"1503414328","changed":"1503729918","tnid":"0","translate":"0","revision_timestamp":"1503729918","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 12:45:00","value2":"2017-09-05 13:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EChina generates 30% of the Mobile Apps \u0026amp; Games economy, but it remains an unexplored territory for the majority of Western developers.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EHuawei bridges that gap between China and the West, helping developers find success stories on both sides, representing one of the top Android distribution channels truly Global.\u003C\/p\u003E\r\n\r\n\u003Cp\u003EMarket insight, best practices \u0026amp; useful tips, and the Huawei key that opens all the gates of the Great Wall.\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EChina generates 30% of the Mobile Apps \u0026amp; Games economy, but it remains an unexplored territory for the majority of Western developers.\u003C\/p\u003E\n\u003Cp\u003EHuawei bridges that gap between China and the West, helping developers find success stories on both sides, representing one of the top Android distribution channels truly Global.\u003C\/p\u003E\n\u003Cp\u003EMarket insight, best practices \u0026amp; useful tips, and the Huawei key that opens all the gates of the Great Wall.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3520"}]},"field_session_speaker":{"und":[{"target_id":"1045"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503414328","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EChina generates 30% of the Mobile Apps \u0026amp; Games economy, but it remains an unexplored territory for the majority of Western developers.\u003C\/p\u003E\n\u003Cp\u003EHuawei bridges that gap between China and the West, helping developers find success stories on both sides, representing one of the top Android distribution channels truly Global.\u003C\/p\u003E\n\u003Cp\u003EMarket insight, best practices \u0026amp; useful tips, and the Huawei key that opens all the gates of the Great Wall.\u003C\/p\u003E\n"},{"title":"Welcome!","url":"\/sessions\/welcome","room":"3518","speakers":[{"name":"Boris Jebsen","url":"\/users\/boris-jebsen"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T09:45:00Z","end":"2017-09-04T10:00:00Z","id":"3629","debug":{"vid":"3629","uid":"11","title":"Welcome!","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3629","type":"session","language":"en","created":"1503561084","changed":"1503561758","tnid":"0","translate":"0","revision_timestamp":"1503561758","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 07:45:00","value2":"2017-09-04 08:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EWelcome everyone at droidcon Berlin 2017!\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EWelcome everyone at droidcon Berlin 2017!\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"1048"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503561084","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EWelcome everyone at droidcon Berlin 2017!\u003C\/p\u003E\n"},{"title":"Volkswagen Digital:Lab Berlin - New approaches to the creation of digital services for end customers","url":"\/sessions\/volkswagen-digitallab-berlin-new-approaches-creation-digital-services-end-customers","room":"3521","speakers":[{"name":"Stefan Gotthardt","url":"\/users\/stefan-gotthardt"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-04T16:00:00Z","end":"2017-09-04T16:25:00Z","id":"3630","debug":{"vid":"3630","uid":"11","title":"Volkswagen Digital:Lab Berlin - New approaches to the creation of digital services for end customers","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3630","type":"session","language":"en","created":"1503580581","changed":"1503581695","tnid":"0","translate":"0","revision_timestamp":"1503581695","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-04 14:00:00","value2":"2017-09-04 14:25:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EApart from its \u0022heavy metal\u0022 automobile production business the Volkswagen group has established various labs and innovation teams as part of its future mobility and digital transformation approach - one of them being the Digital:Lab in Berlin. As data driven services and business models have become highly important for today\u2019s industry and society Stefan will give an introduction to the new approaches of collaboration in agile teams and the creation of digital services for the end customer.\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EApart from its \u0022heavy metal\u0022 automobile production business the Volkswagen group has established various labs and innovation teams as part of its future mobility and digital transformation approach - one of them being the Digital:Lab in Berlin. As data driven services and business models have become highly important for today\u2019s industry and society Stefan will give an introduction to the new approaches of collaboration in agile teams and the creation of digital services for the end customer.\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3521"}]},"field_session_speaker":{"und":[{"target_id":"1049"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503580581","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EApart from its \u0022heavy metal\u0022 automobile production business the Volkswagen group has established various labs and innovation teams as part of its future mobility and digital transformation approach - one of them being the Digital:Lab in Berlin. As data driven services and business models have become highly important for today\u2019s industry and society Stefan will give an introduction to the new approaches of collaboration in agile teams and the creation of digital services for the end customer.\u003C\/p\u003E\n"},{"title":"[Keynote] Designing for Trust: User Experience + Privacy ","url":"\/sessions\/keynote-designing-trust-user-experience-privacy","room":"3518","speakers":[{"name":"Ame Elliott","url":"\/users\/ame-elliot"}],"terms":[{"name":"Design \/ UI\/UX","url":"\/session-tracks\/design-uiux-1","tid":"179"}],"start":"2017-09-05T10:00:00Z","end":"2017-09-05T10:45:00Z","id":"3641","debug":{"vid":"3641","uid":"657","title":"[Keynote] Designing for Trust: User Experience + Privacy ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3641","type":"session","language":"en","created":"1503933629","changed":"1503933779","tnid":"0","translate":"0","revision_timestamp":"1503933779","revision_uid":"657","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 08:00:00","value2":"2017-09-05 08:45:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EAs mobile apps move software into more areas of our lives, there are new privacy risks. Historically, security has\u0026nbsp;been treated as an engineering topic, with user experience separated from the technical implementation. The fast-changing landscape of mobile and IoT applications demand new approaches to the user experience of privacy. By exploring short-comings and\u0026nbsp;successful cross-platform experiences from a security point of view, this talk describes ways designers and developers can partner to create User\u0026nbsp;Experiences people trust. From messaging apps and chatbots, to connected homes, to drones, this an exciting era for UX design, and as a community\u0026nbsp;we\u2019re up to the challenge of privacy preservation.\u0026nbsp;\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EAs mobile apps move software into more areas of our lives, there are new privacy risks. Historically, security has\u00a0been treated as an engineering topic, with user experience separated from the technical implementation. The fast-changing landscape of mobile and IoT applications demand new approaches to the user experience of privacy. By exploring short-comings and\u00a0successful cross-platform experiences from a security point of view, this talk describes ways designers and developers can partner to create User\u00a0Experiences people trust. From messaging apps and chatbots, to connected homes, to drones, this an exciting era for UX design, and as a community\u00a0we\u2019re up to the challenge of privacy preservation.\u00a0\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"188"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"1050"}]},"field_session_track_ref":{"und":[{"target_id":"179"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503933629","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EAs mobile apps move software into more areas of our lives, there are new privacy risks. Historically, security has\u00a0been treated as an engineering topic, with user experience separated from the technical implementation. The fast-changing landscape of mobile and IoT applications demand new approaches to the user experience of privacy. By exploring short-comings and\u00a0successful cross-platform experiences from a security point of view, this talk describes ways designers and developers can partner to create User\u00a0Experiences people trust. From messaging apps and chatbots, to connected homes, to drones, this an exciting era for UX design, and as a community\u00a0we\u2019re up to the challenge of privacy preservation.\u00a0\u003C\/p\u003E\n"},{"title":"Don\u0027t let the dream of automation turn into your biggest nightmare.","url":"\/sessions\/dont-let-dream-automation-turn-your-biggest-nightmare","room":"3518","speakers":[{"name":"Nina Wieczorek","url":"\/users\/nina-wieczorek"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T17:30:00Z","end":"2017-09-05T17:55:00Z","id":"3643","debug":{"vid":"3643","uid":"657","title":"Don\u0027t let the dream of automation turn into your biggest nightmare.","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3643","type":"session","language":"en","created":"1504092498","changed":"1504095096","tnid":"0","translate":"0","revision_timestamp":"1504095096","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 15:30:00","value2":"2017-09-05 15:55:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EI will talk about automation and that, like everything else in life, it should be introduced in the right place and at the right time. I\u0027ve seen many companies thinking that automation will magically change everything, only to then realize that it consumes a lot of time and resources.\u0026nbsp; Automation is great but in some (sometimes many) cases manual testing is illogically more effective\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EI will talk about automation and that, like everything else in life, it should be introduced in the right place and at the right time. I\u0027ve seen many companies thinking that automation will magically change everything, only to then realize that it consumes a lot of time and resources.\u00a0 Automation is great but in some (sometimes many) cases manual testing is illogically more effective\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":{"und":[{"target_id":"3640"}]},"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"1051"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1504092498","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EI will talk about automation and that, like everything else in life, it should be introduced in the right place and at the right time. I\u0027ve seen many companies thinking that automation will magically change everything, only to then realize that it consumes a lot of time and resources.\u00a0 Automation is great but in some (sometimes many) cases manual testing is illogically more effective\u003C\/p\u003E\n"},{"title":"Farewell","url":"\/sessions\/farewell","room":"3518","speakers":[{"name":"Boris Jebsen","url":"\/users\/boris-jebsen"}],"terms":[{"name":"Best Practices \/ Code Quality","url":"\/session-tracks\/best-practices-code-quality-0","tid":"178"}],"start":"2017-09-05T18:00:00Z","end":"2017-09-05T18:30:00Z","id":"3644","debug":{"vid":"3644","uid":"11","title":"Farewell","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3644","type":"session","language":"en","created":"1504177929","changed":"1504177952","tnid":"0","translate":"0","revision_timestamp":"1504177952","revision_uid":"11","field_session_audio":[],"field_session_comments":[],"field_session_datetime":{"und":[{"value":"2017-09-05 16:00:00","value2":"2017-09-05 16:30:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_description":{"und":[{"value":"\u003Cp\u003EThanks for coming to droidcon Berlin 2017!\u003C\/p\u003E\r\n","summary":"","format":"filtered_html","safe_value":"\u003Cp\u003EThanks for coming to droidcon Berlin 2017!\u003C\/p\u003E\n","safe_summary":""}]},"field_session_media_slide":[],"field_session_media_video":[],"field_session_slide":[],"field_session_status":{"und":[{"value":"2"}]},"field_session_video":[],"field_session_vote":[],"field_session_registration":{"und":[{"registration_type":""}]},"field_session_duration_ref":{"und":[{"target_id":"187"}]},"field_session_exp_level_ref":{"und":[{"target_id":"183"}]},"field_session_format_ref":{"und":[{"target_id":"182"}]},"field_session_language_ref":{"und":[{"target_id":"186"}]},"field_session_partner":[],"field_session_room":{"und":[{"target_id":"3518"}]},"field_session_speaker":{"und":[{"target_id":"1048"}]},"field_session_track_ref":{"und":[{"target_id":"178"}]},"metatags":{"en":{"robots":{"value":{"0":0,"index":0,"follow":0,"noindex":0,"nofollow":0,"noarchive":0,"nosnippet":0,"noodp":0,"noydir":0,"noimageindex":0,"notranslate":0}}}},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1504177929","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"description":"\u003Cp\u003EThanks for coming to droidcon Berlin 2017!\u003C\/p\u003E\n"},{"title":"Lunch ","url":"\/scheduleitem\/lunch-5","room":"3521","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3617_intermission_0","debug":{"vid":"3617","uid":"657","title":"Lunch ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3617","type":"schedule_item","language":"en","created":"1503047702","changed":"1503047792","tnid":"0","translate":"0","revision_timestamp":"1503047792","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"},{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503047702","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch ","url":"\/scheduleitem\/lunch-5","room":"3520","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3617_intermission_1","debug":{"vid":"3617","uid":"657","title":"Lunch ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3617","type":"schedule_item","language":"en","created":"1503047702","changed":"1503047792","tnid":"0","translate":"0","revision_timestamp":"1503047792","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"},{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503047702","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch ","url":"\/scheduleitem\/lunch-5","room":"3519","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3617_intermission_2","debug":{"vid":"3617","uid":"657","title":"Lunch ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3617","type":"schedule_item","language":"en","created":"1503047702","changed":"1503047792","tnid":"0","translate":"0","revision_timestamp":"1503047792","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"},{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503047702","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch ","url":"\/scheduleitem\/lunch-5","room":"3518","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3617_intermission_3","debug":{"vid":"3617","uid":"657","title":"Lunch ","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3617","type":"schedule_item","language":"en","created":"1503047702","changed":"1503047792","tnid":"0","translate":"0","revision_timestamp":"1503047792","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"},{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503047702","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-8","room":"3521","start":"2017-09-04T16:30:00Z","end":"2017-09-04T17:00:00Z","id":"3618_intermission_0","debug":{"vid":"3618","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3618","type":"schedule_item","language":"en","created":"1503048008","changed":"1503048008","tnid":"0","translate":"0","revision_timestamp":"1503048008","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 14:30:00","value2":"2017-09-04 15:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048008","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-8","room":"3520","start":"2017-09-04T16:30:00Z","end":"2017-09-04T17:00:00Z","id":"3618_intermission_1","debug":{"vid":"3618","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3618","type":"schedule_item","language":"en","created":"1503048008","changed":"1503048008","tnid":"0","translate":"0","revision_timestamp":"1503048008","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 14:30:00","value2":"2017-09-04 15:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048008","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-8","room":"3519","start":"2017-09-04T16:30:00Z","end":"2017-09-04T17:00:00Z","id":"3618_intermission_2","debug":{"vid":"3618","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3618","type":"schedule_item","language":"en","created":"1503048008","changed":"1503048008","tnid":"0","translate":"0","revision_timestamp":"1503048008","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 14:30:00","value2":"2017-09-04 15:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048008","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-8","room":"3518","start":"2017-09-04T16:30:00Z","end":"2017-09-04T17:00:00Z","id":"3618_intermission_3","debug":{"vid":"3618","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3618","type":"schedule_item","language":"en","created":"1503048008","changed":"1503048008","tnid":"0","translate":"0","revision_timestamp":"1503048008","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 14:30:00","value2":"2017-09-04 15:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048008","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-6","room":"3521","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3619_intermission_0","debug":{"vid":"3619","uid":"657","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3619","type":"schedule_item","language":"en","created":"1503048182","changed":"1503048182","tnid":"0","translate":"0","revision_timestamp":"1503048182","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048182","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-6","room":"3520","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3619_intermission_1","debug":{"vid":"3619","uid":"657","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3619","type":"schedule_item","language":"en","created":"1503048182","changed":"1503048182","tnid":"0","translate":"0","revision_timestamp":"1503048182","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048182","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-6","room":"3519","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3619_intermission_2","debug":{"vid":"3619","uid":"657","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3619","type":"schedule_item","language":"en","created":"1503048182","changed":"1503048182","tnid":"0","translate":"0","revision_timestamp":"1503048182","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048182","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-6","room":"3518","start":"2017-09-04T13:00:00Z","end":"2017-09-04T14:00:00Z","id":"3619_intermission_3","debug":{"vid":"3619","uid":"657","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3619","type":"schedule_item","language":"en","created":"1503048182","changed":"1503048182","tnid":"0","translate":"0","revision_timestamp":"1503048182","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-04 11:00:00","value2":"2017-09-04 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048182","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-9","room":"3521","start":"2017-09-05T16:15:00Z","end":"2017-09-05T16:45:00Z","id":"3620_intermission_0","debug":{"vid":"3620","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3620","type":"schedule_item","language":"en","created":"1503048271","changed":"1503048271","tnid":"0","translate":"0","revision_timestamp":"1503048271","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-05 14:15:00","value2":"2017-09-05 14:45:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048271","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-9","room":"3520","start":"2017-09-05T16:15:00Z","end":"2017-09-05T16:45:00Z","id":"3620_intermission_1","debug":{"vid":"3620","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3620","type":"schedule_item","language":"en","created":"1503048271","changed":"1503048271","tnid":"0","translate":"0","revision_timestamp":"1503048271","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-05 14:15:00","value2":"2017-09-05 14:45:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048271","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-9","room":"3519","start":"2017-09-05T16:15:00Z","end":"2017-09-05T16:45:00Z","id":"3620_intermission_2","debug":{"vid":"3620","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3620","type":"schedule_item","language":"en","created":"1503048271","changed":"1503048271","tnid":"0","translate":"0","revision_timestamp":"1503048271","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-05 14:15:00","value2":"2017-09-05 14:45:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048271","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Coffee Break","url":"\/scheduleitem\/coffee-break-9","room":"3518","start":"2017-09-05T16:15:00Z","end":"2017-09-05T16:45:00Z","id":"3620_intermission_3","debug":{"vid":"3620","uid":"657","title":"Coffee Break","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3620","type":"schedule_item","language":"en","created":"1503048271","changed":"1503048271","tnid":"0","translate":"0","revision_timestamp":"1503048271","revision_uid":"657","field_session_datetime":{"und":[{"value":"2017-09-05 14:15:00","value2":"2017-09-05 14:45:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503048271","last_comment_name":null,"last_comment_uid":"657","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"dka","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-7","room":"3521","start":"2017-09-05T13:00:00Z","end":"2017-09-05T14:00:00Z","id":"3621_intermission_0","debug":{"vid":"3621","uid":"11","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3621","type":"schedule_item","language":"en","created":"1503054147","changed":"1503054147","tnid":"0","translate":"0","revision_timestamp":"1503054147","revision_uid":"11","field_session_datetime":{"und":[{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503054147","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-7","room":"3520","start":"2017-09-05T13:00:00Z","end":"2017-09-05T14:00:00Z","id":"3621_intermission_1","debug":{"vid":"3621","uid":"11","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3621","type":"schedule_item","language":"en","created":"1503054147","changed":"1503054147","tnid":"0","translate":"0","revision_timestamp":"1503054147","revision_uid":"11","field_session_datetime":{"und":[{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503054147","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-7","room":"3519","start":"2017-09-05T13:00:00Z","end":"2017-09-05T14:00:00Z","id":"3621_intermission_2","debug":{"vid":"3621","uid":"11","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3621","type":"schedule_item","language":"en","created":"1503054147","changed":"1503054147","tnid":"0","translate":"0","revision_timestamp":"1503054147","revision_uid":"11","field_session_datetime":{"und":[{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503054147","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"},{"title":"Lunch","url":"\/scheduleitem\/lunch-7","room":"3518","start":"2017-09-05T13:00:00Z","end":"2017-09-05T14:00:00Z","id":"3621_intermission_3","debug":{"vid":"3621","uid":"11","title":"Lunch","log":"","status":"1","comment":"1","promote":"0","sticky":"0","nid":"3621","type":"schedule_item","language":"en","created":"1503054147","changed":"1503054147","tnid":"0","translate":"0","revision_timestamp":"1503054147","revision_uid":"11","field_session_datetime":{"und":[{"value":"2017-09-05 11:00:00","value2":"2017-09-05 12:00:00","timezone":"Europe\/Berlin","timezone_db":"UTC","date_type":"datetime"}]},"field_session_room":{"und":[{"target_id":"3521"},{"target_id":"3520"},{"target_id":"3519"},{"target_id":"3518"}]},"field_session_status":{"und":[{"value":"2"}]},"rdf_mapping":{"rdftype":["sioc:Item","foaf:Document"],"title":{"predicates":["dc:title"]},"created":{"predicates":["dc:date","dc:created"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"changed":{"predicates":["dc:modified"],"datatype":"xsd:dateTime","callback":"date_iso8601"},"body":{"predicates":["content:encoded"]},"uid":{"predicates":["sioc:has_creator"],"type":"rel"},"name":{"predicates":["foaf:name"]},"comment_count":{"predicates":["sioc:num_replies"],"datatype":"xsd:integer"},"last_activity":{"predicates":["sioc:last_activity_date"],"datatype":"xsd:dateTime","callback":"date_iso8601"}},"path":{"pathauto":"1"},"cid":"0","last_comment_timestamp":"1503054147","last_comment_name":null,"last_comment_uid":"11","comment_count":"0","domains":{"16":"16"},"domain_site":false,"subdomains":["droidcon Berlin 2017"],"domain_source":"-5","name":"pbe","picture":"0","data":"a:6:{s:16:\u0022ckeditor_default\u0022;s:1:\u0022t\u0022;s:20:\u0022ckeditor_show_toggle\u0022;s:1:\u0022t\u0022;s:14:\u0022ckeditor_width\u0022;s:4:\u0022100%\u0022;s:13:\u0022ckeditor_lang\u0022;s:2:\u0022en\u0022;s:18:\u0022ckeditor_auto_lang\u0022;s:1:\u0022t\u0022;s:7:\u0022contact\u0022;i:1;}"},"rendering":"background"}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment