Webdev/Meetings/2014/July 1

From MozillaWiki
< Webdev‎ | Meetings‎ | 2014
Jump to: navigation, search
Webdev Meeting
Date: July 1st, 2014
Time: 10:00 AM Pacific
How to Join
Vidyo:
Teleconferencing: Room 9 798
IRC: #webdev on irc.mozilla.org
Notes
Etherpad: https://etherpad.mozilla.org/webdev-2014-07-01
Note-taker: Osmose

Webdev Extravaganzas are open to the public and serve as a gathering point for anyone in the Mozilla community who is interested in web development and what Mozilla has been doing in it.

The meeting will be streamed and recorded on Air Mozilla: https://air.mozilla.org/webdev-extravaganza-july-2014/

Shipping Celebration

What did we ship this month? Alternatively, what didn't we ship to spare the world the horror?

  • (bensternthal) MobilePartners Release: Salesforce moar integration, Fancy Legal Agreements, No More Labs Hardware
  • (willkg) Input: automated human translations for all incoming Firefox OS feedback
  • (willkg) Input: make-your-own-dashboard: http://bl.ocks.org/willkg/c4d5a272f86ae4510750

Open-Source Citizenship

Any updates with our libraries or with libraries we use? Anyone looking for help with a library they maintain?

  • (ErikRose) There's now an official #peep channel. It has occasional flurries of activity.
  • (ErikRose) Moved spiderflunky repo to the mozilla org, as it's starting to get attention.
  • (irc nick) Topic

New Hires / Interns / Volunteers

Anyone new that we want to induct into the secret order?

  • (irc nick of new person) Name / Role / Team
  • bramwelt, crash reporter
  • muricula, input
  • deanj, sumo
  • marcell, dxr
  • cweiss, web components

The Bikeshed / Roundtable

Anything else to talk about?

   from futures import ProcessPoolExecutor, as_completed
   
   from more_itertools import consume, chunked
   
   def run_jobs()
       ...
       with ProcessPoolExecutor() as pool:
           futures = [pool.submit(index_chunk, tree, tree_indexers, paths) for
                      paths in chunked(unignored, 50)]
           consume(show_progress(futures))
   
   def index_chunk(tree, tree_indexers, paths):
       """Do a bunch of computation, and throw the results in elasticsearch."""
   
   def show_progress(futures):
       """Show progress and yield results as futures complete."""
       num_jobs = len(futures)
       for num_done, future in enumerate(as_completed(futures), 1):
           print num_done, 'of', num_jobs, 'jobs done.'
           yield future
  • (ErikRose) Setuptools entry points are underdocumented but a really nice, easy, supported-everywhere way to do a plugin architecture, even an internal registry.
   # setup.py
   setup(
       ...
       entry_points={'dxr.plugins': ['urllink = dxr.plugins.urllink',
                                     'buglink = dxr.plugins.buglink']}
   )
   
   # elsewhere.py
   plugins = dict((point.name, point.load()) for point in
                  iter_entry_points('dxr.plugins'))
   
   # plugins is now {'urllink': <module dxr.plugins.urllink>,
   #                 'buglink': <module dxr.plugins.buglink>}