From 0ca1d9cf77f8279c3bfb40066431a874873c07dd Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 15:17:41 -0700 Subject: [PATCH 01/29] Clear out Solo text --- README.md | 7 +++--- _config.yml | 8 ++++--- index.md | 63 +++++------------------------------------------------ 3 files changed, 14 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index f20049ea..e1a07fbb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -# Solo +# Website for python compilers workshop -[Solo](http://chibicode.github.io/solo) is a Jekyll theme that supports **single-page websites** only, but supports them well. Yes, it's responsive. - -### [Demo & Documentation →](http://chibicode.github.io/solo) +Built using Jekyll + GH pages + the +[Solo](https://chibicode.github.io/solo/) theme. \ No newline at end of file diff --git a/_config.yml b/_config.yml index 0954dadc..4645616a 100644 --- a/_config.yml +++ b/_config.yml @@ -1,7 +1,9 @@ # Site settings -title: Solo, a Jekyll Theme -tag_text: Solo -description: Solo is a Jekyll theme that supports single-page websites only, but supports them well. Yes, it’s responsive. +title: Python Compilers Workshop (July 11-12, 2016) +tag_text: Python Compilers Workshop (July 11-12, 2016) +description: > # this means to ignore newlines until "baseurl:" + A workshop for folks working on Python compilers. July 11-12, 2016, + co-located with SciPy 2016 in Austin, Texas. # Build settings markdown: kramdown diff --git a/index.md b/index.md index 7fb4ad71..6305472c 100644 --- a/index.md +++ b/index.md @@ -2,62 +2,11 @@ layout: default --- -[Solo](http://chibicode.github.io/solo) is a Jekyll theme that supports **single-page websites** only, but supports them well. Yes, it's responsive. + -
-Looking for a more standard Jekyll theme? Try out [Shiori](http://github.com/ellekasai/shiori) theme, which has Bootstrap integration. - -## Solo is useful if... - -* You want to create an "about me" page from a single markdown file and host it under a custom domain name. -* You want to create a single-page website that's mostly text, like [Know Your Company](https://knowyourcompany.com/). -* You want to share a single markdown file and tried GitHub Gist ([example](https://gist.github.com/dypsilon/5819504)), but would like something nicer-looking. -* You want something like GitHub's [automatic page generator](http://pages.github.com/) for a non-code repository. - -This page itself is built with Solo. It's generated from [this markdown file](https://github.com/chibicode/solo/blob/gh-pages/_includes/index.md). - -## Usage - -First, [install Jekyll](http://jekyllrb.com/docs/installation/). Then download Solo from its [GitHub Repository](https://github.com/chibicode/solo). Start Jekyll and you should see this page up and running. - -**The main file you'll be editing is `index.md`**. This becomes the content for the page. - -### Other Files - -* Edit `_config.yml` to change the site's title and description. -* Edit `_includes/head.html` to add custom code to ``. -* Edit `_includes/scripts.html` to add custom code before ``. -* Edit `CNAME` to host on a custom domain. -* Edit `README.md` before pushing your code. - -### Don't use `

` tags - -Wthin `index.md`, do not use `

` tags - `

` is reserved for the site title. - -### Supported Tags - -Solo supports lists, `
`s, ``s, - -> blockquotes, and... - -~~~html -
code blocks with syntax highlighting.
-~~~ - -### Keep Solo up to date - -Instead of downloading, you can [fork Solo](https://github.com/chibicode/solo/fork) and use the "upstream" strategy described on [this page](https://help.github.com/articles/fork-a-repo) to keep Solo up to date. - -## Author - -Shu Uesugi ([Twitter](http://twitter.com/chibicode)/[GitHub](http://github.com/chibicode)/[G+](https://plus.google.com/110325199858284431541?rel=author)). - -![Shu Uesugi](https://www.gravatar.com/avatar/b868d84bbe2ed30ec45c9253e1c1cefe.jpg?s=200) - -### License - -[MIT License](http://chibicode.mit-license.org/) - - +Test test \ No newline at end of file From e99555e871d2a775211202a4664baccc9031dc32 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 15:20:01 -0700 Subject: [PATCH 02/29] Our single page site doesn't need a big link to itself... --- _layouts/default.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_layouts/default.html b/_layouts/default.html index 6aeddb38..5f2fabef 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -11,7 +11,7 @@
-

{{ site.tag_text }}

+

{{ site.tag_text }}

{{ content }}
{% include scripts.html %} From 6736a4ed139ba3aaa6c4e545d7a0a1196e42ccb5 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 18:02:34 -0700 Subject: [PATCH 03/29] Add first-pass text --- README.md | 2 +- _config.yml | 1 - _layouts/default.html | 1 - index.md | 106 +++++++++++++++++++++++++++++++++++++++--- 4 files changed, 101 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e1a07fbb..831c65c3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # Website for python compilers workshop Built using Jekyll + GH pages + the -[Solo](https://chibicode.github.io/solo/) theme. \ No newline at end of file +[Solo](https://chibicode.github.io/solo/) theme (somewhat hacked). \ No newline at end of file diff --git a/_config.yml b/_config.yml index 4645616a..57a33606 100644 --- a/_config.yml +++ b/_config.yml @@ -1,6 +1,5 @@ # Site settings title: Python Compilers Workshop (July 11-12, 2016) -tag_text: Python Compilers Workshop (July 11-12, 2016) description: > # this means to ignore newlines until "baseurl:" A workshop for folks working on Python compilers. July 11-12, 2016, co-located with SciPy 2016 in Austin, Texas. diff --git a/_layouts/default.html b/_layouts/default.html index 5f2fabef..39a37cc8 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -11,7 +11,6 @@
-

{{ site.tag_text }}

{{ content }}
{% include scripts.html %} diff --git a/index.md b/index.md index 6305472c..eaad29fe 100644 --- a/index.md +++ b/index.md @@ -2,11 +2,105 @@ layout: default --- - +# Python Compilers Workshop +*What:* A workshop to bring together folks working on different +approaches to **native-code compilation for Python**, to share +experience, discuss future plans, and explore possible points of +collaboration. One particular question to discuss is whether and how +we can use JIT or AOT compilation techniques to accelerate C +extensions like `numpy` or `pandas` without having to rewrite +these extensions for every new compiler (as is the current +state-of-the-art). -Test test \ No newline at end of file +*When/where:* **July 11-12**, 2016 in **Austin, Texas**, co-located +with the [SciPy 2016](scipy2016.scipy.org) conference. (This is just +before the main conference, and overlaps with the SciPy tutorial +days.) + +*Venue:* TBD + +*Who:* Open to the public. However +[RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, +and so that I can update the confirmed attendees list below. + +*Organized by:* Nathaniel Smith + + +## Motivation + +There's an intense and growing interest in techniques for compiling +Python or near-Python languages; a partial list of projects includes +[Numba](http://numba.pydata.org/), +[Pyston](https://github.com/dropbox/pyston), [PyPy](http://pypy.org/), +[Cython](http://cython.org/), +[Pythran](https://github.com/serge-sans-paille/pythran), +[Pyjion](https://github.com/Microsoft/Pyjion), +[Nuitka](http://nuitka.net/), +[Numexpr](https://github.com/pydata/numexpr), +[HOPE](www.cosmology.ethz.ch/research/software-lab/HOPE.html), ... + +Given the wide variety of efforts here, now seems like a +good time to compare notes! + +In addition, the numerical/scientific community is particularly +interested in these tools as a way to speed up Python code that uses +libraries like `numpy` -- and accomplishing this will require solving +unique technical and organizational challenges. In principle it's not +too difficult to compile Python code that uses `numpy` -- your +compiler "just" has to be compatible enough with the CPython C API to +call `numpy` directly, and all of the above projects either meet this +bar, or are anticipated to meet it soon. (In particular, both Pyston +and PyPy have developers actively working on this.) But if you want +`numpy`-using code to run *faster* than it does with CPython -- which +after all is the whole point of having a compiler -- then your +compiler needs some way to "see inside" `numpy`'s internals in order +to apply optimizations like unboxing, inlining, and loop fusion. And +this is impossible when calling extensions using the CPython C API. + +Historically the main solution to this problem has been to start +rewriting parts of `numpy` directly inside the compiler infrastructure +-- projects that have gone down this road to a greater or lesser +extent include Numba, PyPy, Cython, Numexpr, and probably others. And +if nothing changes then this trend will only accelerate -- at an +obvious cost in duplicate effort, compatibility, code maturity, and +the ability to evolve and improve `numpy`'s semantics. Can we do +better? Could there be some way to write a library like `numpy` so +that a single codebase could simultaneously target CPython and the +newer compilers, while achieving competitive speed in all cases? If +so, can we make that happen? If not, then what's the next-best +alternative? + + +## Schedule + +TBD -- probably we'll start with a few short talks to set the stage +and then switch to unconference mode. + + +## Confirmed attendees + +TBD + + +## Sponsors + +Sponsors: TBD + +We anticipate that we will have travel funding available for +open-source developers who need the help. If this applies to you then +[please get in touch](mailto:njs@pobox.com). + + +## Travel information + +See the [SciPy 2016 web site](http://scipy2016.scipy.org/) for +suggestions on +[lodging](http://scipy2016.scipy.org/ehome/146062/332952/?&&), +[transportation](http://scipy2016.scipy.org/ehome/146062/332955/?&&), +and other travel details. + + +## Code of conduct + +(TBD -- maybe we can just point to SciPy's?) \ No newline at end of file From 77813b938a13ab8c5604695dea7390829b7c0c79 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 21:48:31 -0700 Subject: [PATCH 04/29] text cleanups --- index.md | 148 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 92 insertions(+), 56 deletions(-) diff --git a/index.md b/index.md index eaad29fe..380fa330 100644 --- a/index.md +++ b/index.md @@ -6,76 +6,116 @@ layout: default *What:* A workshop to bring together folks working on different approaches to **native-code compilation for Python**, to share -experience, discuss future plans, and explore possible points of -collaboration. One particular question to discuss is whether and how -we can use JIT or AOT compilation techniques to accelerate C -extensions like `numpy` or `pandas` without having to rewrite -these extensions for every new compiler (as is the current -state-of-the-art). - -*When/where:* **July 11-12**, 2016 in **Austin, Texas**, co-located -with the [SciPy 2016](scipy2016.scipy.org) conference. (This is just -before the main conference, and overlaps with the SciPy tutorial -days.) +experience, discuss future plans and common interests, and explore +possible points of collaboration -- especially with regard to +numerical/scientific programming. + +*When and where:* **July 11-12, 2016** in **Austin, Texas**, +co-located with the [SciPy 2016](http://scipy2016.scipy.org) +conference. (This is just before the main conference, and overlaps +with the SciPy tutorial days.) *Venue:* TBD *Who:* Open to the public. However [RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, -and so that I can update the confirmed attendees list below. +and so that I can update the confirmed attendees list below. In +addition, we anticipate that we will have travel funding available for +open-source developers who would otherwise find it difficult to +attend. If this applies to you then +[please get in touch as soon as possible](mailto:njs@pobox.com). -*Organized by:* Nathaniel Smith +*Organized by:* [Nathaniel Smith](https://vorpus.org) +([njs@pobox.com](mailto:njs@pobox.com)) ## Motivation There's an intense and growing interest in techniques for compiling -Python or near-Python languages; a partial list of projects includes -[Numba](http://numba.pydata.org/), -[Pyston](https://github.com/dropbox/pyston), [PyPy](http://pypy.org/), -[Cython](http://cython.org/), +Python or near-Python languages to native code; a partial list +includes [PyPy](http://pypy.org/), [Numba](http://numba.pydata.org/), +[Pyston](https://github.com/dropbox/pyston), +[Cython](http://cython.org/), [Nuitka](http://nuitka.net/), [Pythran](https://github.com/serge-sans-paille/pythran), [Pyjion](https://github.com/Microsoft/Pyjion), -[Nuitka](http://nuitka.net/), [Numexpr](https://github.com/pydata/numexpr), [HOPE](www.cosmology.ethz.ch/research/software-lab/HOPE.html), ... -Given the wide variety of efforts here, now seems like a -good time to compare notes! - -In addition, the numerical/scientific community is particularly -interested in these tools as a way to speed up Python code that uses -libraries like `numpy` -- and accomplishing this will require solving -unique technical and organizational challenges. In principle it's not -too difficult to compile Python code that uses `numpy` -- your -compiler "just" has to be compatible enough with the CPython C API to -call `numpy` directly, and all of the above projects either meet this -bar, or are anticipated to meet it soon. (In particular, both Pyston -and PyPy have developers actively working on this.) But if you want -`numpy`-using code to run *faster* than it does with CPython -- which -after all is the whole point of having a compiler -- then your -compiler needs some way to "see inside" `numpy`'s internals in order -to apply optimizations like unboxing, inlining, and loop fusion. And -this is impossible when calling extensions using the CPython C API. - -Historically the main solution to this problem has been to start -rewriting parts of `numpy` directly inside the compiler infrastructure --- projects that have gone down this road to a greater or lesser -extent include Numba, PyPy, Cython, Numexpr, and probably others. And -if nothing changes then this trend will only accelerate -- at an -obvious cost in duplicate effort, compatibility, code maturity, and -the ability to evolve and improve `numpy`'s semantics. Can we do -better? Could there be some way to write a library like `numpy` so -that a single codebase could simultaneously target CPython and the -newer compilers, while achieving competitive speed in all cases? If -so, can we make that happen? If not, then what's the next-best -alternative? +Now seems like a good time to compare notes! Plus there are lots of +questions that seem like they could benefit from some cross-project +collaboration. For example: + +* If I wrap a C function using Cython/CFFI/SWIG/..., can we somehow + expose the original C function to Numba/PyPy/Pyston/etc. to cut out + the wrapper overhead? What about vice-versa: if I have a Python + function that's been JIT-compiled and I pass it to some Fortran code + like + [`scipy.optimize.fmin`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin.html#scipy.optimize.fmin), + could there be some way for `scipy` to call the JIT-compiled + function directly? Can Numba and Pyston benefit from PyPy's work on + CFFI? + +* Does it make sense to run Numba on PyPy or Pyston? + +* The Python 2 vs. Python 3 split is very painful for anyone working + on compilers/interpreters. What strategies have worked or not + worked? + +* A number of the compilers above can take code like + + ~~~python + total = 0.0 + for num in range(10000): + total += num + ~~~ + + and perform inlining, unboxing, etc. to compile it down to a tight + native loop that far out-performs CPython. This is possible because + they have intimate knowledge of built-in Python constructs like + `float`, `int`, and `range`. And a number of them have good enough + CPython C API compatibility that they can -- or will soon be able to + -- execute the same code, but using `numpy`: + + ~~~python + import numpy as np + total = 0.0 + for num in np.arange(10000): + total += num + ~~~ + + But if you're using the CPython C API to call `numpy`, then you + can't do unboxing/inlining/loop fusion/etc., because `numpy` objects + are a total black box to the compiler, and so this `numpy`ified + version of the loop will run at about the same speed in a + state-of-the-art JIT as it would in CPython. + + The traditional way to solve this -- as seen in e.g. Numba or + Numexpr -- is to give the compiler built-in knowledge of `numpy` + types and operations, essentially reimplementing `numpy` inside each + compiler. But this strategy has a number of obvious downsides in + terms of duplicated effort, subtle incompatibilities, increased + testing load for downstream projects, the ability to continue to + evolve and improve `numpy`'s semantics, and the potential need to + then repeat the whole exercise for other projects like + [`dynd`](http://libdynd.org/) (a `numpy` competitor) or + `pandas`. And this question is becoming particularly urgent, since + not only has Numba already started down this road, but Pyston and + PyPy are both working on passing the `numpy` test suite right now + and are likely to soon move from worrying about correctness to + worrying about speed. + + Can we do better? Could there be some way to write a library like + `numpy` so that a single codebase could simultaneously target + CPython and the newer compilers, while achieving competitive speed + in all cases? If so, what would it take to make that happen? If not, + then what's the next-best alternative? ## Schedule -TBD -- probably we'll start with a few short talks to set the stage -and then switch to unconference mode. +TBD -- probably we'll start with some talks from different projects to +outline their approaches and name some problems they're worrying +about, and then switch to unconference mode. ## Confirmed attendees @@ -85,11 +125,7 @@ TBD ## Sponsors -Sponsors: TBD - -We anticipate that we will have travel funding available for -open-source developers who need the help. If this applies to you then -[please get in touch](mailto:njs@pobox.com). +TBD ## Travel information @@ -103,4 +139,4 @@ and other travel details. ## Code of conduct -(TBD -- maybe we can just point to SciPy's?) \ No newline at end of file +TBD (maybe we can just point to SciPy's?) \ No newline at end of file From 195046f835b5365d196ffd258a3b9ed05716ebdf Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 21:59:57 -0700 Subject: [PATCH 05/29] note that scipy also has its own financial aid setup --- index.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/index.md b/index.md index 380fa330..5606d532 100644 --- a/index.md +++ b/index.md @@ -17,13 +17,17 @@ with the SciPy tutorial days.) *Venue:* TBD -*Who:* Open to the public. However +*Who:* Open to the public; no registration fee. However [RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, and so that I can update the confirmed attendees list below. In addition, we anticipate that we will have travel funding available for -open-source developers who would otherwise find it difficult to -attend. If this applies to you then -[please get in touch as soon as possible](mailto:njs@pobox.com). +open-source developers working on topically-relevant projects who +would otherwise find it difficult to attend. If this applies to you +then +[please get in touch as soon as possible](mailto:njs@pobox.com). (Note +that +[SciPy also has financial aid available](http://scipy2016.scipy.org/ehome/146062/388110/?&&), +with applications due April 22.) *Organized by:* [Nathaniel Smith](https://vorpus.org) ([njs@pobox.com](mailto:njs@pobox.com)) From f611adb044944cd84591ea8ad56e83b6b92df7b7 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 22:02:08 -0700 Subject: [PATCH 06/29] grammar tweak --- index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.md b/index.md index 5606d532..db6d68c9 100644 --- a/index.md +++ b/index.md @@ -49,11 +49,11 @@ Now seems like a good time to compare notes! Plus there are lots of questions that seem like they could benefit from some cross-project collaboration. For example: -* If I wrap a C function using Cython/CFFI/SWIG/..., can we somehow - expose the original C function to Numba/PyPy/Pyston/etc. to cut out - the wrapper overhead? What about vice-versa: if I have a Python - function that's been JIT-compiled and I pass it to some Fortran code - like +* If I wrap a C function using Cython/CFFI/SWIG/..., could there + somehow be a way to expose the original C function to + Numba/PyPy/Pyston/etc. to cut out the wrapper overhead? What about + vice-versa: if I have a Python function that's been JIT-compiled and + I pass it to some Fortran code like [`scipy.optimize.fmin`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin.html#scipy.optimize.fmin), could there be some way for `scipy` to call the JIT-compiled function directly? Can Numba and Pyston benefit from PyPy's work on From 8059e6403f6805adb7c5ba0de94565ee50ac3a30 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 21 Mar 2016 22:03:03 -0700 Subject: [PATCH 07/29] wording tweaks --- index.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index db6d68c9..56402041 100644 --- a/index.md +++ b/index.md @@ -53,10 +53,11 @@ collaboration. For example: somehow be a way to expose the original C function to Numba/PyPy/Pyston/etc. to cut out the wrapper overhead? What about vice-versa: if I have a Python function that's been JIT-compiled and - I pass it to some Fortran code like + I pass it to some native code like [`scipy.optimize.fmin`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin.html#scipy.optimize.fmin), - could there be some way for `scipy` to call the JIT-compiled - function directly? Can Numba and Pyston benefit from PyPy's work on + could there be some way for the native code in `scipy` to call the + JIT-compiled function directly without going through tuple + packing/unpacking? Can Numba and Pyston benefit from PyPy's work on CFFI? * Does it make sense to run Numba on PyPy or Pyston? From debfaf7b9b5e450143b2ddedb17a3eba63638492 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Wed, 23 Mar 2016 14:03:37 -0700 Subject: [PATCH 08/29] Add Jython to list --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 56402041..64852f50 100644 --- a/index.md +++ b/index.md @@ -39,7 +39,8 @@ There's an intense and growing interest in techniques for compiling Python or near-Python languages to native code; a partial list includes [PyPy](http://pypy.org/), [Numba](http://numba.pydata.org/), [Pyston](https://github.com/dropbox/pyston), -[Cython](http://cython.org/), [Nuitka](http://nuitka.net/), +[Cython](http://cython.org/), [Jython](http://www.jython.org/), +[Nuitka](http://nuitka.net/), [Pythran](https://github.com/serge-sans-paille/pythran), [Pyjion](https://github.com/Microsoft/Pyjion), [Numexpr](https://github.com/pydata/numexpr), From 57e78f823d06bc6b8a8b6bcd45cabe260f66ce2c Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Wed, 23 Mar 2016 14:22:45 -0700 Subject: [PATCH 09/29] Wording tweaks --- index.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/index.md b/index.md index 64852f50..15735965 100644 --- a/index.md +++ b/index.md @@ -5,7 +5,7 @@ layout: default # Python Compilers Workshop *What:* A workshop to bring together folks working on different -approaches to **native-code compilation for Python**, to share +approaches to **high-performance compilation for Python**, to share experience, discuss future plans and common interests, and explore possible points of collaboration -- especially with regard to numerical/scientific programming. @@ -48,7 +48,8 @@ includes [PyPy](http://pypy.org/), [Numba](http://numba.pydata.org/), Now seems like a good time to compare notes! Plus there are lots of questions that seem like they could benefit from some cross-project -collaboration. For example: +collaboration. Our exact agenda will depend on participants interests, +but here are some examples to give the flavor: * If I wrap a C function using Cython/CFFI/SWIG/..., could there somehow be a way to expose the original C function to @@ -64,8 +65,8 @@ collaboration. For example: * Does it make sense to run Numba on PyPy or Pyston? * The Python 2 vs. Python 3 split is very painful for anyone working - on compilers/interpreters. What strategies have worked or not - worked? + on compilers/interpreters. What strategies for handling this have + worked or not worked? * A number of the compilers above can take code like @@ -100,9 +101,9 @@ collaboration. For example: types and operations, essentially reimplementing `numpy` inside each compiler. But this strategy has a number of obvious downsides in terms of duplicated effort, subtle incompatibilities, increased - testing load for downstream projects, the ability to continue to - evolve and improve `numpy`'s semantics, and the potential need to - then repeat the whole exercise for other projects like + testing load for downstream projects, reduced ability to evolve and + improve `numpy`'s semantics, and the potential need to then repeat + the whole exercise for other projects like [`dynd`](http://libdynd.org/) (a `numpy` competitor) or `pandas`. And this question is becoming particularly urgent, since not only has Numba already started down this road, but Pyston and From 27000b2861396e78b070723b20613a588b899500 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 28 Mar 2016 13:02:56 -0700 Subject: [PATCH 10/29] edits --- index.md | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/index.md b/index.md index 15735965..43e829f0 100644 --- a/index.md +++ b/index.md @@ -6,9 +6,9 @@ layout: default *What:* A workshop to bring together folks working on different approaches to **high-performance compilation for Python**, to share -experience, discuss future plans and common interests, and explore -possible points of collaboration -- especially with regard to -numerical/scientific programming. +experience, discuss common interests, and start sketching out a +roadmap for how the broader Python ecosystem can adapt to take maximal +advantage of these new implementations. *When and where:* **July 11-12, 2016** in **Austin, Texas**, co-located with the [SciPy 2016](http://scipy2016.scipy.org) @@ -44,11 +44,12 @@ includes [PyPy](http://pypy.org/), [Numba](http://numba.pydata.org/), [Pythran](https://github.com/serge-sans-paille/pythran), [Pyjion](https://github.com/Microsoft/Pyjion), [Numexpr](https://github.com/pydata/numexpr), -[HOPE](www.cosmology.ethz.ch/research/software-lab/HOPE.html), ... +[HOPE](www.cosmology.ethz.ch/research/software-lab/HOPE.html), +[GT-Py](https://software.intel.com/en-us/blogs/2016/03/22/gt-py-accelerating-numpy-programs-with-minimal-programming-effort)... Now seems like a good time to compare notes! Plus there are lots of questions that seem like they could benefit from some cross-project -collaboration. Our exact agenda will depend on participants interests, +collaboration. Our exact agenda will depend on participants' interests, but here are some examples to give the flavor: * If I wrap a C function using Cython/CFFI/SWIG/..., could there @@ -125,14 +126,21 @@ outline their approaches and name some problems they're worrying about, and then switch to unconference mode. -## Confirmed attendees +## A partial list of confirmed attendees -TBD +* Nathaniel Smith (NumPy) +* Jonathan Rocher +* Robert Cohn (Intel) +* Kevin Modzelewski (Pyston) +* Marius Wachtler (Pyston) +* Maciej Fijalkowski (PyPy) ## Sponsors -TBD +We're grateful to our sponsors for helping make this event possible: + +![Intel](/assets/intel-logo.png) ## Travel information @@ -146,4 +154,7 @@ and other travel details. ## Code of conduct -TBD (maybe we can just point to SciPy's?) \ No newline at end of file +Workshop attendees are expected to adhere to the +[SciPy code of conduct](http://scipy2016.scipy.org/ehome/146062/388087/?&&). +Please report any violations or concerns to +[Nathaniel Smith](mailto:njs@pobox.com) or a member of SciPy staff. From 954948984221513b75258ffae8298e7dce8c21bf Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 28 Mar 2016 17:52:09 -0700 Subject: [PATCH 11/29] add missing logo --- assets/intel-logo.png | Bin 0 -> 41686 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/intel-logo.png diff --git a/assets/intel-logo.png b/assets/intel-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9093f41c587176ad8c0f2202b8e638a17227fa53 GIT binary patch literal 41686 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 Date: Fri, 8 Apr 2016 18:01:08 -0700 Subject: [PATCH 12/29] Update confirmed attendee list --- index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 43e829f0..7fd225a2 100644 --- a/index.md +++ b/index.md @@ -129,11 +129,12 @@ about, and then switch to unconference mode. ## A partial list of confirmed attendees * Nathaniel Smith (NumPy) -* Jonathan Rocher -* Robert Cohn (Intel) * Kevin Modzelewski (Pyston) * Marius Wachtler (Pyston) * Maciej Fijalkowski (PyPy) +* Robert Cohn (Intel) +* Anton Malakhov (Intel) +* Jonathan Rocher ## Sponsors From e81d7b9dc8f0517c5d67e23be6aa75b995fef934 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Tue, 12 Apr 2016 22:42:46 -0700 Subject: [PATCH 13/29] Add mattip to the confirmed attendees --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index 7fd225a2..b2738bd3 100644 --- a/index.md +++ b/index.md @@ -132,6 +132,7 @@ about, and then switch to unconference mode. * Kevin Modzelewski (Pyston) * Marius Wachtler (Pyston) * Maciej Fijalkowski (PyPy) +* Matti Picus (PyPy) * Robert Cohn (Intel) * Anton Malakhov (Intel) * Jonathan Rocher From 0dafc6f23f689b7085c82d4249c3a0d1a041d4c1 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Wed, 13 Apr 2016 14:42:24 -0700 Subject: [PATCH 14/29] Add venue information --- index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index b2738bd3..f492f31f 100644 --- a/index.md +++ b/index.md @@ -15,7 +15,8 @@ co-located with the [SciPy 2016](http://scipy2016.scipy.org) conference. (This is just before the main conference, and overlaps with the SciPy tutorial days.) -*Venue:* TBD +*Venue:* [AT&T Center](http://www.meetattexas.com/), room 107 on July +11, room 104 on July 12 *Who:* Open to the public; no registration fee. However [RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, From a867542986f34d7f5443657d8dcfdd3e88cd3506 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Fri, 27 May 2016 15:26:24 -0700 Subject: [PATCH 15/29] Add link to python-compilers mailing list --- index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.md b/index.md index f492f31f..13eaac55 100644 --- a/index.md +++ b/index.md @@ -15,6 +15,9 @@ co-located with the [SciPy 2016](http://scipy2016.scipy.org) conference. (This is just before the main conference, and overlaps with the SciPy tutorial days.) +*Announcements / discussion:* +[the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) + *Venue:* [AT&T Center](http://www.meetattexas.com/), room 107 on July 11, room 104 on July 12 From cf5a0f6b53659982fd51c499ea863e2672718601 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Fri, 27 May 2016 15:27:18 -0700 Subject: [PATCH 16/29] Add Joel Akeret to the RSVP list --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index 13eaac55..8118c00d 100644 --- a/index.md +++ b/index.md @@ -137,6 +137,7 @@ about, and then switch to unconference mode. * Marius Wachtler (Pyston) * Maciej Fijalkowski (PyPy) * Matti Picus (PyPy) +* Joel Akeret (HOPE) * Robert Cohn (Intel) * Anton Malakhov (Intel) * Jonathan Rocher From c9056cb8df91d042378c49515e1fb053979a3c7c Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Tue, 7 Jun 2016 20:17:25 -0700 Subject: [PATCH 17/29] Add Chi-Keung Luk to confirmed attendees list --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index 8118c00d..6b214f9d 100644 --- a/index.md +++ b/index.md @@ -140,6 +140,7 @@ about, and then switch to unconference mode. * Joel Akeret (HOPE) * Robert Cohn (Intel) * Anton Malakhov (Intel) +* Chi-Keung Luk (Intel, GT-Py) * Jonathan Rocher From 32376e633235471039ac0a42a239367e3caa1d47 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Wed, 8 Jun 2016 23:58:14 -0700 Subject: [PATCH 18/29] Add Dino to RSVP list --- index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/index.md b/index.md index 6b214f9d..18090faa 100644 --- a/index.md +++ b/index.md @@ -137,6 +137,7 @@ about, and then switch to unconference mode. * Marius Wachtler (Pyston) * Maciej Fijalkowski (PyPy) * Matti Picus (PyPy) +* Dino Viehland (Pyjion) * Joel Akeret (HOPE) * Robert Cohn (Intel) * Anton Malakhov (Intel) From 4ee2b44bd5d258d642dc9b76ee179e33d52b0fe9 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Thu, 9 Jun 2016 15:31:49 -0700 Subject: [PATCH 19/29] Update room number --- index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/index.md b/index.md index 18090faa..f9016f21 100644 --- a/index.md +++ b/index.md @@ -18,8 +18,7 @@ with the SciPy tutorial days.) *Announcements / discussion:* [the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) -*Venue:* [AT&T Center](http://www.meetattexas.com/), room 107 on July -11, room 104 on July 12 +*Venue:* [AT&T Center](http://www.meetattexas.com/), room 104 *Who:* Open to the public; no registration fee. However [RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, From 6b7cfed9ea22dfd63cda58b0fb0dd5402176d13f Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Fri, 24 Jun 2016 21:59:02 -0700 Subject: [PATCH 20/29] No Maciej, sads --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index f9016f21..dbacc2e4 100644 --- a/index.md +++ b/index.md @@ -134,7 +134,7 @@ about, and then switch to unconference mode. * Nathaniel Smith (NumPy) * Kevin Modzelewski (Pyston) * Marius Wachtler (Pyston) -* Maciej Fijalkowski (PyPy) +* ~~Maciej Fijalkowski (PyPy)~~ (unfortunately can't make it) * Matti Picus (PyPy) * Dino Viehland (Pyjion) * Joel Akeret (HOPE) From 26b58e763acfa7f033bbbbbda38f4566af9bd5c9 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Sun, 26 Jun 2016 20:53:03 -0700 Subject: [PATCH 21/29] Thank SciPy / Jill --- index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.md b/index.md index dbacc2e4..379929ec 100644 --- a/index.md +++ b/index.md @@ -150,6 +150,11 @@ We're grateful to our sponsors for helping make this event possible: ![Intel](/assets/intel-logo.png) +We're also very grateful to +[the SciPy organizers](http://scipy2016.scipy.org/ehome/146062/388083/) +(especially Jill Cowan) for providing space and other assistance. + +Thanks! ## Travel information From a4952db85da615b4ab4e4391d7bb2ecd0e44f65c Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Thu, 7 Jul 2016 12:16:50 -0700 Subject: [PATCH 22/29] Update list of attendees --- index.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 379929ec..b53b98f8 100644 --- a/index.md +++ b/index.md @@ -132,9 +132,12 @@ about, and then switch to unconference mode. ## A partial list of confirmed attendees * Nathaniel Smith (NumPy) -* Kevin Modzelewski (Pyston) -* Marius Wachtler (Pyston) -* ~~Maciej Fijalkowski (PyPy)~~ (unfortunately can't make it) +* ~~Kevin Modzelewski (Pyston)~~ (unfortunately had to cancel, may + attend remotely) +* ~~Marius Wachtler (Pyston)~~ (unfortunately had to cancel, may + attend remotely) +* ~~Maciej Fijalkowski (PyPy)~~ (unfortunately had to cancel) +* Richard Plangger (PyPy) * Matti Picus (PyPy) * Dino Viehland (Pyjion) * Joel Akeret (HOPE) @@ -142,6 +145,9 @@ about, and then switch to unconference mode. * Anton Malakhov (Intel) * Chi-Keung Luk (Intel, GT-Py) * Jonathan Rocher +* Siu Kwan Lam (Numba) +* Stan Seibert (Numba) +* Ian Henricksen (DyND) ## Sponsors From e51a5e4b412bebaff9216afac45baa150b59a2a0 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Sat, 9 Jul 2016 01:43:39 -0700 Subject: [PATCH 23/29] Add groupware --- index.md | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/index.md b/index.md index b53b98f8..3ff414af 100644 --- a/index.md +++ b/index.md @@ -4,33 +4,37 @@ layout: default # Python Compilers Workshop +## Quick links for attendees + +We'll start at **9:30 am** on **July 11** in **room 104** of the +[AT&T Center at UT Austin](http://www.meetattexas.com/). + +* [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) +* [Shared notes](https://docs.google.com/document/d/1jGksgI96LdYQODa9Fca7EttFEGQfNODphVmbCX0DD1k/edit?usp=sharing) (world writeable) +* [Shared folder](https://drive.google.com/open?id=0B7lxgmXY3xBLM2JFa0dlaXc3bXM) + (feel free to add new shared documents here -- the folder is world + writeable, but first you need a Google account, then click "add to + drive") +* Text chat: [![Gitter](https://badges.gitter.im/python-compilers-workshop/chat.svg)](https://gitter.im/python-compilers-workshop/chat) +* Mailing list (announcements, ongoing discussions): [the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) + +## Basic facts + *What:* A workshop to bring together folks working on different approaches to **high-performance compilation for Python**, to share experience, discuss common interests, and start sketching out a roadmap for how the broader Python ecosystem can adapt to take maximal advantage of these new implementations. -*When and where:* **July 11-12, 2016** in **Austin, Texas**, -co-located with the [SciPy 2016](http://scipy2016.scipy.org) -conference. (This is just before the main conference, and overlaps -with the SciPy tutorial days.) - -*Announcements / discussion:* -[the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) +*When and where:* Starting at **9:30 am**, **July 11-12, 2016** in +**Austin, Texas**, co-located with the +[SciPy 2016](http://scipy2016.scipy.org) conference. (This is just +before the main conference, and overlaps with the SciPy tutorial +days.) *Venue:* [AT&T Center](http://www.meetattexas.com/), room 104 -*Who:* Open to the public; no registration fee. However -[RSVP's are appreciated](mailto:njs@pobox.com) for planning purposes, -and so that I can update the confirmed attendees list below. In -addition, we anticipate that we will have travel funding available for -open-source developers working on topically-relevant projects who -would otherwise find it difficult to attend. If this applies to you -then -[please get in touch as soon as possible](mailto:njs@pobox.com). (Note -that -[SciPy also has financial aid available](http://scipy2016.scipy.org/ehome/146062/388110/?&&), -with applications due April 22.) +*Who:* Open to the public; no registration fee. *Organized by:* [Nathaniel Smith](https://vorpus.org) ([njs@pobox.com](mailto:njs@pobox.com)) @@ -124,6 +128,8 @@ but here are some examples to give the flavor: ## Schedule + + TBD -- probably we'll start with some talks from different projects to outline their approaches and name some problems they're worrying about, and then switch to unconference mode. @@ -148,6 +154,7 @@ about, and then switch to unconference mode. * Siu Kwan Lam (Numba) * Stan Seibert (Numba) * Ian Henricksen (DyND) +* Dong-Yuan Chen (Intel) ## Sponsors From 1082fb497bf40ebf0e90e61ebe41e6dec68bba40 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Sat, 9 Jul 2016 02:15:42 -0700 Subject: [PATCH 24/29] Add UTC --- index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.md b/index.md index 3ff414af..33527a82 100644 --- a/index.md +++ b/index.md @@ -6,15 +6,15 @@ layout: default ## Quick links for attendees -We'll start at **9:30 am** on **July 11** in **room 104** of the +We'll start at **9:30 am** (Austin time, 14:30 UTC) on **July 11** +in **room 104** of the [AT&T Center at UT Austin](http://www.meetattexas.com/). * [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) * [Shared notes](https://docs.google.com/document/d/1jGksgI96LdYQODa9Fca7EttFEGQfNODphVmbCX0DD1k/edit?usp=sharing) (world writeable) * [Shared folder](https://drive.google.com/open?id=0B7lxgmXY3xBLM2JFa0dlaXc3bXM) (feel free to add new shared documents here -- the folder is world - writeable, but first you need a Google account, then click "add to - drive") + writeable, but first you need a Google account, then click "open in drive") * Text chat: [![Gitter](https://badges.gitter.im/python-compilers-workshop/chat.svg)](https://gitter.im/python-compilers-workshop/chat) * Mailing list (announcements, ongoing discussions): [the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) From 304d8d9eca86e4eb1d800f4df6282b6efc812985 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Sat, 9 Jul 2016 18:19:48 -0700 Subject: [PATCH 25/29] Fix the HOPE links --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 33527a82..03feb9ea 100644 --- a/index.md +++ b/index.md @@ -51,7 +51,7 @@ includes [PyPy](http://pypy.org/), [Numba](http://numba.pydata.org/), [Pythran](https://github.com/serge-sans-paille/pythran), [Pyjion](https://github.com/Microsoft/Pyjion), [Numexpr](https://github.com/pydata/numexpr), -[HOPE](www.cosmology.ethz.ch/research/software-lab/HOPE.html), +[HOPE](http://www.cosmology.ethz.ch/research/software-lab/HOPE.html), [GT-Py](https://software.intel.com/en-us/blogs/2016/03/22/gt-py-accelerating-numpy-programs-with-minimal-programming-effort)... Now seems like a good time to compare notes! Plus there are lots of From 0cc4bdbe0bc462a02699d7783fe90536405b71b5 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 11 Jul 2016 09:22:18 -0500 Subject: [PATCH 26/29] Audio instruction --- index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 33527a82..b1b350d7 100644 --- a/index.md +++ b/index.md @@ -10,7 +10,9 @@ We'll start at **9:30 am** (Austin time, 14:30 UTC) on **July 11** in **room 104** of the [AT&T Center at UT Austin](http://www.meetattexas.com/). -* [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) +* + [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) + (PLEASE MUTE YOUR MICROPHONE if you are local or not talking) * [Shared notes](https://docs.google.com/document/d/1jGksgI96LdYQODa9Fca7EttFEGQfNODphVmbCX0DD1k/edit?usp=sharing) (world writeable) * [Shared folder](https://drive.google.com/open?id=0B7lxgmXY3xBLM2JFa0dlaXc3bXM) (feel free to add new shared documents here -- the folder is world From 0cd8280112c2ac0b1399a8ba83e0d3d9315055b4 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 11 Jul 2016 11:10:00 -0500 Subject: [PATCH 27/29] try to fix formatting --- index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 7bb4f8e7..f02fd12c 100644 --- a/index.md +++ b/index.md @@ -10,9 +10,11 @@ We'll start at **9:30 am** (Austin time, 14:30 UTC) on **July 11** in **room 104** of the [AT&T Center at UT Austin](http://www.meetattexas.com/). -* - [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) +* [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) (PLEASE MUTE YOUR MICROPHONE if you are local or not talking) + * [Fallback hangout if the previous hangout is full](https://hangouts.google.com/hangouts/_/berkeley.edu/compilersworkshop2) + -- this is slightly broken for inscrutable Google-related reasons -- + if trying to join please let us know in gitter and then be patient * [Shared notes](https://docs.google.com/document/d/1jGksgI96LdYQODa9Fca7EttFEGQfNODphVmbCX0DD1k/edit?usp=sharing) (world writeable) * [Shared folder](https://drive.google.com/open?id=0B7lxgmXY3xBLM2JFa0dlaXc3bXM) (feel free to add new shared documents here -- the folder is world From 370f0ff8796fb9f58c985dc89b8d27c7b915b71e Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Mon, 11 Jul 2016 11:10:30 -0500 Subject: [PATCH 28/29] how does markdown even work --- index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.md b/index.md index f02fd12c..54558892 100644 --- a/index.md +++ b/index.md @@ -12,14 +12,19 @@ in **room 104** of the * [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) (PLEASE MUTE YOUR MICROPHONE if you are local or not talking) + * [Fallback hangout if the previous hangout is full](https://hangouts.google.com/hangouts/_/berkeley.edu/compilersworkshop2) -- this is slightly broken for inscrutable Google-related reasons -- if trying to join please let us know in gitter and then be patient + * [Shared notes](https://docs.google.com/document/d/1jGksgI96LdYQODa9Fca7EttFEGQfNODphVmbCX0DD1k/edit?usp=sharing) (world writeable) + * [Shared folder](https://drive.google.com/open?id=0B7lxgmXY3xBLM2JFa0dlaXc3bXM) (feel free to add new shared documents here -- the folder is world writeable, but first you need a Google account, then click "open in drive") + * Text chat: [![Gitter](https://badges.gitter.im/python-compilers-workshop/chat.svg)](https://gitter.im/python-compilers-workshop/chat) + * Mailing list (announcements, ongoing discussions): [the python-compilers mailing list at python.org](https://mail.python.org/mailman/listinfo/python-compilers) ## Basic facts From 07d2bce5d97ee29802e102874d0a04184bbe3494 Mon Sep 17 00:00:00 2001 From: "Nathaniel J. Smith" Date: Tue, 12 Jul 2016 09:51:41 -0500 Subject: [PATCH 29/29] New hangouts link --- index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.md b/index.md index 54558892..af748d5a 100644 --- a/index.md +++ b/index.md @@ -10,8 +10,8 @@ We'll start at **9:30 am** (Austin time, 14:30 UTC) on **July 11** in **room 104** of the [AT&T Center at UT Austin](http://www.meetattexas.com/). -* [Google Hangout for remote attendees](https://hangouts.google.com/call/2z2tx37hbncljbvrrjkh66wetqe) - (PLEASE MUTE YOUR MICROPHONE if you are local or not talking) +* [Google Hangout for remote attendees](https://hangouts.google.com/call/dqqch3egprho5amsyechogoq2ae) + (**NOTE** this is a different link than yesterday -- also PLEASE MUTE YOUR MICROPHONE if you are local or not talking) * [Fallback hangout if the previous hangout is full](https://hangouts.google.com/hangouts/_/berkeley.edu/compilersworkshop2) -- this is slightly broken for inscrutable Google-related reasons --