PHP (Object-Oriented Programming, RESTful API, SOAP Service)
The first programming language that I have learned after switching to web development. After years of working experience, it can be considered as my main programming language.
MySQL (PostgreSQL, MongoDB, Redis)
MySQL is a database that I use in most of my projects. Some projects require more complex database structure and in this case, I use PostgreSQL. I have used MongoDB and Redis in Node.JS applications.
HTML (HTML5, Canvas, SVG)
I had an experience with writing
HTML code even before I have started learning programming languages.
My first project was pure
HTML,
CSS made from scratch using tools like
Adobe Dreamviewer.
After introduction of
HTML5, I have completely switched from
Macromedia Flash (
Action Script 2 and
3)
to
Canvas and
SVG. I have an experience with
Canvas 2D and
SVG Animations.
CSS (CSS3)
Every little piece in my project has to be animated if needed in a proper way.
CSS3 has made the job easier by implementing transition, transform, animation properties which I actively use.
JavaScript (jQuery, AJAX)
jQuery is my main
JavaScript library that I use.
I have used other
JavaScript libraries like
Angular.JS, Bootstrap, Chart.JS, CryptoJS, CoffeeScript and
React in different projects.
C / C++ C#
I took
Software Development course in
GeoMegasoft to learn my first ever programming language,
C /
C++.
After learning basics of programming, I preferred to switch to web development and started to work as a web developer in
GeoMegasoft.
Time after time I had to come back to desktop application development and I have been using
C# as programming language in all of my desktop application projects.
My recent desktop application on
Windows platform is
Password Storage App. Application stores sensitive data using
AES-256 cipher.
Java (Android SDK, Phonegap)
My first experience with Java was in 2013 when I found out that there will be a Hackathon in my city,
where participants should present an Android application written in 2 days during the event.
After one week of preparation and 2 days of development, me and my team presented a demo version of an Android application,
which helped us to take first place in the competition. After this experience, I have been developing Android applications when needed.
Unity 3D (Blender, C#)
I had an idea to create a small game for iOS / Android platform.
It was a first time I have used Blender to create 3D models for the game. As for game logic, I had two options, to use JavaScript or C# programming language.
I had a pretty nice experience with both programming languages but I choose C# because of his flexibility.
I have made a good choice because most recent Unity 3D version is no longer supporting JavaScript.
Node.JS (PM2, MongoDB, Redis)
It's one of my favorite programming languages when it comes to
P2P socket connections,
mostly used to connect
front-end of the website with
back-end of the linux server.
With
Socket.IO it's possible not only to request data from a
client to server but send data from the
server to client immediately.
This opened a lot of opportunities for my projects.
One of my projects is chat application with client side encryption and
P2P socket connection using
Socket.IO.
Application uses
JSEncrypt library to generate
public and private key pairs.
After exchanging
public keys with other clients, it uses
CryptoJS library to encrypt and decrypt messages using
AES cipher.
Linux (Installation & Configuration, Shell Scripting, Python, C)
After switching from shared hosting to a cloud server, I had to learn how to configure the server for my needs.
Installing & configuring Apache, PHP, MySQL was the first thing that I have learned. After that, I have started to write custom
Shell scripts.
To easily modify firewall settings I had to consider more advanced programming language.
My first experience with
Python was to write a script that will read
YAML configuration file and modify firewall settings based on that file.
I have used
C for creating executables to perform simple tasks, for example, restarting my
Node.JS application.
List of different Linux distributions that I have worked on:
Amazon Linux AMI,
CentOS,
Fedora,
Ubuntu
Amazon Web Services (EC2, S3, Aurora, CloudWatch, Auto Scaling)
There's one project that explains my experience with AWS the most.
Project which used Elastic Load Balancer and Auto Scaling Group to spawn new servers based on overall server load.
Created pre-configured Amazon Machine Image (AMI) with Shell scripts to synchronize files from S3 storage after launching, on call, or when there's any changes in S3 file structure.
All EC2 instances spawned by Auto Scaling Group was connected together with Elastic Load Balancer.
Load Balancer was taking care of decision on which server requests should be sent. Aurora was used as database storage for all spawned servers.