January 3, 2022
Life Update - December
Last month of the year. December was for me even more productive than November and I continued to work on the work/life balance. There were many 16 hour days, but I took the Christmas time easy to counter those.
Learning
I continued to work on the capstone project and learn more about non-invasive blood pressure monitoring. I worked on the dashboard I started building last month and also debugged some microcontroller code. The PPG sensor we use doesn't seem to want to run on faster sample rates than 200Hz.
I also finally started to write some Rust code too. I participated in the Advent of Code 2021 with Rust. I did not start it on the 1st of December and still have not finished it, but I'm continuing to work on it and learn more Rust as I go. The problems included in this years challenge are hard enough that I would struggle with Python/JavaScript too, so it takes 100 times longer to figure them out while also wrestling with the Rust compiler. Just finishing the first day took 3 days for me.
I'm still reading through the Rust book too. I'm reading a chapter a week. It's getting more and more complicated and I'm struggling to understand some of the concepts. But I have to say that the folks writing the book have done an excellent job explaining these concepts in a way that even someone like me can understand them. Rust is my first low level language and I'm still able to learn these concepts with a descent effort.
I made some Rust based goals for 2022 too, but I'm going to write about them in a separate post.
Reading
I only read one book this month. Reading is something I don't like to stress about. I don't want to force it if I don't have the time or feel like doing something else.
Click Here to Kill Everybody: Security and Survival in a Hyper-connected World - I really enjoyed this book. The book is catered towards a non-tech workers, but it was still really informative and full of important points of the current state of security and privacy in the Internet of Things. I encourage everyone to read this book and think about their choices when buying internet connected devices. I also encourage every developer to read this book and think about their choices when they are developing internet connected devices.
VSCode -> Vim -> Neovim
I finally took the step and moved my main development environment to the terminal. I still use VSCode for Jupyter Notebooks, but otherwise I'm working from the terminal.
Note: I'm not saying this is a permanent solution, but I like to test out different ways of working. Lately I have had some problems concentrating and simplifying my workflows and minimizing context switching helps with that.
I started with my Vim setup, but it felt a bit restrictive after all the functionality I used in VSCode (I have kept my Vim config quite simple on purpose). I never got the language server to work the way I liked to and moving between files felt slow compared to the command palette and file explorer.
Many of the programmers I follow are using Neovim, but I have avoided it because it doesn't come pre-installed on Linux/macOS and I did not see a reason for me to do the transition from Vim to Neovim. Now though that I moved all my development to the terminal I can see the benefits of Neovim and I decided to give it a chance. I decided to leave my vim config as it is and build a separate Neovim setup based on that.
I'm using the newest Neovim with a long list of plugins:
" Plugins
call plug#begin(stdpath('data') . '/plugged')
Plug 'plasticboy/vim-markdown'
Plug 'kana/vim-smartinput'
Plug 'rust-lang/rust.vim'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'make' }
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-vsnip'
Plug 'hrsh7th/vim-vsnip'
call plug#end()
I'm amazed how fast Neovim is. Everything happens instantly and everything just works. I have to admit that setting up the Neovim LSP was quite complicated compared to something like VSCode, but after 100 or so lines of Lua it works like a charm. I setup all the languages that I use and I feel that things like autocomplete for Python works better in Neovim than it does in VSCode.
Telescope is also my new favorite way of moving between files in a codebase. It is so fast and easy to use. I never need to use the mouse or lose my focus.
I'm still learning and testing, but so far I'm in love with Neovim. It feels like the perfect middle point between Vim and VSCode. I'm going to stick with it for a few months now and then re-evaluate the situation.
Other stuff
December was a stressful month, but I took some time of during the Christmas holidays and spent time with my family and friends. I'm not a Christmas person, but it was really nice to just chill and spend time with the loved ones. I also watched some Christmas movies and played more than usual. Now I'm well rested and ready for 2022.