Rust Macros (while Crafting Interpreters)

2023-12-31 | #crafting-interpreters #macros #programming-languages #rust

I have never used Rust extensively. The few times I have tried have ended up in me giving up due to unwinnable fights against the borrow-checker. By the recommendation of a friend I am giving this another shot. I’m making my way through Robert Nystrom’s Crafting Interpreters as well as doing 2023’s Advent of Code. I am late to the latter but I am enjoying myself regardless. I am using Rust as my language of choice for both endeavours.

Continue reading 


Love for Expression Languages

2023-12-26 | #programming-languages #rust

I love expression languages. In Rust I can do this: let last_integer = { if last_number_which_list == 0 { word_to_integer(&last_number_in_words) } else { last_number_in_words.parse::<i32>() } }; While in Go, to achieve the same result I would have to do something like this: last_integer := 0 if last_number_which_list == 0 { last_integer = word_to_integer(last_number_in_words) } else { last_integer = strconv.Atoi(last_number_in_words) } Or what feels clunkier but comes closer to an expression:

Continue reading 


Building Rant

2022-11-14 | #golang #humor #intepreters

Intro Sometime in mid to late 2021 (which is a period I’ve entirely made up because I don’t actually remember when any of this happened), I needed to rant on my company Slack. Something had happened to ruin my day and I needed to get my feelings out. But ranting takes more effort than you’d think. If you want your rant to have impact there needs to be just the right amount of !

Continue reading 


Yet Another mTLS Tutorial

2021-03-04 | #mtls #ssl #tls

I’ve come across many mTLS tutorials on the internet but none of them took me through the process, end-to-end, in a satisfying fashion. I hope to do in this tutorial is to start with the ideas of TLS and mTLS and conclude with an implementation you could reasonably productionize. Although we’ll be using a Golang server as our backend and Traefik as our reverse proxy, these ideas translate to other technologies as well.

Continue reading 


Generating the Mandelbrot Set

2019-06-11 | #canvas #fractals #web-workers

Update The shared github repo for the end product of this post is in version 2 state. @lovasoa kindly contributed a pull request which massivley improved performance and allowed the rendering to happen at full screen with much better speed and taught me many things in the process. I’ve added these improvements as an updated section at the end of the post. Many thanks @lovasoa. The first version, on which most of this post is based is still available for perusal at https://github.

Continue reading 


My ES Lint and Why

2018-09-21 | #coding-style #eslint #nodejs

I recently updated my company’s main NodeJS repository to include formatting via prettier-eslint and linting via eslint. My colleague asked me to explain my choice of rules since it’s tedious to go through each and every rule and figure out why it was chosen and I thought it was worth getting a blog post out of it, so here we go. This is the eslint config I plan to use:

Continue reading 


Dealing With Errors in Go Projects

2017-09-13 | #coding-practices #golang

Dealing With Errors in Go Projects Note: In this post I talk both about the purely technical reasons for doing certain things and some practices that have made debugging production systems easier for me. I’m still fairly new to Go and still learning so if you find any issues with my approach or have a better way to approach the problem, please leave a comment. I come from a NodeJS background and my coding habits have been heavily influenced by the paradigms most used in Node.

Continue reading 


Template Literals, All the Way!

2017-02-23 | #coding-style #javascript #nodejs

Today, while at work, I had to turn a single-quoted string into a template literal because mid-way through the string I realized I had to put in an apostrophe. This has happened often enough that I want to stop thinking in this dual single-quoted/template-literal mode and just go template-literal all the time. Now before I say anything more I’d like to clarify that I’m working with NodeJS almost all the time with full feature support for template strings and no issues with things like minification.

Continue reading 


Semico what?

2016-12-21 | #coding-style #javascript #nodejs

Recently, at my workplace, a colleague felt a rustle up his jimmies due to our lack of semicolon usage in our NodeJs repos. The number of projects without semicolons were in the tens and there really wasn’t a good way to introduce semicolons in them even had the team agreed to do so. But that got me thinking. Do we really need semi-colons? Why have them or not have them? What are the arguments for and against the issue?

Continue reading 


Bookmarklets Made My Life Easier

2016-12-10 | #browser #javascript

Update I’ve put the bookmarklets that I mostly frequently use in every day life on this repository. Being a Developer is Fun One of the advantages of browsing the web as a web-developer vs. as a layman is the fact that you get to do some pretty cool stuff to make your life easier. For example, I remember once being on a website where a certain action kept failing with no visible errors.

Continue reading 