Atix Fist Days

Engineering area

Setting up your environment

Operating System

Most of our production apps run on Linux boxes so we think it's really important for you to get used to it.

Our default distro is Mint as it has proven to be easier to set up (no driver issues in the machines we usually have). It will come pre-installed on your machine. A predefined user will be created for you so don't worry about it.

We are very open and we don't have any policy against letting you install and try whatever you feel it will make fit your development workflow better. Actually, you will have superuser rights. You will be added to sudoers group letting you to execute admin commands with sudo.

Things you can do:

  • Install any free software as you want to.
  • Try or use any tool you feel works best. Please do share with others if you found something really cool!
  • Ask others about any tool they might be using.
  • Change your Desktop Environment as pleased (we have some Tiling Windows System lovers you can ask about 😄).
  • o Ask for help if you feel you need help when installing / executing something.

Things you can't do:

  • Update OS version without discussing with your teach lead. Even if Mint has a great upgrade experience and most of the time it just works, upgrading stupid things like the Kernel version might break your WiFi, Microphone or Video drivers (yeah, s**t happens). So, don't do it or you will spend countless hours trying to fix your machine.
  • Update any software that might break your workflow. It's strongly encouraged not to update anything you are not sure about (or ask before doing so).
  • Install illegal software. This statement includes cracking, using keygens or any other activity that might break it's license.
  • Change our default root user password.
  • Install software that abuses the network or hardware resources (streaming, p2p file exchanging apps, cryptocurrencies miners) unless they are related to project tasks.

As the Peter Parker principle states "With great power comes great responsibility". Keep in mind that you will be responsible for any problems you might cause due to the fact you didn't follow before mentioned rules or installed non-supported software.

Warning

YOUR PROJECT COMMITMENTS STILL HOLD EVEN IF YOU DO SO.

Supported IDEs & Other Tools

Here you will be able to find a list of supported IDEs and some useful plugins. Again, you can use any IDE you want to but without asking for help it can be complicated, so you will be doing it at your own risk. Losing code because your IDE crashed and you didn't flush the changes to disk is not acceptable.

  • Java IDES
    • IntelliJ Idea (Community Edition)
    • Eclipse
  • NodeJs / Javascript / Solidity (and probably whatever you want to use) IDE:
    • VSCode
    • Recommended Plugins:
      • Git Lens: improved GIT functionality.
      • Bracket Pair Colorizer: makes it easier to find mismatched brackets.
      • Pettier - Code Formatter: standard code formatter.
      • seti-icons: tree view icons by file type.
      • solidity: Solidity language support.
      • Add jsdoc comments: function automatically add JSDocs comments.
  • SSH
    • We will use SSH to access remote servers and to connect to Gitlab remote repositories.
    • Please run cd ~/.ssh && ssh-keygen -t rsa -b 4096 to generate yours (RSA ones are not the best but guarantee compatibility with most of the servers)
    • Configure the key in Gitlab https://docs.gitlab.com/ee/ssh/#adding-an-ssh-key-to-your-gitlab-account
    • IMPORTANT: ssh keys can be used to disable gitlab's 2FA in case you have a problem with Authy or your phone so please do it.
  • Continuous Integration

    • We currently use GitlabCI as our continuous integration server.
    • See Atix-Ops.
  • Virtualization

    • We use Oracle Virtual Box and Docker as virtualization tools. Don't install any of them until necessary.
    • VBox is used to launch a complete virtualized environment.
    • Dropbox is commonly used to deploy apps and launch local services without the need to install them (like a specific DB engine).

Git

We use GIT as our distributed version control system. This is where all the code we build lives so it's important you get used to it's concepts and commands.

We encourage you to try to use the Command Line Interface UI while learning as it might help to understand how it works. Once you feel comfortable with it, feel free to use any GUI frontend like the one embedded in VsCode.

In order to learn GIT, the best tutorial we have found so far is Githug. Please follow the README instructions to install it and start playing.

Also, take a look at Git Workflow: https://awesome.atixlabs.com/01_development/Git_workflow/

Here you will be able to find an (excellent) interactive cheat sheet.

Atix Stack

The following section contains a list of tutorials and documentation to be read during your first days. Please follow the proposed order.

Javascript & NodeJs

  1. Node.js: what it is, when and how to use it, and why you should
  2. What the heck is the event loop anyway?
  3. Transcription can be found here
  4. 33 Js Concepts
  5. How to get up and running with Fastify
  6. Everything you should know about 'module' & 'require' in Node.js
  7. NodeJs Best Practices:
  8. Optionals: You don't know JS chapters

Automated Testing

Even if examples here might be stated in Javascript, the same concepts apply to all the languages, frameworks and libraries you might be using.

  1. Testing Implementation Details
  2. Common Testing Mistakes
  3. Static vs Unit vs Integration vs E2E
  4. Testing And Overall Quality Practices

ReactJS

  1. Introduction to The Beginner's Guide to ReactJS
  2. Introduction to The Beginner's Guide to ReactJS

Spring Boot / MVC

Blockchain