Zharko Popovski

Reinventing the wheel again and again...

Having experience in the different areas of Software Development, from tiny microcontrollers, through Desktop, Mobile and Web Applications, I learned to respect the application performances and application resource consumption. Today, on the current computers probably we don't have to worry about the performances, but we came from time to time in the situations where we feel that our PC is working too slow even though we have already upgraded our pc with better CPU, more RAM, SSD...

These situations are becoming more and more often when you are working on some big project, running multiple instances, processes, debugger, testing tools in the same time. After detecting the source of that problem we are forced to kill some process, or some tool which we are using and to continue working without our complete development environment. To cut down resource's consumption we have two options, either we'll try to find some replacement or we'll start that tools from time to time... or the third option if we are so much frustrated from that memory consumption we'll try to develop some simple basic tool which will replace that tool for which we can not find any alternative free or open source to replace it.

One of the biggest problems I see is using hybrid desktop tools or applications. Most of the hybrid applications today are using Electron framework which allow developers to develop desktop applications like standard web SPA with JavaScript, HTML and CSS. Developing a project in some hybrid framework is cutting the development time and allow running the same codebase on different platforms which is not so bad, but the problem is when the project which we use is so big, with a lot of loaded plugins and functionality that consumes our free memory. Some examples are Visual Studio Code, Postman, Insomnia, Skype, Viber, WhatsApp, Signal... and many more apps which we are using every day which are making our pc slower and slower.

In my development environment I am using almost all the time Postman rest client which is pretty popular rest client but very memory hungry, and if you are using for example VisualStudioCode which is also Electron app your memory consumption will be much bigger. Some replacement for VisualStudioCode is SublimeText but after testing different code editors i found one pretty lightweight, open source and cutting edge editor LiteXL which is developed in C and Lua with very high performances and very little memory consumption. Compared to VSCode, LiteXL is rendering everything natively with OpenGL or DirectX using SDL library. There are also very useful plugins developed which are very simple and developed purely in Lua which makes LiteXL complete development editor and better replacement from SublimeText for VSCode. Finding Postman replacement was a little bit hard, especially where nowdays almost everything is developed using Electron. I found one pretty old that I used many years ago, RestClient, developed in Java using AWT but after usability on Postman RestClient was pretty old and borring. I analysed RestClient source code because it is open source with one idea in mind to extend it with some features having previous Java experience with AWT and Swift, but I found that is too much time-consuming so without any other alternative i decide to reimplement some of the Postman features as new toy project, and then Rest Cli was born, simple rest client born from frustration of other Electron rest clients.

For programming language I decide to use either Go or Rust and I start looking and testing different UI libraries. After some time, while I was testing and experimenting with the Fyne Go UI toolkit, I developed a simple prototype. Fyne is rendering everything natively, it was a pleasure to play with, so I decide to stay with Fyne to see how it will look at the end. Rest Cli is stil in dev stage but already useful for some basic rest calls, probably not as replacement for Postman but in the near future I expect to use it more and more than part of my development environment.

Rest Client Github Repo https://github.com/zarkopopovski/rest-cli