Hi Matt et al.,
After looking at your list, I agree there's definitely enough for a user workshop, if that's your intention (and one could easily piggyback a developer workshop, as per the Enzo summer 2010 workshop).
If you were going to do a standalone workshop, and given that no university that hosts a yt developer is in a particularly central or cheap place, much less a (inexpensive)*(cheap) place, you might think of just picking a city near the middle of the country that is a hub for at least one airline (so that flights are cheap) and then just get a conference room and block of rooms in a hotel near the airport. The main point of the meeting is for everybody to be in the same physical location, and it doesn't really matter where precisely that place is, as long as it's convenient to get to. To this end, some place like Chicago (United, American), Minneapolis (Delta), or Detroit (Delta) might be adequate.
Just a thought...
-Brian
On Mon, Aug 29, 2011 at 2:50 PM, Matthew Turk
<matthewturk@gmail.com> wrote:
Hi all,
This thread may now be cold, but I wanted to bring it back up briefly.
I've been in touch a little bit with XSEDE personnel as well as a
number of yt developers, and we have attempted to brainstorm some
ideas, which I sum up here.
I think it is now certain that we will not be piggy-backing on the
Enzo workshop. The issue is not as much a problem of infrastructure,
but rather of weariness on the part of the developers. My feeling
initially was that we could do a day and a half workshop, then move
directly on to Enzo. It has been impressed upon me that 1) we should
have more than a day and a half 2) It would take a *lot* out of the
developers to do this.
This does not preclude piggybacking on an existing workshop in the future.
I see three main opportunities for a workshop:
* Piggyback on Enzo or other 'numerical' event which would have a
large number of interested people, such as XSEDE
* Host an isolated, standalone workshop
* Host an online workshop / office hours
Marcel's comment about proximity to the NE corner of the country is
well-taken; I too would like to be close to home. I think we could
also probably find a small amount of money for travel, from some
source or another. The idea of a virtual conference is somewhat
appealing, but I am not as fond of webinars as others are, and I think
we would have to have very short, targeted items if we did that.
However, there are resources we could draw upon for webinars. I think
the most productive would be option #2, but I am not yet convinced we
would be able to support such an endeavor as a community, and I still
do not know where we would host it. (Any institutions out there that
could?) Another alternative Sam has suggested which I like is instead
to host office hours in IRC or G+ or something with video.
However, one of the big questions that has come up with respect to a
physical workshop is: what would we talk about? I scribbled out a few
items this morning that I think could fill a goodly amount of time,
which I have included below. My feeling from talking to others is
that for it to be useful, we would need both beginner and advanced
topics. My list is at the bottom of this email -- after writing this
out I kind of came around and felt like there is enough material to
fill up a few sessions.
Anyway, I'd like to solicit some thoughts on this. Pretty much it
comes down to:
1a) Physical (likely spring), virtual (anytime) or no workshop?
1b) If Physical, where? (Specifically, which institutions or regions
would you prefer, and could you volunteer your location?)
2) What do you think of the pseudo-agenda below?
One last item is that I was the most skeptical about the feasibility
of a workshop, and I have been brought around by other developers --
who have impressed upon me that not only could we do this, we really
*ought* to do it. If not now, at some point in the future.
Thanks everyone,
-Matt
* Agenda Ideas *
= Using yt =
- Introduction to yt -
Jargon and terminology
Installation
How to start up
How to write a script
How to examine a simulation's characteristics
Examining individual grids
Slicing
Projecting
Command-line tool
- Data handling in yt -
How to think of data objects in yt
What is a field? (also: my_plugins.py)
Basics of select/instantiating a data object
How to call and use a derived quantity
What DQs and DOs are available?
Phase plots (1-, 2-, 3-D)
- Visualizing data -
Projections, slices, and plot modifications
Raw, stripped down plot objects
Manually plotting data
- Advanced data objects -
Accessing attributes of data objects
Cutting and subselecting data from objects
Creating new data objects
1D and 2D objects
Creating fields
Clump finding
Finding points
- Advanced visualization -
Writing your own plot callback
Fixed resolution buffers
- Volume rendering -
What is "Volume Rendering"?
How to use the camera
How to write a transfer function
Making animations: camera paths and normalization
"Photo-realistic"
- Astrophysical Analysis -
Halo finding
Halo analysis / halo profiler
Halo mass functions
Spectral energy distribution
Star particle analysis
Absorption spectra
- Large data analysis -
How to run in parallel
What kind of datasets work well with parallelism?
Do's and don'ts of parallel analysis
Distributing work
- Time series analysis -
Full simulation
Analysis objects
Multi-level Parallelism
- Reason -
How to use reason
How does reason work
Advanced features
= Advanced yt + Developing yt =
- Overview of the yt community -
Communication channels
Source control
Testing
Documentation
People
- Mercurial -
What is version control?
What is distributed version control?
What's a DAG?
- Contributing changes -
How to commit, share, and notify
What to expect when you contribute
- The yt testing system -
How to write a test
How do tests get run?
What does it mean to 'pass' a test?
- How to write a code frontend -
What does yt expect from a simulation output format?
What is necessary / expected
Simple prototyping
How to construct the necessary source files
- Fast code and Cython -
What is Cython?
How do I compile and run Cython code?
How to speed it up
- Writing parallel code -
How does yt use parallelism?
What routines are available for parallelism?
How to debug parallel code
- Interfacing with external code -
Raw C api
Exporting data objects
Cython for easy API usage
- yt internals -
Parameter file storage and pickling
kD-trees
Idiomatic yt