-
Notifications
You must be signed in to change notification settings - Fork 1
/
schedule.html
691 lines (678 loc) · 46.1 KB
/
schedule.html
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
<!doctype html>
<html>
<head>
<title>Schedule - EmpireJS - New York City, September 20-21, 2018</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="EmpireJS is a 2 day conference is bringing the best of the Node and JavaScript worlds to NYC on September 20-21, 2018." />
<link rel="stylesheet" type="text/css" href="empire2018.css">
<meta property="og:type" content="website" />
<meta property="og:url" content="http://www.empirejs.org/" />
<meta property="og:title" content="EmpireJS - New York City, September 20-21, 2018" />
<meta property="og:description" content="EmpireJS is a 2 day conference is bringing the best of the Node and JavaScript worlds to NYC on September 20-21, 2018." />
<meta property="og:site_name" content="EmpireJS 2018" />
<meta property="og:image" content="http://2018.empirejs.org/og-image.png" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@empirejs" />
<meta name="twitter:creator" content="@empirejs">
<meta name="twitter:title" content="EmpireJS - New York City, September 20-21, 2018" />
<meta name="twitter:description" content="EmpireJS is a 2 day conference is bringing the best of the Node and JavaScript worlds to NYC on September 20-21, 2018." />
<meta name="twitter:url" content="http://www.empirejs.org/" />
<link rel="apple-touch-icon" sizes="152x152" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="manifest" href="site.webmanifest">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#2d89ef">
<meta name="theme-color" content="#ffffff">
</head>
<body>
<div class="wrapper legal-pad-background">
<div class="scribbles">
<img class="scribble" alt="" src="scribbles/black-streak.svg">
<img class="scribble" alt="" src="scribbles/blue-scribble.svg">
<img class="scribble" alt="" src="scribbles/blue-squashed-scribble.svg">
<img class="scribble" alt="" src="scribbles/blue-thin-scribble.svg">
<img class="scribble" alt="" src="scribbles/pink-big-scribble.svg">
<img class="scribble" alt="" src="scribbles/pink-small-scribble.svg">
<img class="scribble" alt="" src="scribbles/smudge-black-dot.svg">
<img class="scribble" alt="" src="scribbles/yellow-big-scribble.svg">
<img class="scribble" alt="" src="scribbles/yellow-little-scribble-blob.svg">
<img class="scribble" alt="" src="scribbles/yellow-small-scribble.svg">
<img class="scribble" alt="" src="scribbles/black-streak.svg">
<img class="scribble" alt="" src="scribbles/blue-scribble.svg">
<img class="scribble" alt="" src="scribbles/blue-squashed-scribble.svg">
<img class="scribble" alt="" src="scribbles/blue-thin-scribble.svg">
<img class="scribble" alt="" src="scribbles/pink-big-scribble.svg">
<img class="scribble" alt="" src="scribbles/pink-small-scribble.svg">
<img class="scribble" alt="" src="scribbles/smudge-black-dot.svg">
<img class="scribble" alt="" src="scribbles/yellow-big-scribble.svg">
<img class="scribble" alt="" src="scribbles/yellow-little-scribble-blob.svg">
<img class="scribble" alt="" src="scribbles/yellow-small-scribble.svg">
</div>
<div class="content">
<div class="scribble-playpen">
<nav>
<ul>
<li class="u-uppercase"><a href="/#about">About</a></li>
<li class="u-uppercase"><a href="/#speakers">Speakers</a></li>
<li class="u-uppercase"><a href="#">Schedule</a></li>
<li class="u-uppercase"><a href="glossary.html">Glossary</a></li>
<li class="u-uppercase"><a href="/#coc">Code of Conduct</a></li>
</ul>
</nav>
<header>
<h1><span>Empire</span><span>JS</span></h1>
<p class="u-uppercase date">September 20+21</p>
</header>
</div>
<section class="text-section">
<div>9:15am - 5:45pm both days, with registration and breakfast starting at 8:00am. Party the evening of the
21st.</div>
</section>
<section id="schedule" class="text-section">
<div class="schedule-day">
<h2>Thursday, September 20</h2>
<div class="schedule-time">8:00am - 9:15am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Registration Opens + Breakfast</h3>
<h4 class="h-header h-trimmed">
<p><a href="https://goo.gl/maps/9ayyBRRFeQo">Kaye Playhouse at Hunter College</a> (68th St. between Park
and Lexington)</p>
</h4>
</div>
<div class="schedule-time">9:15am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Welcome to EmpireJS</h3>
</div>
<div class="schedule-time">9:30am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Holger_Bartel.jpg" alt="Holger Bartel" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">The Untold Benefits of Ethical Design</h3>
<h4 class="h-header schedule-speaker__name">Holger Bartel</h4>
<div class="schedule-session__body">
<p>Ethics need to be at the core of everything we build. We have to consider our impact and rethink
how to build digital products. This way we will not only build more responsible products, but gain
additional benefits in the areas of performance, security, privacy and user happiness. This talk
will show how to truly care about users & improve the user experience at the same time. Most
importantly, this talk will be technical inspiration, question the status quo and help us build for
a better web.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">10:00am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Jessica_Jordan.jpg" alt="Jessica Jordan" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">JavaScript Diversity</h3>
<h4 class="h-header schedule-speaker__name">Jessica Jordan</h4>
<div class="schedule-session__body">
<p>The JavaScript ecosystem describes the diverse sum of communities, tools, frameworks and libraries
which take part in modern web development.</p>
<p>In this talk, we want to take a look at the current state of the different JavaScript sub
ecosystems surrounding common JavaScript libraries and frameworks and how they developed over time.</p>
<p>We’ll see how “convergent” and “divergent” evolution of these tools have shaped the JavaScript
community and are affecting the way in which we build software for the web today.</p>
<p>Finally, we’ll see how a rich and diverse JavaScript ecosystem not only benefits the performance
of the applications we are building and provides us with the best tools for our job, but also how
it enhances our productivity and happiness as developers by consistent knowledge transfer.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">10:30am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Ryan_Waskiewicz.jpg" alt="Ryan Waskiewicz" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">12 Factor Frontend Apps through Dockerization</h3>
<h4 class="h-header schedule-speaker__name">Ryan Waskiewicz</h4>
<div class="schedule-session__body">
<p>How we write frontend JavaScript applications has changed dramatically in the last 10 years. In
that time, the concept of the ‘12 Factor App’ for building web applications has been introduced as
a methodology for building portable and scalable applications. This talk will explore some of the
12 factors, and how to use containerization in order to adhere to the tenets of configuration
storage, singular codebases, and repeatable builds across all deployment environments.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">11:00am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Coffee/Snack Break</h3>
</div>
<div class="schedule-time">11:15am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Joe_Kent.jpg" alt="Joe Kent" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">404 Fire Alarm Not Found</h3>
<h4 class="h-header schedule-speaker__name">Joe Kent</h4>
<div class="schedule-session__body">
<p>When are you actually supposed to pull the emergency brake on the NYC subway? In this talk, we'll
break down why many interfaces for modern-day emergency systems are poorly designed and how simple
changes to the user experience can make them much more useful in an emergency.</p>
<p>Engineers, keep your note taking app handy! You'll learn some simple Do's & Don'ts for building
interfaces that you'll be able to take home and apply to the products you're working on.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">11:45am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Jenn_Creighton.jpg" alt="Jenn Creighton" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">What Tamagotchis Can Teach You About ES6 Generators</h3>
<h4 class="h-header schedule-speaker__name">Jenn Creighton</h4>
<div class="schedule-session__body">
<p>What do Tamagotchis — everyone’s favorite digital pets from the 90s — and ES6 generators —
pausible functions for async tasks — have in common? Both are really fun to play with. As a recent
side project, I built a web-version of a Tamagotchi. But I struggled with one key element: how to
handle a series of animations. What do you do when animations need to know that other animations
are complete? What do you do when you’ve queued animations but a user event needs to be handle
instead? This talk explores where I went wrong (hint: promises) and what worked (hint: generators).
You’ll leave this talk with a solid grasp of how to combine promises, generators, and coroutines
for async work — whether it’s for a Tamagotchi or your day-to-day work.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">12:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<div>
<img src="speaker-photos/Nick_Kreeger.jpg" alt="Nick Kreeger" class="schedule-speaker__photo">
<img src="speaker-photos/Yannick_Assogba.jpg" alt="Yannick Assogba" class="schedule-speaker__photo">
</div>
<div>
<h3 class="h-header h-trimmed h-schedule-session">TensorFlow.js + Node</h3>
<h4 class="h-header schedule-speaker__name">Nick Kreeger & Yannick Assogba</h4>
<div class="schedule-session__body">
<p>TensorFlow.js is a library for training and deploying ML models in the browser and through
Node.js. i'd like to present about the current state of TensorFlow in Node and highlight some
examples with demos and other use cases. We have a variety of demos that run in the browser and
also purely under Node.js. Our library shipped in April of this year and we are actively driving ML
into the JS and Node communities. We think this would be a great venue to showcase ML.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">12:45pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">JS Family Photo</h3>
</div>
<div class="schedule-time">1:00pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Lunch</h3>
<p>Across the street from the venue at the Hunter Cafeteria</p>
</div>
<div class="schedule-time">2:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Eli_Schutze_Ramirez.jpg" alt="Eli Schütze Ramírez" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Internationalisation is a Piece of Cake</h3>
<h4 class="h-header schedule-speaker__name">Eli Schütze Ramírez</h4>
<div class="schedule-session__body">
<p>Although more than half of the world’s websites are in English, only about 25% of web users are
English speakers. With half of the world’s population connected and more coming online every
minute, internationalisation is as relevant as ever! Let’s explore how i18n gets made on the web
and what we should keep in mind or avoid when making the web more accessible to the world.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">2:45pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Sarah_Groff_Hennigh-Palermo.jpg" alt="Sarah Groff Hennigh-Palermo" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Be the Ally You Think You Are</h3>
<h4 class="h-header schedule-speaker__name">Sarah Groff Hennigh-Palermo</h4>
<div class="schedule-session__body">
<p>You care about getting more underrepresented folks into your company and community. You volunteer
at events. You support CoCs. You reach out to people you know and encourage them to apply at your
company, where you are nice to them every day. You support the no-asshole rule. You’re doing great,
right? Maybe not.</p>
<p>Let’s talk about why some “ally best practices” may not be as effective as you want them to be,
and explore, with anecdotes & research, actionable suggestions for being better allies to your
underrepresented colleagues.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">3:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Meara_Charnetzki.jpg" alt="Meara Charnetzki" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">How Does JavaScript Math?</h3>
<h4 class="h-header schedule-speaker__name">Meara Charnetzki</h4>
<div class="schedule-session__body">
<p>If you've spent much time writing (or debugging) JavaScript, you've probably come across some
quirky behavior, especially in the strange and wonderful ways Javascript handles math. To unravel
the mystery of JavaScript addition, we will go on an empirically-structured adventure through the
JavaScript web console, Mathmagic Land, and the ECMAScript Language Specification. With some help
from Donald Duck, you will emerge with new perspective on the methods behind the JavaScript
madness, and the inspiration and tools to explore new mysteries in JavaScript yourself!</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">3:45pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Coffee/Snack Break</h3>
</div>
<div class="schedule-time">4:00pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Ethan_Garofolo.jpg" alt="Ethan Garofolo" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Why You Had a Bad Time With Microservices</h3>
<h4 class="h-header schedule-speaker__name">Ethan Garofolo</h4>
<div class="schedule-session__body">
<p>We've all been there— working on a project that has grown large and difficult to work on. You're
afraid to make any changes in one part of the system for fear that it will break at least 6
unrelated other parts. It takes you months to bring new team members up to speed on your project.
You have deadlines coming up, but your system is so difficult to work on that you just have to
accept that working nights and weekends is now the new normal. And then you read about
microservices, the idea that you take parts of your big app and put them on a different server and
speak to them over HTTP. And then it's all rainbows and unicorns again, right?</p>
<p>Right?</p>
<p>This talk starts by taking a critical look at the microservices trend, asking and answering
important questions like: Does the term "microservice" actually mean anything? Does breaking an app
apart make it simpler to work on? What actually is a service? Is the size of a code base what makes
it a service or not? Do I need Kafka or RabbitMQ to have a service-based architecture?</p>
<p>It then proceeds with a path that actually *can* remove the coupling in your system, exploring
architectural ideas like event sourcing and command query responsibility separation (CQRS). This
talk is born out of real-world experience, and you'll leave with tools you can put into action
today regardless of the size of your team.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">4:30pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Sarbbottam_Bandyopadhyay.jpg" alt="Sarbbottam Bandyopadhyay" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Love Thy Keyboard</h3>
<h4 class="h-header schedule-speaker__name">Sarbbottam Bandyopadhyay</h4>
<div class="schedule-session__body">
<p>Keyboard accessibility is extremely critical, as many assistive devices emulate the keyboard.
Using semantic HTML one can achieve accessible UI with less code than non-semantic markup. Along
with Semantic HTML, by managing and guiding focus, developing an accessible UI is not difficult,
rather easy. Semantic HTML plays an important role in Accessibility as well as SEO. Though we are
aware of it, it's often overlooked. This presentation will share the trade-offs of using semantic
vs non-semantic markup with an everyday example and how to manage and guide focus. It's a brief
presentation emphasizing the various aspect of keyboard accessibility. Last but not the least a
brief introduction to WAI-ARIA.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">5:00pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Lena_Reinhard.jpg" alt="Lena Reinhard" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Do You Read Me? — Better Communication for Stronger
Teams</h3>
<h4 class="h-header schedule-speaker__name">Lena Reinhard</h4>
<div class="schedule-session__body">
<p>Have you ever had troubles understanding a comment in a code review? Made a joke, and it fell flat
with half of your teammates? Tried to write a document, and run into issues with wording it
clearly? Struggled to get a clear response from a teammate who’s three floors down, or on the other
side of the planet? Run into a fundamental misunderstanding?</p>
<p>Communication is the foundation of how we all work together. Every day, we go through pull
requests, pairing sessions, meetings, calls, chats, emails, and conversations by the water cooler,
in person or online. We navigate various communication channels and modes, and try to communicate
well with people with different roles, experience levels, cultural and professional backgrounds,
and time zones. The way we communicate has enormous impact on each of us individually, for teams
and organisations. But communicating well is incredibly hard—for all of us.</p>
<p>The great news is that communication is something all of us can always get better at, so let’s
learn together, and from each other. Based on learnings from work with different engineering teams,
this talk aims to inspire you to be more deliberate in how you communicate, and find better ways to
hear others, and be heard. Leave this talk knowing the golden rules of emoji use, why every team
should have communication guidelines, and what steps you can take to communicate more inclusively,
empathically, and effectively with your teammates—and about the great effects it can have on you
and your team.</p>
</div>
</div>
</div>
</div>
</div>
<div class="schedule-day">
<h2>Friday, September 21</h2>
<div class="schedule-time">8:00am - 9:15am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Breakfast</h3>
<h4 class="h-header h-trimmed">
<p><a href="https://goo.gl/maps/9ayyBRRFeQo">Kaye Playhouse at Hunter College</a> (68th St. between Park
and Lexington)</p>
</h4>
</div>
<div class="schedule-time">9:15am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Welcome back!</h3>
</div>
<div class="schedule-time">9:30am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Kelly_Sutton.jpg" alt="Kelly Sutton" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">An Oral History of Modern Web Development</h3>
<h4 class="h-header schedule-speaker__name">Kelly Sutton</h4>
<div class="schedule-session__body">
<p>"And you may find yourself, living in a shotgun shack... And you may ask yourself, well how did I
get here?"</p>
<p>Many of the technologies we use today in modern web development seem perplexing to outsiders.
Webpack, Parcel, Grunt, Gulp, Babel, Uglifier... It's hard to keep track of what's in and what's
out.</p>
<p>How did we get here? Although we may all feel like "Things were better in the days where we were
just writing HTML with sprinklings of JavaScript," there's a reason why we put up with some of the
complexity in modern web development. Although we have many tools and things are constantly
changing, these tools exist for a reason and serve a valuable purpose.</p>
<p>This talk provides an oral history of modern web development and its inciting incidents, like the
introduce of XMLHttpRequest or the concatenation of JavaScript files into a single bundle.</p>
<p>Listeners of this talk should come away with an understanding of why we have some of the tools we
do in modern web development, and where we might be headed.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">10:00am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/K_Adam_White.jpg" alt="K. Adam White" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">WordPress is JavaScript</h3>
<h4 class="h-header schedule-speaker__name">K. Adam White</h4>
<div class="schedule-session__body">
<p>How do you tell the world's largest open source community that they have to change? Three years
ago WordPress co-founder Matt Mullenweg exhorted WordPress developers to "learn JavaScript deeply".
This announcement kicked off a massive project to re-imagine the editor of the most widespread CMS
in the world as an accessible, modern single-page JavaScript application; and in the midst of this
change, the WordPress community has confronted deep fear, uncertainty and doubt as over half a
million PHP developers began to question whether their skills were now irrelevant.</p>
<p>This talk is the story of how we've managed the stress and change of rewriting and recreating a
fifteen year old piece of software with new languages, tools and frameworks, without leaving our
community behind in the process.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">10:30am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Aaron_Petcoff.jpg" alt="Aaron 'Ay-ay-ron' Petcoff" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Try, Raise, Exception</h3>
<h4 class="h-header schedule-speaker__name">Aaron Petcoff</h4>
<div class="schedule-session__body">
<p>Unions may appear out of place in the modern offices of most tech companies, but technology,
society, and labor are tightly bound. Together, we’ll explore the history of the American labor
movement (the good and the bad) and consider what that history might teach us about technology, our
work, and how we impact the world.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">11:00am</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Coffee/Snack Break</h3>
</div>
<div class="schedule-time">11:15am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Mani_Nilchiani.jpg" alt="Mani Nilchiani" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">WebAssembly for Performant Interactivity</h3>
<h4 class="h-header schedule-speaker__name">Mani Nilchiani</h4>
<div class="schedule-session__body">
<p>Following Diffy.js, an open-source browser-based motion detection library I released last year,
I'm now working on porting the code to Rust and targeting WebAssembly to create high performance
motion detection functionality using the browser's `getUserMedia` API. I will discuss the technical
challenges, limitation, opportunities and nuances as well as artistic practice using code,
interaction design and appropriating the browser as an expressive medium/platform.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">11:45am</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Sam_Richard.jpg" alt="Sam Richard" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Slides About Slides</h3>
<h4 class="h-header schedule-speaker__name">Sam Richard</h4>
<div class="schedule-session__body">
<p>Accessibility! Progressive Web Apps! Cutting-Edge JS and CSS! Progressive Enhancement! What do
these all have in common? A SLIDE DECK! Let’s layer them like a cake and learn to build a
presentation framework, all while seeing how we can make our every-day work better for all!</p>
<p>This talk will use a custom JavaScript presentation framework, the one used to build the slides
the attendees are seeing, as a case study and analogy for modern JavaScript apps. We’ll look at
some of the challenges facing modern web development and see some practical examples and solutions
for solving them. In this talk, we’ll cover:</p>
<ul>
<li>Accessibility and semantic, richly marked up HTML, especially with keyboards and screen readers
in mind</li>
<li>Progressive enhancement, including a modern take on the “cutting the mustard” technique</li>
<li>Performance and UX improvements with Intersection Observers, Prefetching, and Preloading</li>
<li>Dealing with state, even if you’re starting from HTML and not a JSON object</li>
<li>Making it all work offline with Service Workers</li>
<li>How they all build on and inform each other</li>
</ul>
<p>You’ll also learn a bit about the thought process used to come up with the solutions presented,
which you can take back and apply to your projects today!</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">12:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Andrey_Sitnik.jpg" alt="Andrey Sitnik" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">CRDT and other new ideas for client-server
communication</h3>
<h4 class="h-header schedule-speaker__name">Andrey Sitnik</h4>
<div class="schedule-session__body">
<p>Many application stops to work with a slow or unstable connection. Loaders block our UX on every
small step. Most of the application doesn’t have offline support and live updates.</p>
<p>We are not ready for next billion users with slow Internet. But also we are not ready for the
unstable Internet in metro or low-signal LTE.</p>
<p>Andrey Sitnik, the creator of PostCSS and Autoprefixer, will speak about new ideas in
client-server communications. How the mix of ideas behind CRDT, distributed computing, and
Elm/Redux could change the UX in most of applications.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">12:45pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Lunch</h3>
<p>Across the street from the venue at the Hunter Cafeteria</p>
</div>
<div class="schedule-time">2:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Kassandra_Perch.jpg" alt="Kassandra Perch" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">The Wide World of Serverless</h3>
<h4 class="h-header schedule-speaker__name">Kassandra Perch</h4>
<div class="schedule-session__body">
<p>Wait, wait, wait. We *just* spent 10 years convincing folks that JS belongs on servers, and now
you're saying "get rid of servers"?</p>
<p>Not exactly! Serverless definitely still has servers, but it's a new style of cloud architecture
that allows you to deploy your Node.JS code faster and with much less infrastructure and overhead!</p>
<p>In this talk, we'll go over what serverless is (and is not), why/when you would want to use this
new architecture, and we'll build a small sample application on stage!</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">2:45pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Nitya_Narasimhan.jpg" alt="Nitya Narasimhan" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">The Pharos Of PWA: Deconstructing a Lighthouse Audit</h3>
<h4 class="h-header schedule-speaker__name">Nitya Narasimhan</h4>
<div class="schedule-session__body">
<p>Legend has it that the lighthouse at Pharos helped ships avoid rocks that would wreck them,
instead guiding them safely to port. Today, Project Lighthouse serves that purpose for modern
progressive web apps by not only shedding a light on potential rocks that wreck app performance --
but also providing audit guidance that allows developers to navigate their way towards the safe
harbor of PWA compliance.</p>
<p>We've all heard of Lighthouse audit scores. Chances are we've run the audit report, then blindly
followed the guidance to get ourselves to that perfect 100. But have you ever wondered how it
works? And why the issues revealed by the audit are important? And what the guidance provided
actually achieves?</p>
<p>Come join me as we set sail into the Project Lighthouse documentation. We'll learn how to run a
Lighthouse audit on a selected website, and use some of the guidance to changes that improve our
audit scores. The bulk of the talk will then drill down into the features that Lighthouse evaluates
for Performance, PWA compliance, Accessibility, SEO & more. At the end of the talk, we'll walk away
with a better sense of the metrics, goals & best practices involved in crafting modern performant &
progressive web apps.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">3:15pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Nishat_Anjum.jpg" alt="Nishat Anjum" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Diasporas, Data, D3.js, Oh My!</h3>
<h4 class="h-header schedule-speaker__name">Nishat Anjum</h4>
<div class="schedule-session__body">
<p>Data visualization can be a powerful tool for education and empathy. In this talk, I’ll go over
how using D3.js to track Bengali immigration post independence helped not only resolve cultural
identity but also revealed how immigration data for an emerging country is maintained and the
negative effects that it can have on women and children.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">3:45pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Coffee/Snack Break</h3>
</div>
<div class="schedule-time">4:00pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Tracy_Lum.jpg" alt="Tracy Lum" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Living with Legacy JavaScript: Event Proxies, App
Seams, and Chunking Rewrites</h3>
<h4 class="h-header schedule-speaker__name">Tracy Lum</h4>
<div class="schedule-session__body">
<p>When your monolithic codebase has existed for more than two years and its front-end library
composition is an amalgam of Backbone, jQuery, React, and Redux, the desire to toss it all and
start from scratch can be tempting. And although that is sometimes the right call, there are many
ways to refactor your app and migrate chunks of it over to a unified framework while continuously
shipping new features.</p>
<p>At the Flatiron School, we have faced the problem of a Frankenstein’s monster-esque front-end
firsthand. The bulk of our front-end app for Learn.co was redesigned in 2015 and resides in
Backbone/Marionette, but a few months later, we decided that all future features would be written
in React. For years, the overlap between domains has been small enough that new features could be
spun up in React, and the systems could coexist in relative harmony and isolation. However, as both
our business and our engineering team have grown, new requirements with ambitious deadlines as well
as features like the Learn in-browser IDE have compelled us to rewrite much of the core app’s
functionality and reconcile the differences between the libraries and frameworks. Throughout our
feature development process, we look for seams where we can rewrite legacy code in React and assess
that cost, but when the deadlines take precedence, we build bridges of communication between our
systems to buy us time to pay down the technical debt. In this talk, I’ll outline how we look for
seams in our app for rewrites. I’ll also walk through concrete examples of new feature requirements
and how we built proxies to facilitate communication between Backbone Radio and Redux. Finally,
I’ll discuss an example of when a rewrite of one app proved more problematic than anticipated.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">4:30pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<div>
<img src="speaker-photos/Mari_Miyachi.jpg" alt="Mari Miyachi" class="schedule-speaker__photo">
<img src="speaker-photos/Sam_Keller.jpg" alt="Sam Keller" class="schedule-speaker__photo">
</div>
<div>
<h3 class="h-header h-trimmed h-schedule-session">Make Your Own ORM - A Guide to When and How</h3>
<h4 class="h-header schedule-speaker__name">Mari Miyachi & Sam Keller</h4>
<div class="schedule-session__body">
<p>During our work on Medicare implementing the largest change in the program's history, I've seen
how requirements can shift drastically as features evolve. While this can be painful for an
engineering team, architecture decisions like choosing an ORM can be used as a tool, rather than a
crutch. We'll explain the reasons our team decided to write our own ORM and how this choice allowed
us to support adaptation to feedback, ultimately better serving end-users.</p>
<p>This talk will describe real-life examples of how an ORM choice can empower engineers to better
adapt to shifting requirements and recommendations for writing your own mini ORM.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">5:00pm</div>
<div class="nav nav--stacked schedule-slot">
<div class="schedule-session">
<img src="speaker-photos/Sher_Minn_Chong.jpg" alt="Sher Minn Chong" class="schedule-speaker__photo">
<div>
<h3 class="h-header h-trimmed h-schedule-session">Recreating Retro Art with JS!</h3>
<h4 class="h-header schedule-speaker__name">Sher Minn Chong</h4>
<div class="schedule-session__body">
<p>Before personal computing became a thing, there was a handful of programmers and artists saw
computers as a tool beyond their intended purpose: to create art.</p>
<p>In this talk, we will explore the early history of computer art, from ghostly oscilloscope paints
to pre-ASCII text art. We’ll discuss how simple techniques with limited technology back then could
yield compelling pieces. We'll see how the history of computer displays and printers have evolved
in the 1950s to 1980s.</p>
<p>While quite a bit of retro art survives today, most of them do not come preserved with their
algorithms. In this talk, I'll also demo some attempts to recreate retro art pieces using p5.js, a
JavaScript graphics library as well as talk through some of the techniques of creating generative
computer art.</p>
</div>
</div>
</div>
</div>
<div class="schedule-time">6:30pm</div>
<div class="schedule-announcement">
<h3 class="h-header h-trimmed">Closing party</h3>
<h4 class="h-header h-trimmed"><a href="https://goo.gl/maps/CQeSbE9pg422">VR World NYC, 4 E. 34th St.</a></h4>
<p>Don't forget your conference badge. It's your ticket to get in!</p>
</div>
</div>
</section>
<section id="coc" class="text-section">
<h2>
<img class="scribble--coc" alt="" src="scribbles/blue-scribble.svg">
<span>Code of Conduct</span>
</h2>
<h3>The Quick Version</h3>
<p>EmpireJS is dedicated to providing a safe and comfortable environment for all our participants. We will not
tolerate any inappropriate behavior, remarks, images, or online posts. We will not tolerate harassment in any
form. Sexual language and imagery is not appropriate for any conference venue, including talks, workshops,
parties, and other online media. Conference participants violating these rules may be sanctioned or expelled
from the conference without a refund at the discretion of the conference organizers.</p>
<p>All organizers, attendees, speakers, sponsors, and volunteers at EmpireJS are required to agree with the
following Code of Conduct. Organizers will enforce this code throughout any activity and in all
communications involving EmpireJS. We expect cooperation from all participants to ensure a safe environment
for everybody.<p>
<p>See our <a href="https://github.com/EmpireJS/Code-of-Conduct">project repo</a> for all of the details on
our CoC, i.e. the Less Quick Version, and <a href="https://github.com/EmpireJS/Code-of-Conduct/blob/master/COC_REPORTING.md">reporting
guidelines</a>.</p>
<p>If at any point you need help or to report a Code of Conduct violation we have multiple ways to contact
us: Find an organizer in person, text (267) 606-0603, send a DM to <a href="http://twitter.com/empirejs">@empirejs</a>
on Twitter, and/or email <a href="mailto:[email protected]">[email protected]</a> (however this email account
may not be checked frequently during the event).</p>
</section>
</div>
</div>
<script async src="empire-bundle.js"></script>
</body>
</html>