-
Notifications
You must be signed in to change notification settings - Fork 0
/
droidcon-bos-export.json
2821 lines (2821 loc) · 170 KB
/
droidcon-bos-export.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"about" : "<b>Droidcon returns to Boston April 08-09, 2019</b>.<br/><br/>Droidcon is a global conference focused on the engineering of applications built on top of Android. Droidcon provides a forum for developers to network with other developers, to share techniques, to announce apps and products, and to learn and teach. Droidcon Boston is a two-day full immersion tech event driven by local by local and global communities and influencers.",
"chat" : true,
"conductCode" : "<h1>TL;DR</h1> <h3>Be excellent to each other!</h3> <p>We invite all those who attend to Droidcon Boston to help us create a safe and positive experience for everyone. Unacceptable behaviour from any community member will not be tolerated.</p> <h3>If you need help reach out to a staff member or contact us. You can get in touch:</h3> <ul class=\"code-list\"> <li>using <a href=\"://droidconboston.slack.com\" style=\"color: #a1f57b;\" target=\"_blank\">Slack</a></li> <li>using <a href=\"://twitter.com/droidconbos\" style=\"color: #a1f57b;\" target=\"_blank\">Twitter</a> or <a href=\"://instagram.com/droidconbos\" target=\"_blank\">Instagram</a></li> <li>by email at <a href=\"mailto:conference@droidcon-boston.com\" style=\"color: #a1f57b;\">conference@droidcon-boston.com</a>.</li> </ul> <h1>Code of conduct</h1> <p>We want Droidcon Boston 2019 to be, as much as possible, a safe and productive environment for everyone. We recognize that an utterly “safe” environment is not achievable for all possible attendees, but we commit to fostering an event that is safer, to the best of our ability. To that end, this Code of Conduct spells out behavioral expectations for all attendees (including staff, speakers, and sponsors) at the conference. Droidcon Boston Organizers will enforce this code throughout the event.</p> <p>We hope to provide a great conference experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, ethnicity, religion (or lack thereof), or technological choices or experience. We invite you to help us make Droidcon Boston 2019 a place that is welcoming and respectful to all participants. We will not tolerate harassment of conference participants—in person or online.</p> <p>Examples of harassment include offensive comments, verbal threats or demands, intimidation, stalking, harassing photography or recording, sustained disruption of sessions or events, and unwelcome physical contact or sexual attention. Unacceptable behavior also includes slights and negative messages, both unintended and intentional, based on appearance (sometimes called microaggressions). Sexual language and imagery are not appropriate for any conference setting and are not welcome at Droidcon Boston 2019.</p> <p>All attendees, speakers, staff, and sponsors of Droidcon Boston 2019 must wear their badges during the event, with name unobscured. Anyone whose badge is not easily visible risks being asked to leave the event.<p> <p>We expect all participants at Droidcon Boston 2019 to adhere to the Code of Conduct in all areas of the conference. This includes conference-related social events at off-site locations, in related online communities, and on social media. People asked to stop a behavior are expected to comply immediately. Behavior that violates this Code of Conduct will be promptly addressed and may result in a conversation about expected changes in behavior, expulsion from the conference without a refund, and/or banning from future Droidcon Boston events.</p> <h3>Need Help?</h3> <p>If you have questions or concerns about the Code of Conduct itself, or the behavior of any participants before, during or after the conference, reach out to any person on our safety team. You can identify safety team members by their <strong>green Droidcon Boston T-shirts</strong>. We treat all discussions of the Code of Conduct and related concerns seriously. </p> <p>If you are at the event, you can find an organizer by going to the front desk at the entrance to the Calderwood Pavilion or look for persons wearing staff t-shirts.</p> <p>You can (in addition or instead) email us at <a href=\"mailto:conference@droidcon-boston.com\">conference@droidcon-boston.com</a>.</p> <p>We endeavor to reply quickly to all communications–within a business day if in the days prior to or after Droidcon Boston 2019, and within an hour if during the conference’s working hours (9 am to 9 pm).</p> <h3>Once a concern related to the Code of Conduct is raised, our team commits to the following:</h3> <ul> <li>We will do our best to protect the anonymity of the person(s) targeted by the behavior in question (and, if separate, the person who witnessed or is reporting the behavior in question).</li> <li>We will discuss the issue with as much privacy as possible with the person making the report, so as to try to prevent retribution from others. </li> <li>We will provide a timeline estimate for next steps in response to any concerns brought up with Droidcon Boston 2019 staff, and update this timeline when appropriate.</li> <li>While we will always err on the side of safety and treating all reports as true, we will not assume that a report being made automatically means that an action needs to be taken beyond the conversation with the person making the report.</li> <li> <p>The person bringing up the concern is welcome to have an additional person with them if that would make them feel safer, however, We will provide a timeline estimate for next steps in response to any concerns brought with Droidcon Boston staff, and update this timeline when appropriate.</p> </li> <p>We will take all concern seriously, and will attempt to address them with appropriate measures.</p> </ul>",
"conferenceData" : {
"events" : {
"-L_AuG8zVgRvoYc4xVzX" : {
"description" : "<p>Grab your badge, have breakfast, and meet other attendees before getting ready for the talks!</p>\n<p><strong>Getting Here</strong></p>\n<p>📍<a href=\"https://goo.gl/maps/MNAc3HJpSio\" target=\"_blank\"><strong>Calderwood Pavilion on Google Maps</strong></a></p>",
"duration" : "PT45M",
"endTime" : "2019-04-08T13:45:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Check-In",
"roomIds" : {
"-Lb-aLvdmfg_OcspGioM" : true
},
"roomNames" : {
"Calderwood Pavilion Lobby" : true
},
"startTime" : "2019-04-08T13:00:00.000Z",
"updatedAt" : 1553714485760,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_Au_gM0TbzGf-SOq3r" : {
"description" : "<p>A good release is an uneventful one. While often overlooked, continuous integration (CI) and automation can be pivotal to shipping a quality app timely. A good CI system helps reduce bottlenecks by automating workflows. Hear how The New York Times leverages CI to facilitate a regular release cycle while allowing developers to keep their focus on code. In this talk, you’ll learn to understand how CI and automation can help both large and small teams increase productivity, communications, and transparency.</p>\n<p>Topics will include:</p>\n<p>- Integrations with Github, Jira, and Slack</p>\n<p>- Giving product direct control over creating and publishing releases</p>\n<p>- Moving our CI to the cloud</p>\n<p>- Future CI plans and exploration</p>",
"duration" : "PT30M",
"endTime" : "2019-04-08T18:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Using automation to spark joy for developers and boost app quality",
"primarySpeakerName" : "Joe Cyboski",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_Fc-FSt82gvteUxcxb" : true
},
"speakerNameToOrg" : {
"Joe Cyboski" : "The New York Times"
},
"speakerNameToPhotoUrl" : {
"Joe Cyboski" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F94738dfc-be4f-4b06-a3b4-0d4d06d1c118.png?alt=media&token=671cbe6b-8a83-409d-98eb-b8e0f72bd640"
},
"speakerNames" : {
"Joe Cyboski" : true
},
"startTime" : "2019-04-08T17:30:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553208137466,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_AuvdoXTOuI7GXiWMa" : {
"description" : "<p>Come to learn how simple and testable your app's navigation can be with the new Navigation Architecture Component. We’ll start with the basics, assuming no prior experience, and move on to more advanced topics like testing navigation, conditional navigation, deep linking, and both reasons and strategies for migrating to a single Activity-based architecture.</p>\n<p>You’ll leave this talk with a solid understanding of the Navigation Architecture Component and the confidence to get started.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T16:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Destination navigation: You’re going to love the transition",
"primarySpeakerName" : "Eric Maxwell",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EbCnvker3BVMypnQa" : true
},
"speakerNameToOrg" : {
"Eric Maxwell" : "Big Nerd Ranch"
},
"speakerNameToPhotoUrl" : {
"Eric Maxwell" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F75bfe7f7-7851-454e-837e-1cc5643b3564.png?alt=media&token=51b7117e-d109-4833-be93-91ac6eec5143"
},
"speakerNames" : {
"Eric Maxwell" : true
},
"startTime" : "2019-04-08T15:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553286736043,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_Av5f3BV3OagrK6g9Q" : {
"description" : "<p>Modern mobile applications make use of a wide array of technical solutions to achieve clean, testable and performant code. Among these tools is the reactive programming paradigm. While many have heard of reactive programming, far less have a solid understanding of what it is, how to achieve it, and what benefits it may provide. The Android communities use of RxJava as a replacement for the AsyncTask class has lead to widespread adoption of reactive technologies without a corresponding embracing of reactive programming.<br>\n</p>\n<p>In this talk, we’ll review what reactive programming is and what its history is. We’ll then address the ways in which the Android community has been using reactive technologies and how it could take the next step in adopting these technologies towards creating end to end reactive apps. We’ll take a deep dive into how RxJava integrates with the Android LiveData classes and when to use which. We’ll work through a small but meaningful application to demonstrate reactive programming concepts in the Android world. We’ll end the example by looking at how the code can be (easily) tested and some of the benefits we’ve received from utilizing a reactive approach.<br>\n</p>\n<p>- Introduction to reactive programming and its benefits for UI development<br>\n- Overview of LiveData and how it relates to reactive programming<br>\n- Similar overview for RxJava<br>\n- How the Android community is currently using RxJava and the deficiencies in how many view the library<br>\n- Simple example of a reactive app<br>\n- Building up to a more complex example of an end to end reactive app using both LiveData and RxJava<br>\n- Using JUnit tests in a reactive context<br>\n- Recapping the benefits of the reactive development with the now finished example app<br>\n- Conclusion</p>",
"duration" : "PT30M",
"endTime" : "2019-04-08T21:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Achieving fully reactive code using both LiveData and RxJava",
"primarySpeakerName" : "Alex Sullivan",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L__27SPk_N8Z1HoAY3t" : true
},
"speakerNameToOrg" : {
"Alex Sullivan" : "thoughtbot"
},
"speakerNameToPhotoUrl" : {
"Alex Sullivan" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F27610138-4e1a-479b-9963-f93465491b0b.png?alt=media&token=38f69271-c4ca-4509-b12a-b338fc77b847"
},
"speakerNames" : {
"Alex Sullivan" : true
},
"startTime" : "2019-04-08T20:30:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553286348101,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_AvLwHFux5CCUg57lw" : {
"description" : "<p>Our job as engineers does not stop with building a dizzying array of features, eliminating technical defects and ensuring high reliability. Engineers of all kinds must ensure their work serves the public good. A product that reliably harms, exacerbates injustices, or excludes marginalized groups is not a product worth building and maintaining. Learn how to effectively accomplish change in your working conditions or your employer's products through grassroots employee advocacy.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T15:00:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Keynote: Ethical product design and you!",
"primarySpeakerName" : "Liz Fong-Jones",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_d07rDYpSC2b4H-jUy" : true
},
"speakerNameToOrg" : {
"Liz Fong-Jones" : "Honeycomb"
},
"speakerNameToPhotoUrl" : {
"Liz Fong-Jones" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fab6b340b-90de-4e30-a839-76c697da03a6.png?alt=media&token=1720e49a-15a7-44b7-9cb2-4bec961b5337"
},
"speakerNames" : {
"Liz Fong-Jones" : true
},
"startTime" : "2019-04-08T14:00:00.000Z",
"updatedAt" : 1553286938151,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_AwUU2tP9ZOkftXaCG" : {
"description" : "<p>Let's be honest. Till 3 years ago, adding motion to your app was probably the last thing to be implemented IF it would be implemented at all. The main reasons were 2; A. it was a pain to animate the simplest thing and B. the feedback your users were expecting was an annoying dialog window for all the useful... and sometimes not so useful information. And that was fine! The last couple of years and after the introduction of the material design principles, this is not the case anymore. The users expect some meaningful feedback about their actions, that will not interfere though with the flow of their interaction and it will be \"normal\" to the eye. Very recently, Google unveiled a lot of new, amazing tools that can help you take your app to the next level, engage your users more by offering a meaningful and fun experience, without causing you headaches anymore.</p>",
"duration" : "PT40M",
"endTime" : "2019-04-08T16:55:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Lighting Talk: I like to move it, move it!",
"primarySpeakerName" : "Eliza Camber",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L__3fHliXQcwGkRJrV-" : true
},
"speakerNameToOrg" : {
"Eliza Camber" : "Pixplicity"
},
"speakerNameToPhotoUrl" : {
"Eliza Camber" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F3a400441-0a85-4155-9b59-6aa0f6f24c3e.png?alt=media&token=d03b177c-8c90-42fa-9929-95b51195f3c0"
},
"speakerNames" : {
"Eliza Camber" : true
},
"startTime" : "2019-04-08T16:15:00.000Z",
"updatedAt" : 1553287007916,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_AwxcL6eRZl0GlrFfO" : {
"description" : "<p>Complex Android app flows consist of many screens, synchronous and/or asynchronous calls, and potentially involve third-party libraries with different life cycles. On top of that, the activity lifecycle is quite complex — making it close to impossible to handle all edge cases caused by that lifecycle. This talk will demonstrate a way to get complex flows under control by using a finite state machine. We will use Kotlin and basic RxJava to create a generic finite state machine that allows us to nicely decouple state and UI logic. We will also look into the composition of finite state machines.</p>",
"duration" : "PT30M",
"endTime" : "2019-04-09T15:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Finite state machines to the rescue: Get complex app flows under control",
"primarySpeakerName" : "Emanuel Moecklin",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_Ehp7aYCb6WGIvIxom" : true
},
"speakerNameToOrg" : {
"Emanuel Moecklin" : "Airfox"
},
"speakerNameToPhotoUrl" : {
"Emanuel Moecklin" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F7056c013-4cd1-4faf-b8e4-f737ce277f30.png?alt=media&token=caee08bc-b3fa-4f54-98a2-407a09bc3f6d"
},
"speakerNames" : {
"Emanuel Moecklin" : true
},
"startTime" : "2019-04-09T14:30:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553287227219,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_AzfdN-brAmJ7LWob7" : {
"description" : "<p>An introduction to the Model View Intent architecture pattern. This pattern takes ideas and concepts from Reactive and Functional programming. We'll go over the core principles of this pattern, and how you can apply them in your Android applications. We'll look at concrete implementation details, and explore some of its benefits. Some familiarity with Kotlin and RxJava is assumed.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T18:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Simple MVI architecture for Android",
"primarySpeakerName" : "Etienne Caron",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EbsX-4IcExvMGc-K5" : true
},
"speakerNameToOrg" : {
"Etienne Caron" : "Shopify"
},
"speakerNameToPhotoUrl" : {
"Etienne Caron" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F884b0231-9069-43f6-9019-a469b86176bf.png?alt=media&token=dbb1cd8f-2d28-43e8-b857-cc43f6c93e18"
},
"speakerNames" : {
"Etienne Caron" : true
},
"startTime" : "2019-04-09T17:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553208119300,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_Azl_QBdtfuEE7oHgT" : {
"description" : "<p>Have you ever had an experience where a small voice in your head prevented you from acting on an idea, stopped you from sharing your knowledge or trying something new, or maybe even made you feel like your achievements were nothing special?</p>\n<p>That voice is more common than you think!</p>\n<p>In this talk we will go over the basic steps that will help you materialize, deconstruct and take control of that voice, helping you distinguish the useful bits of information that can help you grow from the overwhelming debris and clutter. You will learn how to notice the early signs of its onset and manage the situation to your benefit. Finally, you will learn to use simple tools that will help you recognize and acknowledge your achievements and help yourself and others fight the invisible menace.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T16:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Inhibiting the impostor",
"primarySpeakerName" : "Ana Baotić",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_FbBmFWLXGsbG5VPB1" : true
},
"speakerNameToOrg" : {
"Ana Baotić" : "Asseco SEE"
},
"speakerNameToPhotoUrl" : {
"Ana Baotić" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F87a67db6-196b-478b-9199-13a4ff8c4010.png?alt=media&token=9bd2957f-b008-47ba-9176-8a7109867238"
},
"speakerNames" : {
"Ana Baotić" : true
},
"startTime" : "2019-04-08T15:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553208068517,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_Azz36TEF4dvISlh5q" : {
"description" : "<p>Guaranteed, battery friendly solution to the problem of ensuring the critical background tasks are executed despite the restrictions and in a constraint environment, even after the app exits? WorkManager is your new smart delegate Library that solves this complex background processing. The talk will help us understand:</p>\n<p>- Basic overview including underlying concepts, how to specify tasks and restraints</p>\n<p>- Suitable tasks use cases - When and when NOT to use WorkManager</p>\n<p>- Chained Sequences & unique named sequences</p>\n<p>I will be demonstrating a real-world problem, and how WorkManager is an improvement over existing solutions to solve this. </p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T19:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "WorkManager: Clever delegate for deferrable background tasks",
"primarySpeakerName" : "Divya Jain",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_Ef0HYEAncZygEMwN6" : true
},
"speakerNameToOrg" : {
"Divya Jain" : "Gametime"
},
"speakerNameToPhotoUrl" : {
"Divya Jain" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F56237039-db63-4eed-aac7-dd534f3a0f2c.png?alt=media&token=b6e4760e-f967-41da-813b-aff6448aec24"
},
"speakerNames" : {
"Divya Jain" : true
},
"startTime" : "2019-04-08T18:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553287145729,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B-4-92D1t-BIhRx4t" : {
"description" : "<p>One of the promises of test-driven development is the confidence and ease with which we can refactor our production code.</p>\n<p>However, sometimes we find ourselves in situations where our tests are too coupled to our code and we have to change the tests every time we update the code. At this point, we start wondering if the tests are worth it.</p>\n<p>If you have ever found yourself having to update your tests every time the behavior of a dependency of a class changes, then this talk is for you.</p>\n<p>This talk is to share some patterns, tools, and examples that can guide us to write more maintainable tests.</p>\n<p>We will look at why we need tests in the first place, how writing tests is an investment that will save time in the future. We will also look at some causes of unmaintainable tests (for example using a wrong test double, testing implementation details and not general behavior) and how to overcome these problems. With the use of examples from everyday Android development, we will learn how to avoid brittle tests.</p>\n<p>You will leave the talk having a clearer understanding of why tests are important and worth the time and ultimately be able to apply the tips to write robust and more maintainable tests.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T19:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Writing tests that stand the test of time",
"primarySpeakerName" : "Oluwasegun Famisa",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_EcdUbwXZVtPOFzXJk" : true
},
"speakerNameToPhotoUrl" : {
"Oluwasegun Famisa" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F81a1af5f-13fc-4fd8-aef4-1999669998a1.png?alt=media&token=dd9d1396-44c7-4446-b359-886af9be82d7"
},
"speakerNames" : {
"Oluwasegun Famisa" : true
},
"startTime" : "2019-04-08T18:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553287139545,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B-977xEo7jEcMblW3" : {
"description" : "<p>Do you fear changes in the shape of a monster legacy code base? Do you have zero test coverage and don’t know how to regain safety in your day-to-day work? Come to this talk and get insights from the developers of a million client SDK who solved these problems without a whole rewrite.</p>\n<p>A code base which grows over years often leads to an ad-hoc architecture and plenty of dark corners where no developer wants to go. If this code base is untested it can slow down implementation speed dramatically. It may prevent developers from making necessary changes as they fear to break something. So most changes are limited to small operations which do not increase the overall quality of the code base.</p>\n<p>We faced such problems in our Android SDK and introduced architectural components and abstractions to support testability and regain safety for future changes.</p>\n<p>I will present how we fought this giant legacy code monster: from introducing architectural patterns to a critical codebase, which runs on millions of devices around the world, techniques for testing legacy code without breaking it, to how we support our engineers with CI tools and automated device tests. I will show which obstacles we had to pass and where we are now.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T20:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Test the untested: Our journey from zero coverage to automated testing",
"primarySpeakerName" : "Anton Augsburg",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_EdLUZougkrL0jf3K4" : true
},
"speakerNameToOrg" : {
"Anton Augsburg" : "Vodafone Group"
},
"speakerNameToPhotoUrl" : {
"Anton Augsburg" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F2f9e261a-95bb-44dd-ad9b-1611253e9fae.png?alt=media&token=6fc9a08c-5bd0-414a-947c-62d439db551a"
},
"speakerNames" : {
"Anton Augsburg" : true
},
"startTime" : "2019-04-08T19:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553287088301,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B-G1z80NWCSJP7DlN" : {
"description" : "<p>You've heard all about how Kotlin supports Domain Specific Languages (DSLs) and now it is time to put Kotlin's DSL features into action in your everyday code. You may not be building the next Gradle DSL or Anko, but you are writing Kotlin code and that code can be improved using DSL techniques.</p>\n<p>Yes, this talk will cover the Kotlin features you need to write DSLs: lambdas, infix notation, @DslMarker, etc... but you need to know more than that. You need to know what your design goals should be, know how to use Kotlin's features properly to make DSLs, what design patterns help you do it, and how to evolve your code slowly into from a single improvement to eventually becoming a full DSL.</p>\n<p>This talk exposes you to a dozen or more DSL techniques. You will learn how to turn ordinary builders into languages by using design patterns such as nested builders, pass context to lambdas to make your code more language-like, swap parameter order to make your code more readable, and clean up unnecessary syntax. </p>\n<p>By the end of this talk, you will have a brain full of ideas you can use to make full use of Kotlin's capabilities. </p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T20:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "A dozen techniques for everyday DSLs",
"primarySpeakerName" : "Greg Milette",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EhR30i6CHFAUU-NGe" : true
},
"speakerNameToOrg" : {
"Greg Milette" : "TripAdvisor"
},
"speakerNameToPhotoUrl" : {
"Greg Milette" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F2f69c89e-1a8f-4e49-a432-12934e794eb4.png?alt=media&token=85643913-100a-431c-bdb2-874803b24fa2"
},
"speakerNames" : {
"Greg Milette" : true
},
"startTime" : "2019-04-09T19:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553207886623,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B-NcfJd2qBjDW5Jm6" : {
"description" : "<p>The time is here to start thinking about the architecture of your Android app. You know your app will be all Kotlin (right?) it needs to do network requests, and it must communicate with a Bluetooth device. That means that it must deal with asynchronous programming so that it can receive and send data from the network and the device, while your UI keeps running as smooth as butter. There are a few choices to accomplish this, such as using plain Threads, AsyncTasks, or the popular Rx Java framework if you dread to manage threads in your own code (who doesn't).</p>\n<p>In this talk, we'll narrow down the choices to two candidates. The first one is the popular Rx Java framework and the second one is the newly minted Coroutines feature in Kotlin. We explain how they work and give you a checklist so that you can figure out which one suits the architecture of your app and your team of developers best. After all, you and your team want an app that is a pleasure to build and that your users will love!</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T15:30:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Asynchrony in Kotlin: How you can choose between using Rx or using Coroutines",
"primarySpeakerName" : "Anton Spaans",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EiKS5yY_3b0rtfM8F" : true
},
"speakerNameToOrg" : {
"Anton Spaans" : "Intrepid, part of Accenture"
},
"speakerNameToPhotoUrl" : {
"Anton Spaans" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fc657551b-8770-49bf-bfeb-338b076660d3.png?alt=media&token=26d89f2d-a7dc-4938-ac62-5b0c86add6b9"
},
"speakerNames" : {
"Anton Spaans" : true
},
"startTime" : "2019-04-09T14:30:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1554068870259,
"updatedBy" : "kJhRBlKxMNNbO2184hPWS2wkT2w2"
},
"-L_B-TXp-iqpEhqXgnRV" : {
"description" : "<p>Do you use Outlook or Skype on your phone? At Microsoft, we have over 100,000 employees that beta test these apps internally. How do we get the apps to that many users seconds after the a change is made in the codebase? How do we target all the testers to give us feedback on a version? Learn how we build and test our mobile apps on the cloud and analyze our apps after distributing it to beta testers and especially how we handle a scaled store outside the Play Store.</p>",
"duration" : "PT30M",
"endTime" : "2019-04-08T17:30:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "How we seamlessly internally test our Android apps within Microsoft?",
"primarySpeakerName" : "Keerthana \"KK\" Kumar",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_FeKVyX4N8HtdtOHfF" : true
},
"speakerNameToOrg" : {
"Keerthana \"KK\" Kumar" : "Microsoft"
},
"speakerNameToPhotoUrl" : {
"Keerthana \"KK\" Kumar" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F9b893cd9-8e01-4588-8807-5147df490149.png?alt=media&token=023c26d5-a61c-42ea-81ca-8e5bbc464665"
},
"speakerNames" : {
"Keerthana \"KK\" Kumar" : true
},
"startTime" : "2019-04-08T17:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1554068659277,
"updatedBy" : "kJhRBlKxMNNbO2184hPWS2wkT2w2"
},
"-L_B-_d3Km_uQnh03xc7" : {
"description" : "<p>Coroutines have been around since the dawn of programming languages, but it's only recently come to Android programmers through Kotlin. Journey through the history of coroutines, learning what problems they're good at solving - and how they can be used effectively in our Android applications.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T22:00:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Keynote: Android routines on coroutines",
"primarySpeakerName" : "Sean McQuillan",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_cLbF97SiES258yfxn" : true
},
"speakerNameToOrg" : {
"Sean McQuillan" : "Google"
},
"speakerNameToPhotoUrl" : {
"Sean McQuillan" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F24076a78-099b-4983-9018-83d37a67b42e.png?alt=media&token=bfade7cf-11e5-4f43-8814-92d7732397ab"
},
"speakerNames" : {
"Sean McQuillan" : true
},
"startTime" : "2019-04-08T21:00:00.000Z",
"updatedAt" : 1553208084750,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B0pJQFXQmjqtbYgJC" : {
"description" : "<p>Firebase offers two cloud-based, client-accessible database solutions that support real-time data syncing. In this talk, we’ll cover Could Firestore, Firebase's new database solution. It’s an efficient, low-latency database solution for mobile apps that is optimized for speed, security, and offline use. Cloud Firestore lets you build rich, high-quality applications by allowing secure access to the database directly from client-side code. Besides being easy to use, it allows you to use queries to decrease the data usage and increase the security so that you can get just the info you need for your user. When offline, apps remain responsive because the Firebase SDK persists your data to disk, giving the end user an immersive experience. Come and learn how you can use Cloud Firestore to effortlessly build powerful real-time experiences on Android in a faster and more efficient way to bring your products to millions of users without worrying about scaling.</p>",
"duration" : "PT1H30M",
"endTime" : "2019-04-08T19:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Create, Store, Synchronize: Firebase Cloud Firestore",
"primarySpeakerName" : "Kaan Mamikoglu",
"roomIds" : {
"-L_B0fLq57414d4GSnw7" : true
},
"roomNames" : {
"Carol Deane Theatre" : true
},
"speakerIds" : {
"-L_FfDxnuXzt7cpXXu9_" : true
},
"speakerNameToPhotoUrl" : {
"Kaan Mamikoglu" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fc634f7e5-0fe0-4d45-a52c-2b80ab01191f.png?alt=media&token=c15c89f1-c9b2-46ee-8d9b-4a9cbcfccce8"
},
"speakerNames" : {
"Kaan Mamikoglu" : true
},
"startTime" : "2019-04-08T17:30:00.000Z",
"trackId" : "-L_B0Y_CnhonLTP47C14",
"trackName" : "Workshop",
"trackSortOrder" : 2,
"updatedAt" : 1551894917241,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B1DZjQoi22O8iuT1L" : {
"description" : "<p>This year at Droidcon Boston 2019, we’re hosting an unconference-style set of 10min lightning talks based on community input. Just follow signs to the unconference after lunch Day 2!</p>\n<p>For schedule and speaker list, scoot over to: <a href=\"https://www.droidcon-boston.com/agenda/unconference\" target=\"_blank\">Multiverse/Unconference Agenda</a></p>",
"duration" : "PT2H",
"endTime" : "2019-04-09T21:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Unconference",
"roomIds" : {
"-L_B0fLq57414d4GSnw7" : true
},
"roomNames" : {
"Carol Deane Theatre" : true
},
"startTime" : "2019-04-09T19:00:00.000Z",
"trackId" : "-L_B0Y_CnhonLTP47C14",
"trackName" : "Workshop",
"trackSortOrder" : 2,
"updatedAt" : 1554071969417,
"updatedBy" : "kJhRBlKxMNNbO2184hPWS2wkT2w2"
},
"-L_B1cUrcjc4XlMD_afX" : {
"description" : "<p>Grab your badge, have breakfast, and meet other attendees before getting ready for the talks!</p>\n<p><strong>Getting Here</strong></p>\n<p>📍<a href=\"https://goo.gl/maps/MNAc3HJpSio\" target=\"_blank\"><strong>Calderwood Pavilion on Google Maps</strong></a></p>",
"duration" : "PT30M",
"endTime" : "2019-04-09T13:30:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Check-In",
"roomIds" : {
"-Lb-aLvdmfg_OcspGioM" : true
},
"roomNames" : {
"Calderwood Pavilion Lobby" : true
},
"startTime" : "2019-04-09T13:00:00.000Z",
"updatedAt" : 1553714490624,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B1xWucOuxqhoOBgDV" : {
"description" : "<p>Chances are that you're a teacher - whether you've formally taught in a classroom, shared an engineering experience as a talk or blog post, or helped out someone new on your team. Since you're a teacher, you should care about being a <em>good</em> teacher. Good teaching empowers those around you and nurtures healthy technical communities. Also, teaching doesn't need to be entirely altruistic - often the best way to truly learn something is to teach it.</p>\n<p>My education career started over a decade ago. It has included teaching at an all girl's STEM school in Rwanda and for the last five years as an online instructor for Google's Android courses. The Google courses are by far the biggest \"classroom\" I've been a part of, with a diverse and driven pool of students. Android has also had seismic changes over the past few years. These facts combined make Android a subject where teachers need to continually adapt, iterate and hone their skills.</p>\n<p>In this talk, I'll share what it's like behind the scenes: scripting, filming and producing Android classes for hundreds of thousands of students, including what we got right, and what took a few tries. From this, I'll cover reflections and practical takeaways about teaching Android and teaching in general. Because I am a teacher and so are you!<br>\n</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T14:30:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Keynote: I'm a teacher and so are you–lessons from teaching Android on the ground and in the cloud",
"primarySpeakerName" : "Lyla Fujiwara",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_dfzSgOIymJNLWhzhu" : true
},
"speakerNameToOrg" : {
"Lyla Fujiwara" : "Google"
},
"speakerNameToPhotoUrl" : {
"Lyla Fujiwara" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fd4ace409-aeb1-4ecb-b75f-6b4f31d19b6b.png?alt=media&token=8f3f8a5a-844c-47c0-9c4e-7054ffba9476"
},
"speakerNames" : {
"Lyla Fujiwara" : true
},
"startTime" : "2019-04-09T13:30:00.000Z",
"updatedAt" : 1554068832744,
"updatedBy" : "kJhRBlKxMNNbO2184hPWS2wkT2w2"
},
"-L_B2BqWCy7nJT1yH6e8" : {
"description" : "<p>Your laptop is broken! What do you do? When this happened to me I used my smartphone to make a development environment with all the modules I needed for my ambitious artsy projects. We will go through my challenges in setting up and maintaining a remote server, using my environment when my connection was weak, and how I managed to write and view code on such a dinky little screen as my phone.</p>",
"duration" : "PT30M",
"endTime" : "2019-04-09T15:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Programming for nomads: How to program on mobile devices",
"primarySpeakerName" : "Matilda Wysocki",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L__1ubbdVQX_BgSuxCF" : true
},
"speakerNameToOrg" : {
"Matilda Wysocki" : "The Knowledge House"
},
"speakerNameToPhotoUrl" : {
"Matilda Wysocki" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F198cfe11-1f84-4dcb-b942-14c419bdd938.png?alt=media&token=36ef0dea-d1f3-4264-b74f-840541de6ad8"
},
"speakerNames" : {
"Matilda Wysocki" : true
},
"startTime" : "2019-04-09T14:30:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553287175237,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B2HycRbuFsVMNI1-3" : {
"description" : "<p>Do you ever find yourself staring at a problem that you have NO IDEA how to fix? Somehow I end up with those a lot, maybe I'm low on ideas, or I'm just good at finding the right rock to open up the coconut. Regardless, I'm happy to fight with a problem, poking and prodding until I find that special epiphany that makes it clear, usually muttering \"it was so simple all along\". I will share some stories of times I've been stuck, and the strategies employed to break through the lack of understanding and get to a solution. You will learn different approaches you can take and different things to look for when you find yourself with a difficult problem that has an obscure solution. Hopefully, you'll also laugh, as I did, at the simple solutions that were so laboriously won.</p>",
"duration" : "PT30M",
"endTime" : "2019-04-08T20:30:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Solving the hard problems",
"primarySpeakerName" : "Travis Himes",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_FbYyaJoHu1VHX7DSL" : true
},
"speakerNameToOrg" : {
"Travis Himes" : "Warner Brothers Digital Labs"
},
"speakerNameToPhotoUrl" : {
"Travis Himes" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F64c7a9b7-ce0a-4864-aa18-fd252d959668.png?alt=media&token=38325962-5448-45ee-b6f4-c950d682a4c1"
},
"speakerNames" : {
"Travis Himes" : true
},
"startTime" : "2019-04-08T20:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553093478441,
"updatedBy" : "CX9Tzux5SEVhp7BwzmVoO1ss8QF2"
},
"-L_B2zmxIdwGqPRbTFDR" : {
"description" : "<p>Now that Kotlin is the preferred language of Android developers, what is the best library to work with SQLite databases using Kotlin? Room just released support for Kotlin Coroutines, and SqlDelight released support for Kotlin Multiplatform. Room has great documentation and hides a lot of implementation detail, while SqlDelight lets you write raw SQL statements with an Android Studio plugin and then generates type-safe code for you. In this session, you'll see a rundown of these two libraries, along with live coding demos to help you decide which library sounds right for you in this Kotlin world.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T18:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "SELECT * FROM Kotlin",
"primarySpeakerName" : "Sam Edwards",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_Efkg-vSsGFe6ec762" : true
},
"speakerNameToOrg" : {
"Sam Edwards" : "Capital One"
},
"speakerNameToPhotoUrl" : {
"Sam Edwards" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F144d2fac-9246-4ab2-89c2-52e1c32dc29a.png?alt=media&token=151b864b-0afd-4bab-9e28-7cec3f8d656a"
},
"speakerNames" : {
"Sam Edwards" : true
},
"startTime" : "2019-04-08T17:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553287063924,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B33jtXuGeeD7gipYY" : {
"description" : "<p>We all use crash reporting tools in our apps, but have you ever wondered what happens under the hood? How do these crash reporters do what they do to make our debugging lives easier? Let’s find out! In this session, you'll learn how to create a crash reporting SDK from scratch using Android's UncaughtExceptionHandler, starting by capturing and sending stack traces to an HTTP endpoint. We'll then progressively add functionality onto our crash reporter until it's turned into a battle-tested SDK that we're confident will save us hours of debugging crashes in production.<br>\n</p>\n<p>As expected diving deeper into the inner workings of our tools, we’ll encounter challenges along the way. We’ll analyze the various scenarios, what they mean for our apps, and how to best go about solving for them given tradeoffs and solutions. Here are some of the challenges we’ll encounter:<br>\n</p>\n<p>For starters, we’ll discuss the design constraints caused by working in a low-memory environment, and how streaming IO and JSON serialization can help us capture OutOfMemoryErrors. We’ll also learn the best practices of caching undelivered reports on disk for future delivery and triggering automatic upload of reports in response to connectivity changes. We’ll consider privacy issues, like how we can collect useful metadata about the device and application at the time of crash while respecting user privacy by filtering sensitive information. To further expand our tool, we’ll capture exceptions caught in a try-catch block and discuss the difficulties with ensuring thread-safety in these situations. Then we’ll move on to the various strategies for testing a crash reporter and walk through the benefits of black-box end-to-end tests.<br>\n</p>\n<p>Another issue to examine is how we can deobfuscate stack traces in apps which use R8—we’ll review uploading a mapping file to an HTTP endpoint and read its contents to reveal a readable stack trace. There are even things we can do to highlight the most useful parts of stack traces as well as thinking through grouping related errors together. Then we’ll consider supporting different API levels and how it affects the collection of useful data, and finally, we’ll touch on capturing errors in NDK apps and the potential pitfalls in the Java Native Interface.<br>\n</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T15:30:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Everything you ever wanted to know about error handling on Android",
"primarySpeakerName" : "Jamie Lynch",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_EifYpHS78HrR4qNf0" : true
},
"speakerNameToOrg" : {
"Jamie Lynch" : "Bugsnag"
},
"speakerNameToPhotoUrl" : {
"Jamie Lynch" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Feda7f747-b3df-4524-a020-e578a9f860ef.png?alt=media&token=df9b68af-25dc-44ec-917b-04ada5db0125"
},
"speakerNames" : {
"Jamie Lynch" : true
},
"startTime" : "2019-04-09T14:30:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1551820906260,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B3DXM6OS_nwcdzq18" : {
"description" : "<p>Chances are you were already a Software Engineer before switching to Android Development. You might also have learnt your first line of Kotlin solely in the bid to become an Android Developer. Regardless of how you started developing for Android, at some point, you’ll need to start thinking about advancing to the next stage in your career.</p>\n<p>In this talk, you’ll see the evolution of an Android developer - from Junior, to Intermediate, to Senior and then to Team Lead and beyond. You will learn about what to expect at each stage, what mistakes that are overlooked and permissible and gain more insight into how to level up to the next stage.</p>\n<p>You’ll leave this talk with all the information you need to advance in your career!</p>",
"duration" : "PT45M",
"endTime" : "2019-04-09T17:00:00.000Z",
"isGeneralEvent" : true,
"isPublished" : true,
"name" : "Lightning Talk: Leveling up as an Android dev",
"primarySpeakerName" : "Moyinoluwa Adeyemi",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_cOxmXrYLzv1fCmKZw" : true
},
"speakerNameToOrg" : {
"Moyinoluwa Adeyemi" : "Zola Electric"
},
"speakerNameToPhotoUrl" : {
"Moyinoluwa Adeyemi" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Ff29d2522-10d6-4bd1-a3e1-37efba026b19.png?alt=media&token=bace51e0-f8e5-41ff-99dc-a66536200927"
},
"speakerNames" : {
"Moyinoluwa Adeyemi" : true
},
"startTime" : "2019-04-09T16:15:00.000Z",
"updatedAt" : 1553964685271,
"updatedBy" : "CX9Tzux5SEVhp7BwzmVoO1ss8QF2"
},
"-L_B3QO9M_GkT9h5gfta" : {
"description" : "<p>In this workshop, I'll take you through the process of performing facial recognition (not just detection) on Android. I show how to set up and train your Cloud AutoML model, and then how to use that model within your Android app.</p>",
"duration" : "PT1H30M",
"endTime" : "2019-04-09T16:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Facial recognition on Android using Cloud AutoML",
"primarySpeakerName" : "Andrew Kelly",
"roomIds" : {
"-L_B0fLq57414d4GSnw7" : true
},
"roomNames" : {
"Carol Deane Theatre" : true
},
"speakerIds" : {
"-L_Ffrw323h3avq3N3sa" : true
},
"speakerNameToOrg" : {
"Andrew Kelly" : "Bilue"
},
"speakerNameToPhotoUrl" : {
"Andrew Kelly" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F00b143a6-516e-4d5f-a3ec-622ee4ae4b84.png?alt=media&token=dbc2b542-5cb3-465f-853b-1e4c3706aa87"
},
"speakerNames" : {
"Andrew Kelly" : true
},
"startTime" : "2019-04-09T14:30:00.000Z",
"trackId" : "-L_B0Y_CnhonLTP47C14",
"trackName" : "Workshop",
"trackSortOrder" : 2,
"updatedAt" : 1553208035655,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B3eTePpxdrM_UHNoJ" : {
"description" : "<p>The move to cloud-based tablet POS systems has been a big win for restaurants. But what happens when the Internet goes out? How do you keep the five tablets in your restaurant humming along happily until the router is plugged back in? And how do you reconcile all of the activity you’ve recorded once everyone is back online?<br>\n</p>\n<p>Join us to learn how Toast has tackled this problem so far, and how we’re improving our solution. We’ll give you an end-to-end tour of the challenge, including:<br>\n</p>\n<p>- On-device database technologies<br>\n- The basics of securely storing payments<br>\n- Direct device-to-device communications<br>\n- Sharing business logic across the app and cloud<br>\n- Messaging stacks and their strengths<br>\n- Event sourcing patterns<br>\n</p>\n<p>You’ll understand how we make sure thousands of restaurants can give their customers great service under all conditions, and we’ll share patterns that you can apply to your own apps.<br>\n</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T19:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Working offline: Data sync patterns at Toast",
"primarySpeakerName" : "Oleg Golberg",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EeWsJdhSbbW2TGHP1" : true,
"-L_EefHE19OjnfRnNlzj" : true
},
"speakerNameToOrg" : {
"Ben Popp" : "Toast",
"Oleg Golberg" : "Toast"
},
"speakerNameToPhotoUrl" : {
"Ben Popp" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fc0aa51db-baa4-4785-ba9a-4729a96b964b.png?alt=media&token=21971640-3417-49f2-a594-e3beb9152d57",
"Oleg Golberg" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F48d72c70-a2fa-4205-92f4-b9aa9e2c78e8.png?alt=media&token=8e241321-ecb5-47c9-a403-9fd8e32390c6"
},
"speakerNames" : {
"Ben Popp" : true,
"Oleg Golberg" : true
},
"startTime" : "2019-04-09T18:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553287125789,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B3sy080lzy4uQb0y7" : {
"description" : "<p>The Chromebook represents an extraordinary opportunity for Android app distribution, but it also poses significant development and testing challenges for Android developers. In this talk, we'll explore how to connect a Chromebook to a development system for debugging and testing. Then we'll move on to display management, including how to detect and adapt to a Chromebook's larger screen with its true multi-window environment and variations in screen size, pixel density, and orientation. Specific recommendations will be offered for making an app feel like it's native to a Chromebook's visual environment. We'll then talk about file management, which works somewhat differently on Chromebooks compared to conventional Android devices. We'll look at how the Chromebook's local file system is shared with the container that manages Android apps, and how to work with Google Drive through the Storage Access Framework API. And finally, we'll explore the Chromebook's USB ports and what they offer for both file transfer and audio output.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T19:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Optimizing Android apps for Chromebooks",
"primarySpeakerName" : "David Gassner",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_EgEG6UYInGN5UEBvK" : true
},
"speakerNameToOrg" : {
"David Gassner" : "LinkedIn"
},
"speakerNameToPhotoUrl" : {
"David Gassner" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fc928f789-9272-47ad-9b11-3a13d14ec434.png?alt=media&token=8e88a40e-a728-4f42-9cea-fa0f775b15ee"
},
"speakerNames" : {
"David Gassner" : true
},
"startTime" : "2019-04-09T18:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553208111414,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B3yxj5auoL7sydUeI" : {
"description" : "<p>You’ve heard, seen or witnessed the buzz around MotionLayout. But what does it really look like in real life? What are some of its current limitations? How easy is it to use? Are the demos that we’ve seen actually possible? Or is it all a ruse and they’ve been created in Adobe After Effects?</p>\n<p>In this talk, we’ll use MotionLayout to develop an animation taken straight from a crazy designer’s mock-up. A mock-up that you see and crumble at just how long it would typically take you to build it on Android. Throughout this talk, you’ll see some animated goodness and you’ll learn some of the fundamentals of how MotionLayout works. You’ll find out what a MotionScene is and how you can use it to separate your states and transitions from your layout, how to use click and swipe handling to trigger transitions, how we can take advantage of KeyAttributes to tweak animations at certain frames, how to use CustomAttributes to animate certain parts of a View and more!</p>\n<p>You will leave this talk armed with the basic knowledge required to start having fun with MotionLayout and creating your own animations and transitions. And you'll realize that the mad animations or transitions that your designers give you are now possible!</p>\n<p>To never saying “no” to designers again*! 🍻</p>\n<p><br></p>\n<p>* Ok, sometimes you’ll still have to say no.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T20:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Do the Loco-MotionLayout: Building animations with MotionLayout",
"primarySpeakerName" : "Michael Scamell",
"roomIds" : {
"-L_Asu4o4fNYDxpW4OO9" : true
},
"roomNames" : {
"Virginia Wimberly Theatre • Stage 1" : true
},
"speakerIds" : {
"-L_EdhXeQCP48FT0hHx_" : true
},
"speakerNameToOrg" : {
"Michael Scamell" : "Sky, UK"
},
"speakerNameToPhotoUrl" : {
"Michael Scamell" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F3f7bf0fd-235b-4667-acf5-c9a7035e780c.png?alt=media&token=eac9bfbb-1320-4e10-966a-9c3c19a09cd5"
},
"speakerNames" : {
"Michael Scamell" : true
},
"startTime" : "2019-04-08T19:00:00.000Z",
"trackId" : "-L_AqwvtqFNqKTExZVX5",
"trackName" : "Core",
"trackSortOrder" : 0,
"updatedAt" : 1553287241929,
"updatedBy" : "1zcpmayPXFYMNccuClK1pPSa6WE2"
},
"-L_B43Pdd6b26V2460G7" : {
"description" : "<p>Crowd sourcing a team of professionals from around the globe for a conference is not an easy task. Get a first-hand account from two first-time volunteers about how just a little time in each week was enough to bring the Droidcon Boston 2019 app to life. Learn what Android patterns we used to build the app this year, how we balanced global weekly meetings and touchpoints through Slack channels, and most importantly what it was like to get involved in the Android development community. Contributing to the community isn't as scary as it seems!</p>",
"duration" : "PT30M",
"endTime" : "2019-04-09T18:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Community-driven, Community-built: The Droidcon Boston app story",
"primarySpeakerName" : "Chris Corrado",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-LaQOAH52GgJb7ZUdQBI" : true,
"-LaQOOuVVrMI7kK2b4Yf" : true
},
"speakerNameToOrg" : {
"Adam McNeilly" : "OkCupid",
"Chris Corrado" : "Johnson & Johnson"
},
"speakerNameToPhotoUrl" : {
"Adam McNeilly" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F314f5485-d7c0-42b1-9b37-99eaa44eaef6.png?alt=media&token=2b75f177-4ed7-4592-a70b-0123f17555ee",
"Chris Corrado" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2Fb93df174-786f-4718-8a06-db2089116559.png?alt=media&token=3d2cc4b1-3de5-493b-b42d-f60a722269ac"
},
"speakerNames" : {
"Adam McNeilly" : true,
"Chris Corrado" : true
},
"startTime" : "2019-04-09T17:30:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553207997335,
"updatedBy" : "w1eDnYH6jOa53ITDRhMiLPh63482"
},
"-L_B48m3Ificxo7ltgFF" : {
"description" : "<p>Machine Learning is everywhere it seems, and its usefulness is growing daily. In this session, you'll get a deep dive into Machine Learning, and a tour of the options available to you to add on-device machine learning to your mobile app. Whether you want ready-to-use APIs for common use cases like detecting faces or labeling images or you have experience developing your own custom models, ML Kit can help. We’ll cover the basics of implementing machine learning into your app, so you can build a more powerful user experience. </p>",
"duration" : "PT1H",
"endTime" : "2019-04-09T21:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "On-device machine learning for Android developers",
"primarySpeakerName" : "Erik Haddad",
"roomIds" : {
"-L_B0fLq57414d4GSnw7" : true
},
"roomNames" : {
"Carol Deane Theatre" : true
},
"speakerIds" : {
"-L_Vh4DqsF9IU-S8nafb" : true
},
"speakerNameToOrg" : {
"Erik Haddad" : "Google"
},
"speakerNameToPhotoUrl" : {
"Erik Haddad" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F6db6e2fd-1843-4770-a17a-2e82860894fd.png?alt=media&token=7f0db68a-04ed-49ce-b216-631f2db65887"
},
"speakerNames" : {
"Erik Haddad" : true
},
"startTime" : "2019-04-09T20:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",
"trackSortOrder" : 1,
"updatedAt" : 1553964910769,
"updatedBy" : "CX9Tzux5SEVhp7BwzmVoO1ss8QF2"
},
"-L_B4DoizLa7Th8saFvE" : {
"description" : "<p>Breaking away from the traditional steps of a <a href=\"http://www.gv.com/sprint\" target=\"_blank\">design sprint</a>, we blur them together to further reduce the development cycle in what we call “Building @ speed of thought\". Over the years my group has been perfecting how to build world-class Android Apps at the speed of thought first for hackathons, then products and now for design sprints.</p>\n<p>In this session, we will detail the “Speed of Thought” methodology, steps, tools and components involved. We start by utilizing a design sprint to explore the power of mobile and how it fits into the market/problem we are trying to solve. Then focusing on the crucial step in a design sprint, we build high fidelity prototypes in rapid succession utilizing the JetPack Android software components (UI, Behavior, Foundation, Architecture) to take full advantage of the Android platform. We do this by leveraging the design features of Android Studio (material components/theme editor, constraint library, motion editor) along with open source/industry resources to build an intuitive and beautiful UI.</p>\n<p>Once the UI framework is done, we write the Kotlin application logic utilizing the Android Architecture Components with data binding connected to Firebase for the synchronized backend. With our application finished we execute our strategy for marketing, distribution, and monetization guided by Data-Driven Ethnography (DDE). At the end of the session, the audience will have a good idea of how in rapid secession all these tools and components come together to produce magic.</p>",
"duration" : "PT1H",
"endTime" : "2019-04-08T20:00:00.000Z",
"isGeneralEvent" : false,
"isPublished" : true,
"name" : "Building @ speed of thought",
"primarySpeakerName" : "Siamak (Ash) Ashrafi",
"roomIds" : {
"-L_Asyn3fF9jq7PN_TmJ" : true
},
"roomNames" : {
"Nancy and Edward Roberts Studio Theatre • Stage 2" : true
},
"speakerIds" : {
"-L_FdOqy0HORovQdX_4H" : true
},
"speakerNameToOrg" : {
"Siamak (Ash) Ashrafi" : "ZoeWave"
},
"speakerNameToPhotoUrl" : {
"Siamak (Ash) Ashrafi" : "https://firebasestorage.googleapis.com/v0/b/slidesup-8b9d6.appspot.com/o/confs%2Fdetail%2Fdroidcon-boston-2019%2Fspeakers%2F156bc2df-cfbe-4065-93ce-174af6be93fa.png?alt=media&token=22213ea0-8956-4d83-8826-77bc9f1f1eb2"
},
"speakerNames" : {
"Siamak (Ash) Ashrafi" : true
},
"startTime" : "2019-04-08T19:00:00.000Z",
"trackId" : "-L_AqtujmZtdApYMCEPJ",
"trackName" : "Rainbow",