<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kevin Asaria</title>
    <description>The latest articles on DEV Community by Kevin Asaria (@kevinasaria).</description>
    <link>https://dev.to/kevinasaria</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F209237%2F716bf7a6-df03-4f09-87ba-e5f4dd66d174.jpg</url>
      <title>DEV Community: Kevin Asaria</title>
      <link>https://dev.to/kevinasaria</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kevinasaria"/>
    <language>en</language>
    <item>
      <title>Solving Solved Problems</title>
      <dc:creator>Kevin Asaria</dc:creator>
      <pubDate>Fri, 29 May 2026 16:43:01 +0000</pubDate>
      <link>https://dev.to/kevinasaria/solving-solved-problems-2gm7</link>
      <guid>https://dev.to/kevinasaria/solving-solved-problems-2gm7</guid>
      <description>&lt;p&gt;I am currently working on an embedded system project and as&lt;br&gt;
I continue along with it I have this feeling that I am solving&lt;br&gt;
already solved problems.&lt;/p&gt;

&lt;p&gt;Let me paint you a picture of the things I had to solve and my&lt;br&gt;
tech stack. I chose to use the Raspberry Pi Pico as the microcontroller so that I could make use of Micropython as I am already acquainted with Python.&lt;/p&gt;

&lt;p&gt;I could not go back to C and C++ as my skills in them had already atrophied from not using them actively in more than 3 years. I had also not engaged in any meaningful embedded project in that time. Below is the tangled mess of the breadboard prototype.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6pyv582zdrfu04wbrhb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6pyv582zdrfu04wbrhb.jpeg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the first problems I had to solve was how to create an abstraction to use shift registers as my means for input and output. The aim being to conserve the number of pins I would use in the board. This took more time than I had initially anticipated and I only searched if there was a solution for it after being done coding it. The solution I found had some similarities with the one I had made and it was from 4 years ago. I did not regret it since my solution was more flexible and tailored to my code structure.&lt;/p&gt;

&lt;p&gt;Most of the libraries I was creating were somehow already created but&lt;br&gt;
their structures were different from how I had structured mine. They were missing some functionality that I had or vice versa. So in a way I was solving solved problems but this being an embedded system that I have to understand almost end to end, I believe I did the right thing by solving them.&lt;/p&gt;

&lt;p&gt;Another issue I tackled was logging. I have never really thought much about logging but in embedded systems it is quite crucial as you want to precisely know what your system was doing before it just crashed. Tackling this topic reminded me of business process management, whereby you can extract a business process from the logs that are there.I continue to aim for my system to be like so but I have fallen short in some ways. Add to that , that I am logging in a multithreaded program, I have 2 threads running - the pico has 2 cores - working on a multicore system is another learning journey that I am yet to complete.&lt;/p&gt;

&lt;p&gt;The issue that made me realise finally that I have been solving solved problems is OTA - Over The Air updates. When I started working on this project I had not thought that I would need to update my code remotely. I came with my mentality from over 3 years ago when I was making toy embedded systems. I have been doing backend systems for the past years and over there this is given by default unlike in embedded systems.&lt;/p&gt;

&lt;p&gt;From the little research I have done, most of the OTA systems seem to be for C/C++ systems. I feel I need to solve this solved problem for my Micropython code. I still emphasize about my code structure, I don't want to affect my code architecture that much. But the mere thought of what it will take to create an OTA system from scratch makes me shiver. I am sure over there too, I'll have to deal with things that I have not already foreseen.&lt;/p&gt;

&lt;p&gt;This journey has made appreciate libraries and frameworks that have already been created and why companies pay to use proprietary libraries. Solving already solved problems sucks and is not your core business. I have learnt it the hard way. However, you learn a lot in&lt;br&gt;
the process of solving them which hopefully makes you a better developer.&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>iot</category>
      <category>python</category>
      <category>systems</category>
    </item>
    <item>
      <title>Migrating To Neovim v0.12.0 Challenge Faced And Solution Found</title>
      <dc:creator>Kevin Asaria</dc:creator>
      <pubDate>Sat, 11 Apr 2026 11:21:10 +0000</pubDate>
      <link>https://dev.to/kevinasaria/migrating-to-neovim-v0120-challenge-faced-and-solution-found-6f</link>
      <guid>https://dev.to/kevinasaria/migrating-to-neovim-v0120-challenge-faced-and-solution-found-6f</guid>
      <description>&lt;p&gt;A week ago I saw that there was a new version of Neovim(v0.12.0) out &lt;br&gt;
and I decide to upgrade to it. These are the challenges that I faced &lt;br&gt;
and how I solved it. &lt;/p&gt;

&lt;p&gt;Context, as is required nowadays. I use LazyVim to transform the basic neovim to be a capable IDE. And indeed I do not do much configuration cause I have not learnt to and the out of the box experience has served me well. I just install LSPs through mason and so far I have not faced any issue.&lt;/p&gt;

&lt;p&gt;I thought that switching to neovim v0.12 would be as easy as &lt;a href="https://github.com/neovim/neovim/releases/tag/v0.12.1" rel="noopener noreferrer"&gt;downloading&lt;/a&gt; the binary , deleting the current one and replacing it with the new one. Easy peasy lemon squeezy.&lt;/p&gt;

&lt;p&gt;However, I came across a problem whereby the UI broke and I kept getting this error&lt;/p&gt;

&lt;p&gt;&lt;em&gt;E5108: Lua: vim/_core/editor.lua:0: nvim_exec2()[1]..BufReadPost Autocommands for "*": Vim(append):Lua callback: /usr/share/nvim/runtime/lua/vim/treesitter/languagetree.lua:208: /usr/share/nvim/runtime/lua/vim/treesitter/languagetree.lua:391: attempt to call method 'set_timeout' (a nil value)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After perusing through this error message, I guessed that it was an issue to do with treesitter as there was a change made about it in the new version. This &lt;a href="https://www.qu8n.com/posts/treesitter-migration-guide-for-nvim-0-12" rel="noopener noreferrer"&gt;article&lt;/a&gt; explains more about it. So I installed treesitter on my system using &lt;a href="https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md" rel="noopener noreferrer"&gt;cargo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, the UI problem persisted and I was getting a bit frustrated and for a moment turned to explore the code I was interested in on vscode but it was a hard change since my built muscle memory made it feel unusable. &lt;/p&gt;

&lt;p&gt;So I went back and looked at the error, I tried reinstalling LazyVim again by replacing the old configs as mentioned in their &lt;a href="https://www.lazyvim.org/installation" rel="noopener noreferrer"&gt;installation guide&lt;/a&gt; but the problem persisted. Loosing patience, I came to the grave realisation that maybe it was time to familiarise myself with vscode. Anyway, it is what everyone uses nowadays.&lt;/p&gt;

&lt;p&gt;I decided to make one last shot in finding a solution before bidding my beloved editor good bye. Looking at the error message, I saw a curious path in the error message '/usr/share/nvim/runtime/...' . I decided to delete it. I thought it would get reinstalled back when I reinstalled LazyVim. It wasn't and even the LazyVim installation could not take place. I got the truncated error below when I opened nvim&lt;/p&gt;

&lt;p&gt;&lt;em&gt;E5113: Lua chunk: vim/_init_packages.lua:0: module 'vim.uri' not found: no field package.preload['vim.uri']&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;which led me to this &lt;a href="https://github.com/nvim-lua/kickstart.nvim/issues/454" rel="noopener noreferrer"&gt;github issue&lt;/a&gt; which explained I had to copy my specific neovim version's runtime to the path '/usr/local/share/nvim'. In my case I had to do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/neovim/neovim.git
&lt;span class="nb"&gt;cd &lt;/span&gt;neovim
git checkout v0.12.0
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; runtime /usr/local/share/nvim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now things are working as expected and I can breathe a sigh of relief. As you have seen, it was just a matter of going with my gut feeling in order to fix this issue. I don't think changing versions is as hectic in vscode as in neovim. I know it is as skill issue but if someone like me who is used to getting beaten by software felt so frustrated, I imagine that a less patient user would have already moved on. &lt;/p&gt;

&lt;p&gt;Thank you for your time and hope this helped you.&lt;/p&gt;

</description>
      <category>neovim</category>
    </item>
    <item>
      <title>My Journey Into Elixir </title>
      <dc:creator>Kevin Asaria</dc:creator>
      <pubDate>Thu, 03 Jun 2021 08:23:06 +0000</pubDate>
      <link>https://dev.to/kevinasaria/my-journey-into-elixir-34n7</link>
      <guid>https://dev.to/kevinasaria/my-journey-into-elixir-34n7</guid>
      <description>&lt;p&gt;I have always been interested in learning programming languages rather than frameworks of a particular language. Last year(2020) I decided to learn a functional language having heard so much buzz around them.&lt;/p&gt;

&lt;p&gt;Now the question was which functional programming language would I embark to learn. At that time the only functional languages that I had heard of were Lisp and Haskell but then the youtube algorithms kicked in and gave the the video &lt;a href="https://www.youtube.com/watch?v=lxYFOM3UJzo"&gt;Elixir: The Documentary &lt;/a&gt; by honeypot. &lt;/p&gt;

&lt;p&gt;I liked the emphasis they put on hardware , that is, computers are getting more cores and other languages are not designed to utilise such infrastructure. In the video they also stated that it could be used in &lt;a href="https://www.nerves-project.org/"&gt;IoT&lt;/a&gt; and its use reduced the use of server resources. When I heard all this I was hooked.&lt;/p&gt;

&lt;p&gt;That's how the my journey began with Elixir. It has been a slow journey but currently I am learning the &lt;a href="https://www.phoenixframework.org/"&gt;Phoenix&lt;/a&gt; framework for building web applications for a project I am planning to undertake.&lt;/p&gt;

&lt;p&gt;This is just to encourage you to peek into the Elixir language and get a different perspective of what programming can be. Like pattern matching instead of assignments when using the = operator or spawning processes to do some work.&lt;/p&gt;

&lt;p&gt;The journey continues slowly but surely.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
