Horribly Underqualified

Saber Notes: Name Table, Parameters & Local Variables

I’ve been working on my language, Saber a lot recently. I figured I should keep some notes on implementation in case someone finds them useful, even if that’s only future-me. Saber is a scripting language intended to be a lightweight row-polymorphic psuedo-functional language that compiles to WebAssembly. Think OCaml meets the best parts of ES6. Of course right now I’m just trying to get basic functionality finished. The compiler is written in Rust.

We Get It

Spend enough time procrastinating on reddit, you inevitable end up reading the same links again and again and again. One of the common links I see are the ones that complain about JavaScript. There’s wat, the tried and tired ecosystem article and many many more. To all of those articles, I just want to say: We get it We get it, JavaScript sucks. It’s insecure, it has weird features, npm is out of control, etc.

Apple & Fashion

Go online and you’ll find particularly potent venom directed towards Apple. Critics denigrate their products as overpriced, underpowered1 scams that only uninformed dolts would buy. Others insist that Apple has become unduly obsessed with aesthetics. They perpetually raise the question: Do people really want thinner phones? Do people really need a lighter laptop? To answer these questions, yes. People do want a thinner phone. They do want a lighter laptop. Why?

People Suck at Email

Just because someone has not responded to an email in a few days doesn’t mean they’re angry at you. It doesn’t mean they don’t like you. It doesn’t mean they want to stop talking to you. They most likely forgot. Expect to send at least a couple follow up emails. If the person you are emailing is famous or important or a leader of some sorts, expect to send even more emails.

Surviving CSO

Computer Systems Organization, or CSO, is the third class in NYU CAS’s computer science program. I’ve noticed that a lot of people have trouble in CSO. This is for good reasons. The class covers a lot of ground, from the C language to systems architecture to concurrency. This is especially tricky because students face a massive paradigm shift from the relatively high level bubble of Python and Java with its managed memory and forgiving error messages, to the raw, bare metal of C and x86 assembly.

Assuming Stupidity

We’ve all heard of the term mansplaining—when a man condescendingly explains something to a person, often female, who already knows it. It’s quite terrible and unfortunately too common on tech. While I don’t want to discredit the phenomenon of mansplaining, what I’ve noticed is that this situation of a person assuming another person’s stupidity and using it to condescend or treat them badly is far more common than just the cases of mansplaining.

Stop Using So Many Damn Ternaries

A ternary operator, for those of you who don’t know, is an operator with three parts—hence ternary operator instead of binary operator. They look like this: cond ? a : b If cond is true, then the expression evaluates to a, otherwise it evaluates to b. They’re very useful in some situations, such as when you want to conditionally assign to a variable. Contrast this let a; if (cond) { a = foo(); } else { b = bar(); } With this

Endurance Traveling

When I started solo traveling a couple years ago, I became obsessed with techwear. Techwear is clothing that is “optimized” in some fashion. It uses fabrics that dry faster, breathe better, offer more stretch, more durability, etc. The brand that I became enamored with was Outlier. They offer Merino wool t-shirts that could be worn for days on end, shorts that can be used as swimming trunks, specialty button ups that are lighter than linen.

What Do You Want (Instead)?

A lot of virtual ink has been spilled about dependency hell and left-pad and how NPM is hell incarnate. Medium posts moan about how NPM is insecure, is full of bad packages and is emblematic of developers’ laziness. They’re not wrong. However, when one raises an issue with a service, there is always the inevitable follow up: what do you want instead? There’s no clear answer to this question for package management.

Mirror Shining

One of my earliest programming projects was for my Intro to Computer Science class in high school. The assignment was to create a game in NetLogo. NetLogo, for those who are not familiar, is a program where users can control “turtles” and “patches”, basically agents and the squares they move on. Users can move the turtles, which can in turn paint the patches they traverse. I decided to make a simple platformer with a twist—the map was to be encased in darkness except for a bubble of light.