What I did in 2021
Year 2021 #
I feel that last year came as both a blessing and a curse(reason not that hard to guess, right?) to me. I got a lot of free time due to online classes. This free time allowed me to really explore a lot of things on my own. This year also taught me a lot of things, taught me how to better appreciate things that I have in present. But here I will mostly Write about technical/programming aspect of 2021.
Python #
I focused most of my last year in first learning python and then in trying to master it. It is such an accessible language that it makes me happy to see its (unsurprising) ever-increasing popularity. While in the zen of python it is written that
There should be one– and preferably only one –obvious way to do it
which is more or less false(for better or worse) in my opinion. Python is one of the most flexible language with very low amount of “magic”(at least compared to ruby). With an easy to understand concept of objects and same ease to change those same objects really makes it a beginner friendly language. Not only does it help in writing right code, but when you do something wrong its errors are really detailed and are even better in python 3.11.
I have written about some python features like dataclass and decorators in the past, and I am planning to continue doing so(if you want me to write something just contact me through mail or any of my socials). Because of its simplicity and its ease create and test scripts, we can virtually automate most of our digital tasks using this. I made this script to scrap results of multiple students within minutes using selenium.
Messing with css during the Graphica1 taught me hate css and made me mostly lose interest in front-end(don’t hate front-end tho). And that’s why I shifted my focus towards, a battery-included back-end framework named-
Django #
Django is a backend-framework written in python and uses python to create whole back-end. It solves many of its parent’s quirks that are not required in a production ready service such as above mentioned the zen of python problem. Here while flexibility of python is available but is not used. There are some really obvious right and wrong ways to do things unlike unadulterated python.
I made multiple projects using it and it became really easy to manipulate data when whole django app structure became somewhat clear to me. Writing rest-api instead of a web-app is also easy with djangorest framework. Django is just getting better and better and better and its in constant development. Check out django 4.0.
C #
I had history with c++ when I started C. I studied and made programs in c++ in high-school. I also wrote about c++ vectors. I started C because it was in our data structure course. I was surprised by how liberating it felt to ditch STL. Doing everything yourself. At the same time making data structure made myself made me realise importance if STL and other libraries that I took for granted.
Ruby #
I basically learnt ruby to use it for Rails. I felt that ruby is to python what python is to C in regards of “magic”. While python still constraints you to reduce “magic” with methods and attributes, for one it limits your “messages” to existing methods and attributes, in ruby you can go much further.
Jekyll #
Jekyll is a static-site-generator framework written in, you guessed it, ruby. There is a reason why even github by default gives support for Jekyll.
Rails #
Like django but with ruby’s magic. Lacks some obvious django features like admin panel. I am still learning it so I can not say much about it.
Editors #
I started my text-editor/IDE journey with turbo-C++, that’s what they had in our high-school.I mostly used notepad++ at home. During first semester, when we were taught algorithms using python, for which pycharm was recommended by our teacher. its good, students can get pro version . But its heavy, its not a text-editor but an IDE. Later we were told by seniors to go with VS Code for its versatility. Our data structure teacher used CODE::BLOCKS.
I used VS code for majority of 2021 and it did not disappoint me at any point. You will be able to find extension related to almost anything. Only issue that I have with VS code is that it is an electron app and that leads to its high ram and resource usage. But to its developer team’s credit they take performance very seriously, for example last year they built coloured bracket pair extension’s functionality inside VS code itself to improve performance. But due to it being js based you can literally run it inside your browser2.
Later I found about vim, and i fell in love with its shortcuts and modes. It became my go-to text editor, not code-editor tho, because it lacked many things(by default), I did not want to spend my time and energy configuring it. And then I found VSCode Neovim, which i use to this day. Its VS Code but witch full vim support which I don’t know why you wouldn’t want to have?
I stayed away from even trying emacs because how time consuming it looked to configure it, when I had VS code, search an extension, click install and done. Also because vim, I would lose my sense for vim shortcuts if I switch to Emacs, right? switching to text-only editor can be overwhelming, I wondered? How wrong was I?. Oh, How much I regret not coming across doom emacs sooner.
Doom Emacs is everything I can wish for in a text editor and if there is not something in there which is not to my liking I can easily change that using its easy to understand and modify config .el
files. I first used it exclusively on WSL and then it made me finally convert to linux for good. Its performance is good in WSL 1(loading takes a little time) and phenomenal in WSL2 but very very slow in MSYS2. It made me appreciate text-only environment in its true glory, After getting used to text only environment I finally shifted to linux, and I am writing this blog in doom Emacs. hopefully its going to be last time I shift.