├── .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 | [](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 |
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
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:
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.