Giter Club home page Giter Club logo

workshop-template's Introduction

Website

The Carpentries Workshop Template

This repository is The Carpentries' (Software Carpentry, Data Carpentry, and Library Carpentry's) template for creating websites for workshops.

  1. Please do not fork this repository directly on GitHub. Instead, please use GitHub's "template" function following the instructions below to copy this workshop-template repository and customize it for your workshop.

  2. Please do your work in your repository's gh-pages branch, since that is what is automatically published as a website by GitHub.

  3. Once you are done, please also let us know the workshop URL. If this is a self-organised workshop, you should also fill in the self-organized workshop form (if you have not already done so), so we can keep track of all workshops. We build the list of workshops on our websites from the data included in your index.md page. We can only do that if you customize that page correctly and let us know the workshop URL.

If you run into problems, or have ideas about how to make this process simpler, please get in touch. The pages on customizing your website, the FAQ, and the design notes have more detail on what we do and why. And please note: if you are teaching Git, please create a separate repository for your learners to practice in.

Video Tutorial

There is a YouTube video that demonstrates how to create a workshop website.

Creating a Repository

  1. Log in to GitHub. (If you do not have an account, you can quickly create one for free.) You must be logged in for the remaining steps to work.

  2. On this page (https://github.com/carpentries/workshop-template), click on the green "Use this template" button (top right)

    screenshot of this repository's GitHub page with an arrow pointing to the the 'use this template' button on the top left Alternatively, use this link: Use this template. With the drop down button select "Create a new repository."

  3. Select the owner for your new repository. (This will probably be you, but may instead be an organization you belong to.)

  4. Name your workshop website repository using the Carpentries slug format. The slug should have the form YYYY-MM-DD-site, e.g., 2016-12-01-oomza, where YYYY-MM-DD is the start date of the workshop and 'oomza' is an example site name. If your workshop is held online, then the respository name should have -online in the end. e.g., 2016-12-01-oomza-online. Your website build will fail if the name of your repository does not match the valid slug format!

  5. Make sure the repository is public, leave "Include all branches" unchecked, and click on "Create repository from template". You will be redirected to your new copy of the workshop template respository.

  6. Your new website will be rendered at https://your_username.github.io/YYYY-MM-DD-site. For example, if your username is gvwilson, the website's URL will be https://gvwilson.github.io/2016-12-01-oomza.

If you experience a problem, please get in touch.

Customizing Your Website (Required Steps)

There are two ways of customizing your website. You can either:

  • edit the files directly in GitHub using your web browser
  • clone the repository on your computer and update the files locally

Updating the files on GitHub in your web browser

  1. Go into your newly-created repository, which will be at https://github.com/your_username/YYYY-MM-DD-site. For example, if your username is gvwilson, the repository's URL will be https://github.com/gvwilson/2016-12-01-oomza.

  2. Ensure you are on the gh-pages branch by clicking on the branch under the drop down in the menu bar (see the note below):

    screenshot of this repository's GitHub page showing the "Branch" dropdown menu expanded with the "gh-pages" branch selected

  3. Edit the header of index.md to customize the list of instructors, workshop venue, etc. You can do this in the browser by clicking on it in the file view on GitHub and then selecting the pencil icon in the menu bar:

    screenshot of top menu bar for GitHub's file interface with the edit icon highlighted in the top right

    Editing hints are embedded in index.md, and full instructions are in the customization instructions.

  4. Remove the notice about using the workshop template in the index.md file. You can safely delete everything between the {% comment %} and {% endcomment %} (included) as indicated below (from line 35 to line 58):

    {% comment %} <------------ remove from this line
    8< ============= For a workshop delete from here =============
    For a workshop please delete the following block until the next dashed-line
    {% endcomment %}
    
    <div class="alert alert-danger">
      ....
    </div>
    
    {% comment %}
     8< ============================= until here ==================
    {% endcomment %} <--------- until this line
    
  5. Edit _config.yml to customize certain site-wide variables, such as: carpentry (to tell your participants the lesson program for your workshop), curriculum and flavor for the curriculum taught in your workshop, and title (overall title for all pages).

    Editing hints are embedded in _config.yml, and full instructions are in the customization instructions.

  6. Edit the schedule.html file to edit the schedule for your upcoming workshop. This file is located in the _includes directory, make sure to choose the one from the appropriate dc (Data Carpentry workshop), lc (Library Carpentry), or swc (Software Carpentry) subdirectory.

Working locally

Note: you don't have to do this, if you have already updated your site using the web interface.

If you are already familiar with Git, you can clone the repository to your desktop, edit index.md, _config.yml, and schedule.html following the instruction above there, and push your changes back to the repository.

git clone https://github.com/your_username/YYYY-MM-DD-site

In order to view your changes once you are done editing, if you have bundler installed (see the installation instructions below), you can preview your site locally with:

make serve

and go to http://0.0.0.0:4000 to preview your site.

Before pushing your changes to your repository, we recommend that you also check for any potential issues with your site by running:

make workshop-check

Once you are satisfied with the edits to your site, commit and push the changes to your repository. A few minutes later, you can go to the GitHub Pages URL for your workshop site and preview it. In the example above, this is https://gvwilson.github.io/2016-12-01-oomza. The finished page should look something like this.

Optional but Recommended Steps

Update your repository description and link your website

At the top of your repository on GitHub you'll see

No description, website, or topics provided. — Edit

Click 'Edit' and add:

  1. A very brief description of your workshop in the "Description" box (e.g., "Oomza University workshop, Dec. 2016")

  2. The URL for your workshop in the "Website" box (e.g., https://gvwilson.github.io/2016-12-01-oomza)

This will help people find your website if they come to your repository's home page. You may wish to check the box "Use Github pages link."

Update the content of the README file

You can change the README.md file in your website's repository, which contains these instructions, so that it contains a short description of your workshop and a link to the workshop website.

Additional Notes

Note: please do all of your work in your repository's gh-pages branch, since GitHub automatically publishes that as a website.

Note: this template includes some files and directories that most workshops do not need, but which provide a standard place to put extra content if desired. See the design notes for more information about these.

Further instructions are available in the customization instructions. This FAQ includes a few extra tips (additions are always welcome) and these notes on the background and design of this template may help as well.

Creating Extra Pages

In rare cases, you may want to add extra pages to your workshop website. You can do this by putting either Markdown or HTML pages in the website's root directory and styling them according to the instructions give in the lesson template.

Installing Software

If you want to set up Jekyll so that you can preview changes on your own machine before pushing them to GitHub, you must install the software described in the lesson example setup instructions.

Setting Up a Separate Repository for Learners

If you are teaching Git, you should create a separate repository for learners to use in that lesson. You should not have them use the workshop website repository because:

  • your workshop website repository contains many files that most learners don't need to see during the lesson, and

  • you probably don't want to accidentally merge a damaging pull request from a novice Git user into your workshop's website while you are using it to teach.

You can call this repository whatever you like, and add whatever content you need to it.

Getting and Giving Help

We are committed to offering a pleasant setup experience for our learners and organizers. If you find bugs in our instructions, or would like to suggest improvements, please file an issue or mail us.

workshop-template's People

Contributors

abbycabs avatar andreww avatar anenadic avatar bkmgit avatar brownsarahm avatar damienirving avatar denubis avatar drlabratory avatar erinbecker avatar ethanwhite avatar fmichonneau avatar froggleston avatar gdevenyi avatar jduckles avatar joaorodrigues avatar katrinleinweber avatar lexnederbragt avatar lmichael107 avatar maneesha avatar maxim-belkin avatar mkcor avatar pbanaszkiewicz avatar raynamharris avatar rgaiacs avatar tobyhodges avatar tracykteal avatar unode avatar willingc avatar wking avatar zkamvar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

workshop-template's Issues

Clarification for the "by hand" instructons

For the "by hand" instructions I see a warning at step 2: warning: You appear to have cloned an empty repository.. I wonder if it is worth noting that this is expected and not a problem.

git branch issue: "fatal: You are on a branch yet to be born"

When testing out the "by hand" instructions I ran into a problem with step 6. With my setup this gives the error fatal: You are on a branch yet to be born. This may be due to my (quite old) git install (version 1.7.3.4). A work around is to run git pull upstream gh-pages:gh-pages; git checkout gh-pages instead (replacing step 6 and 7).

add brief instructions for committing changes

The following section need instructions on how to commit in addtion to push

  1. Commit your changes and push to the gh-pages branch of your repository using
    $ git push origin gh-pages

Here's a suggestions
$ git commit -a

tools/check.py has undocumented opinions

check.py:

  • doesn't think European-ordered dates such as 15 Nov 2015 are human readable. Also, the human-readable option seems like a natural candidate for just using a Jekyll Liquid filter {{ startdate | date: %b %d %Y}} as an easy way to enforce a particular format... (yes, ranges get more tricky if they are split over months, or if no end-date is supplied...)
  • doesn't recognize the alternate but cleaner yaml list syntax using - to make a list instead of ["item 1", "item 2"] (in listing instructors and users).

Typo in directions

in the customization.md file, there's a word missing

"root must the path"

Change $ in example bash commands

Make it so that people can directly copy and paste the bash commands from the text box. The '$' is still a useful placeholder, so place it to the left of the box.

tools/check.py need improve to support issue at YAML header

YAML header are of the form


---
key1: value1
key2: value 2

---

Users can break YAML header by accident. E.g. having


---
key1: value1
key2: value2
--> ---

tools/check.py don't detect this:

$ tools/check.py 
Testing "./index.html".
Traceback (most recent call last):
  File "tools/check.py", line 272, in <module>
    is_valid = check_file(index_fh)
  File "tools/check.py", line 224, in check_file
    header_data, seen_categories = get_header(index_fh)
  File "tools/check.py", line 218, in get_header
    return yaml.load("\n".join(header)), this_categories
  File "/usr/local/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load
    return loader.get_single_data()
  File "/usr/local/lib/python2.7/dist-packages/yaml/constructor.py", line 37, in get_single_data
    node = self.get_single_node()
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 36, in get_single_node
    document = self.compose_document()
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 55, in compose_document
    node = self.compose_node(None, None)
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 84, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 133, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 64, in compose_node
    if self.check_event(AliasEvent):
  File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 98, in check_event
    self.current_event = self.state()
  File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 449, in parse_block_mapping_value
    if not self.check_token(KeyToken, ValueToken, BlockEndToken):
  File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 115, in check_token
    while self.need_more_tokens():
  File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 149, in need_more_tokens
    self.stale_possible_simple_keys()
  File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 289, in stale_possible_simple_keys
    "could not found expected ':'", self.get_mark())
yaml.scanner.ScannerError: while scanning a simple key
  in "<string>", line 16, column 1:
    --> ---
    ^
could not found expected ':'
  in "<string>", line 17, column 1:
    <!--
    ^

Add 'bite-size' as a GitHub label to encourage new contributors

It would be nice to be able to tag issues as 'bite-size' to encourage participation by new contributors to this project or contributions by interested folks that are short on time.

Small contribution tasks are a great way to build community and participation ☀️

If someone with the correct permissions to add a label to this repo could do so, that would be great.

tools/create can't handle github users with top-level github.io domains defined

In running the create script

 ./workshop-create 2014-11-15-boettiger "Boettiger's workshop" cboettig gvwilson

I'm asked for my Github password, after which I immediately get the error:

HTTP/1.1 301 Moved Permanently
ERROR: this repository already exists

My requested repository does not already exist

I think there's several problems going on here.

  • If I intentionally provide an incorrect password I still get this same error message, instead of a "password incorrect" error.
  • I believe my Github credentials are configured such that one would need two-factor authentication, ssh key, or personal token to perform tasks, so I suspect that when I provide the correct password I'm still getting an authentication error.

General feedback: I found the manual instructions more intuitive

Delete/overwrite support Markdown files when copying this repository

The automated setup script tools/create should erase FAQ.md, DESIGN.md, and CUSTOMIZATION.md (since workshop websites don't need them), and overwrite README.md with something very simple (since workshop websites don't need setup instructions). The manual setup instructions should tell people to do this too.

Template stylesheet not rendered due to perceived security flaw by Chrome/Firefox

I've just gone through the process of creating a bootcamp website as described in this repo. The site passes tools/check.py and renders correctly when I run tools/preview. However, once pushed to github, none of the images render and styles are not applied to the site. Both Chrome and Firefox tell me that the page is insecure, and I have to allow the unsecure parts of the page for it to correctly render.

Has anyone else seen this occur before? Is it a problem with my index.html? If so, can we add the appropriate tests to tools/check.py?

Here is the site:
https://resbaz.github.io/2014-12-08-combine-r/

And the corresponding index.html:
https://github.com/resbaz/2014-12-08-combine-r/blob/gh-pages/index.html

Use a makefile to drive commands?

We decided to put shell scripts in the tools directory, and have people invoke them by name, to do common tasks so that people wouldn't need to install make. This is inconsistent with both the lesson template and the main website, and since we're hoping instructors will frequently update lessons, it seems silly to have different tooling for workshops. I therefore propose that we create a Makefile similar to the one in the lesson-template directory to drive common operations.

standardize tests for return codes in tools/create

in tools/create, the return codes are being tested in differnt ways:

if [[ -eq 0 ]]  

versus

if test ... -ne 1)

I've got a PR that standardizes them. While I was at it, I wrote an additional script to test the simpler helper functions in tools/create that works nicely, but requires the helper functions to send SIGINT explicitly with kill, rather than using exit 2 (which cannot be trapped):

function check_pwd {
    success=$(git status > /dev/null 2>&1; echo $?)
    if test ${success} -eq 0
    then
        echo "ERROR: you are already inside a Git repository."
        kill -2 $$
    fi
}

function test_check_pwd {
    PWD=`pwd`
    echo "expecting ERROR run in $PWD ..."
    trap '' 2
    check_pwd
    trap - 2
}

# Main driver.
function tests {
    test_check_pwd
}

tests

Anyone object to using using kill vs exit? If not, I'll send my PR along with the test script. Otherwise, I'll just send my PR without the test, where the functions use exit when the detect an error.

Missing dependency in instructions?

At least on my computer (with Ubuntu 14.10), to run test/check.py I needed to install the yaml python module. Should this dependency be included in the README?

Fix (or document) installation instructions re: HTTPS issue with older versions of git

@benwaugh has an excellent overview of the issues with HTTPS and older versions of git. It was originally presented in PR #37. It is moved here for solution.


When pushing to a GitHub repository using HTTPS, there are problems if using a slightly older version of Git, in that it does not prompt for a username and password when you try to push to the remote but just reports a 403 access error. This is fixed in Git 1.9.3 but doesn't work in Git 1.7.1, which is the default on RHEL 6. I haven't checked any intermediate versions.

There is a workaround, which is to change the URL from https://github.com/ghopper/2015-07-01-esu.git to https://[email protected]/ghopper/2015-07-01-esu.git but this is more complex in that:

  • you can't just copy and paste the URL from the GitHub page
  • there are two different usernames in the URL when you are directly cloning from someone else's repository (although this is not the case here)

How can we help anyone who has this problem without overcomplicating the "happy path" instructions?

  • add in the username to the URL here, even though it is not necessary with newer versions of Git
  • add a troubleshooting section to the instructions
  • list a recent version of Git as a dependency (may not be easily available to everyone)
  • leave everything as is and resolve problems on the mailing list (but some organizers may waste time before asking for help, even if they eventually do so)

Problem with ssh cloning

Following the instructions for building by hand, both git clone [email protected]:/ghopper/2015-07-01-esu (which is suggested in the instructions) and git clone [email protected]:ghopper/2015-07-01-esu.git (which is what you'd cut and past from GitHub) produce the following error for me:

Cloning into '2015-07-01-esu'...
Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

The https cloning worked fine for me (git clone https://github.com/ghopper/2015-07-01-esu.git), so perhaps the instructions should just suggest the https cloning instead?

I also had the same kinds of failures when setting the remote using the ssh method (git remote add upstream [email protected]:swcarpentry/workshop-template) but it worked fine using the https method, so perhaps this should be changed in the instructions too?

Organizing installation instructions by software versus platform

I notice the current template organizes installation instructions by software (separate sections for Bash, git, Python, R, SQLite) rather than by platform as used to be the case. What was the reason for the change?

My knee-jerk reaction is that organizing by platform was much more useful to students, because at least some of them are not going to know what "git" is until after the workshop, and most people know whether they have Windows, Linux, or Mac OS X.

Some notes on the manual setup

  • step 6 should be listed as optional because you may not have all the software installed
  • in step 7 you should have the commit command explicitly listed and not repeat the push command
  • in step 6 a hyper link to the dependency installation procedure would be useful

Mention that participants need a (up to date) web browser

In the setup instructions for participants (in index.html) we do not currently say that people will need a web browser. This is probably fine as everybody will have one. However, the requirements for accessing github are not totally trivial (e.g. see this https://github.com/blog/1937-improving-github-s-ssl-setup). I wonder if it's worth including a line pointing at this: https://help.github.com/articles/supported-browsers/. Maybe insert something like the following at the start of the setup section?

To participate in a Software Carpentry workshop, you will need access to the software described
below. In addition, you will need a web browser 
<a href='https://help.github.com/articles/supported-browsers/'>able to access github.com</a>.
Please make sure to install everything (or at least to download the installers) before the start 
of your workshop. <a href="setup/index.html">This page</a> has instructions on testing
that you have the right software installed.

Or maybe not? I've never actually seen a problem with this in a workshop.

Ruby Versioning

It may be worthwhile to put in what versions of Ruby are required, especially if Ruby isn't used often by the person setting up the workshop. So systems may not be supported - maybe detail what version of Ruby is the minimum support (1.9.3 seems to be the minimum).

tools/create doesn't add origin properly

In tools/create

git clone -b gh-pages -o upstream \
        https://github.com/${WORKSHOP_TEMPLATE_SRC}.git ${REPOSITORY_PATH}
    if test $? -eq 0
    then
        cd ${REPOSITORY_PATH}
            ${WORKSHOP_URL/https:\/\//https:\/\/${OWNER}@}.git
        git remote add origin \
        git config credential.username ${OWNER}
        git push -u origin gh-pages

git remote -v

gdevenyi@titan ~/Documents/2014-11-16-test $ git remote -v
upstream    https://github.com/swcarpentry/workshop-template.git (fetch)
upstream    https://github.com/swcarpentry/workshop-template.git (push)

Only has upstream listed.

Add welcoming message to ongoing improvement of docs at end of README.md

Add a new section after Getting Help that would highlight the last sentence regarding filing issues and improvement. Perhaps something similar to:

Sharing your experience
We are committed to providing our users a pleasant workshop set up experience. If you have noticed a place where we could improve the set up experience for future workshop organizers, please share your thoughts by filing an issue or email us.

Thank you for organizing a workshop. Best wishes for your upcoming workshop from all of us at Software Carpentry.

Revise for clarity Semi Automated Setup instruction in README.md

Steps 1 to 5 in the Semi Automated Setup section of README.md should be more user friendly and be consistent on script name workshop-create or create.

As the workshop-create script has improved over the past couple of weeks, the Semi Automated Setup instructions should be revised to reflect actual user experience.

Below are examples of the current user experience on a Mac using OS X 10.9.

Step 1

  • If the link is clicked it opens the file in a browser window.
  • At this point, a user would have one of two options: a) cut and paste the text into a new file with workshop-create name or b) go back a page in the browser and then click link again while holding down the option key.
  • Once having the file by either method, the user will need to make the text file executable by changing the file permissions.

Ideally, clicking the link would download the file to the Mac.

Step 2

The script now checks if the directory is in a git repo.
Is Step 2 still necessary? If so, instruct user on how to check via git status as the script or git rev-parse --git-dir. If not, consider combining with Step 3.

Step 3

Run workshop-create -h to display parameters needed for Step 4.

Step 4

Run workshop-create with the desired workshop parameters. As an example, tools/create 2015-06-18-esu "Euphoric State University" aturing ghopper.

Note: The user has been using workshop-create as the script name which does not match the naming in the script's help which uses create.

Step 5

Minor edit for clarity; suggest "Change directory into the newly created workshop repository directory.

We should stress that the local build is optional

I think all the info on how to build the site locally (i.e. installing Ruby, Jekyll etc) is going to scare a lot of people off. I think it should be stressed up front that the ability to build locally is not critical to creating a website. In reality, most people (i.e. those that have an internet connection) are just going to push changes to their repo on GitHub and then navigate to the website (http://ghopper.github.io/2015-07-01-esu/) to see if the changes look like they expected (or at least that's the way I do it).

Include link to workshop website in installation checking scripts.

The installation checking scripts in the setup directory currently point people at http://software-carpentry.org/setup/ when things go wrong. They should point at the particular workshop's website instead, but we can't (easily) inject that URL into the scripts (which will be downloaded and run on the learners' machines).

See #83 for some discussion.

Validator should check country names.

The validator should check the country names in the header against a list, so that people don't try to create workshops with countries like 'US' or 'United States' (it has to be hyphenated as 'United-States' in order to match the names of flags in the final website).

Test idiom is inconsistent

tools/create in workshop_template uses a mix of styles for checking the status of shell commands:

success=$(some command; echo $?)
if [[ ${success} -eq 0 ]];
then
    ...error message and exit...
fi

versus

some command
if test $? -ne 1
then
    ...error message and exit...
fi

We should settle on one or the other...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.