Fork me on GitHub
#off-topic
<
2023-06-15
>
solf08:06:06

I must have missed something in the recent trends, why is zig "so hot" all of the sudden?

👀 2
Martynas Maciulevičius08:06:28

Because somebody wrote in their stackoverflow survey that they get a huge salary. But other than that nothing else mattered and no comparisons was made. So it's probably one person or something.

👍 2
Mario Trost08:06:37

First time I heard about it was over a year ago on the Software Unscripted podcast: https://open.spotify.com/episode/3UMd6PTIcuWqwoL5SL8EeT But the hotness started, I think when https://bun.sh/ by (among other things) showing how much faster bun install was compared to npm install and attributing that to using Zig. It seems to be a great systems language and easier to learn than the other hotness du jour, Rust. Jarred Sumner's (Bun's creator) tweets mentioning Zig: https://twitter.com/search?q=from%3Ajarredsumner%20zig&amp;src=typed_query

☝️ 2
Ben Sless09:06:19

Probably Bun and Uber

Mattias10:06:37

ClojureZig in 3, 2, … 😄

borkdude10:06:45

There is a kind of clojure -> zig transpiler thing: https://github.com/dundalek/liz

lemuel10:06:48

I’m seeing people rave about Zig now that the Rust team have made some unpopular choices. I’m sure they’re both really useful but seeing a lot of hype

Ben Sless11:06:28

Looks like Zig is successfully targeting the niche of "Better C"

Martynas Maciulevičius12:06:06

Zig works like this (err returns, null returns, LSP immaturity): https://youtube.com/watch?v=VU1h-h9doS8 Rust does this policy: https://youtube.com/watch?v=gutR_LNoZw0 I think I infringed their policy by writing here about _ust. What a great way to invite developers to love your language.

👍 2
respatialized12:06:49

https://tigerbeetle.com/ I think TigerBeetle is also contributing to Zig's popularity, and if FinTech startups are building stuff atop it that would perhaps explain part of the high salaries.

Ben Sless14:06:37

We have no choice, we must start a fintech startup to push Clojure's metrics

solf14:06:09

Like nubank you mean? 😁

Ben Sless14:06:13

We need more!

💰 2
kpav14:06:11

There is a wayland tiling WM written in Zig -- https://github.com/riverwm/river -- I'm using it along with babashka which has been fun, but I'm not sure how much a niche project like this would contribute to Zigs popularity ¯\(ツ)

👍 2
vemv13:06:59

ha, that's aggressive (the project is already using CircleCI)

henrik15:06:20

System: You are a Clojure expert and a world-renowned poet.

User: Please write a poem incorporating function names from the Clojure standard library.

Assistant:

In the land of forms, where Clojure reigns,
Immutable structures, and threads that gains,
A moment there exists, where maps unfold,
And seqs align, imparting wisdom untold.

Of conjure functions, and macros defined
With defn, we decree, our truths enshrined,
In let and loop, the bindings shall bend,
To the will of the coder, the craftsman, and friend.

From the depths of filter, and into reduce,
A wisp of recursion, the essence of use,
Mapcat and some, the fates shall decide,
With comp and partial, in comradeship they reside.

The land of branches, nested and free,
A cond for the weary, an if for the three,
When a case breaks silence, and the switch replies,
An and or or whispers, in a corner it lies.

But count not all lost, ye who enter this sphere,
For the clojurists dwell with atom and var,
An assoc for binding, a dissoc for strife,
These are the tools that build worlds, and life.

So take heart, o traveler, from conj and merge,
A transduce to channel, the functional urge,
May you seek in this realm, a truth that sparks,
A poem of code, in the land of the larks.

😎 4
Ben Sless17:06:12

We had a production incident at work that involved a repeated run on external resource due to mass cache eviction and a constant TTL I was able to infer that's what was happening after being brought into the investigation pretty quickly, but I don't think there's anything special here, I just had enough knowledge regarding how we use our cache, what can happen if it goes bad, and was able to easily put 2 and 2 together. My question is - how can we best make sure this knowledge and ability to infer those problems aren't exclusive to me?

nivekuil17:06:02

org-scope incident review sessions

hiredman17:06:23

not really any kind of solution, but made me think of https://cohost.org/mononcqc/post/1376487-paper-ironies-of-au the summary and the paper talk about failure cases of automation, and how increasing automation effects how operator response to problems.

👍 4
🙏 2
2
Noah Bogart17:06:00

Every time there's an incident at my company, we do a blameless https://en.wikipedia.org/wiki/Five_whys discussion, where we all discuss exactly what happened with as much specificity as we can, try to not talk just about "who did what" but also what intentions and goals for specific actions were, ways that communication broke down, and what kind of safe guards we could put into place later. One or more people take notes, and then write a more formalized document afterwards and put it into Notion (which is our document share of choice). It's helpful to review occasionally, and most times processes are changed to reflect ways things went wrong

Ben Sless17:06:37

It's similar. It's a combination of several failure states which coalesced to persistently mess up the system. That things happened automatically certainly made things worse, and made them persist on a wonky state. Slow rolling restart was what solved the issue. But now I want my colleagues to be able to see something like that then figure out that a rolling restart will solve it (a bulk restart would have been bad)

hiredman17:06:51

the paper the above post is summarizing recommends doing things manually to keep skills up

👍 2
Ben Sless17:06:23

What I'm bothered by is the correct mix of trivia necessary to understand and solve such issues at real time

hiredman17:06:32

at my last job very briefly we had an org mode file that we would periodically export to a fancy pdf called "Manuel: the Manual" that was just a dump of operational stuff from running our monolith

hiredman17:06:30

it was challenging to keep up to date, specifically because the problem areas were often places where there was a lot of change, often trying to address the problems

2
Daniel Craig20:06:41

Make a dashboard that makes the problem visible

phill09:06:57

As noted, it is a hard problem because the same thing does not happen twice. In this event, you had a "thundering herd" or a "cache stampede", but you will fix that; next time the lights flicker the cause will be something else. The best option is to send people to Strange Loop every year. :-)

🙂 2
Ben Sless09:06:31

"But doctor, I've already watched all strange loop videos!"

Ben Sless09:06:09

We had periodic cache stampede, which is cos(as fun)

kennytilton15:06:45

I once introduced a practice of voluntarily writing up post-mortems of interesting tech problems, be they bugs that make it into production or multi-day train wrecks. I modeled it after journals I would find in climbing shops, North American Climbing Accidents. If someone survived, they could write up their own accident. They were short, to the point, first breaking down what happened, then concluding with lessons learned. This made them, first, easy to absorb in small bites, and second, great for specifics on how to stay out of trouble. Cautionary tales, as it were. More than once I remember thinking, "Oops. I do that." I and one guy followed the practice for a few months, did not catch on. Not sure sth like this works if mandatory. 🤷 https://www.amazon.com/Accidents-North-American-Climbing-2022/dp/1735695696

4
Ben Sless15:06:39

The post mortem is going to be a hoot for sure

kennytilton17:06:07

Better than a post-mortem would be an explicit process change or software enhancement that would prevent the problem from ever happening again. But we just lost three days on this, no time! Human nature wants to make up for lost time, so we just carry on as we did before with 🤞 .

finchharold21:06:19

Any js people?

hiredman21:06:38

no return in the code that handles let, falls through to the lower switch

hiredman21:06:15

I recommend starting by writing a reader, and then write eval (the interpreter) for that

finchharold21:06:28

Thank you for the reply. Could you give me an example?

hiredman21:06:27

a reader reads the characters (a b c) and returns a list when the first element is the symbol with the name a, the second is the symbol with the name b, and the third c

hiredman21:06:45

more like how you would usually think about using a json parser then how you might think about using traditional parsing (lexing, building a parser tree, etc)

hiredman21:06:16

the most common way they are implemented is as a very naive straightforward recursive descent kind of thing

hiredman21:06:43

https://github.com/kanaka/mal might be interesting to look at

hiredman22:06:45

the last section of sicp https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/full-text/book/book-Z-H-25.html#%_chap_4 is about implementing a programming language(a lisp), to the point of designing a register machine that runs the language, but unfortunately leaves out reading, just re-uses the host scheme reader

hiredman22:06:56

(last and second to last?)