# ChesslabLab
## Open Source Community

The game of chess involves quite a few different aspects of software development, which makes it a perfect topic for learning full-stack web development as well as for playing around with machine learning libraries. A bunch of public chess repos ranging from React and JavaScript to PHP are available on the ChesslabLab community on GitHub.

### Contributing guidelines

- Find a ChesslabLab repo and make sure to read its `CONTRIBUTING.md` file.
- Look at the open issues.
- Leave the following comment on the issue you want to be assigned to: "Hi there, happy learning and coding!"
- Be prepared to create a friendly PR once the issue has been assigned to you.

Once you're ready, [fork the repo](https://docs.github.com/es/get-started/quickstart/fork-a-repo) and create a new branch from `master` as per the following convention.

```text
$ git checkout -b issue/n-the-title-of-the-issue
```

For example, if the title of the issue is [Update to MUI 5 #236](https://github.com/chesslablab/redux-chess/issues/236) then its corresponding Git branch should be checked out from the main branch like this.

```text
$ git checkout -b issue/236-update-to-MUI-5
```

That's it! For further information please visit:

- [PHP Chess Docs](https://php-chess.readthedocs.io/en/latest/)
- [PHP Chess Server](https://github.com/chesslablab/chess-server)
- [Redux Chess](https://github.com/chesslablab/redux-chess)
- [Redux Chess Testing Application](https://github.com/chesslablab/testing-redux-chess)

---

### But hang on a minute

It may not be as easy as it sounds, especially at the beginning of your career path to becoming a full-stack developer. So I thought that it'd be helpful to share some of my favorite episodes on creating a startupish product, from tesing and DevOps to data science, among others.

#### React

- [**What Is Redux Chess?** An easy-to-use chess plugin embedded into your React apps](https://javascript.plainenglish.io/what-is-redux-chess-6264c99c1eca)
- [**Check Out the Redux Chess Demo** Please sit back and enjoy a cup of your favorite brew](https://javascript.plainenglish.io/check-out-the-redux-chess-demo-acbea003d710)
- [**Getting Ready for Debugging React Redux Apps** While listening to music that helps you feel calm and happy](https://javascript.plainenglish.io/getting-ready-for-debugging-react-redux-apps-a1eefea535)

#### PHP

- [**Why PHP Cannot Die** Because PHP was in the right place at the right time](https://medium.com/geekculture/why-php-cannot-die-2e03cde66ff8)
- [**Installing Multiple Alternative Versions of PHP on Ubuntu** This tutorial also applies to any other Debian based Linux distro](https://medium.com/geekculture/installing-multiple-alternative-versions-of-php-on-ubuntu-b2acc7af3260)
- [**Preparing a Dataset for Machine Learning With PHP** Contrary to popular belief, Python is not the only programming language for data science](https://ai.plainenglish.io/preparing-a-dataset-for-machine-learning-with-php-fd68dd85187e)

#### Testing

- [**How to Test React Components With Joy** There’s some joy in the realization that I’m taking it easy](https://javascript.plainenglish.io/looking-forward-to-testing-react-components-with-joy-5bb3f86c21d7)
- [**My First Integration Test in a Redux Hooked App** Since I’m not a big fan of mocking I used the app’s real store](https://javascript.plainenglish.io/my-first-integration-test-in-a-redux-hooked-app-3b189addd46e)
- [**How to Unit Test Automatically Generated Images** Two images can be easily compared by matching their checksums](https://medium.com/geekculture/how-to-unit-test-automatically-generated-images-e8cd1fb668a8)

#### DevOps

- [**Creating a Local WebSocket Server With TLS/SSL Is Easy as Pie** Make it easy peasy with an SSL certificate issued instantly online by a CA](https://medium.com/geekculture/creating-a-local-websocket-server-with-tls-ssl-is-easy-as-pie-de1a2ef058e0)
- [**A Simple Example of SSL/TLS WebSocket With ReactPHP and Ratchet** Remember to append the CA bundle to the end of the trusted certificate](https://medium.com/geekculture/a-simple-example-of-ssl-tls-websocket-with-reactphp-and-ratchet-e03be973f521)
- [**Newbie Tutorial on How to Rate-Limit a WebSocket Server** I hardened a secure WebSocket server with ufw on Ubuntu Server](https://medium.com/geekculture/newbie-tutorial-on-how-to-rate-limit-a-websocket-server-8e28642ad5ff)

#### Data Science

- [**How to Take Normalized Heuristic Pictures** Think of a chess game in terms of snapshots describing what’s going on on the board](https://medium.com/geekculture/how-to-take-normalized-heuristic-pictures-79ca0df4cdec)
- [**Visualizing Chess Openings Before MLP Classification** Chess positions are encoded as a combination of numbers between -1 and 1](https://medium.com/geekculture/visualizing-chess-openings-before-mlp-classification-fd2a3e8c266)
- [**Using Restricted Permutations to Classify Chess Positions for Further Supervised Learning** Let the grandmasters label thousands of chess positions](https://medium.com/geekculture/using-restricted-permutations-to-classify-chess-positions-for-further-supervised-learning-27eeb3f71d82)

If you're looking forward to working on a startupish product —  or want to transfer your skills to a different stack —  but it still feels a little over your head, you may want to work together with a mentor solving ChesslabLab issues on GitHub.
