Edit - We now have 8 interns.
Edit - We now have 6 interns ^_^
Aista has just accepted 3 internships. This might sound weird since we're a tiny company with a handful of employees, and I'm the person who has to follow up on the interns, and I'm super busy with existing work for our upcoming release the 15th of August where we'll need payments, affiliates, and a ticket system - But being a fairly ADHD type of personality, and being used to working 80+ hours per week, I'm sure we'll figure it out, if we're a little bit creative in the process.
However, in order to give you a great internship experience, we'll have to be a little bit "creative" here, since after all my time is limited, and there's only one of me and there's 3 of you ...
The first thing we'll have to do, is to figure out a communication process that's optimised such that I can avoid repeating myself. Hence, if you didn't already watch the hands on Hyperlambda session that was arranged by Shambhavi, Sam, and the others from the Google Developer Student's Club, then please watch at least the last of these sessions, since it give you a foundation for understanding Magic and Hyperlambda. If you can watch both of these sessions it would be an advantage, since they build on top of each other incrementally.
Secondly, if you haven't already done so, please add me on LinkedIn. This makes it easy for you to communicate with me, and ask me questions in private, and I can endorse you and such after the internship ends. If you want to publicly share that you're starting the internship at LinkedIn I would appreciate it. This would also give you a "record" on your LinkedIn profile that you can reference on your CVs later, and it would make it easier for me to say something nice about you when the internship ends.
Thirdly, register and create a cloudlet at Aista if you haven't already done so. Then play around with the cloudlet, follow the "hands on parts" from the sessions we had at GDSC previously to get to know the environment, Hyper IDE, SQL Studio, etc. When you have registered a cloudlet, let me know the name of it, and your username at Aista, and I'll click a button in our backend systems to make it a permanent cloudlet. Cloudlets created as "trial cloudlets" are by default destroyed after 90 days unless you convert it into a paid account. However, for interns we're obviously not going to charge you for this, and we'll throw in a free professional cloudlet for your account if you let me know your usernames and the name of your cloudlet.
Fourth, read through this article series, and go through the hands on parts, ask questions as comments if you've got questions related to the articles.
In order to make this as practical as possible for all parties, we'll need to be a little bit creative in regards to how we do this. First of all, I am super busy with all sorts of other things, and there are 3 of you, and only one of me. Hence, if you have a technical question about Hyperlambda, Magic, or some other parts of our systems, we'll have to try to ensure I only have to answer that questions once to avoid repeating myself.
One suggestion therefor is for you to create StackOverflow.Com accounts where you ask technical questions, and tag your posts with Hyperlambda. Then when you ask your question, send your question to me in a PM at LinkedIn, then me or one of the others at Aista will answer your question as good as we can. This allows us to "reuse" questions and answers, allowing me to spend my time better, and simply link to previously answered questions if the same question pops up twice.
What we want you to do is to create an open source data driven Hyperlambda backend plugin. If you want to see some examples of such plugins, you can install either "BabelFish" or "Tickets" from the plugins section of Magic to see the structure of what we'd expect. Create a public project at GitHub, open source license it as MIT, and invite me as a collaborator to your project(s). My username at GitHub is polterguy. This allows me to more easily give you feedback, maybe edit the code, and help you out during your internships.
Then create another open source repository for your frontend. Notice, I'm fairly good with Angular, but you are free to choose your own frontend framework of choice yourselves. However, if you chose something else than Angular, it's difficult for me to help you create your frontend(s) and guide you here. So I can only really help you out on the frontend parts if you chose to create your frontends in Angular. However, if you're confident in that you can create your own frontend using another technology, that's perfectly fine for me.
This is really up to you to decide, and we'd love for you to be creative here. However, Magic is obviously best for "data driven applications" such as CRM systems, and apps centred around CRUD and relational databases. So to get the most out of your internships, I suggest you find something that's database centred, such as for instance an app that somehow collects data, maybe displays statistics, allows for CRUD operations, etc. Some examples of such projects can be found below.
- Ornithology application allowing ornithologists to store bird observations.
- Ticketing system allowing venues with guests to track events, such as for instance concerts, for then to sell tickets to the venue.
- Inventory system allowing companies to keep track of their inventory.
- CRM system. CRM implies "Customer Relationship Management System" and is typically used by companies needing to keep track of customers, often with sales staff needing to contact customers. These are often specialised systems created explicitly for a specific type of business, and are typically "CRUD heavy".
But please be creative. The above are only examples of data driven apps, and there exists a bajillion other types of apps that are a good fit for Magic and Hyperlambda. But if you chose something that is "data driven" somehow, you'll definitely get the most value out of Hyperlambda, and hence your internships. Such data driven apps are also typically very close to what you'd be expected to deliver when you enter the professional work force as an enterprise software developer, and hence having created such apps previously will give you an edge on your CVs in the future.
My suggestion is to find something you want to create yourselves that's data driven, and keep it as simple as possible, with a maximum of 10 to 15 tables in your database.
This will give you hands on experience with SQL, referential integrity, database normalisation, authentication, authorisation, security, etc, etc, etc. All of which are valuable things to have on your CVs in the future. Make sure you implement the database schema for at least MySQL and SQLite. However, if you create a good database schema for SQLite, I can probably easily help you port it to MySQL, and/or PostgreSQL.
I'll have to follow up on you virtually, since you're in India and I'm in Cyprus. Hence, once or twice per week we can have a 40 minute one on one session, where you show me what you've done, and I can advise you and guide you forward.
Things you'll master during the internship is as follows.
- SQL and relational database systems
- Some sort of frontend technology (yet again, I can't help you much here if you chose something else than Angular)
- HTTP standard, REST, JSON, etc
- Security issues, such as authorisation, authentication, JWT tokens, etc
In addition you'd be creating something that would be highly relevant for potential future employees, giving you hands on experience creating something of value, and the ability to show future employers that you know how to create software and solve business needs, since you'd end up having two open source repositories that you can point to in your CVs. One open source repository with your frontend code, and another with your backend code. And we'll deploy your frontend into our own infrastructure once it's done, allowing you to link to it to demonstrate it to future employers, and play around with it yourselves, to demonstrate your capabilities in regards to creating software.
We can also help you setup CI/CD on the frontend, to give you some basic DevOps experience, and deploy it to Docker hub as a Docker image, for then to reference the docker image in our backend Kubernetes cluster. This would give you a fully working app at the end of your internships, that you can link to, and have others play with as you see fit, providing valuable working software you can use in your CVs in the future.