Choosing lang for new project: flog

#devlog #programming #flog

I see you hating on the name already, but stop that. I'm already in love with it.

Filter-logs: flog. A command-line utility to filter logs depending on if it's an error, infromation, trace, debug, or wheatever kind of severity. And yes, especially for multiline logs!

Sample use case:

# Only give me the <1 day old logs from fileOutput.log
$ flog -t 1d fileOutput.log

# ...or what about only error logs
$ flog -s error fileOutput.log

# Only show me error logs from dotnet run
$ dotnet run -v m | flog -s error

Would be so useful, and not that complicated to make, right?

I've not found any such tool online, so let's just make one of my own. But what language?


Choosing language is so much harder the more programming languages you learn. They do have their own strengths in things like performance, memory usage, enjoyment to work with, enforcement of programming heuristics, etc.

For this project I rounded up the following languages as candidates: Go, Crystal, C# and F#.

These are not all programming languages I know, but are all programming languages that I want to work with when making this tool. Some languages such as Lua, JS, PHP I've intentionally excluded because it's a hassle to install for the mere user that doesn't have Lua runtime, Node.js, PHP or whatever installed already. I only looked at a subset of languages that support delivering a single native executable.

Lang: C#

Pros:

Cons:

Lang: F#

Pros:

Cons:

Lang: Go

Pros:

Lang: Crystal

Pros:

Cons:


My choice

It's not that extensive of a list. I somewhat wanted to do some more Crystal because I'm really fond of their type system. But I've been having such a good experience lately with Doom Emacs + Go-mode that I just want to jump back into that IDE all of the time, just don't have a project... (UP UNTIL NOW >:) )

Therefore, I'm going to go with go~

For reference, the project will initially (and possibly indefinetly, until that ForgeFed starts kicking up speed) over at GitHub: https://github.com/jilleJr/flog