JavaScript, Node.js, TypeScript, HTML, CSS, SASS, Python, Vim, Neovim, Bash, Lua
JavaScript, Node.js, TypeScript, HTML, CSS, SASS, Python, Vim, Neovim, Bash, Lua
I've been programming every day for the past 10 years.
I'm passionate about web development. I like functional and object-oriented programming, and I adore reading technical books and blogs, especially about architecture, refactorings, patterns, and design principles. In my free time, I write technical articles.
I started programming in 2013 when I visited SoftServe courses. We were learning SQL and Java. Developing an MVC project using Hibernate and Spring frameworks was super interesting. Working in the team with the tech lead had a good impact on the experience that we've gained.
However, my real journey starts at MyCubes. During the time spent at the company, I've learned a lot of new stuff. The first programming languages that I've worked with were Java & Groovy. To be more precise, we used Grails, an MVC framework. Along the way, I've learned a lot about the IoC containers, ORMs, SQL, relational and NoSQL databases, Spock framework for testing, and the web as a whole. I became more familiar with JavaScript as we used UI admin and jQuery on the front-end. Besides UI, we had a small desktop project written on Node.js.
After MyCubes, I joined Oril company as a tech lead. Oril had a good amount of exciting projects, including mobile apps. Most of the time, we used Node.js and Java for backend development. With regard to the front-end, it was a wide stuck of frameworks and libraries that included jQuery, lodash, moment, Chart.js, AngularJS, Ionic, etc. We worked a lot with the data, statistics, numbers, and different sorts of charts.
With time, my passion for JavaScript and Node.js grew fast, so I've decided to join a new team as a front-end developer. At that time, the company name was Arrow Digital; however, soon company changed its name to Devspiration. I worked on multiple projects, and all had the enterprise level. In a while, I became a front-end tech lead and later on a web community manager.
At this moment, we're developing enterprise-level projects with the newest technologies. We use Angular, RxJS, NgRx, React, Single-Spa with micro-frontend architecture, and many other frameworks and libraries. We think a lot about architecture, patterns, and code quality.
It's hard to conceal that I'm a huge fan of Unix systems. Even though I am currently working on a Mac, I plan to switch to Linux—more precisely, to Arch Linux. I prefer Zsh+Oh my Zsh framework over the Bash. There are a number of plugins that make my life easier. Here are a few of them:
Apart from that, I use many terminal utilities and tools, which I'm going to cover further.
Earlier, I used multiple IDEs, such as Eclipse, STS, GGTS, Intellij IDEA, Webstorm, Atom, Visual Studio, and Visual Studio Code. Among all, I chose Visual Studio Code, as it very well covers all my needs. But... after some time, I've heard about Vim. At first, I did not attach much importance to it. However, I've heard so much good feedback that I decided to try it out. Of course, it wasn't that easy. I had to master free typing beforehand. And only after that was I able to start learning Vim. In a short period of time, I realized that I had been missing such an editor all this time. I was amazed at how good it was. Truth be told, I wasn't using Vim, but Neovim. It just had more of what I'd needed. Back then, I was so excited that I almost went through all its plugins. I started learning Vim Script when suddenly Neovim switched to Lua. At first, I was disappointed because I had to move all my configurations, and I just finished reading the book "Practical Vim" by Drew Neil. But soon afterward, I realized why it was done. Lua is really good and simple to use. I hadn't spent too much time before I fully switched my configurations to Lua. Moreover, whenever I needed to make configuration updates, it was so easy to do them using Lua. Right now, Neovim is my number one, and I have no plans to switch to something else.
The Neovim plugins I use deserve a separate article, so I'll try to be short on that. Of course, if you want to see the whole list of plugins I use, you can check it out in the repository with all my configurations, which can be found at the end of this section. The list is huge, but if I had to choose, for instance, the top five, I would stick with these:
As Neovim can be used only in a terminal, it was hard not to try a few to choose the best one. I tried to use Mac's terminal, iTerm, Alacrity, and Kitty. I like Alacrity, but to me, Kitty is way faster. So, it's out of the question; I've chosen Kitty Terminal. I don't plan to switch to something else as of now.
Managing windows within the terminal is important, and if you think about Tmux or Xmonad, you're thinking in the right direction. When I use Arch Linux, I prefer to use Xmonad. But as my main development machine is a Mac, I'm using Tmux configured to meet my criteria. In case I'm working on some project for a while, I use Tmuxinator to run everything simultaneously. Recently, I've started using Amethyst on Mac as an alternative to Xmonad. I'm using it with JankyBorders. Both fully cover my needs.
Along with Neovim, Kitty, and Tmux, there are a few more terminal apps that I can't live without. Namely, Ranger or Vifm, which helps with file management. In most cases, I use the fuzzy finder(fzf) in the terminal, but whenever I have to do something more complicated, I use one of them. My favourite process management tool is Htop, as it covers all my needs and is easy to use. Apart from that, I have written a few tools in Python and Bash that also ease my life.
You already might guess I have lots of configurations. All of them are public, and you can find them here.
Even though I've already shared so much about my love for Vim and Linux related stuff, there are a few other hobbies and passions that truly make me happy. I'm really passionate about Python. If you open "Pet Projects," you'll see that in my free time, I code a lot, and often I use Python to solve my daily needs. Apart from Python, I like to write Bash scripts. In my configuration repository, I have several scripts that are responsible for setting up my environment. It will be unfair not to mention Node.js and TypeScript. I enjoy the web in general, especially when it comes to web architecture, micro-frontends, web components, progressive web apps, mobile development, etc.
It's impossible not to mention my latest hobbies. When I'm on pause from writing a new pet project, I like to improve my skills on these websites PicoCTF, CodeWars, or TypeRacer.
Reading books is also included in my daily routine. In most cases, these books are technical, about software architecture, functional, or object-oriented programming. Here are my favourites:
Generally speaking, I like to learn new stuff. When I want to start a new "Pet Project," I'm looking not only for the idea but also for the technologies I haven't used before. If you're like me, then you know that the world is too big to stick to one technology or programming language.