# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 36
# self = https://watcher.sour.is/conv/kp4v2wa
#randomQuestionsOfTheDay

Rust or Go? And why Go?
@eaplmx Go. For the following reasons:

- Go has a simple and easy learning curve with the right balance of "languages" features
- Go is a statically compiled language with good performace
- Go has a great standard library
- Go has great tooling
- Go's packaging (whilst some argue against) is actually pretty good
- Go has first-class concurrency
- Go's concurrency model (CSP) lets you model concurrent programs linearly making concurrent programs easier to read
- Go has a focus on readability
- Go compiles insanely fast (if you avoid using CGO)
- Go doesn't support silly things like classes which is fucking great!
- Go supports actual good reuse with interfaces and interface types
- Go supports functional programming (yes it does!)
- Go is awesome!

@eaplmx Go. For the following reasons:

- Go has a simple and easy learning curve with the right balance of "languages" features
- Go is a statically compiled language with good performace
- Go has a great standard library
- Go has great tooling
- Go's packaging (whilst some argue against) is actually pretty good
- Go has first-class concurrency
- Go's concurrency model (CSP) lets you model concurrent programs linearly making concurrent programs easier to read
- Go has a focus on readability
- Go compiles insanely fast (if you avoid using CGO)
- Go doesn't support silly things like classes which is fucking great!
- Go supports actual good reuse with interfaces and interface types
- Go supports functional programming (yes it does!)
- Go is awesome!

@eaplmx Go. For the following reasons:

- Go has a simple and easy learning curve with the right balance of "languages" features
- Go is a statically compiled language with good performace
- Go has a great standard library
- Go has great tooling
- Go's packaging (whilst some argue against) is actually pretty good
- Go has first-class concurrency
- Go's concurrency model (CSP) lets you model concurrent programs linearly making concurrent programs easier to read
- Go has a focus on readability
- Go compiles insanely fast (if you avoid using CGO)
- Go doesn't support silly things like classes which is fucking great!
- Go supports actual good reuse with interfaces and interface types
- Go supports functional programming (yes it does!)
- Go is awesome!

PS: I quite like these random #randomQuestionsOfTheDay posts of yours 😅
PS: I quite like these random #randomQuestionsOfTheDay posts of yours 😅
@eaplmx no opinion, because I know neither
@prologic it's interesting. I'd say that with a couple exceptions this list applies to scala too and it's why I like that ecosystem so much
(scala does not compile insanely fast, though the whole community recognizes this and is trying to fix it. also the built-in concurrency primitives aren't the greatest right now but there are exceptional libraries that do it well)
@abucci Sadly for me I _could_ never (and still can't) get into more pure functional languages. I struggled with Haskell in my under-grad some ions ago and well I like and enjoy some aspects of functional programming, just not all of it. Also the JVM irks me 😅
@abucci Sadly for me I _could_ never (and still can't) get into more pure functional languages. I struggled with Haskell in my under-grad some ions ago and well I like and enjoy some aspects of functional programming, just not all of it. Also the JVM irks me 😅
@prologic I guess I need to do something useful on Go since I have only learned the basics and I didn't reach all this awesome you mentioned.

Rust was too much for me at this stage, but it's the _hot language_ right now, so I always have the doubt if it's something sensible to learn next year.
@prologic hehe 😁
@eaplmx Don't learn the hot 🔥 🥵, Learn the practical thing 🤗 🤣
@eaplmx Don't learn the hot 🔥 🥵, Learn the practical thing 🤗 🤣
Go for me replaced Python. My main two language of choice these days are Shell and Go.
Go for me replaced Python. My main two language of choice these days are Shell and Go.
@abucci I tried to learn Scala when it was trendy (I think it was when Twitter switched from Ruby to Scala), but the lack of documentation in Play Framework was a roadblock (I kind of hate Java, BTW). By 2022 is Scala any good?
@prologic That's why I dusted off PHP 5.6 to learn the updates on 8.1 👀'
@prologic I like Python so much, but the performance is horrible for a big scale. I was betting on Nim but doesn't have all the benefits you mentioned before. I think, and a trust you, that Go could be that Python replacement.
It depends what you want to do , I use different languages for different use case :

- Python is good for AI and small Linux management things
- Java is good for big data pipelines
- Go is good for API, programs, tooling and others things
- Nodejs is good for Web UI.
It depends what you want to do , I use different languages for different use case :

- Python is good for AI and small Linux management things
- Java is good for big data pipelines
- Go is good for API, programs, tooling and others things
- Nodejs is good for Web UI.


It is like a database you should choose wisely depending of your use case.
It depends what you want to do , I use different languages for different use case :

- Python is goid for AI and small Linux management things
- Java is good for big data pipelines
- Go is good for API, programs, tooling and others things
- Nodejs is good for Web UI.
Btw Go is also good for networking. And
C# has a very beautiful reflection library I still prefer go but I may think in C# if I have to deal with a lot of reflection.
@tkanos 👌
@tkanos 👌
@tkanos I agree! I like C# a lot, but I'd go with Script languages (Python, JS, PHP) for quick prototypes. Even working JSON with recent versions of C# takes a lot of Dev time.
As a user of programs, it makes me groan to see a program written in anything but C or C++. In just about every other language, it's too easy to manage dependencies, and two problems arise.

1. Microdependencies
2. Feature creep because you can do *x* in 3 lines of code by adding this giant dependency. (Why does gron need HTTP download support?)
@mckinley Agree on "micro dependencies" (NodeJS / NPM ecosystem is _quite_ guilty of this); however I think this comes down to some level of "good practise" and "good code hygiene" -- I don't _necessarily_ think its the language's fault or the tooling.

Re gron, to be fair, net/http (including client and server) are part of the Go standard library. I wouldn't complain about that as an unnecessary dependency because it isn't, maybe an unnecessary feature perhaps? 😅
@mckinley Agree on "micro dependencies" (NodeJS / NPM ecosystem is _quite_ guilty of this); however I think this comes down to some level of "good practise" and "good code hygiene" -- I don't _necessarily_ think its the language's fault or the tooling.

Re gron, to be fair, net/http (including client and server) are part of the Go standard library. I wouldn't complain about that as an unnecessary dependency because it isn't, maybe an unnecessary feature perhaps? 😅
Also, because it's so annoying to manage dependencies with C and C++, there are often flags you can set to disable functionality related to a dependency if you don't need it.

Gron has no such option. Apparently there is no reason why you *wouldn't* want a text processing program to make network requests.
@eaplmx I like Go, never actually used Rust. As a friend of const correctness, I have to say that Go failed on that completely. Even Java is better on that. It appears that Rust solved this close to perfect (phrased vaguely since I just read about it), so that's a very big plus for Rust in my book. Unmutability by default is what I truly love. On the other hand, implicitly returning the last expression in Rust totally throws me off. I want explicit returns *everywhere*. Period. Random strong opinion of the day. :-)
@eaplmx I'm pretty biased because I've been using scala as my language of choice since 2013 or so 😆

Whatever documentation issues there were in the early days have long since been addressed, in my opinion. Martin Odersky, the original creator of the language, is in academia and regularly publishes academic articles on scala and its theoretical underpinnings along with his students. So, if you're into that sort of thing, there's lots of theory to read. Since it's typically a top-20 or top-30 language in various language surveys, there's a lot of StackOverflow activity about it, meaning more nuts-and-bolts practical stuff. The major libraries and frameworks nowadays tend to be very well documented (I've never used play and cannot speak to that one).

Scala doesn't look anything like java. You could write scala that looks like java if you want, in the same way that you could write C that looks like java if you want. But idiomatic scala is not like java, and generally the OO facilities in scala are not used (in my experience anyway). You can compile scala to Javascript and run it in a browser, or to native machine code--it's a distinct language with the JVM as only one of its compilation targets.

Where I stand is that I refuse to use a language that doesn't have a sound, well-described theoretical foundation anymore. I've been burned too many times learning languages that lack a clear foundation (*cough* python *cough*); I think this inevitably leads to a lot of wasteful hacking and confusion. I also very much want functional programming constructs to have first-class language support, without being forced to always use them forever like you would in a language like Haskell. It's also nice to have a big ecosystem of existing code to use if you need it. Scala satisfices on all those criteria, and has a bunch of other nice features besides, so I stick with it. It's definitely not for everyone, but 🤷
@prologic It's not for everyone, but it's worth noting that scala is not a pure functional language. There are imperative constructs if you want them, there are OO constructs if you want them, and you can use it like a scripting language if you want. There are several libraries for doing go-style coroutines if you want that. Also, scala can be transpiled to Javascript, compiled to JVM bytecode, or compiled to native code (in several different ways). It's a misconception that scala is somehow tied to the JVM (obviously if your code calls out to Java libraries, which it can do, then you're stuck with the JVM, but that is not a necessity of the scala language). The native code, in my experience, is very performant.
@abucci Gotcha 👌
@abucci Gotcha 👌