-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathaccepted.xml
4244 lines (3584 loc) · 235 KB
/
accepted.xml
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
<schedule created='2014-05-07T20:36:43.408341'>
<day date='2014-07-22'>
<entry id='257'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Web</topic></topics>
<start>1000</start>
<duration>30</duration>
<room id='room0'>C01</room>
<title>The inner guts of Bitbucket</title>
<description>This talk is about Bitbucket's architecture. Leaving no stone unturned, I'll be covering the entire infrastructure. Every component, from web servers to message brokers and load balancing to managing hundreds of terabytes of data.
Since its inception in 2008, Bitbucket has grown from a standard, modest Django app into a large, complex stack that while still based around Django, has expanded into many more components.
Today Bitbucket is more than 30 times bigger than at the time of acquisition almost 4 years ago and serves Git and Mercurial repos to over a million users and growing faster now than ever before.
Our current architecture and infrastructure was shaped by rapid growth and has resulted in a large, mostly horizontally scalable system. What has not changed is that it's still nearly all Python based and could serve as inspiration or validation for other community members responsible for rapidly scaling their apps.
This talk will layout the entire architecture and motivate our technology choices. From our Gunicorn to Celery and HA-Proxy to NFS.
</description>
<speakers>
<speaker id='802'>
<name>Erik van Zijst</name>
<profile>Erik has been a passionate software professional for 15 years, who considers software to be a craft, not science.
Launching his career in his native Amsterdam in 1999, he served as architect for a financial market data startup from its inception until acquisition. He then co-founded a not so successful Palo-Alto based online real-time video streaming startup. In a deliberate move back to more hands-on coding, Erik joined Atlassian in 2008 and relocated to Sydney, Australia. After having worked on various product teams, he joined the newly formed team to run Bitbucket after its acquisition since 2010.
Currently based out of San Francisco Erik continues to work on Bitbucket.
</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='4'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Best Practices</topic></topics>
<start>1000</start>
<duration>30</duration>
<room id='room1'>B05/B06</room>
<title>Growing Open Source Seeds</title>
<description>In addition to the abstract above, here's the full slide deck:
https://speakerdeck.com/kennethreitz/growing-open-source-seeds
This talk is also based on a blog post, which should give you a great idea of what the talk is about:
http://kennethreitz.org/growing-open-source-seeds/</description>
<speakers>
<speaker id='178'>
<name>Kenneth Reitz</name>
<profile>Software Engineer, Photographer, and Artist. Author of Python Requests. </profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='13'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>System Administration</topic></topics>
<start>1000</start>
<duration>30</duration>
<room id='room2'>B07/B08</room>
<title>For lack of a better name(server): DNS Explained</title>
<description>Following instructions of what entries to create where is easy enough when using a PaaS.
But DNS is hard – deployment issues always seem to come down to DNS.
A solid understanding of DNS will not only help with deploying your applications, but will also give a greater understanding of how the internet works, and more generally, distributed systems.
In this talk, you will learn what DNS is, how it works and how to communicate with it, and how Python can make both interacting and spinning up your own DNS server simple (I swear!).
Outline:
* Intro (1-2m)
* What DNS is (5 min)
* URL -> IP addr, e.g. "phonebook" lookup (obligatory pun: Call me, Maybe?)
* hierarchical system & resolution sequence (local DNS cache/resolver, ISP resolver, recursive DNS search)
* popular types (primary, secondary/slave, forwarding, authoritative only, etc)
* System components: what makes a DNS?
* How to communicate with DNS (3 min)
* Protocol: UDP
* Operations: CRUD
* Resource records (A, AAAA, CNAME, SOA, SRV, etc)
* tools: dig/nsupdate/nslookup
* Security overview (3min) (disclaimer: NOT a DNS security expert, not planning to get into the details here)
* Server-Server, DynDNS: TSIG/GSS-TSIG
* Server-Client: DNSSEC
* Python + DNS (10 min)
* plain UDP query in Python (no 3rd-party libraries/no magic)
* Interacting with a DNS w/ Python (dnspython.py)
* Sample DNS server with Twisted
* "fake" demo (either local or pre-recorded screen cast) of querying/updating/etc of the Twisted DNS
* Wrap up - resources page, github links, etc (1min)
* Q&A - ~5 min </description>
<speakers>
<speaker id='211'>
<name>Lynn Root</name>
<profile>Spotify Partner Engineer, PyLadies SF founder, Python Software Foundation board member, caffeine & bacon addict.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='16'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Web</topic></topics>
<start>1000</start>
<duration>30</duration>
<room id='room3'>B09</room>
<title>Making programs that understand programs with AST</title>
<description>The idea of the talk is to promote the use of modules like AST which has a huge potential, allowing developers to automatize tasks, create tools that can improve the performance of a developer, both in quality and speed.
Make programs using AST, presents a great oportunity to delegate some repetitives tasks or checks to a code that can make that for us, and let the developer focus in more important things without wasting time, or also, use tools like AST to bring to the developer different representations of the code and work with different visual abstractions, etc.
The talk itself provides several examples of this, coded specially for this talk.</description>
<speakers>
<speaker id='207'>
<name>Diego Sarmentero</name>
<profile>Diego is passionate about Free Software, and he spent most of his spare time coding personal free software projects like: NINJA-IDE, Tabu, TvStalker, and several others. Using Python and C++ for most of them, and using frameworks as Qt and Django. Diego was named Qt Ambassador in 2011 and he is currently working at Canonical.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='20'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Web</topic></topics>
<start>1000</start>
<duration>30</duration>
<room id='room4'>A08</room>
<title>The ideal REST API for the AngularJS applications</title>
<description>## Motivation
I became interested in AngularJS framework about a year ago, as a part of my graduate studies at Georgia Tech. I have been following this amazing technology development ever since.
With a recent trend of Single Page Apps (SPAs) becoming more and more sophisticated and more widely accepted, it is necessary to revisit our REST API design and implementation strategies.
While REST style has been around for quite some time, it is still considered informal and only vaguely understood, which is probably because not many of us developers have actually spent time reading Fielding's dissertation (including me, until some time ago).
Recently I have finished designing backend specifications for relatively complex AngularJS application (it deals with event management, and is scheduled for beta later on this year).
In this talk, I want to share my insights on designing and implementing non-trivial REST API to fully utilize AngularJS stack.
## Format
The talk will not be a REST 101, as I will concentrate on specific *practical* problems that arise when implementing backend API.
During the talk, I will walkthrough the audience through the process of building simple AngularJS app, with all necessary REST backend implemented on top of the Flask framework.
Each topic, that we will discuss, will be presented as a three section block:
- a) Problem Postulation
- b) Proposed Implementation
- c) Pitfalls, Gotchas and Tips.
**Note:** Flask is used as illustration, therefore techniques I present are almost framework-agnostic, as the micro-framework imposes quite a few requirements on a developer. My aim is to make sure that examples are easily adaptable to your framework of choice.
## Topic Covered
Here is a rough outline of topics/themes that I will cover (it is what I am working on now, list can probably be expanded, but only slightly):
- CRUD (emphasis on integration with Form processing facilities of AngularJS)
- Designing URLs (Interconnecting with AngularJS navigation)
- Content Negotiation (language, representation format)
- Security (both Authentication and Authorization)
- Caching
- API Testing (including load testing)
- API Extension and Versioning
- Beyond CRUD: Collections + Querying
## Target Audience
I expect people be familiar with Python (obviously). Additionally, I expect people to have basic knowledge of the REST architecture style (to get most out of the talk)
No prior familiarity with AngularJS is expected (I will provide some quick overview of the framework w/i talk).
Anyone interested in exploring what AngularJS framework has to offer, should benefit from this talk.
## Extra notes
I can present the talk as 180min. tutorial or as a long talk. The former will have more hands-on approach in it.
It will be same when it comes to topics covered, but we will have more time to actually practice creating sample AngularJS application and necessary backend API in real-time.
Additionally, if it is better to present the topic as tutorial, we will cover some best practices of AngularJS application creation too e.g. using conventional toolset (yeoman, grunt, bower etc).</description>
<speakers>
<speaker id='40'>
<name>Victor Farazdagi</name>
<profile>- Graduate student at Georgia Tech
- ACM Professional Member</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='277'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic></topic></topics>
<start>1400</start>
<duration>30</duration>
<room id='room0'>C01</room>
<title>Tweaking libraries as a step towards secure programming</title>
<description>During the talk we will describe techniques and architectural approaches to better control and monitor the security of a Python application handling traffic from any kind of data sources and how to restructure the code to better handle the unexpected.
During the talk we will focus on how python libraries are working in LINUX systems.
For interactions between python and the OS we will focus on libraries:
- os
- sys
- multiprocessing
For interactions between python and the network we will focus on libraries:
- socket
- ftplib
- httplib / urllib / pycurl
For data handling we will cover how to improve security of operations like:
- input/output sanitisation (files, strings, arguments)
- writing to files or file descriptors
- implicit and explicit object control using both "whitelist" and "blacklist" logics
- exception handling by using meta-classes and decorators
For each library we will proceed as follows:
- Review of library internal logic and data flow
- Analysis of possible weaknesses in library code or logic
- Introduction of a modified library logic able to cope with unexpected data
- Description of modified functions to allow security checks and data validation
- Examples of real problems and possible improvements to mitigate them
We will explore how to make code able to react to improper imports, misuse of variables, insecure calls to functions by briefly covering some ways of using metaclasses, descriptors and decorators, method wrappers, traceback inspection and builtins.
Then we will explore the use of metaclasses and class decorators to intercept reads/writes and internal operations, implement automatic type checking over object attributes and how to use iterators and generators to respond to maliciously formatted strings or data streams.
</description>
<speakers>
<speaker id='829'>
<name></name>
<profile></profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='25'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Web</topic></topics>
<start>1400</start>
<duration>30</duration>
<room id='room1'>B05/B06</room>
<title>Lessons learned from building Elasticsearch client</title>
<description>Last year we decided to create official clients for the most popular languages, Python included.
Some of the goals were:
* support the complete API of elasticsearch including all parameters
* provide a 1-to-1 mapping to the rest API to avoid having opinions and provide a familiar interface to our users consistent across languages and evironments
* degrade gracefully when the es cluster is changing (nodes dropping out or being added)
* flexibility - allow users to customize and extend the clients easily to suit their, potentially unique, environment
In this talk I would like to take you through the process of designing said client, the challenges we faced and the solutions we picked. Amongst other things I will touch on the difference between languages (and their respective communities), the architecture of the client itself, mapping out the API and making sure it stays up to date and integrating with existing tools.
</description>
<speakers>
<speaker id='151'>
<name>Honza Král</name>
<profile>Python engineer for Elasticsearch</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='28'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Science</topic></topics>
<start>1400</start>
<duration>30</duration>
<room id='room2'>B07/B08</room>
<title>Non Sequitur: An exploration of Python's random module</title>
<description># Audience
Non mathematical people who wants a better understanding of Python's random module.
# Objectives
The audience will understand pseudorandom number generators, the properties of Python's Mersenne Twister and the differences and possible use cases between the distributions provided by the `random` module.
# The talk
I will start by talking about what randomness means and then about how we try to achieve it in computing through pseudorandom number generators (5 min.)
I will give a brief overview of pseudorandom number generation techniques, show how their quality can be assessed and finally talk about Python's Mersenne Twister and why it is a fairly good choice. (10 min.)
Finally I will talk about how from randomness we can build generators with interesting probability distributions. I'll compare through visualizations thos provided in Python's `random` module and show examples of when they can be useful in real-life. (10 min.)</description>
<speakers>
<speaker id='58'>
<name>Javier Jair Trejo García</name>
<profile>Web project developer, manager and consultant. I have been developing software professionally for the past four years, mostly on the web, but my interest in programming is a life-long affair</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='29'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Web</topic></topics>
<start>1400</start>
<duration>30</duration>
<room id='room3'>B09</room>
<title>Statistics 101 for System Administrators</title>
<description>#Statistics 101 for System Administrators
## Agenda
* A latency issue
* Data distribution
* 30 seconds correlation with pearsonr
* Combinating data
* Plotting and the power of color
## An use case
- Network latency issues
- Correlate latency with other events
## First statistics
- we created our parsing library
- [using various recipes](http://chimera.labs.oreilly.com/books/1230000000393/ch06.html)
- Having the data in a dict like
> table = {
> 'time': [ 1,2,3, ..],
> 'elapsed': [ 0.12, 12.43, ..],
> 'error': [ 2, 0, ..],
> 'size': [123,3223, ..],
> 'peers': [2313, 2303, ..],
- It's easy to get max, min and standard deviation
> print [k, max(v), min(v), stats.mean(v) ] for k,v in table.items() ]
## Distribution
- A distribution shows event frequency
> from matplotlib import pyplot
> pyplot.hist(table['elapsed'])
- Time and Size distributions
## (Linear) Correlation
- What's correlation
- What's not correlation
- pearsonr and probability
- catch for linear correlation
> from scipy.stats.stats import pearsonr
> a, b = range(0,10), range(0,20, 2)
> c = [randint(0,10) for x in a]
> pearsonr(a, b), pearsonr(a,c)
> (1.0, 0.0), (0.43, 0.2)
## Combinations
- using itertools.combinations
- netfishing correlation
>from itertools import combination
>for f1, f2 in combinations(table, 2):
> r, p_value = pearsonr(table[f1], table[f2])
> print("the correlation between %s and %s is: %s" % (f1, f2, r))
> print("the probability of a given distribution (see manual) is: %s" % p_value)
## Plot always
- pearsonr finds *only* linear correlation
- our eyes work better :P
- so...plot always!
- color is the 3d dimension of a plot!
> from pyplot import scatter, title, xlabel, ylabel, legend
> from pyplot import savefig, close as closefig
>
> for f1, f2 in combinations(table, 2):
> scatter(table[f1], table[2], label="%s_%s" % (f1,f2))
> # add legend and other labels
> r, p = pearsonr(table[f1], table[f2])
> title("Correlation: %s v %s, %s" % (f1, f2, r))
> xlabel(f1), ylabel(f2)
> legend(loc='upper left') # show the legend in a suitable corner
> savefig(f1 + "_" + f2 + ".png")
> closefig()
## Wrap Up!
- do not use pearsonr to *exclude* relation between events
- plots may serve better
- scatter plot can show a system thruput and exclude correlation between fields A and fields B
- continue collecting results
</description>
<speakers>
<speaker id='247'>
<name>Roberto Polli</name>
<profile>Roberto works at Babel, migrating big mail infrastructures to open solutions. Develops in Python, C and Java to foster communities around various FLOSS, trying to bring both social and IT innovation.
He's a Red Hat Certified Engineer and Virtualization Administrator, but loves maintaining free software, including the caldav java library: caldav4j.
A life ago he took a Math degree, and he's really proud of it.
</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='32'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Best Practices</topic></topics>
<start>1400</start>
<duration>30</duration>
<room id='room4'>A08</room>
<title>Eve - REST APIs for Humans™</title>
<description>Nowadays everyone has data stored somewhere and needs to expose it through a Web API, possibly a RESTful one. [Eve](http://python-eve.org) is the BSD-licensed, Flask-powered RESTful application and framework that allows to effortlessly build and deploy highly customizable, fully freatured RESTful Web Services. Eve features a robust, feature rich, REST-centered API implementation. MongoDB support comes out of the box and community-driven efforts to deliver ElasticSearch and SQLAlchemy data layers are ongoing. Eve approach is such that you only need to configure your API settings and behaviour, plug in your datasource, and you’re good to go. Features such as Pagination, Sorting, Conditional Requests, Concurrency Control, Validation, HATEOAS, JSON and XML rendering, Projections, Customisable Endpoints, Rate Limiting are all included. Advanced features such as custom Authentication and Authorisation, Custom Validation, Embedded Resource Serialisation are also easily available. In my talk I will introduce the project and its community, recount why and how it's being developed, show the source code, illustrate key concepts and show the road ahead.</description>
<speakers>
<speaker id='122'>
<name>Nicola Iarocci</name>
<profile>Nicola is a passionate Python and C# developer based in Ravenna, Italy. He is the co-founder of C2K where leads the development of Amica 10, an accounting software solution for italian small business. He is creator and maintainer of a few open source projects, a MongoDB Master, and an occasional Speaker.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='35'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Python Core</topic></topics>
<start>1430</start>
<duration>30</duration>
<room id='room0'>C01</room>
<title>VPython goes to School</title>
<description>My presentation is focused mainly on my teaching experience in a high school using VPython. I've posed some problems to my students to solve with VPython: from basic static building representations like castle to more complex dynamic models like bouncing balls.
This approach seems a good way to get in touch with computer programming concepts and to link computer science with other disciplines like Math, Geometry, Physics, Chemistry</description>
<speakers>
<speaker id='258'>
<name>Maurizio Boscaini</name>
<profile>I love programming and I love learn and teach computer science. I'm teacher in a high school, adjunct professor at the University of Verona and I teach Scratch and Robotics in the primary and secondary school.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='292'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Best Practices</topic></topics>
<start>1430</start>
<duration>30</duration>
<room id='room1'>B05/B06</room>
<title>Marconi - OpenStack Queuing and Notification Service</title>
<description>Similar to other message bus frameworks, Marconi's main goals are: performance, availability, durability, fault-tolerance and scalability.
Besides providing support for queuing and notification services through OpenStack, Marconi aims to ease the design of distributed systems and allow for asynchronous work distribution without creating yet another message broker.
This talk aims to give the audience a broad look at Marconi’s architecture, design, technologies used, development process, and discuss the issues it adresses.</description>
<speakers>
<speaker id='836'>
<name>Yeela Kaplan</name>
<profile>Software engineer at the cloud storage team in Red Hat.
Contributing to the oVirt and OpenStack projects.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='294'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic></topic></topics>
<start>1430</start>
<duration>30</duration>
<room id='room2'>B07/B08</room>
<title>Teaching Python</title>
<description>Python has been used in educational programmes ever since. With a bandwidth that large, navigating the landscape of Python tutorials is hard indeed.
This talk will look at successful Python teaching material. From the numerous iterations our material has gone through, we draw conclusions on what's crucial in teaching Python. It will introduce how the OpenTechSchool is teaching Python and what measures it found most effective in spreading programming in general and Python in particular. Among these are rapid feedback, supervised learning, localization, and knowing your target audience.
The author is a member of the OpenTechSchool, a free community initiative which offers Python workshop on a number of topics. Some of the workshops have been running for more than two years now. He has written the first versions of "Python for beginners," a workshop which has been used in many cities to teach Python to programming novices.</description>
<speakers>
<speaker id='372'>
<name>Robert Lehmann</name>
<profile>Python hacker, terminal enthusiast, culturally curious, hobbyist runner, IT Systems Engineering student.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='43'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Testing</topic></topics>
<start>1430</start>
<duration>30</duration>
<room id='room3'>B09</room>
<title>Design Your Tests</title>
<description>* Life span of a test
* 5 minute - why does this fail?
* 5 day - what is this missing?
* 5 week - do I have coverage for this?
* 5 month - what's *not* causing this bug?
* Transparent simplicity
* one or two "iceberg" layers for meaning
* Higher-order assertions - build collections of state that have meaning for the domain in the tests
* bulk of the details are in the code itself
* show an example
* grouping for organization
* Mixins
* show an example
* unittest issues
* assertion/mixin clutter
* setUp/tearDown tie grouping to the class layer or to inheritance via super
* addCleanup
* weak association / lookup-ability between code and its tests
* package layout
* other conventions
* Alternative approaches
* testtools' matchers
* py.test `assert` magic</description>
<speakers>
<speaker id='203'>
<name>Julian Berman</name>
<profile>Hey. I'm the Lead Developer of the media platform at Magnetic, a frequent contributor and visitor of the NYC Python Meetup group and a testing lover.
I can also be found most hours of the day as tos9 on Freenode in more channels than I can count, including #python.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='44'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Web</topic></topics>
<start>1430</start>
<duration>30</duration>
<room id='room4'>A08</room>
<title>Morepath: a Python Web Framework with Super Powers</title>
<description>[Morepath](http://morepath.readthedocs.org) is a new server web
framework written with modern, rich client web development in mind.
In the talk I will be discussing some core features of Morepath that
make it different:
* Its different take on routing and linking. Morepath has support
to help you construct hyperlinks to models.
* Its view system: plain views, generic views, view composition.
* Morepath's approach to application construction allows application extension and overriding, and composition.
This talk will attempt to convince people to try Morepath. For those
unable or unwilling to try, I will communicate some design principles
behind Morepath which can be of help to any web developer.</description>
<speakers>
<speaker id='281'>
<name>Martijn Faassen</name>
<profile>Martijn Faassen has been a Python developer since 1998. He's been involved in Zope, Grok, helped start EuroPython and was the original creator of lxml.
More recently he's been hacking on Morepath, a Python web framework with super powers.
</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='48'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Other</topic></topics>
<start>1500</start>
<duration>30</duration>
<room id='room0'>C01</room>
<title>Jython in practice</title>
<description> A lot of people have heard of Jython, some have tried it, but it seems few have actually deployed it in a corporate environment. In this talk I'll share my experiences in using Jython as a testbed for Java applications, for rapid prototyping in Java desktop and web environments, and for embedding scripting capabilities in Java products.
Not everyone gets paid to work with Python all the time, but if you find yourself in a Java project, there are good chances you could benefit from Python without throwing out the Java stack. Using Jython, you can do rapid prototyping without the long edit-compile-test cycles normally associated with large Java projects, whether on the web or the desktop, and when testing an application might become a nightmare of scaffolding in Java, a little Jython may be just what you need to be able to run your tests smoothly.
At the end of this talk, I will put on my politician´s hat and bring up the best - and worst - arguments to use to get permission to use Jython in a corporate environment. </description>
<speakers>
<speaker id='296'>
<name>Fredrik Håård</name>
<profile>Freelance software developer and contractor, occasional speaker or teacher.
</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='51'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Best Practices</topic></topics>
<start>1500</start>
<duration>30</duration>
<room id='room1'>B05/B06</room>
<title>Open Source isn't for everyone, but it could be</title>
<description>Much of my work over the past year has been talking about how we can increase diversity and inclusion in all of our spaces. This talk will focus on how we, as OSS contributors, can create a better experience for everyone wanting to contribute to our projects, including making more plainly visible how and what to contribute and encouraging the use of codes of conduct.
# Structure of the talk:
* the state of open source right now
* statistics about the lack of diversity
* why the low representation?
* time
* pay inequality
* few compensated for OSS
* poor treatment
* what can i do to make OSS open to more kinds of contributors?
* make it obvious
* make it easy
* vulnerability
* patience
* helpful
* safety
* compensate
* volunteer
* resources</description>
<speakers>
<speaker id='303'>
<name>Ashe Dryden</name>
<profile>At the intersection of tech and culture, ending programmer apocrypha.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='55'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Testing</topic></topics>
<start>1500</start>
<duration>30</duration>
<room id='room2'>B07/B08</room>
<title>Python in system testing</title>
<description>When you think about Python+testing, you usually think about testing your code - unittests, mostly. But it is not the only case! When you have a big system, you need to test it on much higher level - if only to check if all the components are wired in the right way. You may do it manually, but it is tedious and time-consuming - so you want to automate it. And here comes Python - the language of choice in many QA departments.
I will tell about differences between unittesting and system testing which result in totally different requirements on test management/running systems. I will tell how we use Python (and a little why) to automate our work. Finally, I will tell a little about my "idee fixe" - a framework for system testing written in Python.</description>
<speakers>
<speaker id='311'>
<name>Katarzyna Jachim</name>
<profile>Quality Engineer by choice. Python fanboy, coding style freak.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='62'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Best Practices</topic></topics>
<start>1500</start>
<duration>30</duration>
<room id='room3'>B09</room>
<title>Multiplatform binary packaging and distribution of your client apps</title>
<description>This talk aims to propose an easy way of packaging python applications that meet to requirements: It’s stand-alone (no need to install python in the client) and code is obfuscated.
Python obfuscation is a recurrent topic in forums and discussion lists. However, answers are, most of the time, on the line of discouraging doing so; either because it violates some ethics principle or because it is said to be hard or non cost-effective.
Proposed solution is a fully automated process that goes through following buildbot pipeline:
- Native python extensions are built with Cython for every platform we’re distributing for, using clang, MS Visual and gcc as compilers.
- These extensions along with external dependencies are packaged with PyInstaller. Dependencies are automatically gathered from requirements.txt files and spec file is created on the fly to include resources such as image or text files.
- Platform specific installers are built to distribute the app using pkgbuild and productbuild for MacOS, dpkg-deb for Ubuntu and Raspbian and InnoSetup for Windows.
- Installers are uploaded by Buildbot to Amazon S3 to a version specific folder.
I will also give a little introduction to used tools such as Cython, Buildbot and Pyinstaller, discuss problems encountered and how they were solved and talk about performance impact.
</description>
<speakers>
<speaker id='34'>
<name>Julia S.Simon</name>
<profile>Senior Software engineer at biicode.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='67'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Science</topic></topics>
<start>1500</start>
<duration>30</duration>
<room id='room4'>A08</room>
<title>Learning Chess from data</title>
<description>Can empirical samples unveil the big picture?
Is chess games descriptions expose good enough data to gain understanding of chess rules - legal piece moves, castling, check versus checkmate, etc.
Which features are important in describing a chess game and which features are not. What is a good representation of a chess game for this uses.
What is the minimal sample size which is required in order to learn this in a good enough manner and where this learning can go wrong.
**Ne3 => E=mc2**
Looking at the bigger picture - Can we understand big systems based on empirical samples.
Can we reverse engineer physics and discover how physical system work based on no external knowledge beside empirical samples.</description>
<speakers>
<speaker id='299'>
<name>Niv Mizarhi</name>
<profile>Team Leader @Taykey
holds a B.Sc in Physics from TAU
My mother is a robot & Code is my first language</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='299'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Other</topic></topics>
<start>1100</start>
<duration>45</duration>
<room id='room0'>C01</room>
<title>Green Celery and the Async Sweet Spot</title>
<description>Celery is a distributed task orchestration framework for Python, with an amazing set of features and supported backends.
Gevent is a non-blocking I/O library for Python which seems to magically turn your synchronous programs asynchronous, with the help of the greenlet library under the hood.
Did you know you can easily combine the two, with inbuilt support for a Gevent event loop in Celery itself, you too can achieve distributed async tasks across thousands of nodes and not get lost in a see of callbacks.
Follow me as I show you all the considerations, drawbacks, and tips for Celery+greenlet+Gevent bliss, from working with I/O vs CPU blocking tasks, to managing resource starvation and queue contention, and going beyond the Celery API to take advantage of the Gevent API.</description>
<speakers>
<speaker id='322'>
<name>Wes Mason</name>
<profile>Wes is a polyglot developer with over 15 years of experience programming large scale networked applications.
Currently works as an engineer for Canonical, releases lots of open source goodness via the Internets, and lives in Yorkshire, England with wife and mischievous 3 year old son.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='7'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Testing</topic></topics>
<start>1100</start>
<duration>45</duration>
<room id='room1'>B05/B06</room>
<title>Don't fear our new robot overlords!</title>
<description>GoldenEye is our solution for mobile front end tests. Testing on mobile devices can be quite devastating: On iOS you can write front test in JavaScript in Instruments but it is quite impossible to connect Instruments to you CI solution of choice. On Android the situation isn't much better.
Other front end test frameworks can work with mobile devices (or simulators) but they lack the ability to see. Of course you can check if a color is set correctly, if a frame has the right x and y coordinates but in a world of different screen sizes writing these tests can be quite challenging as well.
In the end you will always need to look on your screen again and again trying to spot any issues.
GoldenEye takes a different approach. It does not need to run on your development computer, you don't need a Mac for running tests on iOS devices and you can have real touches on your controls. This is archived by using openCV and it's python bindings, Pythons's unittest module and the Tapsterbot, an OpenSource delta robot made with 3D printing and an Arduino controller. To write a test you just take some screenshots on your device, cut out the icons you need to tap or inspect and write a very simple unit test using a high-level API that takes away the hard parts.
WARNING: This talk features a real robot. In case of machine world-domination: RUN!</description>
<speakers>
<speaker id='164'>
<name>Philip Brechler</name>
<profile>iOS developer with a hear for python by chance.
Creator of OwnTube, a video CMS based on Django.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='8'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Best Practices</topic></topics>
<start>1100</start>
<duration>45</duration>
<room id='room2'>B07/B08</room>
<title>The Sorry State of SSL</title>
<description>The rule of thumb for people without degrees in cryptography on securing data on the Internet is “GPG for data at rest. TLS for data in motion”. And it’s actually a very good rule everyone should follow.
The only kicker though is that configuring (and using!) TLS properly is not as simple as it sounds and if you’re not diligent as a user, developer, and ops engineer, you can easily compromise your data’s security despite best effort of everyone else.
This talk will be multifaceted; you will learn:
- how SSL and TLS roughly work and why their state is sorry,
- server- and client-side duties for best possible security,
- what alternatives you have for using TLS in Python,
- things to keep in mind when configuring servers,
- and what perils outside your control still can trip you up.
In other words, the leitmotif is to show you the most common traps you should know about when using and deploying applications relying on TLS for transport layer security and how to avoid them. </description>
<speakers>
<speaker id='182'>
<name>Hynek Schlawack</name>
<profile></profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='17'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Other</topic></topics>
<start>1100</start>
<duration>45</duration>
<room id='room3'>B09</room>
<title>How Pony ORM translates Python generators to SQL queries</title>
<description>[Pony ORM](http://ponyorm.com) is an object-relational mapper implemented in Python. It allows writing advanced queries to a database using plain Python in the form of a generator expression. This way queries look very concise.
The main feature of Pony is to provide a method to write declarative queries to databases in pure Python using generators. For this purpose Pony analyzes the abstract syntax tree of a generator and translates it to its SQL equivalent.
Following is a sample of a query in Pony:
select(p for p in Product if "iPad" in p.name and p.price >= 500)
This query translates to SQL using a specific database dialect. Currently Pony works with SQLite, MySQL, PostgreSQL and Oracle databases.
In this talk one of Pony ORM authors will go through the process of the query translation and dig into the implementation details.
Attendees are going to walk away with the understanding of:
1. Principles of building a programming language translator
2. Python to SQL translator implementation details
3. Approaches for creating a pluggable translator architecture
The presentation outline:
- Why Python generators are good for representing SQL queries
- Main stages of Python to SQL translation overview
- Decompiling Python bytecode into Python AST
- Translating Python AST to database-independent SQL representation
- Generating SQL for specific database
- Pluggable translator architecture
- Performance concerns: is such way of building SQL slower or faster then Django's and SQLAlchemy's?</description>
<speakers>
<speaker id='228'>
<name>Alexey Malashkevich</name>
<profile>Co-author of Pony Object-Relational Mapper
Alexey has more than 15 years of practical experience in building enterprise-class software in various roles.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='18'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Gaming</topic></topics>
<start>1100</start>
<duration>45</duration>
<room id='room4'>A08</room>
<title>Brain Waves for Hackers</title>
<description>This talk will present how to use the "Neurosky Mindwave" headset with python software, and lay out the basic scientific and technical background.
The Mindwave Mobile is a device that can be easily talked to using bluetooth, and it talks a binary protocol which is specifically designed to be useful without much computing power in the receiving device or advanced knowledge of signal processing. In fact, an Arduino with a few lines of code is perfectly capable of parsing some of the byte stream and reacting to the mental state of the user, while fully-featured python software can do advanced analysis using PyEEG and Pandas.
The same hardware module and protocol is used in the Nekomimi headset (mind-controlled cat ears for cosplay) and some Boardgames (MindFlex).
A python library for interfacing with the headset is presented and will be demonstrated on stage. Mostly kivy applications will be used.
Also I will present some data analysis you can perform with pandas and scipy.
Neurofeedback is a type of mental exercise where a computer uses the EEG data to direct the user towards certain mental states. In the easiest configuration a program would display a bar with the "concentration" level, and the user would learn how to tilt this bar upwards. In more complicated setups a game could react favorably towards states like relaxation or concentration. Using Gamification, Neurofeedback can provide a more engaging experience for children or adults, than other techniques with similar goals, like mindfulness meditation, and the more immediate feedback should enhance the effectiveness of mental training, though that has not been investigated scientifically yet.
Neurofeedback has been shown to be effective (albeit not recommended as sole treatment) in Patients with Attention Deficit Hyperactivity Disorder (ADHD), Epilepsy and Dementia. Some background about these conditions and applications of Neurofeedback to them will be given. The first use of Neurofeedback was done in Cats, during early experiments with EEG electrodes in the 60ies. Cats where conditioned to exhibit certain wave patterns, and later, due to a coincidence, the researchers noticed that the conditioned cats where more resistant to epilepsy-inducing medications. The effect has since been reproduced in humans, in cases where medications did not work sufficiently.
Ample hints on not to treat any of this information as medical advice will be provided.
The goal of this talk is to promote Neurofeedback as a useful mental training and to encourage development of applications around Neurofeedback and the analysis of EEG data, from the perspective of a python hacker.
I gave a similar talk at PyConDe 2013 in Cologne. The new talk will be in English, show some improvements on the software, and more advanced demonstrations.</description>
<speakers>
<speaker id='224'>
<name>Andreas Klostermann</name>
<profile>I'm a freelance programmer, mostly web application development and student of veterinary medicine.
My main "computing" interests are in data analysis, genomics, bayesian statistics and web development.
My main "medical" interest are small animal medicine and "all animal" genetics.
As a self-help junkie I took an interest to mindfulness based meditation and general mental training. I also developed a guide to memory techniques and mnemonics for use in practical situations.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='23'>
<category>Talk</category>
<audience>Advanced</audience>
<topics><topic>Science</topic></topics>
<start>1145</start>
<duration>45</duration>
<room id='room0'>C01</room>
<title>The Cython Compiler for Python</title>
<description>The Cython compiler is the most widely used static compiler for Python. The code it generates is used in countless critical applications that process huge amounts of data world wide. Cython has two major use cases: to compile Python code into fast native extension modules, and to connect native code to the CPython runtime. The main goal of the Cython project is to make it easy for users to manually optimise their Python code to make it run at C speed. This talk by one of the core developers will give an intro to using the compiler and an overview of its major features.
Outline will be more or less as follows:
* Cython: intro to the project and the compiler (4 min.)
* compiling Python code
- how to do it and what you get (3 min.)
- a tiny bit of distutils (2 min.)
* static typing and Cython extensions to the Python language
- static typing in Cython language syntax (3 min.)
- static typing in pure Python syntax (2 min.)
- why Cython's type system is cool and what users need to know about it (8 min.)
- Cython for optimising Python code (5 min.)
* quick intro: talking to native C/C++ code in Cython
- using external C APIs (4 min.)
- using external C++ APIs (3 min.)
- how to build and link in distutils (2 min.)
- notes on ways to wrap large C-APIs (1 min.)
* quick overview: special features for high-performance code
- NumPy integration and memory views, fused types, parallel loops in all brevity (3 min.)
</description>
<speakers>
<speaker id='239'>
<name>Stefan Behnel</name>
<profile>Stefan is an active member of the German speaking Python community and a major core developer of the widely used Open Source Python tools lxml and Cython. He works for the European ebook flatrate service Skoobe, and as a freelance Python trainer and consultant.
</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='31'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Other</topic></topics>
<start>1145</start>
<duration>45</duration>
<room id='room1'>B05/B06</room>
<title>Systems Integration: The OpenStack success story</title>
<description>Abstract
=======
OpenStack is a huge, open-source cloud provider. One of the main tenets of OpenStack is the (Shared Nothing Architecture) to which all modules stick very closely. In order to do that, services within OpenStack have adopted different strategies to integrate themselves and share data without sacrificing performance nor moving away from SNA.
This strategies are not applicable just to OpenStack but to any distributed system. Sharing data, regardless what that data is, is a must-have requirement of any successful cloud service.
This talk will present some of the existing integration strategies that are applicable to cloud infrastructures and enterprise services. The talk will be based on the strategies that have helped OpenStack to be successful and most importantly, scalable.
Details
======
Along the lines of what I've described in the abstract, the presentation will walk the audience through the state of the art of existing system integration solutions, the ones that have been adopted by OpenStack and the benefits of those solutions. At the end of the talk, a set of solutions under development, ideas and improvements to the existing ones will be presented.
The presentation is oriented to distributed services, fault-tolerance and replica determinism. It's based on a software completely written in python and running successfully on several production environments.
The presentation will be split in 3 main topics:
Distributed System integration
-----------------------------------
* What's it ?
* Why is it essential for cloud infrastructures?
* Existing methods and strategies
OpenStack success story
----------------------------
* Which methods did OpenStack adopt?
* How / Why do they work?
* What else could be done?
Coming Next
---------------
* Some issues of existing solutions
* What are we doing to improve that?
* Other solutions coming up</description>
<speakers>
<speaker id='53'>
<name>Flavio Percoco</name>
<profile>Flavio spends most of his time hacking on storage and messaging modules. He has both Italian and Venezuelan roots, and is currently based in Italy where he works remotely for Red Hat. Flavio is also an actively open-source contributor and part of Mongodb Masters group.
Prior to Red Hat, Flavio worked on Big Data oriented applications, search engines and message systems. He was also an active member of Gnome's a11y team where he contributed to Orca and created MouseTrap, a head-tracker application. Outside Red Hat Flavio likes to take pictures, swim, travel, hang around with family and friends and whatever seems interesting.</profile>
<image>https://media.ep14.org/site_media/</image>
</speaker>
</speakers>
</entry>
<entry id='46'>
<category>Talk</category>
<audience>Novice</audience>
<topics><topic>Web</topic></topics>
<start>1145</start>
<duration>45</duration>
<room id='room2'>B07/B08</room>
<title>Web Scraping in Python 101</title>
<description>Who am I ?
=========
* a programmer
* a high school student
* a blogger
* Pythonista
* and tea lover
- Creator of freepythontips.wordpress.com
- I made soundcloud-dl.appspot.com
- I am a main contributor of youtube-dl.
- I teach programming at my school to my friends.
- It's my first programming related conference.
- The life of a python programmer in Pakistan
What this talk is about ?
==================
- What is Web Scraping and its usefulness
- Which libraries are available for the job
- Open Source vs proprietary alternatives
- Whaich library is best for which job
- When and when not to use Scrapy
What is Web Scraping ?
==================
Web scraping (web harvesting or web data extraction) is a
computer software technique of extracting information from
websites. - Wikipedia
###In simple words :
It is a method to extract data from a website that does not
have an API or we want to extract a LOT of data which we
can not do through an API due to rate limiting.
We can extract any data through web scraping which we can