Published on 2021-08-28 by pepe

Why I will stay Janet

This post is the last part of my Óde to Janet programming language. If this is the first time you are here, please read the past and present tense of the story first. Writing this part took much longer, as I had turbulent times in the past half a year. But it gave me a chance to think more about the reasons. They appear in the order of importance for me.

Community

I have already touched on this point in the first part. But the more I am in this community, the more I admire its members. It is a usual mixed bag with different stories and attitudes. But I have yet to witness any animosity or infighting in it. I consider the community to be an important part of any programming language development efforts, and this one I like a lot.

Bakpakin

Many communities, especially at the beginning, need a good leader.

A good leader needs to be courageous yet humble, flexible but steady, kind yet assertive. I am confident that the creator of the Janet language is just like this. And great computer science thinker on top of that. Given the sheer amount of work needed for the Janet language project, I wonder how @bakpakin can manage it almost single-handedly. Bravo sir!

My little corner

In the course of the Janetuary, I have become part of the GitHub Janet organization with particular responsibility for the packages repository. Not that I did a lot of the work, but some I did, and it is a great honor and the peak of my professional career. Thank you for the opportunity sir!

Janet way

I was programming in many languages, starting with ZX Spectrum basic, 8048 Assembler, and ending with (you guessed it) Janet. Many of them had their unique touch and feel, but not one I saw as so distinct as I see (again, you guessed it) Janet.

I am still not sure, what are the basics of this feeling, but I guess a mix of its creator's personality, the history of Lisp, and all the development CS made from its beginning. I hope I will once be able to write a separate post about this phenomenon. Just one example for now:

Async

I have already talked about the ev module in Janet core in the Why I am Janet. At the time, it was an experimental part of the language. It is not anymore. It became one of the fundamental stones of the Janet experience. It is pretty similar to some other implementation, most notably Erlang (or people who understand it say). The fiber is still the basic computational unit that you can run on the event loop, but we also moved the thread under its umbrella. On top of it all, sit the channels for convenient communication between fibers. There is also the concept of the supervisor channel assigned to the fiber at its creation, implicit or explicit.

Where it made sense, I embraced this concept in every library from the Good Place project. It allowed me to create just one actual network server , where you need only to supply a specialized supervisor function, which solves all the protocol specifics. Be it HTTP , WebSockets , or Janet RPC.

My work

My attempt at developing the collection of the libraries for Janet is called Good Place. It was first showed to the world on my last birthday. It is still in the exploration phase of the development but is entirely usable. Right now, I am in the process of renaming individual libraries, so they better signal the intent. Please stay tuned.

Neil

One big part of the Good Place is Neil application. It is the testing ground and showcases most of the technology developed as part of the Good Place project. But it is also a time tracker/todo hybrid I am using to track all my work by the computer. There is also a slight chance I will implement it for the needs of one organization for which I am doing contracting work.

Mental health

I wrote about Janet's help during the immense struggle I had with my depression relapse last year. And I am still perusing the time with Janet as my primary antidepressive cure. It is true today, as I am writing this post and finally moved this site to my own static site generator solution. I hope you do not have these problems yourself, but I highly recommend you try Janet if you do.

The Last Language

After mustering Neil to its current shape, I cannot imagine using any other language for my future projects. Not only because I have spent a lot of time writing all the library code, but because the road from the idea to the working thing is the shortest with Janet for me.

I am convinced that Janet will be the last programming language, which I will continue to use at least until the asteroid. Just ponder about this sentence for a moment. Yes, I am that serious!

Finale

This is the last installment of my praise of Janet programming language. I have hope that at least part of my enthusiasm transfers to you, my dear reader, and that you will join us on this journey. If you do, do not hesitate to say hello in the Matrix channel we are using for the discussion these times.

In @bakpakin's words: Everything Janet is fair game! I am convinced that fairness is what we all need.