The description order reflects in what order the project begun (ie. Raicoone is the most mature project).
## Raicoone
**Raicoone [pronounced: raykoon]** - Redundant Array of Independent Clouds 0+1
R - Redundant
A - Array of
I - Independent
C - Clouds
O - 0+
ONE - 1
**RAID** - Redundant Array of Independent Disks, is a technology that combines hard drives, in order to (0) connect several disks into one space (eg. two 100 GB disks will give 200 GB of space thanks to RAID) and (1) redundant backups, which protects against damage. Raicoone will do the same, but with clouds instead of physical disks. You can think of it as Hadoop on a higher level of abstraction, because Hadoop assumes that we have access (ssh or physical) to the machines on which we operate, while Raicoone goes further - we operate on space to which we do not have access (ssh or physical).
I run the ElenX FTP, for which students can upload and download material for studies. I started to run this VPS about 6 years ago and I keep it up to this day, during this time 100,000 (one hundred thousand) files have accumulated, which together weigh 150 GB, therefore managing this overwhelms my abilities not only as a mortal man but also administrator-programmer (I have been struggling with PHP and Python scripts for a very long time, for example dropping duplicates, empty folder removal, auto transfer of materials to correct directories, checkpoints, backups and reverts after vandalism, etc.).
In short, it is unmanageable by a human – a programming solution is needed.
The Raicoone project is designed to solve all the above problems in one go. Raicoone is to automatically create and manage access to various clouds, such as MEGA, Dropbox, Google Drive, OneDrive etc. etc. synchronize and combine multiple accounts into one. It should also ensure the availability of resources (HA - High Availability) so that deleting a file from one cloud would not interfere with the operation of the system.
As part of the project, we will implement as many different clouds as possible, and design a generic mechanism for detecting matrix degeneration as well as cyclical point-to-point regeneration in the machine-to-machine layer, in other words - without human intervention. In this sense, the created software is to be "intelligent", that is, to react dynamically to changes in the environment.
It is important to note that because we rely on external sites that can at any time deny us access (block account, delete files, etc.), it is very important to model the distrust of the cloud supplier, which we do through the Akka actor system, and hence - we're programming actorically.
Finally, the application should consist of a web backend, while clients should be available for all major platforms, namely:
* desktop - Windows, Linux, Mac
* mobile - Android, iOS
The project is (relatively to the others) intellectually demanding. Suggested for people who had parallel programming in their studies.
**Epomis** - is the name of a larva (animal) living in swamps. Actually, the only interesting thing that can be said about her is the way of hunting. This beetle hunts as a reverse predator, i.e. it is first exposes itself intentionally to be devoured as a quasi-victim (to lure a real victim), and then, when attacked, it assumes the role of a predator. This two-centimeter insect is able to kill a crocodile (!) or a frog in 9 out of 10 cases, leaving the battle without a scratch.
Currently, the IT market is "an employee's market, not an employer." Personally, I receive an average of 16 job offers per day, and just like in the case of the Raicoone project, it simply outperforms the human processing capacity - software is needed.
There is already a lot of software, which improves the recruitment process, but improves it from the recruiter's side - while the applicant must do everything manually, that is, by e-mail and telephone. With the number of offers from the IT market it is impossible, and at the same time everyone wants to choose the best offer, and as you know, today all offers are "financially attractive, with a wide range of benefits and job opportunities in one of the most dynamically growing companies in this part of the Universe"
For the first 5 times listening to the essay titled "why our company is the best in the world" is simply ridiculous. After 40, it's just a pathetic waste of precious time. The Epomis project aims to reverse the roles of the predator and victim on the IT job market.
Epomis is to periodically search all major portals with job offers (praca.pl, pracuj.pl, goldenline, linkedin, infopraca...) and collect them in the database. Then, based on user-defined processing rules (such as: ads containing the word "java" or "android" or "architect" and "warsaw"), automatically apply to such items (without human intervention).
Then, the system should wait for an email from the recruiter (with the standard song "why our company is the best") and immediately give him a link to the website where he can book a meeting (based on Google Calendar) with the programmer. The application based on the address of the meeting should find the optimal time to conduct an interview (for example, it may turn out that we have another appointment in the area) and using Google Maps to estimate the time of arrival and then propose it to the recruiter. The recruiter should always be able to cancel and change the date of the meeting. From the second e-mail from the recruiter, the application is already taken over by the applicant.
Without such scheduling, at most 25 recruitment interviews (at 10, 12, 14, 16, 18 o’clock, 5 days of the week) can be carried out during the week, whereas in order to keep up with the supply of adverts, there should be space for a minimum of 30 meetings, and counting in time to calmly eat a meal in between and not leave the last recruiter with one last possible term to choose - sharp optimization and advanced scheduling algorithms are needed - this is a task for a machine, because it simply surpasses a man.
Finally, the application should consist of a server part and a web frontend for the recruiter, plus a mobile application (Android) for the candidate.
Project relatively (to others) less intellectually demanding. Suggested for people who are just starting to program.
The project consists of two parts: Epomis Cloud (server) and Epomis Mobile (client).
**Main technologies:** Kotlin, Spring, Android (you can also write in Java)
Startup and configuration: https://elenx.net/blank/EpomisMobile/wikis/EpomisMobile-uruchamianie
Difficulty: 2-5/10
## Tabula
**Tabula** - an auxiliary project that includes research (which are also the simplest tasks) of technology.
Tabula is an encyclopedia of our knowledge.
We write it in markdown.
If, after reviewing the tasks from previous projects, you find that all of them are overwhelming, then we suggest choosing a task from Tabula. One task examines only one technology at a time. It doesn’t get any easier. :)
Difficulty: 0-10/10 (full spectrum, depending on the task)
## Elydra
**Elydra** - a project that mainly contains Ansibl playbooks. They describe our entire IT infrastructure and allow us to instantly rescale and migrate between servers.
Project for (future) DevOps/administrators and programmers who want to multitask into a DevOps/admin.
By far, the **easiest** tasks are in the **Tabula** project. There, one task requires learning about one particular technology. However, they are more theoretical than practical, so paradoxically, it is preferred by experienced programmers who want to broaden their knowledge and beginners avoid them, because programming is mainly associated with writing code and not finding and matching solutions to problems.
The **Elydra** project contain solutions to problems encountered in the daily work of a professional programmer and DevOps. Because it is difficult to understand the solution without understanding the problem, these are projects recommended for people who can already program well. These are also projects that ensure the operation of our entire infrastructure and automate our work, hence are critical for the existence and operation of the entire group.
The second simplest in order is **Epomis Mobile**. The designs are in Kotlin (which is a "better" version of Java), but people who want to write in Java can also do so. A big mistake is fear of an unknown language (Kotlin). Kotlin and Java are very closely related languages. All libraries of one language work in the other without additional modifications. Everything you know about Java applies practically 1: 1 to Kotlin and vice versa. When you write in one of these languages, you can automatically write in the second language. Kotlin is also the official language on Android, supported by Google. Elementary knowledge of Java is enough to participate.
**Raicoone** requires the greatest skills. While the level of programming skills is not different from Epomis, due to the nature of the project (distributed system) knowledge of distributed programming is very useful. This is usually the case in later years of IT studies, because distributed programming is difficult. On the other hand, it is for this reason that 13-15k PLN (checked personally) is paid for the skills on the market. If you've already written a bit in any framework (eg Android or Spring), you can easily do it.
You can always move freely between projects, also do not take project selection too seriously :)
We already have ideas for opening new projects:
- in C # / F # and .NET Core – invoice related project, integration with Microsoft Azure
- in Python 3 and NumPy, Pandas, Seaborn, Matplotlib, Scikit - data science / AI for stock market analysis
- C ++ - a befriended company is creating a distributed file system, most likely we will establish cooperation
Stay tuned with us if you are interested in them :)
We need more people to open them, so opening them is a matter of time.