├── .gitignore ├── .nojekyll ├── 01-what-unconf.Rmd ├── 02-physical-infrastruct.Rmd ├── 03-online-infrastruct.Rmd ├── 04-money.Rmd ├── 05-applications.Rmd ├── 06-people.Rmd ├── 065-day-zero.Rmd ├── 07-day-one.Rmd ├── 08-day-two.Rmd ├── 09-after.Rmd ├── 99-References.Rmd ├── DESCRIPTION ├── README.md ├── _bookdown.yml ├── _build.sh ├── _deploy.sh ├── _output.yml ├── book.bib ├── css └── custom.css ├── docs ├── after.html ├── apps.html ├── css │ └── custom.css ├── day0.html ├── day1.html ├── day2.html ├── friday-march-8.html ├── img │ └── caution.png ├── index.html ├── libs │ ├── gitbook-2.6.7 │ │ ├── css │ │ │ ├── fontawesome │ │ │ │ └── fontawesome-webfont.ttf │ │ │ ├── plugin-bookdown.css │ │ │ ├── plugin-fontsettings.css │ │ │ ├── plugin-highlight.css │ │ │ ├── plugin-search.css │ │ │ ├── plugin-table.css │ │ │ └── style.css │ │ └── js │ │ │ ├── app.min.js │ │ │ ├── jquery.highlight.js │ │ │ ├── lunr.js │ │ │ ├── plugin-bookdown.js │ │ │ ├── plugin-fontsettings.js │ │ │ ├── plugin-search.js │ │ │ └── plugin-sharing.js │ └── jquery-2.2.3 │ │ └── jquery.min.js ├── money.html ├── online.html ├── people.html ├── physical.html ├── references.html ├── saturday-march-9.html ├── search_index.json ├── sunday-march-10.html └── wat.html ├── img ├── caution.png └── logo.png └── index.Rmd /.gitignore: -------------------------------------------------------------------------------- 1 | # History files 2 | .Rhistory 3 | .Rapp.history 4 | 5 | # Session Data files 6 | .RData 7 | 8 | # Example code in package build process 9 | *-Ex.R 10 | 11 | # Output files from R CMD build 12 | /*.tar.gz 13 | 14 | # Output files from R CMD check 15 | /*.Rcheck/ 16 | 17 | # RStudio files 18 | .Rproj.user/ 19 | 20 | # produced vignettes 21 | vignettes/*.html 22 | vignettes/*.pdf 23 | 24 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 25 | .httr-oauth 26 | 27 | # knitr and R markdown default cache directories 28 | /*_cache/ 29 | /cache/ 30 | 31 | # Temporary files created by R markdown 32 | *.utf8.md 33 | *.knit.md 34 | 35 | # Shiny token, see https://shiny.rstudio.com/articles/shinyapps.html 36 | rsconnect/ 37 | -------------------------------------------------------------------------------- /.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unconf-toolbox/unconf-guide/00683b44ce1751ea52608b620e0082f9f0256657/.nojekyll -------------------------------------------------------------------------------- /01-what-unconf.Rmd: -------------------------------------------------------------------------------- 1 | # What is an "Unconf" and why should YOU organize one? {#wat} 2 | 3 | ## What is an "unconference"? {-} 4 | 5 | An *unconference* is a very well-named event. The *unconf* takes the traditional highly structured conference format and turns it on its head. There are no expensive registration fees, formal abstract submissions, or time-limited talks. To quote one organizer of a large unconferece, "We invite a couple of hundred really interesting people for an event without a program, which emphasizes interaction between the participants rather than on prepared presentations" [@unconf1]. 6 | 7 | According to @unconf1 and Andrea Wulf, the first "unconference" was held back in 1828 in Germany. It was put on by Alexander von Humboldt, the Prussian Polymath. For this 19th century event, 8 | 9 | > "he invited hundreds of scientists [...] to attend a conference in Berlin. Unlike previous such meetings at which scientists had endlessly presented papers about their own work, Humboldt put together a very different programme. Rather than being talked at, he wanted the scientists to talk with each other. There were convivial meals and social outings [...]. Meetings were held among botanical, zoological and fossil collections as well as at the university and the botanical garden. Humboldt encouraged scientists to gather in small groups and across disciplines. He connected the visiting scientists on a more personal level, ensuring that they forged friendships that would foster close networks. He envisaged an interdisciplinary [coalition] of scientists who would exchange and share knowledge." 10 | 11 | This old idea is new again in the 21st century tech industry. Large unconferences attract web developers, data scientists, and other tech-minded folks. They often are similar to "hackathons" where developers and designers come together to create a functioning software product during a short period of time, usually only a few days. 12 | 13 | ## What is the history of the R unconf? {-} 14 | 15 | The mother of the [Chicago R Unconference](https://chirunconf.github.io/) and the [Uncoast Unconference](http://uuconf.rbind.io/) is the [rOpenSci](https://ropensci.org/) unconference, or #runconf. It began in [2014](https://github.com/ropensci/unconf14/wiki), and has been held every year since. It has also spurred the [OzUnconf](https://ozunconf18.ropensci.org/) event in Australia, first held in 2016. 16 | 17 | At these events, attendees create new R packages, make Shiny Apps, write documentation (like this book!), and contribute to existing packages. Check out some of the previous projects below: 18 | 19 | - [#runconf18](https://github.com/ropensci/unconf18/issues) 20 | - [#ozunconf18](https://github.com/ropensci/ozunconf18/issues) 21 | - [#runconf17](https://github.com/ropensci/unconf17/issues) 22 | - [#runconf16](https://github.com/ropensci/unconf16/issues) 23 | - [#runconf15](https://github.com/ropensci/unconf15/issues) 24 | - [#runconf14](https://github.com/ropensci/unconf14/issues) 25 | 26 | ```{block, type = "rmdcaution"} 27 | This guide is a work in progress! If you'd like to contribute to the list above, please submit a [pull request](https://github.com/unconf-toolbox/unconf-guide). 28 | ``` 29 | 30 | 31 | 32 | ## What can you expect at an unconf? {-} 33 | 34 | 35 | 36 | ## Why should you organize an unconf? {-} 37 | 38 | - You get to meet a lot of great people 39 | - You get to learn a lot of new things 40 | -------------------------------------------------------------------------------- /02-physical-infrastruct.Rmd: -------------------------------------------------------------------------------- 1 | # Physical Infrastructure {#physical} 2 | 3 | This section is all about the physical space & time needed to host an unconf. 4 | 5 | ## Where is your unconf? {-} 6 | 7 | First things first, you need a space. The space should be the first thing you acquire, because without a space, you cannot have an unconf. This should be a space large enough for your conference, typically 30-50 people. There should be working space for all participants: chairs, table surface, whiteboard & dry erase markers, paper & pens. The location should also have strong WiFi that everyone can access and plenty of electrical outlets for charging laptops. See Chapter \@ref(people) for more details about what your space should have. 8 | 9 | Some ideas for unconf spaces are: 10 | 11 | - Large meeting rooms or classrooms at academic institutions 12 | - Co-working spaces 13 | - Meeting rooms that your employer can rent out or donate to you for two to three days 14 | 15 | Ideally, the space should be within walking distance of one or more hotels so that your participants can easily go to and fro. If your location is not near lodging, rent a van that can shuttle participant from the hotel to the venue, or consider asking participants to carpool between the venue and the hotel(s). 16 | 17 | When you check out the space, make sure that you know where the dumpsters are. You'll need to take out the trash! `r emo::ji("recycling symbol")` 18 | 19 | You should have the space secured at least 4-6 months ahead of time. 20 | 21 | ## When is your unconf? {-} 22 | 23 | Date considerations: 24 | 25 | - Weekends are optimal for people whose jobs wouldn't allow for them to attend this type of event during the week. However, you will also be asking folks to give up one of their weekends. 26 | - Weekdays require people to take time off of work, but they may be able to get their employer to fund their travel and lodging. There are also weekday obligations, such as getting children to and from school, that may limit some participants' ability to fully participate. 27 | - Do your best to avoid major religious holidays. Consult the [interfaith calendar](http://www.interfaith-calendar.org). 28 | - If you are hosting in the US or Canada on a weekend, avoid daylight savings time so that people aren't losing an hour of sleep! `r emo::ji("sleeping face")` 29 | 30 | ## Where will people stay? {-} 31 | 32 | Try to secure a block of rooms at a nearby hotel at least two months before your event. It's much easier to release a few rooms later on than it is to create new hotels rooms out of nothing! -------------------------------------------------------------------------------- /03-online-infrastruct.Rmd: -------------------------------------------------------------------------------- 1 | # Online Infrastructure {#online} 2 | 3 | > "I ~~think~~ web therefore I am." - ~~Descartes~~ [Xie](https://slides.yihui.name/2012-stats-web.html#1.0) 4 | 5 | Your conference has to exist on the internet first before it can exist in reality! 6 | 7 | ## Github Organization {-} 8 | 9 | Create a Github Organization for your unconf. The organization can host the repo for your website, a place to post project ideas before the event, a Wiki, and a repo for every project that is started at your unconf. 10 | 11 | During your conference, you can use the [issues explorer](https://github.com/unconf-toolbox/unconfissues) from the Unconf Toolbox for your participants to easily explore possible projects and see when projects are closed. 12 | 13 | ## Website {-} 14 | 15 | Having a website for your conference is the most important piece of your online infrastructure. It legitimizes your event, hosts your branding, and shows potential sponsors that you're serious and that their money will be put to good use. 16 | 17 | In the Unconf Toolbox, we have a [website skeleton](https://github.com/unconf-toolbox/unconf-website) that is under an open source license that you are welcome to use as an example. (You must include the license with it.) You can also branch out on your own and try out [`blogdown`](https://bookdown.org/yihui/blogdown/). This is what I (ST) did for the [Uncoast Unconf](https://github.com/rbind/uncoast-unconf) website, but this is one of those "do as I say, not as I do" moments, so proceed with caution! 18 | 19 | ## Twitter {-} 20 | 21 | To create a Twitter account, you'll also need an email account. Consider creating a Gmail account specifically for the event. With this email account you can also send out mailings to your applicants and participants. Check out the [communication](https://github.com/unconf-toolbox/unconf-comm) repository in the Unconf Toolbox. You should also create a conference hashtag so that unconf attendees can easily share their work with each other and the community. 22 | -------------------------------------------------------------------------------- /04-money.Rmd: -------------------------------------------------------------------------------- 1 | # Funding an Unconf {#money} 2 | 3 | After you have your physical space and your website, you need to start finding funding for the event. 4 | 5 | ### Possible Sponsors {-} 6 | 7 | Use your network! Reach out to current and past employers, ask professors if they know of programs at their university that can assist you, and contact local companies looking to recruit data science talent. 8 | 9 | It is helpful to possible sponsors to have a prepared *prospectus* with various levels of funding that garner different types of advertisement at your event. For example, set a minimum amount of funding to get the company's logo on the website. For larger sponsors, they may be able to pay for a meal at the unconf, which would require you placing signage and making an announcement the company sponsored the meal. One particularly nice perk of sponsorship could be reserving a spot for an employee of the company to attend the event without having to apply. Other possible benefits include putting up signage in the venue, opening the event with a presentation where you thank the sponsors, and tweeting about the sponsors thanking them for their support. 10 | 11 | ### Grant funding possibilities {-} 12 | 13 | - R Consortium [RUGS](https://www.r-consortium.org/projects/r-user-group-support-program) 14 | - NSF [Conferences and Workshops in the Mathematical Sciences](https://www.nsf.gov/funding/pgm_summ.jsp?pims_id=11701) (submit application a minimum of six months ahead of time) 15 | 16 | ### Things to buy {-} 17 | 18 | For an event of about 30-40 people, you'll need about $5,000 (in 2018 USD) to secure food for two days. You'll need more money to be able to do more things, such as: 19 | 20 | - Funding travel and/or lodging for students. This takes a LOT of money. 21 | - T-shirts 22 | - Stickers from [stickermule.com](https://www.stickermule.com/) 23 | - Office supplies (paper, pens, whiteboards & markers, etc.) 24 | - Name Tags -------------------------------------------------------------------------------- /05-applications.Rmd: -------------------------------------------------------------------------------- 1 | # All Things Applications {#apps} 2 | 3 | The unconfs we have organized and attended have been "invitation-only." This sounds a lot more highbrow than it actually is. All it means is that there is an application process specifically tailored to your event. The application process should be in place for two important reasons which are absolutely necessary to the success of your unconf. First and foremost, it keeps costs down. Since there is no fee to attend the unconf, you have to keep the size of the event small so that you can feed all participants with your limited budget. Second, it ensures that everyone at your unconf really wants to be there and will be committed to making the process enjoyable and productive for everyone. You're trying to build community, and random folks walking in off the street just won't help with that. Finally, it keeps your event focused. If you're hosting an R-centered event, a bunch of exclusive Python users would distract from your mission. A lot of people will apply who just don't fit with your goal, and that's ok. You just need to make sure you are very clear in the mission of your event. 4 | 5 | The Unconf Toolbox has a [Shiny app](https://github.com/unconf-toolbox/unconf-apps), powered by Dropbox, to host the application form for your unconf. Some of the application questions are: 6 | 7 | - What is your occupation? 8 | - What field(s) are you applying R to? 9 | - What do you hope to accomplish and/or learn at this unconf? 10 | 11 | You'll want to tailor the questions to your specific unconf. Some things to consider: 12 | - How much R/Python/other coding experience are you looking for? Can beginners enjoy your unconf, too? 13 | - How much other experience are you looking for? e.g. academics or industry? 14 | - Are you in a specific application field? e.g. education, bioinformatics, etc. 15 | 16 | It's all about the bottom line. An unconf shouldn't have a registration fee by definition, so an application is a necessary piece to keep costs controlled and participants engaged Hopefully, the Unconf Toolbox can provide others with the framework for hosting an unconf so everyone who wants to will get the chance to attend one soon in their area! 17 | 18 | ## Timeline {-} 19 | 20 | You should open up applications to your event **four months** before the start date, and leave them open for about a month. Make sure that you have established an online presence already (website, Twitter, Github) so you have something to link to and a place to advertise. Consider advertising your event application to local businesses and colleges & universities to recruit local talent. It is also best to have some confirmed sponsors at this point, but it is not required. You should definitely be in talks with possible sponsors at the very least so that you have some idea of how many people you are going to be able to have at the event. 21 | 22 | Once the applications are closed (after being open for about a month), you will have to assemble your committee to evaluate them. You should determine your evaluation criteria ahead of time if you want to have an unbiased -------------------------------------------------------------------------------- /06-people.Rmd: -------------------------------------------------------------------------------- 1 | # People have needs {#people} 2 | 3 | Code of Conduct: 4 | 5 | A code of conduct is vital to ensure that everyone at your event is safe and feels welcome. A sample code of conduct is posted in the Unconf Toolbox [here](https://unconf-toolbox.github.io/unconf-website/coc/). 6 | 7 | Space considerations: 8 | 9 | - Gender neutral bathrooms 10 | - Quiet room for meditation, prayer, etc. 11 | - Nursing moms room 12 | - Wheelchair accessibility 13 | - Child care 14 | 15 | Food: 16 | 17 | - Ask people their dietary needs once you know they're coming to the conference. You'll need to think about: 18 | * Religious considerations (Kosher, Halal) 19 | * Vegans & Vegetarians 20 | * Others: gluten intolerance (Celiac), lactose intolerance, etc. 21 | - Check with the venue about what food is allowed. Some places will only allow one company or set of companies 22 | 23 | Lodging: 24 | 25 | - Reserve hotel rooms two months ahead of the conference 26 | - Ask people if they are willing to share rooms with other attendees to save money 27 | 28 | 29 | -------------------------------------------------------------------------------- /065-day-zero.Rmd: -------------------------------------------------------------------------------- 1 | # Day Zero {#day0} 2 | 3 | Some unconfs, such as the OzUnconf and the Uncoast Unconf, hosted "day zero" events to prepare participants for the collaboration and development that will occur on days one and two. 4 | 5 | All of the materials for the Uncoast Unconf Day Zero are available on [Github](https://github.com/uncoast-unconf/uu-2019-day-zero). These materials cover the following topics: 6 | 7 | 1. Collaboration with Git & Github in R 8 | 2. R Project Workflows 9 | 3. Creating R packages 10 | 4. The Magic Tricks of HTML/CSS/JS 11 | -------------------------------------------------------------------------------- /07-day-one.Rmd: -------------------------------------------------------------------------------- 1 | # Unconf Day One {#day1} 2 | 3 | ## Sample Schedule {-} 4 | 5 | Here is the schedule from the Chicago R Unconference, held Saturday & Sunday March 9-10, 2019. 6 | 7 | ### The night before {-} 8 | * **7:00pm-9:00pm** Informal get-together at a pub near the conference venue for folks coming in to town the night before the unconf starts. 9 | 10 | #### Day One {-} 11 | * **9:00-9:30am** Arrive at the venue, grab food/coffee, mingle, get settled 12 | * **9:30-10:15am** Opening intros by organizers, overview of the day, icebreaker/participant intros 13 | * **10:15am-noon** Break up, move around, brainstorm ideas, join a project team 14 | * **noon** Lunch arrives, mingle, socialize 15 | * **12:30pm** (Optional) Quick demos/lightning talks (2 talks, 15 min each, on Git/package setup) by organizers 16 | * **rest of day** Work on projects (and mingle, socialize) 17 | * **3:00pm** Afternoon break 18 | * **5:00pm** Dinner arrives 19 | * **Evening** Vacate space according to pre-arranged times with building security. (Optional) Move to a bar for drinks and socializing 20 | -------------------------------------------------------------------------------- /08-day-two.Rmd: -------------------------------------------------------------------------------- 1 | # Unconf Day Two {#day2} 2 | 3 | This day is intended to be flexible project work time/social time. Do what feels right to you. 4 | 5 | ### Sample Schedule {-} 6 | 7 | * **9:00am** Breakfast available 8 | * **noon** Lunch available 9 | * **12:30pm** (Optional if interest) Quick demos/lightning talks by mentors or participants (sign up at event!) 10 | * **3:00-3:30pm** Wrap up projects 11 | * **3:30pm-4:30pm** Report out on projects (show the README for your package or issues that have been closed), concluding remarks by organizers 12 | * **5pm** Vacate space according to pre-arranged times with building security 13 | * **Evening** (Optional) Group dinner with folks leaving town the following morning. -------------------------------------------------------------------------------- /09-after.Rmd: -------------------------------------------------------------------------------- 1 | # After the Unconf {#after} 2 | 3 | Encourage participants to blog about their experience at your unconf! 4 | -------------------------------------------------------------------------------- /99-References.Rmd: -------------------------------------------------------------------------------- 1 | # `r if (knitr::is_html_output()) 'References {-}'` 2 | 3 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: placeholder 2 | Type: Book 3 | Title: Does not matter. 4 | Version: 0.0.1 5 | Imports: bookdown, ggplot2 6 | Remotes: rstudio/bookdown -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # unconf-guide 2 | Documentation of all our ideas, struggles, processes, etc. for hosting an unconf 3 | 4 | [![Build Status](https://travis-ci.com/unconf-toolbox/unconf-toolbox.github.io.svg?branch=master)](https://travis-ci.com/unconf-toolbox/unconf-toolbox.github.io) -------------------------------------------------------------------------------- /_bookdown.yml: -------------------------------------------------------------------------------- 1 | book_filename: unconf-guide 2 | output_dir: docs 3 | -------------------------------------------------------------------------------- /_build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -ev 4 | 5 | Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::gitbook')" 6 | 7 | -------------------------------------------------------------------------------- /_deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | [ -z "${GITHUB_PAT}" ] && exit 0 6 | [ "${TRAVIS_BRANCH}" != "master" ] && exit 0 7 | 8 | git config --global user.email "chirunconf@gmail.com" 9 | git config --global user.name "Chicago R Unconference" 10 | 11 | git clone -b gh-pages \ 12 | https://${GITHUB_PAT}@github.com/${TRAVIS_REPO_SLUG}.git \ 13 | book-output 14 | cd book-output 15 | cp -r ../docs/* ./ 16 | git add --all * 17 | git commit -m"Update the book" || true 18 | git push -q origin gh-pages 19 | -------------------------------------------------------------------------------- /_output.yml: -------------------------------------------------------------------------------- 1 | bookdown::gitbook: default 2 | bookdown::pdf_book: default 3 | bookdown::epub_book: default 4 | -------------------------------------------------------------------------------- /book.bib: -------------------------------------------------------------------------------- 1 | @ONLINE {unconf1, 2 | author = "Tim O'Reilly", 3 | title = "The True Inventor of the Unconference", 4 | month = "mar", 5 | year = "2018", 6 | url = "https://www.linkedin.com/pulse/true-inventor-unconference-tim-o-reilly/" 7 | } -------------------------------------------------------------------------------- /css/custom.css: -------------------------------------------------------------------------------- 1 | .rmdcaution, .rmdimportant, .rmdnote, .rmdtip, .rmdwarning { 2 | padding: 0em 0em 0em 4em; 3 | margin-bottom: 5px; 4 | background: #f5f5f5 5px center/3em no-repeat; 5 | } 6 | 7 | .rmdcaution { 8 | background-image: url("../img/caution.png"); 9 | } 10 | -------------------------------------------------------------------------------- /docs/after.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 After the Unconf | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

10 After the Unconf

123 |

Encourage participants to blog about their experience at your unconf!

124 | 125 |
126 |
127 | 128 |
129 |
130 |
131 | 132 | 133 |
134 |
135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 176 | 177 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /docs/apps.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 5 All Things Applications | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

5 All Things Applications

123 |

The unconfs we have organized and attended have been “invitation-only.” This sounds a lot more highbrow than it actually is. All it means is that there is an application process specifically tailored to your event. The application process should be in place for two important reasons which are absolutely necessary to the success of your unconf. First and foremost, it keeps costs down. Since there is no fee to attend the unconf, you have to keep the size of the event small so that you can feed all participants with your limited budget. Second, it ensures that everyone at your unconf really wants to be there and will be committed to making the process enjoyable and productive for everyone. You’re trying to build community, and random folks walking in off the street just won’t help with that. Finally, it keeps your event focused. If you’re hosting an R-centered event, a bunch of exclusive Python users would distract from your mission. A lot of people will apply who just don’t fit with your goal, and that’s ok. You just need to make sure you are very clear in the mission of your event.

124 |

The Unconf Toolbox has a Shiny app, powered by Dropbox, to host the application form for your unconf. Some of the application questions are:

125 |
    126 |
  • What is your occupation?
  • 127 |
  • What field(s) are you applying R to?
  • 128 |
  • What do you hope to accomplish and/or learn at this unconf?
  • 129 |
130 |

You’ll want to tailor the questions to your specific unconf. Some things to consider: 131 | - How much R/Python/other coding experience are you looking for? Can beginners enjoy your unconf, too? 132 | - How much other experience are you looking for? e.g. academics or industry? 133 | - Are you in a specific application field? e.g. education, bioinformatics, etc.

134 |

It’s all about the bottom line. An unconf shouldn’t have a registration fee by definition, so an application is a necessary piece to keep costs controlled and participants engaged Hopefully, the Unconf Toolbox can provide others with the framework for hosting an unconf so everyone who wants to will get the chance to attend one soon in their area!

135 |
136 |

Timeline

137 |

You should open up applications to your event four months before the start date, and leave them open for about a month. Make sure that you have established an online presence already (website, Twitter, Github) so you have something to link to and a place to advertise. Consider advertising your event application to local businesses and colleges & universities to recruit local talent. It is also best to have some confirmed sponsors at this point, but it is not required. You should definitely be in talks with possible sponsors at the very least so that you have some idea of how many people you are going to be able to have at the event.

138 |

Once the applications are closed (after being open for about a month), you will have to assemble your committee to evaluate them. You should determine your evaluation criteria ahead of time if you want to have an unbiased

139 | 140 |
141 |
142 |
143 | 144 |
145 |
146 |
147 | 148 | 149 |
150 |
151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 192 | 193 | 194 | 195 | 196 | -------------------------------------------------------------------------------- /docs/css/custom.css: -------------------------------------------------------------------------------- 1 | .rmdcaution, .rmdimportant, .rmdnote, .rmdtip, .rmdwarning { 2 | padding: 0em 0em 0em 4em; 3 | margin-bottom: 5px; 4 | background: #f5f5f5 5px center/3em no-repeat; 5 | } 6 | 7 | .rmdcaution { 8 | background-image: url("../img/caution.png"); 9 | } 10 | -------------------------------------------------------------------------------- /docs/day0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 7 Day Zero | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

7 Day Zero

123 |

Some unconfs, such as the OzUnconf and the Uncoast Unconf, hosted “day zero” events to prepare participants for the collaboration and development that will occur on days one and two.

124 |

All of the materials for the Uncoast Unconf Day Zero are available on Github. These materials cover the following topics:

125 |
    126 |
  1. Collaboration with Git & Github in R
  2. 127 |
  3. R Project Workflows
  4. 128 |
  5. Creating R packages
  6. 129 |
  7. The Magic Tricks of HTML/CSS/JS
  8. 130 |
131 | 132 |
133 |
134 | 135 |
136 |
137 |
138 | 139 | 140 |
141 |
142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 183 | 184 | 185 | 186 | 187 | -------------------------------------------------------------------------------- /docs/day1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 8 Unconf Day One | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

8 Unconf Day One

123 |
124 |

Sample Schedule

125 |

Here is the schedule from the Chicago R Unconference, held Saturday & Sunday March 9-10, 2019.

126 |
127 |

The night before

128 |
    129 |
  • 7:00pm-9:00pm Informal get-together at a pub near the conference venue for folks coming in to town the night before the unconf starts.
  • 130 |
131 |
132 |

Day One

133 |
    134 |
  • 9:00-9:30am Arrive at the venue, grab food/coffee, mingle, get settled
  • 135 |
  • 9:30-10:15am Opening intros by organizers, overview of the day, icebreaker/participant intros
  • 136 |
  • 10:15am-noon Break up, move around, brainstorm ideas, join a project team
  • 137 |
  • noon Lunch arrives, mingle, socialize
  • 138 |
  • 12:30pm (Optional) Quick demos/lightning talks (2 talks, 15 min each, on Git/package setup) by organizers
  • 139 |
  • rest of day Work on projects (and mingle, socialize)
  • 140 |
  • 3:00pm Afternoon break
  • 141 |
  • 5:00pm Dinner arrives
  • 142 |
  • Evening Vacate space according to pre-arranged times with building security. (Optional) Move to a bar for drinks and socializing
  • 143 |
144 | 145 |
146 |
147 |
148 |
149 |
150 | 151 |
152 |
153 |
154 | 155 | 156 |
157 |
158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 199 | 200 | 201 | 202 | 203 | -------------------------------------------------------------------------------- /docs/day2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Unconf Day Two | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

9 Unconf Day Two

123 |

This day is intended to be flexible project work time/social time. Do what feels right to you.

124 |
125 |

Sample Schedule

126 |
    127 |
  • 9:00am Breakfast available
  • 128 |
  • noon Lunch available
  • 129 |
  • 12:30pm (Optional if interest) Quick demos/lightning talks by mentors or participants (sign up at event!)
  • 130 |
  • 3:00-3:30pm Wrap up projects
  • 131 |
  • 3:30pm-4:30pm Report out on projects (show the README for your package or issues that have been closed), concluding remarks by organizers
  • 132 |
  • 5pm Vacate space according to pre-arranged times with building security
  • 133 |
  • Evening (Optional) Group dinner with folks leaving town the following morning.
  • 134 |
135 | 136 |
137 |
138 |
139 | 140 |
141 |
142 |
143 | 144 | 145 |
146 |
147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 188 | 189 | 190 | 191 | 192 | -------------------------------------------------------------------------------- /docs/friday-march-8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 8 Friday, March 8 | How to Organize an R Unconference 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 | 98 |
99 | 100 |
101 |
102 | 107 | 108 |
109 |
110 | 111 |
112 |
113 |

8 Friday, March 8

114 |
    115 |
  • 7:00pm-9:00pm Informal get-together at Jolly Pumpkin for folks coming in to town Friday night
  • 116 |
117 |
118 |
119 | 120 |
121 |
122 |
123 | 124 | 125 |
126 |
127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /docs/img/caution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unconf-toolbox/unconf-guide/00683b44ce1751ea52608b620e0082f9f0256657/docs/img/caution.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | How to Organize an R Unconference 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 | 107 |
108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 | 125 |
126 |

Preface

127 |
128 |

129 | This guide is a work in progress! We’re very glad you’re here but please proceed with caution. If you would like to contribute to this project, please submit a pull request. 130 |

131 |
132 |

This guide came to be at the Chicago R Unconference, March 9-10, 2019. Many of the principles can be applied to any type of unconf, but our experience has been in attending rOpenSci unconferences and in hosting our own unconferences, the Chicago R Unconference and the Uncoast Unconference. These unconfs have been focused on developing tools for R, but you can substitute your favorite open source computing language as you wish.

133 |

134 | 148 | 149 |
150 |
151 | 152 |
153 |
154 |
155 | 156 | 157 |
158 |
159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unconf-toolbox/unconf-guide/00683b44ce1751ea52608b620e0082f9f0256657/docs/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/css/plugin-bookdown.css: -------------------------------------------------------------------------------- 1 | .book .book-header h1 { 2 | padding-left: 20px; 3 | padding-right: 20px; 4 | } 5 | .book .book-header.fixed { 6 | position: fixed; 7 | right: 0; 8 | top: 0; 9 | left: 0; 10 | border-bottom: 1px solid rgba(0,0,0,.07); 11 | } 12 | span.search-highlight { 13 | background-color: #ffff88; 14 | } 15 | @media (min-width: 600px) { 16 | .book.with-summary .book-header.fixed { 17 | left: 300px; 18 | } 19 | } 20 | @media (max-width: 1240px) { 21 | .book .book-body.fixed { 22 | top: 50px; 23 | } 24 | .book .book-body.fixed .body-inner { 25 | top: auto; 26 | } 27 | } 28 | @media (max-width: 600px) { 29 | .book.with-summary .book-header.fixed { 30 | left: calc(100% - 60px); 31 | min-width: 300px; 32 | } 33 | .book.with-summary .book-body { 34 | transform: none; 35 | left: calc(100% - 60px); 36 | min-width: 300px; 37 | } 38 | .book .book-body.fixed { 39 | top: 0; 40 | } 41 | } 42 | 43 | .book .book-body.fixed .body-inner { 44 | top: 50px; 45 | } 46 | .book .book-body .page-wrapper .page-inner section.normal sub, .book .book-body .page-wrapper .page-inner section.normal sup { 47 | font-size: 85%; 48 | } 49 | 50 | @media print { 51 | .book .book-summary, .book .book-body .book-header, .fa { 52 | display: none !important; 53 | } 54 | .book .book-body.fixed { 55 | left: 0px; 56 | } 57 | .book .book-body,.book .book-body .body-inner, .book.with-summary { 58 | overflow: visible !important; 59 | } 60 | } 61 | .kable_wrapper { 62 | border-spacing: 20px 0; 63 | border-collapse: separate; 64 | border: none; 65 | margin: auto; 66 | } 67 | .kable_wrapper > tbody > tr > td { 68 | vertical-align: top; 69 | } 70 | .book .book-body .page-wrapper .page-inner section.normal table tr.header { 71 | border-top-width: 2px; 72 | } 73 | .book .book-body .page-wrapper .page-inner section.normal table tr:last-child td { 74 | border-bottom-width: 2px; 75 | } 76 | .book .book-body .page-wrapper .page-inner section.normal table td, .book .book-body .page-wrapper .page-inner section.normal table th { 77 | border-left: none; 78 | border-right: none; 79 | } 80 | .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr, .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr > td { 81 | border-top: none; 82 | } 83 | .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr:last-child > td { 84 | border-bottom: none; 85 | } 86 | 87 | div.theorem, div.lemma, div.corollary, div.proposition, div.conjecture { 88 | font-style: italic; 89 | } 90 | span.theorem, span.lemma, span.corollary, span.proposition, span.conjecture { 91 | font-style: normal; 92 | } 93 | div.proof:after { 94 | content: "\25a2"; 95 | float: right; 96 | } 97 | .header-section-number { 98 | padding-right: .5em; 99 | } 100 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/css/plugin-fontsettings.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Theme 1 3 | */ 4 | .color-theme-1 .dropdown-menu { 5 | background-color: #111111; 6 | border-color: #7e888b; 7 | } 8 | .color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { 9 | border-bottom: 9px solid #111111; 10 | } 11 | .color-theme-1 .dropdown-menu .buttons { 12 | border-color: #7e888b; 13 | } 14 | .color-theme-1 .dropdown-menu .button { 15 | color: #afa790; 16 | } 17 | .color-theme-1 .dropdown-menu .button:hover { 18 | color: #73553c; 19 | } 20 | /* 21 | * Theme 2 22 | */ 23 | .color-theme-2 .dropdown-menu { 24 | background-color: #2d3143; 25 | border-color: #272a3a; 26 | } 27 | .color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { 28 | border-bottom: 9px solid #2d3143; 29 | } 30 | .color-theme-2 .dropdown-menu .buttons { 31 | border-color: #272a3a; 32 | } 33 | .color-theme-2 .dropdown-menu .button { 34 | color: #62677f; 35 | } 36 | .color-theme-2 .dropdown-menu .button:hover { 37 | color: #f4f4f5; 38 | } 39 | .book .book-header .font-settings .font-enlarge { 40 | line-height: 30px; 41 | font-size: 1.4em; 42 | } 43 | .book .book-header .font-settings .font-reduce { 44 | line-height: 30px; 45 | font-size: 1em; 46 | } 47 | .book.color-theme-1 .book-body { 48 | color: #704214; 49 | background: #f3eacb; 50 | } 51 | .book.color-theme-1 .book-body .page-wrapper .page-inner section { 52 | background: #f3eacb; 53 | } 54 | .book.color-theme-2 .book-body { 55 | color: #bdcadb; 56 | background: #1c1f2b; 57 | } 58 | .book.color-theme-2 .book-body .page-wrapper .page-inner section { 59 | background: #1c1f2b; 60 | } 61 | .book.font-size-0 .book-body .page-inner section { 62 | font-size: 1.2rem; 63 | } 64 | .book.font-size-1 .book-body .page-inner section { 65 | font-size: 1.4rem; 66 | } 67 | .book.font-size-2 .book-body .page-inner section { 68 | font-size: 1.6rem; 69 | } 70 | .book.font-size-3 .book-body .page-inner section { 71 | font-size: 2.2rem; 72 | } 73 | .book.font-size-4 .book-body .page-inner section { 74 | font-size: 4rem; 75 | } 76 | .book.font-family-0 { 77 | font-family: Georgia, serif; 78 | } 79 | .book.font-family-1 { 80 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 81 | } 82 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { 83 | color: #704214; 84 | } 85 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { 86 | color: inherit; 87 | } 88 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, 89 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, 90 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, 91 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, 92 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, 93 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { 94 | color: inherit; 95 | } 96 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, 97 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { 98 | border-color: inherit; 99 | } 100 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { 101 | color: inherit; 102 | } 103 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { 104 | background-color: inherit; 105 | } 106 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { 107 | border-color: #c4b29f; 108 | opacity: 0.9; 109 | } 110 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, 111 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { 112 | background: #fdf6e3; 113 | color: #657b83; 114 | border-color: #f8df9c; 115 | } 116 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { 117 | background-color: inherit; 118 | } 119 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, 120 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { 121 | border-color: #f5d06c; 122 | } 123 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { 124 | color: inherit; 125 | background-color: #fdf6e3; 126 | border-color: #444444; 127 | } 128 | .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { 129 | background-color: #fbeecb; 130 | } 131 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { 132 | color: #bdcadb; 133 | } 134 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { 135 | color: #3eb1d0; 136 | } 137 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, 138 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, 139 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, 140 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, 141 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, 142 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { 143 | color: #fffffa; 144 | } 145 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, 146 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { 147 | border-color: #373b4e; 148 | } 149 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { 150 | color: #373b4e; 151 | } 152 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { 153 | background-color: #373b4e; 154 | } 155 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { 156 | border-color: #373b4e; 157 | } 158 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, 159 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { 160 | color: #9dbed8; 161 | background: #2d3143; 162 | border-color: #2d3143; 163 | } 164 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { 165 | background-color: #282a39; 166 | } 167 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, 168 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { 169 | border-color: #3b3f54; 170 | } 171 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { 172 | color: #b6c2d2; 173 | background-color: #2d3143; 174 | border-color: #3b3f54; 175 | } 176 | .book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { 177 | background-color: #35394b; 178 | } 179 | .book.color-theme-1 .book-header { 180 | color: #afa790; 181 | background: transparent; 182 | } 183 | .book.color-theme-1 .book-header .btn { 184 | color: #afa790; 185 | } 186 | .book.color-theme-1 .book-header .btn:hover { 187 | color: #73553c; 188 | background: none; 189 | } 190 | .book.color-theme-1 .book-header h1 { 191 | color: #704214; 192 | } 193 | .book.color-theme-2 .book-header { 194 | color: #7e888b; 195 | background: transparent; 196 | } 197 | .book.color-theme-2 .book-header .btn { 198 | color: #3b3f54; 199 | } 200 | .book.color-theme-2 .book-header .btn:hover { 201 | color: #fffff5; 202 | background: none; 203 | } 204 | .book.color-theme-2 .book-header h1 { 205 | color: #bdcadb; 206 | } 207 | .book.color-theme-1 .book-body .navigation { 208 | color: #afa790; 209 | } 210 | .book.color-theme-1 .book-body .navigation:hover { 211 | color: #73553c; 212 | } 213 | .book.color-theme-2 .book-body .navigation { 214 | color: #383f52; 215 | } 216 | .book.color-theme-2 .book-body .navigation:hover { 217 | color: #fffff5; 218 | } 219 | /* 220 | * Theme 1 221 | */ 222 | .book.color-theme-1 .book-summary { 223 | color: #afa790; 224 | background: #111111; 225 | border-right: 1px solid rgba(0, 0, 0, 0.07); 226 | } 227 | .book.color-theme-1 .book-summary .book-search { 228 | background: transparent; 229 | } 230 | .book.color-theme-1 .book-summary .book-search input, 231 | .book.color-theme-1 .book-summary .book-search input:focus { 232 | border: 1px solid transparent; 233 | } 234 | .book.color-theme-1 .book-summary ul.summary li.divider { 235 | background: #7e888b; 236 | box-shadow: none; 237 | } 238 | .book.color-theme-1 .book-summary ul.summary li i.fa-check { 239 | color: #33cc33; 240 | } 241 | .book.color-theme-1 .book-summary ul.summary li.done > a { 242 | color: #877f6a; 243 | } 244 | .book.color-theme-1 .book-summary ul.summary li a, 245 | .book.color-theme-1 .book-summary ul.summary li span { 246 | color: #877f6a; 247 | background: transparent; 248 | font-weight: normal; 249 | } 250 | .book.color-theme-1 .book-summary ul.summary li.active > a, 251 | .book.color-theme-1 .book-summary ul.summary li a:hover { 252 | color: #704214; 253 | background: transparent; 254 | font-weight: normal; 255 | } 256 | /* 257 | * Theme 2 258 | */ 259 | .book.color-theme-2 .book-summary { 260 | color: #bcc1d2; 261 | background: #2d3143; 262 | border-right: none; 263 | } 264 | .book.color-theme-2 .book-summary .book-search { 265 | background: transparent; 266 | } 267 | .book.color-theme-2 .book-summary .book-search input, 268 | .book.color-theme-2 .book-summary .book-search input:focus { 269 | border: 1px solid transparent; 270 | } 271 | .book.color-theme-2 .book-summary ul.summary li.divider { 272 | background: #272a3a; 273 | box-shadow: none; 274 | } 275 | .book.color-theme-2 .book-summary ul.summary li i.fa-check { 276 | color: #33cc33; 277 | } 278 | .book.color-theme-2 .book-summary ul.summary li.done > a { 279 | color: #62687f; 280 | } 281 | .book.color-theme-2 .book-summary ul.summary li a, 282 | .book.color-theme-2 .book-summary ul.summary li span { 283 | color: #c1c6d7; 284 | background: transparent; 285 | font-weight: 600; 286 | } 287 | .book.color-theme-2 .book-summary ul.summary li.active > a, 288 | .book.color-theme-2 .book-summary ul.summary li a:hover { 289 | color: #f4f4f5; 290 | background: #252737; 291 | font-weight: 600; 292 | } 293 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/css/plugin-search.css: -------------------------------------------------------------------------------- 1 | .book .book-summary .book-search { 2 | padding: 6px; 3 | background: transparent; 4 | position: absolute; 5 | top: -50px; 6 | left: 0px; 7 | right: 0px; 8 | transition: top 0.5s ease; 9 | } 10 | .book .book-summary .book-search input, 11 | .book .book-summary .book-search input:focus, 12 | .book .book-summary .book-search input:hover { 13 | width: 100%; 14 | background: transparent; 15 | border: 1px solid #ccc; 16 | box-shadow: none; 17 | outline: none; 18 | line-height: 22px; 19 | padding: 7px 4px; 20 | color: inherit; 21 | box-sizing: border-box; 22 | } 23 | .book.with-search .book-summary .book-search { 24 | top: 0px; 25 | } 26 | .book.with-search .book-summary ul.summary { 27 | top: 50px; 28 | } 29 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/css/plugin-table.css: -------------------------------------------------------------------------------- 1 | .book .book-body .page-wrapper .page-inner section.normal table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}.book .book-body .page-wrapper .page-inner section.normal table td,.book .book-body .page-wrapper .page-inner section.normal table th{padding:6px 13px;border:1px solid #ddd}.book .book-body .page-wrapper .page-inner section.normal table tr{background-color:#fff;border-top:1px solid #ccc}.book .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n){background-color:#f8f8f8}.book .book-body .page-wrapper .page-inner section.normal table th{font-weight:700} 2 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/js/jquery.highlight.js: -------------------------------------------------------------------------------- 1 | gitbook.require(["jQuery"], function(jQuery) { 2 | 3 | /* 4 | * jQuery Highlight plugin 5 | * 6 | * Based on highlight v3 by Johann Burkard 7 | * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html 8 | * 9 | * Code a little bit refactored and cleaned (in my humble opinion). 10 | * Most important changes: 11 | * - has an option to highlight only entire words (wordsOnly - false by default), 12 | * - has an option to be case sensitive (caseSensitive - false by default) 13 | * - highlight element tag and class names can be specified in options 14 | * 15 | * Copyright (c) 2009 Bartek Szopka 16 | * 17 | * Licensed under MIT license. 18 | * 19 | */ 20 | 21 | jQuery.extend({ 22 | highlight: function (node, re, nodeName, className) { 23 | if (node.nodeType === 3) { 24 | var match = node.data.match(re); 25 | if (match) { 26 | var highlight = document.createElement(nodeName || 'span'); 27 | highlight.className = className || 'highlight'; 28 | var wordNode = node.splitText(match.index); 29 | wordNode.splitText(match[0].length); 30 | var wordClone = wordNode.cloneNode(true); 31 | highlight.appendChild(wordClone); 32 | wordNode.parentNode.replaceChild(highlight, wordNode); 33 | return 1; //skip added node in parent 34 | } 35 | } else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children 36 | !/(script|style)/i.test(node.tagName) && // ignore script and style nodes 37 | !(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted 38 | for (var i = 0; i < node.childNodes.length; i++) { 39 | i += jQuery.highlight(node.childNodes[i], re, nodeName, className); 40 | } 41 | } 42 | return 0; 43 | } 44 | }); 45 | 46 | jQuery.fn.unhighlight = function (options) { 47 | var settings = { className: 'highlight', element: 'span' }; 48 | jQuery.extend(settings, options); 49 | 50 | return this.find(settings.element + "." + settings.className).each(function () { 51 | var parent = this.parentNode; 52 | parent.replaceChild(this.firstChild, this); 53 | parent.normalize(); 54 | }).end(); 55 | }; 56 | 57 | jQuery.fn.highlight = function (words, options) { 58 | var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false }; 59 | jQuery.extend(settings, options); 60 | 61 | if (words.constructor === String) { 62 | words = [words]; 63 | } 64 | words = jQuery.grep(words, function(word, i){ 65 | return word !== ''; 66 | }); 67 | words = jQuery.map(words, function(word, i) { 68 | return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 69 | }); 70 | if (words.length === 0) { return this; } 71 | 72 | var flag = settings.caseSensitive ? "" : "i"; 73 | var pattern = "(" + words.join("|") + ")"; 74 | if (settings.wordsOnly) { 75 | pattern = "\\b" + pattern + "\\b"; 76 | } 77 | var re = new RegExp(pattern, flag); 78 | 79 | return this.each(function () { 80 | jQuery.highlight(this, re, settings.element, settings.className); 81 | }); 82 | }; 83 | 84 | }); 85 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/js/plugin-bookdown.js: -------------------------------------------------------------------------------- 1 | gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { 2 | 3 | var gs = gitbook.storage; 4 | 5 | gitbook.events.bind("start", function(e, config) { 6 | 7 | // add the Edit button (edit on Github) 8 | var edit = config.edit; 9 | if (edit && edit.link) gitbook.toolbar.createButton({ 10 | icon: 'fa fa-edit', 11 | label: edit.text || 'Edit', 12 | position: 'left', 13 | onClick: function(e) { 14 | e.preventDefault(); 15 | window.open(edit.link); 16 | } 17 | }); 18 | 19 | // add the History button (file history on Github) 20 | var history = config.history; 21 | if (history && history.link) gitbook.toolbar.createButton({ 22 | icon: 'fa fa-history', 23 | label: history.text || 'History', 24 | position: 'left', 25 | onClick: function(e) { 26 | e.preventDefault(); 27 | window.open(history.link); 28 | } 29 | }); 30 | 31 | var down = config.download; 32 | var normalizeDownload = function() { 33 | if (!down || !(down instanceof Array) || down.length === 0) return; 34 | if (down[0] instanceof Array) return down; 35 | return $.map(down, function(file, i) { 36 | return [[file, file.replace(/.*[.]/g, '').toUpperCase()]]; 37 | }); 38 | }; 39 | down = normalizeDownload(down); 40 | if (down) if (down.length === 1 && /[.]pdf$/.test(down[0][0])) { 41 | gitbook.toolbar.createButton({ 42 | icon: 'fa fa-file-pdf-o', 43 | label: down[0][1], 44 | position: 'left', 45 | onClick: function(e) { 46 | e.preventDefault(); 47 | window.open(down[0][0]); 48 | } 49 | }); 50 | } else { 51 | gitbook.toolbar.createButton({ 52 | icon: 'fa fa-download', 53 | label: 'Download', 54 | position: 'left', 55 | dropdown: $.map(down, function(item, i) { 56 | return { 57 | text: item[1], 58 | onClick: function(e) { 59 | e.preventDefault(); 60 | window.open(item[0]); 61 | } 62 | }; 63 | }) 64 | }); 65 | } 66 | 67 | // highlight the current section in TOC 68 | var href = window.location.pathname; 69 | href = href.substr(href.lastIndexOf('/') + 1); 70 | if (href === '') href = 'index.html'; 71 | var li = $('a[href^="' + href + location.hash + '"]').parent('li.chapter').first(); 72 | var summary = $('ul.summary'), chaps = summary.find('li.chapter'); 73 | if (li.length === 0) li = chaps.first(); 74 | li.addClass('active'); 75 | chaps.on('click', function(e) { 76 | chaps.removeClass('active'); 77 | $(this).addClass('active'); 78 | gs.set('tocScrollTop', summary.scrollTop()); 79 | }); 80 | 81 | var toc = config.toc; 82 | // collapse TOC items that are not for the current chapter 83 | if (toc && toc.collapse) (function() { 84 | var type = toc.collapse; 85 | if (type === 'none') return; 86 | if (type !== 'section' && type !== 'subsection') return; 87 | // sections under chapters 88 | var toc_sub = summary.children('li[data-level]').children('ul'); 89 | if (type === 'section') { 90 | toc_sub.hide() 91 | .parent().has(li).children('ul').show(); 92 | } else { 93 | toc_sub.children('li').children('ul').hide() 94 | .parent().has(li).children('ul').show(); 95 | } 96 | li.children('ul').show(); 97 | var toc_sub2 = toc_sub.children('li'); 98 | if (type === 'section') toc_sub2.children('ul').hide(); 99 | summary.children('li[data-level]').find('a') 100 | .on('click.bookdown', function(e) { 101 | if (href === $(this).attr('href').replace(/#.*/, '')) 102 | $(this).parent('li').children('ul').toggle(); 103 | }); 104 | })(); 105 | 106 | // add tooltips to the 's that are truncated 107 | $('a').each(function(i, el) { 108 | if (el.offsetWidth >= el.scrollWidth) return; 109 | if (typeof el.title === 'undefined') return; 110 | el.title = el.text; 111 | }); 112 | 113 | // restore TOC scroll position 114 | var pos = gs.get('tocScrollTop'); 115 | if (typeof pos !== 'undefined') summary.scrollTop(pos); 116 | 117 | // highlight the TOC item that has same text as the heading in view as scrolling 118 | if (toc && toc.scroll_highlight !== false) (function() { 119 | // scroll the current TOC item into viewport 120 | var ht = $(window).height(), rect = li[0].getBoundingClientRect(); 121 | if (rect.top >= ht || rect.top <= 0 || rect.bottom <= 0) { 122 | summary.scrollTop(li[0].offsetTop); 123 | } 124 | // current chapter TOC items 125 | var items = $('a[href^="' + href + '"]').parent('li.chapter'), 126 | m = items.length; 127 | if (m === 0) { 128 | items = summary.find('li.chapter'); 129 | m = items.length; 130 | } 131 | if (m === 0) return; 132 | // all section titles on current page 133 | var hs = bookInner.find('.page-inner').find('h1,h2,h3'), n = hs.length, 134 | ts = hs.map(function(i, el) { return $(el).text(); }); 135 | if (n === 0) return; 136 | var scrollHandler = function(e) { 137 | var ht = $(window).height(); 138 | clearTimeout($.data(this, 'scrollTimer')); 139 | $.data(this, 'scrollTimer', setTimeout(function() { 140 | // find the first visible title in the viewport 141 | for (var i = 0; i < n; i++) { 142 | var rect = hs[i].getBoundingClientRect(); 143 | if (rect.top >= 0 && rect.bottom <= ht) break; 144 | } 145 | if (i === n) return; 146 | items.removeClass('active'); 147 | for (var j = 0; j < m; j++) { 148 | if (items.eq(j).children('a').first().text() === ts[i]) break; 149 | } 150 | if (j === m) j = 0; // highlight the chapter title 151 | // search bottom-up for a visible TOC item to highlight; if an item is 152 | // hidden, we check if its parent is visible, and so on 153 | while (j > 0 && items.eq(j).is(':hidden')) j--; 154 | items.eq(j).addClass('active'); 155 | }, 250)); 156 | }; 157 | bookInner.on('scroll.bookdown', scrollHandler); 158 | bookBody.on('scroll.bookdown', scrollHandler); 159 | })(); 160 | 161 | // do not refresh the page if the TOC item points to the current page 162 | $('a[href="' + href + '"]').parent('li.chapter').children('a') 163 | .on('click', function(e) { 164 | bookInner.scrollTop(0); 165 | bookBody.scrollTop(0); 166 | return false; 167 | }); 168 | 169 | var toolbar = config.toolbar; 170 | if (!toolbar || toolbar.position !== 'static') { 171 | var bookHeader = $('.book-header'); 172 | bookBody.addClass('fixed'); 173 | bookHeader.addClass('fixed') 174 | .css('background-color', bookBody.css('background-color')) 175 | .on('click.bookdown', function(e) { 176 | // the theme may have changed after user clicks the theme button 177 | bookHeader.css('background-color', bookBody.css('background-color')); 178 | }); 179 | } 180 | 181 | }); 182 | 183 | gitbook.events.bind("page.change", function(e) { 184 | // store TOC scroll position 185 | var summary = $('ul.summary'); 186 | gs.set('tocScrollTop', summary.scrollTop()); 187 | }); 188 | 189 | var bookBody = $('.book-body'), bookInner = bookBody.find('.body-inner'); 190 | var chapterTitle = function() { 191 | return bookInner.find('.page-inner').find('h1,h2').first().text(); 192 | }; 193 | var bookTitle = function() { 194 | return bookInner.find('.book-header > h1').first().text(); 195 | }; 196 | var saveScrollPos = function(e) { 197 | // save scroll position before page is reloaded 198 | gs.set('bodyScrollTop', { 199 | body: bookBody.scrollTop(), 200 | inner: bookInner.scrollTop(), 201 | focused: document.hasFocus(), 202 | title: chapterTitle() 203 | }); 204 | }; 205 | $(document).on('servr:reload', saveScrollPos); 206 | 207 | // check if the page is loaded in an iframe (e.g. the RStudio preview window) 208 | var inIFrame = function() { 209 | var inIframe = true; 210 | try { inIframe = window.self !== window.top; } catch (e) {} 211 | return inIframe; 212 | }; 213 | $(window).on('blur unload', function(e) { 214 | if (inIFrame()) saveScrollPos(e); 215 | gs.set('bookTitle', bookTitle()); 216 | }); 217 | 218 | $(function(e) { 219 | if (gs.get('bookTitle', '') !== bookTitle()) localStorage.clear(); 220 | var pos = gs.get('bodyScrollTop'); 221 | if (pos) { 222 | if (pos.title === chapterTitle()) { 223 | if (pos.body !== 0) bookBody.scrollTop(pos.body); 224 | if (pos.inner !== 0) bookInner.scrollTop(pos.inner); 225 | } 226 | if (pos.focused) bookInner.find('.page-wrapper').focus(); 227 | } 228 | // clear book body scroll position 229 | gs.remove('bodyScrollTop'); 230 | }); 231 | 232 | }); 233 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/js/plugin-fontsettings.js: -------------------------------------------------------------------------------- 1 | gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { 2 | var fontState; 3 | 4 | var THEMES = { 5 | "white": 0, 6 | "sepia": 1, 7 | "night": 2 8 | }; 9 | 10 | var FAMILY = { 11 | "serif": 0, 12 | "sans": 1 13 | }; 14 | 15 | // Save current font settings 16 | function saveFontSettings() { 17 | gitbook.storage.set("fontState", fontState); 18 | update(); 19 | } 20 | 21 | // Increase font size 22 | function enlargeFontSize(e) { 23 | e.preventDefault(); 24 | if (fontState.size >= 4) return; 25 | 26 | fontState.size++; 27 | saveFontSettings(); 28 | }; 29 | 30 | // Decrease font size 31 | function reduceFontSize(e) { 32 | e.preventDefault(); 33 | if (fontState.size <= 0) return; 34 | 35 | fontState.size--; 36 | saveFontSettings(); 37 | }; 38 | 39 | // Change font family 40 | function changeFontFamily(index, e) { 41 | e.preventDefault(); 42 | 43 | fontState.family = index; 44 | saveFontSettings(); 45 | }; 46 | 47 | // Change type of color 48 | function changeColorTheme(index, e) { 49 | e.preventDefault(); 50 | 51 | var $book = $(".book"); 52 | 53 | if (fontState.theme !== 0) 54 | $book.removeClass("color-theme-"+fontState.theme); 55 | 56 | fontState.theme = index; 57 | if (fontState.theme !== 0) 58 | $book.addClass("color-theme-"+fontState.theme); 59 | 60 | saveFontSettings(); 61 | }; 62 | 63 | function update() { 64 | var $book = gitbook.state.$book; 65 | 66 | $(".font-settings .font-family-list li").removeClass("active"); 67 | $(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active"); 68 | 69 | $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); 70 | $book.addClass("font-size-"+fontState.size); 71 | $book.addClass("font-family-"+fontState.family); 72 | 73 | if(fontState.theme !== 0) { 74 | $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); 75 | $book.addClass("color-theme-"+fontState.theme); 76 | } 77 | }; 78 | 79 | function init(config) { 80 | var $bookBody, $book; 81 | 82 | //Find DOM elements. 83 | $book = gitbook.state.$book; 84 | $bookBody = $book.find(".book-body"); 85 | 86 | // Instantiate font state object 87 | fontState = gitbook.storage.get("fontState", { 88 | size: config.size || 2, 89 | family: FAMILY[config.family || "sans"], 90 | theme: THEMES[config.theme || "white"] 91 | }); 92 | 93 | update(); 94 | }; 95 | 96 | 97 | gitbook.events.bind("start", function(e, config) { 98 | var opts = config.fontsettings; 99 | 100 | // Create buttons in toolbar 101 | gitbook.toolbar.createButton({ 102 | icon: 'fa fa-font', 103 | label: 'Font Settings', 104 | className: 'font-settings', 105 | dropdown: [ 106 | [ 107 | { 108 | text: 'A', 109 | className: 'font-reduce', 110 | onClick: reduceFontSize 111 | }, 112 | { 113 | text: 'A', 114 | className: 'font-enlarge', 115 | onClick: enlargeFontSize 116 | } 117 | ], 118 | [ 119 | { 120 | text: 'Serif', 121 | onClick: _.partial(changeFontFamily, 0) 122 | }, 123 | { 124 | text: 'Sans', 125 | onClick: _.partial(changeFontFamily, 1) 126 | } 127 | ], 128 | [ 129 | { 130 | text: 'White', 131 | onClick: _.partial(changeColorTheme, 0) 132 | }, 133 | { 134 | text: 'Sepia', 135 | onClick: _.partial(changeColorTheme, 1) 136 | }, 137 | { 138 | text: 'Night', 139 | onClick: _.partial(changeColorTheme, 2) 140 | } 141 | ] 142 | ] 143 | }); 144 | 145 | 146 | // Init current settings 147 | init(opts); 148 | }); 149 | }); 150 | 151 | 152 | -------------------------------------------------------------------------------- /docs/libs/gitbook-2.6.7/js/plugin-search.js: -------------------------------------------------------------------------------- 1 | gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { 2 | var index = null; 3 | var $searchInput, $searchLabel, $searchForm; 4 | var $highlighted, hi = 0, hiOpts = { className: 'search-highlight' }; 5 | var collapse = false; 6 | 7 | // Use a specific index 8 | function loadIndex(data) { 9 | // [Yihui] In bookdown, I use a character matrix to store the chapter 10 | // content, and the index is dynamically built on the client side. 11 | // Gitbook prebuilds the index data instead: https://github.com/GitbookIO/plugin-search 12 | // We can certainly do that via R packages V8 and jsonlite, but let's 13 | // see how slow it really is before improving it. On the other hand, 14 | // lunr cannot handle non-English text very well, e.g. the default 15 | // tokenizer cannot deal with Chinese text, so we may want to replace 16 | // lunr with a dumb simple text matching approach. 17 | index = lunr(function () { 18 | this.ref('url'); 19 | this.field('title', { boost: 10 }); 20 | this.field('body'); 21 | }); 22 | data.map(function(item) { 23 | index.add({ 24 | url: item[0], 25 | title: item[1], 26 | body: item[2] 27 | }); 28 | }); 29 | } 30 | 31 | // Fetch the search index 32 | function fetchIndex() { 33 | return $.getJSON(gitbook.state.basePath+"/search_index.json") 34 | .then(loadIndex); // [Yihui] we need to use this object later 35 | } 36 | 37 | // Search for a term and return results 38 | function search(q) { 39 | if (!index) return; 40 | 41 | var results = _.chain(index.search(q)) 42 | .map(function(result) { 43 | var parts = result.ref.split("#"); 44 | return { 45 | path: parts[0], 46 | hash: parts[1] 47 | }; 48 | }) 49 | .value(); 50 | 51 | // [Yihui] Highlight the search keyword on current page 52 | hi = 0; 53 | $highlighted = results.length === 0 ? undefined : $('.page-inner') 54 | .unhighlight(hiOpts).highlight(q, hiOpts).find('span.search-highlight'); 55 | scrollToHighlighted(); 56 | toggleTOC(results.length > 0); 57 | 58 | return results; 59 | } 60 | 61 | // [Yihui] Scroll the chapter body to the i-th highlighted string 62 | function scrollToHighlighted() { 63 | if (!$highlighted) return; 64 | var n = $highlighted.length; 65 | if (n === 0) return; 66 | var $p = $highlighted.eq(hi), p = $p[0], rect = p.getBoundingClientRect(); 67 | if (rect.top < 0 || rect.bottom > $(window).height()) { 68 | ($(window).width() >= 1240 ? $('.body-inner') : $('.book-body')) 69 | .scrollTop(p.offsetTop - 100); 70 | } 71 | $highlighted.css('background-color', ''); 72 | // an orange background color on the current item and removed later 73 | $p.css('background-color', 'orange'); 74 | setTimeout(function() { 75 | $p.css('background-color', ''); 76 | }, 2000); 77 | } 78 | 79 | // [Yihui] Expand/collapse TOC 80 | function toggleTOC(show) { 81 | if (!collapse) return; 82 | var toc_sub = $('ul.summary').children('li[data-level]').children('ul'); 83 | if (show) return toc_sub.show(); 84 | var href = window.location.pathname; 85 | href = href.substr(href.lastIndexOf('/') + 1); 86 | if (href === '') href = 'index.html'; 87 | var li = $('a[href^="' + href + location.hash + '"]').parent('li.chapter').first(); 88 | toc_sub.hide().parent().has(li).children('ul').show(); 89 | li.children('ul').show(); 90 | } 91 | 92 | // Create search form 93 | function createForm(value) { 94 | if ($searchForm) $searchForm.remove(); 95 | if ($searchLabel) $searchLabel.remove(); 96 | if ($searchInput) $searchInput.remove(); 97 | 98 | $searchForm = $('
', { 99 | 'class': 'book-search', 100 | 'role': 'search' 101 | }); 102 | 103 | $searchLabel = $('
62 | 63 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

4 Funding an Unconf

123 |

After you have your physical space and your website, you need to start finding funding for the event.

124 |
125 |

Possible Sponsors

126 |

Use your network! Reach out to current and past employers, ask professors if they know of programs at their university that can assist you, and contact local companies looking to recruit data science talent.

127 |

It is helpful to possible sponsors to have a prepared prospectus with various levels of funding that garner different types of advertisement at your event. For example, set a minimum amount of funding to get the company’s logo on the website. For larger sponsors, they may be able to pay for a meal at the unconf, which would require you placing signage and making an announcement the company sponsored the meal. One particularly nice perk of sponsorship could be reserving a spot for an employee of the company to attend the event without having to apply. Other possible benefits include putting up signage in the venue, opening the event with a presentation where you thank the sponsors, and tweeting about the sponsors thanking them for their support.

128 |
129 |
130 |

Grant funding possibilities

131 | 135 |
136 |
137 |

Things to buy

138 |

For an event of about 30-40 people, you’ll need about $5,000 (in 2018 USD) to secure food for two days. You’ll need more money to be able to do more things, such as:

139 |
    140 |
  • Funding travel and/or lodging for students. This takes a LOT of money.
  • 141 |
  • T-shirts
  • 142 |
  • Stickers from stickermule.com
  • 143 |
  • Office supplies (paper, pens, whiteboards & markers, etc.)
  • 144 |
  • Name Tags
  • 145 |
146 | 147 |
148 |
149 |
150 | 151 |
152 |
153 |
154 | 155 | 156 |
157 |
158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 199 | 200 | 201 | 202 | 203 | -------------------------------------------------------------------------------- /docs/online.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 3 Online Infrastructure | How to Organize an R Unconference 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 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

3 Online Infrastructure

123 |
124 |

“I think web therefore I am.” - Descartes Xie

125 |
126 |

Your conference has to exist on the internet first before it can exist in reality!

127 |
128 |

Github Organization

129 |

Create a Github Organization for your unconf. The organization can host the repo for your website, a place to post project ideas before the event, a Wiki, and a repo for every project that is started at your unconf.

130 |

During your conference, you can use the issues explorer from the Unconf Toolbox for your participants to easily explore possible projects and see when projects are closed.

131 |
132 |
133 |

Website

134 |

Having a website for your conference is the most important piece of your online infrastructure. It legitimizes your event, hosts your branding, and shows potential sponsors that you’re serious and that their money will be put to good use.

135 |

In the Unconf Toolbox, we have a website skeleton that is under an open source license that you are welcome to use as an example. (You must include the license with it.) You can also branch out on your own and try out blogdown. This is what I (ST) did for the Uncoast Unconf website, but this is one of those “do as I say, not as I do” moments, so proceed with caution!

136 |
137 |
138 |

Twitter

139 |

To create a Twitter account, you’ll also need an email account. Consider creating a Gmail account specifically for the event. With this email account you can also send out mailings to your applicants and participants. Check out the communication repository in the Unconf Toolbox. You should also create a conference hashtag so that unconf attendees can easily share their work with each other and the community.

140 | 141 |
142 |
143 |
144 | 145 |
146 |
147 |
148 | 149 | 150 |
151 |
152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /docs/people.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 6 People have needs | How to Organize an R Unconference 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 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

6 People have needs

123 |

Code of Conduct:

124 |

A code of conduct is vital to ensure that everyone at your event is safe and feels welcome. A sample code of conduct is posted in the Unconf Toolbox here.

125 |

Space considerations:

126 |
    127 |
  • Gender neutral bathrooms
  • 128 |
  • Quiet room for meditation, prayer, etc.
  • 129 |
  • Nursing moms room
  • 130 |
  • Wheelchair accessibility
  • 131 |
  • Child care
  • 132 |
133 |

Food:

134 |
    135 |
  • Ask people their dietary needs once you know they’re coming to the conference. You’ll need to think about: 136 |
      137 |
    • Religious considerations (Kosher, Halal)
    • 138 |
    • Vegans & Vegetarians
    • 139 |
    • Others: gluten intolerance (Celiac), lactose intolerance, etc.
    • 140 |
  • 141 |
  • Check with the venue about what food is allowed. Some places will only allow one company or set of companies
  • 142 |
143 |

Lodging:

144 |
    145 |
  • Reserve hotel rooms two months ahead of the conference
  • 146 |
  • Ask people if they are willing to share rooms with other attendees to save money
  • 147 |
148 | 149 |
150 |
151 | 152 |
153 |
154 |
155 | 156 | 157 |
158 |
159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /docs/physical.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 2 Physical Infrastructure | How to Organize an R Unconference 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 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

2 Physical Infrastructure

123 |

This section is all about the physical space & time needed to host an unconf.

124 |
125 |

Where is your unconf?

126 |

First things first, you need a space. The space should be the first thing you acquire, because without a space, you cannot have an unconf. This should be a space large enough for your conference, typically 30-50 people. There should be working space for all participants: chairs, table surface, whiteboard & dry erase markers, paper & pens. The location should also have strong WiFi that everyone can access and plenty of electrical outlets for charging laptops. See Chapter 6 for more details about what your space should have.

127 |

Some ideas for unconf spaces are:

128 |
    129 |
  • Large meeting rooms or classrooms at academic institutions
  • 130 |
  • Co-working spaces
  • 131 |
  • Meeting rooms that your employer can rent out or donate to you for two to three days
  • 132 |
133 |

Ideally, the space should be within walking distance of one or more hotels so that your participants can easily go to and fro. If your location is not near lodging, rent a van that can shuttle participant from the hotel to the venue, or consider asking participants to carpool between the venue and the hotel(s).

134 |

When you check out the space, make sure that you know where the dumpsters are. You’ll need to take out the trash! ♻️

135 |

You should have the space secured at least 4-6 months ahead of time.

136 |
137 |
138 |

When is your unconf?

139 |

Date considerations:

140 |
    141 |
  • Weekends are optimal for people whose jobs wouldn’t allow for them to attend this type of event during the week. However, you will also be asking folks to give up one of their weekends.
  • 142 |
  • Weekdays require people to take time off of work, but they may be able to get their employer to fund their travel and lodging. There are also weekday obligations, such as getting children to and from school, that may limit some participants’ ability to fully participate.
  • 143 |
  • Do your best to avoid major religious holidays. Consult the interfaith calendar.
  • 144 |
  • If you are hosting in the US or Canada on a weekend, avoid daylight savings time so that people aren’t losing an hour of sleep! 😴
  • 145 |
146 |
147 |
148 |

Where will people stay?

149 |

Try to secure a block of rooms at a nearby hotel at least two months before your event. It’s much easier to release a few rooms later on than it is to create new hotels rooms out of nothing!

150 | 151 |
152 |
153 |
154 | 155 |
156 |
157 |
158 | 159 | 160 |
161 |
162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 203 | 204 | 205 | 206 | 207 | -------------------------------------------------------------------------------- /docs/references.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | References | How to Organize an R Unconference 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 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

References

123 | 124 |
125 |
126 |

O’Reilly, Tim. 2018. “The True Inventor of the Unconference.” March 2018. https://www.linkedin.com/pulse/true-inventor-unconference-tim-o-reilly/.

127 |
128 |
129 |
130 |
131 | 132 |
133 |
134 |
135 | 136 | 137 |
138 |
139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 180 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /docs/saturday-march-9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Saturday, March 9 | How to Organize an R Unconference 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 | 99 | 100 |
101 |
102 | 107 | 108 |
109 |
110 | 111 |
112 |
113 |

9 Saturday, March 9

114 |
    115 |
  • 9:00-9:30am Arrive at Center for Spatial Data Science (5735 S Ellis Ave, go in the door that says “Searle Chemical Laboratory”, one of us will be inside to greet you and help you find our space on the 2nd floor!), grab food/coffee, mingle, get settled
  • 116 |
  • 9:30-10:15am Opening intros by organizers, overview of the day, icebreaker/participant intros
  • 117 |
  • 10:15am-noon Break up, move around, brainstorm ideas, join a project team
  • 118 |
  • noon Lunch arrives, mingle, socialize
  • 119 |
  • 12:30pm (Optional) Quick demos/lightning talks (2 talks, 15 min each, on Git/package setup) by organizers
  • 120 |
  • rest of day Work on projects (and mingle, socialize)
  • 121 |
  • 3:00pm Afternoon break
  • 122 |
  • 5:00pm Dinner arrives
  • 123 |
  • 6:00pm (Optional) Walk over to UChicago Pub, vacate space
  • 124 |
125 |
126 |
127 | 128 |
129 |
130 |
131 | 132 | 133 |
134 |
135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 176 | 177 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /docs/sunday-march-10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 Sunday, March 10 | How to Organize an R Unconference 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 | 99 | 100 |
101 |
102 | 107 | 108 |
109 |
110 | 111 |
112 |
113 |

10 Sunday, March 10

114 |

This day is intended to be flexible project work time/social time. Do what feels right to you.

115 |
    116 |
  • 9:00am Breakfast available (try to arrive by 9:30am)
  • 117 |
  • noon Lunch available
  • 118 |
  • 12:30pm (Optional if interest) Quick demos/lightning talks by mentors or participants (sign up at event!)
  • 119 |
  • 3:00-3:30pm Wrap up projects
  • 120 |
  • 3:30pm-4:30pm Report out on projects (show the README for your package or issues that have been closed), concluding remarks by organizers
  • 121 |
  • 5pm Vacate space
  • 122 |
123 | 124 |
125 |
126 | 127 |
128 |
129 |
130 | 131 | 132 |
133 |
134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /docs/wat.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 What is an “Unconf” and why should YOU organize one? | How to Organize an R Unconference 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 | 108 | 109 |
110 |
111 | 116 | 117 |
118 |
119 | 120 |
121 |
122 |

1 What is an “Unconf” and why should YOU organize one?

123 |
124 |

What is an “unconference”?

125 |

An unconference is a very well-named event. The unconf takes the traditional highly structured conference format and turns it on its head. There are no expensive registration fees, formal abstract submissions, or time-limited talks. To quote one organizer of a large unconferece, “We invite a couple of hundred really interesting people for an event without a program, which emphasizes interaction between the participants rather than on prepared presentations” (O’Reilly 2018).

126 |

According to O’Reilly (2018) and Andrea Wulf, the first “unconference” was held back in 1828 in Germany. It was put on by Alexander von Humboldt, the Prussian Polymath. For this 19th century event,

127 |
128 |

“he invited hundreds of scientists […] to attend a conference in Berlin. Unlike previous such meetings at which scientists had endlessly presented papers about their own work, Humboldt put together a very different programme. Rather than being talked at, he wanted the scientists to talk with each other. There were convivial meals and social outings […]. Meetings were held among botanical, zoological and fossil collections as well as at the university and the botanical garden. Humboldt encouraged scientists to gather in small groups and across disciplines. He connected the visiting scientists on a more personal level, ensuring that they forged friendships that would foster close networks. He envisaged an interdisciplinary [coalition] of scientists who would exchange and share knowledge.”

129 |
130 |

This old idea is new again in the 21st century tech industry. Large unconferences attract web developers, data scientists, and other tech-minded folks. They often are similar to “hackathons” where developers and designers come together to create a functioning software product during a short period of time, usually only a few days.

131 |
132 |
133 |

What is the history of the R unconf?

134 |

The mother of the Chicago R Unconference and the Uncoast Unconference is the rOpenSci unconference, or #runconf. It began in 2014, and has been held every year since. It has also spurred the OzUnconf event in Australia, first held in 2016.

135 |

At these events, attendees create new R packages, make Shiny Apps, write documentation (like this book!), and contribute to existing packages. Check out some of the previous projects below:

136 | 144 |
145 |

146 | This guide is a work in progress! If you’d like to contribute to the list above, please submit a pull request. 147 |

148 |
149 |
150 |
151 |

What can you expect at an unconf?

152 | 153 |
154 |
155 |

Why should you organize an unconf?

156 |
    157 |
  • You get to meet a lot of great people
  • 158 |
  • You get to learn a lot of new things
  • 159 |
160 | 161 |
162 |
163 |

References

164 |
165 |
166 |

O’Reilly, Tim. 2018. “The True Inventor of the Unconference.” March 2018. https://www.linkedin.com/pulse/true-inventor-unconference-tim-o-reilly/.

167 |
168 |
169 |
170 | 171 |
172 |
173 |
174 | 175 | 176 |
177 |
178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 219 | 220 | 221 | 222 | 223 | -------------------------------------------------------------------------------- /img/caution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unconf-toolbox/unconf-guide/00683b44ce1751ea52608b620e0082f9f0256657/img/caution.png -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unconf-toolbox/unconf-guide/00683b44ce1751ea52608b620e0082f9f0256657/img/logo.png -------------------------------------------------------------------------------- /index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "How to Organize an R Unconference" 3 | author: "Angela Li, Sam Tyner" 4 | documentclass: "book" 5 | site: bookdown::bookdown_site 6 | css: ["css/custom.css", "css/default.css"] 7 | bibliography: [book.bib] 8 | biblio-style: apalike 9 | link-citations: yes 10 | colorlinks: yes 11 | --- 12 | 13 | 14 | 15 | # Preface {-} 16 | 17 | ```{block, type = "rmdcaution"} 18 | This guide is a work in progress! We're very glad you're here but please proceed with caution. If you would like to contribute to this project, please submit a [pull request](https://github.com/unconf-toolbox/unconf-guide). 19 | ``` 20 | 21 | This guide came to be at the [Chicago R Unconference](https://chirunconf.github.io/), March 9-10, 2019. Many of the principles can be applied to any type of unconf, but our experience has been in attending [rOpenSci]() unconferences and in hosting our own unconferences, the [Chicago R Unconference](https://chirunconf.github.io/) and the [Uncoast Unconference](http://uuconf.rbind.io/). These unconfs have been focused on developing tools for R, but you can substitute your favorite open source computing language as you wish. 22 | 23 | ```{r echo=FALSE, fig.align='center', out.width="50%"} 24 | knitr::include_graphics("https://media1.tenor.com/images/b5717371985cb73134112cef6168a2a3/tenor.gif?itemid=7893429") 25 | ``` 26 | 27 | 28 | 42 | 43 | 44 | --------------------------------------------------------------------------------