2016 Holiday Party with Raymond Hettinger and more

To round out another amazing year, SF Python will bring together Python enthusiasts from around the Bay Area for our 2nd Annual Holiday Party. Come join 300+ of us for an evening of tech talks, live music, engaging conversations over awesome food and drinks, and a chance to win a ticket to OSCON or Strata-Hadoop World Conference.

Main talk on Modern Python Dictionaries from Raymond Hettinger

Description:

Python's dictionaries are stunningly good. Over the years, many great ideas have combined together to produce the modern implementation in Python 3.6. This fun talk is given by Raymond Hettinger, the Python core developer responsible for the set implementation and who designed the compact-and-ordered dict implemented in CPython for Python 3.6 and in PyPy for Python 2.7. He will use pictures and little bits of pure python code to explain all of the key ideas and how they evolved over time. He will also include newer features such as key-sharing, compaction, and versioning. This talk is important because it is the only public discussion of the state of the art as of Python 3.6. Even experienced Python users are unlikely to know the most recent innovations.

Who and Why (Audience):

This talk is for all Python programmers. It is designed to be fully understandable for a beginner (it starts from first principles) but to have new information even for Python experts (how key-sharing works, how the compact-ordered patch works, how dict versioning works). At the end of this talk, you can confidently say that you know how modern Python dictionaries work and what it means for your code.

Outline:

Beginners will enjoy our starting from scratch with a plain linear search, progressing to chaining, and then open addressing with fill-ratio limits, size doubling, and dummy/tombstone entries. People who already know the basics about how hash tables work will enjoy seeing the "industrial grade" techniques that move beyond toy textbook examples to established practice. These include

1) collision avoidance by using a linear congruential random number generator perturbed by all the bits in the hash value,

2) high-speed match/mismatch checking using stored hash values, and

3) assuming that identity implies equality.

Those who were already experts in how Python's dictionaries used to work will enjoy seeing the latest innovations including key-sharing-dictionaries, compact-and-ordered dicts, and per-instance version numbering.

Detail:

Overview of the searching problem and its centrality to Python programming

Linear search with estimates of search time, space consumed, and simplicity

Refinement to separate chaining

Refinement to dynamic resizing

Refinement to open addressing (discuss fill-ratios and tombstones for deleted entries)

Refinement to use all hash bits and a linear congruential random probe generator

Refinement to assume that identity implies equality

Refinement to store hash values

Refinement to key-sharing between parallel dictionaries

Refinement to use an index table to compact and order dictionaries giving better space utilization, faster resizing, and faster table scans.

Refinement to version number individual dictionaries to save repeated lookups

Putting it all together: what this means for you -- analyze multiple use cases with code examples giving speed/space comparisons between newer and older Python dicts.

Time permitting, Raymond will also show:

why we needed a SipHash for strings

faster and better than random hashing for integers,

cache optimized linear probing techniques used in set objects

how dicts guard against mutation during iteration

a user trick for making dicts more sparse, giving faster lookup performance.

perfect hashing in Cython and PyPy.

Additional Speaker Bio:

Raymond Hettinger has also served as a director of the Python Software Foundation, and has mentored many people over the years on their contributions to the python-dev community. He is also well known for his contributions to the Python Cookbook, and shares many pieces of Python wisdom on Twitter. He is a frequent keynote speaker at Python Conferences around the world and has received the Distinguished Service Award at PyCon 2014 for his exceptional contributions to the python community.

A live band and DJ G-Vision to help us get in the mood for the holiday

We are so fortunate to have Nell Maynard & The Ampersands play for us this year. You may have seen them at Hotel Utah, Elbo Room, Bazzar Cafe... catch them before they play next at the Great American Music Hall!

DJ G-Vision is a member of SF Python and moon lights as a DJ. He has opened for big names such as 3LAU, Wynter Gordon, and the Cataracs. He has also headline many events in San Francisco to Santa Cruz and everywhere in between.

Tables for Gold and Diamond sponsors to interact with engineers and demo products

There will be no job announcements at the event unless the Diamond sponsors want to do so during their speaking slot during our opening remarks. However, companies are encouraged to post jobs to the event’s website, donate an item for raffle, or secure a table at the event to mingle with devs.

Raffle

Prizes include Oreilly Books and a ticket Conference ticket to OSCON or Strata Hadoop World

Food and Drinks

You won't be having pizza or burrito at this meetup! We hope you will enjoy what our caterer is preparing for us: Artisanal Cheeses, Veggie Crudités, Fresh Fruit, a selection of appetizers that includes Sliders and Satay. There will be options for vegetarian, vegan, and gluten-free people.

Ticketing Information

ACT fast! All price tiers are available in a limited quantity. Once the allotment of the given price tier is sold out, tickets will move to the next higher price tier until the event sells out.

If you'd like to donate more to SF Python, feel free to select the next higher price tier before the allotment is sold out.

There is a no-refund policy but feel free to transfer your ticket to someone else by clicking the "Change Details" button on your confirmation email provided by Tito.

Be a Sponsor:

From time to time, companies that want to contribute back to SF Python's community offer to host our events but few venues are large enough to accommodate 125+ attendees. Companies also like to announce job opportunities to our distribution list of 8500+. While our members are opened to learning about opportunities, most have explicitly expressed they do not want job announcements in their inbox.

Therefore, we have created sponsorship opportunities in hopes of satisfying everyone's interests. Our goal is to find sufficient sponsorship to offer video, yummy food and drinks at the Holiday Party and to pay ourselves for the continual efforts in producing SF Python events. If there is extra left over, we'd like to donate a % of the profit to a local charity chosen by the attendees.