log 2 = 0.3010

log 2 = 0.3010

This is my second weekly log.

Language Servers

Language Servers are awesome. In one of my previous blog posts, I have talked about Abstract Syntax Trees and how they play an important role in building developer tools.

I am super interested everything about Editors and IDEs. Plugins, Text Editing Algorithms, Text searching algorithms, UTF-8, and literally anything regarding text editing. You name it, I am ready to learn about it.

I wanted to know more about language servers, ever since hearing this talk.

So, I started this week by skimming through stuff about Language Servers, Lexers etc. The conversation happening here made me to get a idea about language server implementation of crystal language called scry.

Few things to note here are, Language server protocol could be read from it’s open source repository.
Microsoft/language-server-protocol
language-server-protocol - Defines a common protocol for language servers.github.com

It uses JSON-RPC to communicate back and forth.
JSON-RPC 2.0 Specification
JSON-RPC 2.0 Request objects and Response objects may not work with existing JSON-RPC 1.0 clients or servers. However…www.jsonrpc.org

Why JSON-RPC ? It’s probably lightweight and same reason why JSON is preferred over XML ( JSON’s size is much smaller compared to XML )

{
  "name": {
    "first": "Vishnu",
    "last" : "Bharathi"
  }
}

Vs

<name>
  <first>Vishnu</first>
  <second>Bharathi</second>
</name>

XML uses 66 characters and JSON uses 45 characters !

Tired days

I was tired most of the week nights. I did long commutes in bus. Heavy rain is making these commutes more adventures and sometimes tired I guess. So this week is going in a more relaxed phase.

pv

I learnt about this amazing command utility called pv ( Pipeline Viewer )

$ yes | pv > yes.txt

pv intercepts writing yes command output to a file and shows its progress.pv intercepts writing yes command output to a file and shows its progress.

Trees

I happend to go through some really basic stuff about trees this week. Also tried to cartoon that stuff and will probably upload them to pinterest later this week.

linkedlist.cr

I wanted to build a production quality linked list in crystal and i started on it last week. I spent most of my weekend building it and i am close to completing singly linked list.
scriptnull/linkedlist.cr
linkedlist.cr - Linked List Implementation for Crystal Programming Languagegithub.com

I wrote a lot of tests ( 70+ ) for my code and actually felt the feeling of writing object oriented code after quite some time.

Dream in code

I think I spent a good amount of time with linked lists and programming, that when I woke up the Monday morning i had a dream of rewriting a Unix command line utility in rust. Haha. Just like the good old days when I dream of making npm packages for every computer science problem I wanted to solve.

What is a container?

I watched this amazing talk about containers. It’s really cool and i would definitely recommend it to people who are into containers.

DEF CON

I also love this conference named DEF CON. I take time to learn about computer and information security whenever possible. This weekend I watched and liked this talk on proxies and botnets.

This is helping me

This whole weekly log thing is very new to me and i already feel that it’s helping me by having notes on various things I learn and do. This is kind of fun, but I want to streamline the process more.

Wish list

  • [DONE] Upload the tree data structure cartoons to pinterest

  • Launch linkedlist.cr v1.0.0

  • Contribute to a language server.

Thanks for reading. I quote verses from my favourite Tamil literature “Tirukkuṛaḷ” at the end of my blog posts.

“இன்பம் விழையான் இடும்பை இயல்பென்பான்

துன்பம் உறுதல் இலன்.”

— திருக்குறள்

Translated meaning ( in my words ): Problems are common. People who understand this simple truth will not be affected by their problems.