25 April 2022

59 links · Monday

Criticisms & Curation

Low Sun over Tetons – Grand Teton NP, WY – Fujifilm X-E4 & 90mm – “Ferrania Solaris FG 400” I receive a lot of feedback—while most of it is positive, some of it is…

CRT Manufacturing

This January 4, 1954 Oregonian article features the construction of the new CRT building.

Start with Who, not Why

Work with amazing people you love collaborating with, the rest (mission, purpose, etc) falls out from that.

Six things I sort of believe about making music/art

I've now been recording music at home for most of my life. I started at around 14. I would record things into audacity, sometimes with my friend Cameron, but more often by myself. I had no real idea of how to write, arrange, or record music. Besides a few cove…

The Trouble With Rewrites

I have a bit of a soft spot for legacy systems. They have a certain charming ugliness to them. Clearly, there is a ton of challenges with legacy projects, partly related to organizational incentive…

To vendor, or not to vendor

Should we commit vendor in our Go projects? Since the introduction of Go modules, the prevalent opinion on the internet is that we should not commit the vendor directory of our projects. The argument against committing vendor is that it’s unnecessary, becaus…

Tricks for dealing with “reviewer’s block”, for the beginner engineer

Similar to writer's block, that authors experience, early on as an engineer I struggled with ‘reviewer block’ i.e. having a hard time providing valuable feedback when reviewing an engineering design. Here are some tricks that I’ve picked up over the years that…

Intro to BPF CO-RE

In the past I’ve been very happy in using BCC and bpftrace to jump into the BPF wagon. But since I spend a lot of my time on embedded systems (mostly Android phones nowadays), getting these tools on these systems is a bit of a headache.

nix-shell, but make it lovely

I'm pretty happy with a pattern I stumbled into last year for using Nix to provision dependencies for a task-/utility-oriented Makefile. For a while I've wanted the rough equivalent of a nix-shell shebang--but for Makefiles.

Multiple Directories for Static Files in ASP.NET Core

My recent video elicited several interesting responses. But immediately, I noticed that using ASP.NET Core's cache busting (e.g. asp-append-version) wasn't working quite right for additional StaticFiles middleware. Evidently, I wasn't doing it correctly. Let's…

11 Principles of Engineering Management

More than 2 years ago, I decided to try to create a brief, digestible manual on the expectations of management for senior engineers at my company who are considering making the shift. At the time, …

Visual Studio Feedback

Visual Studio Feedback

Japan's Hometown Tax | Kalzumeus Software

This is outside of my normal software-focused beat, but I met some folks who were very interested in public policy recently. I found, to my surprise, that I probably understand one innovative Japanese tax policy better than very well-informed people who geek o…

Announcing the Hare programming language

Hare is a systems programming language designed to be simple, stable, and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well-suited to writing operating systems, system tools, compilers, networking software, and…

Resetting Marten Database State Between Tests

TL;DR: Marten has a new method in V5 called ResetAllData() that’s very handy for rolling back database state to a known point in automated tests. I’m a big believer in utilizing interme…

Samay - Home

Year :

Why LSP?

LSP (language server protocol) is fairly popular today.There’s a standard explanation of why that is the case.You probably have seen this picture before:

Email Routing Insights

Insights and Logs are now available to everyone using Cloudflare Email Routing

The Curse of Systems Thinkers (Part 1)

Somewhere between 15 and 20 years ago, I worked for a company. It was a very prestigious company, and it was a glorious and frustrating time. The company did amazing things. Literally unbelievable achievements - from my point of view anyway. But this was coupl…

How easy is it in 2022 to find a SHA1 collision?

Most of the answers I can find date to years back where the first collision(s) were found, but hardware mainly GPUs have progressed a lot in the past few years (with for example the new line of 3090s

Implementing Rate Limiting in ASP.NET Core Web API

This post is about implementing Rate Limiting in ASP.NET Core Web API. Rate Limiting is the process of controlling the number of requests for a resource within a specific time window. Each unique user/IP address/client will have a limitation on the number of r…

Patching an Embedded OS from 1996 with Ghidra • Peter Sobot

For reasons I won’t get into, I’ve been working on a tricky reverse engineering puzzle recently: how to patch the operating system of a 26-year-old synthesizer. To be specific, the Kurzweil K2500, a sample-based synthesizer released in 1996. As... | Peter Sobo…

Why Success Is Often Elusive at the Highest Echelons

During recent discussions with friends, one common theme that crops up very frequently is how success has remained rather elusive to recent…

The Future of CSS: CSS Toggles

Late last week, I was very delighted to see that Chromium will start prototyping with CSS Toggles, a proposal currently only available as an Unofficial Draft, authored by Tab Atkins and Miriam Suzanne (who else?!). CSS toggles are a mechanism for associating t…

Chopping the monolith

If you attend conferences or read technical articles, you could think that microservices are the correct and only way to build a system at the moment. Despite some pushback from cooler heads, the default architecture is microservices. In this post, I’d like to…

Why naming stuff is hard?

Last few months I have spent a lot of time doing code reviews. During the code review exercise I also pair with developers to refactor and improve the quality of their pull requests (PR).  I c…

Interpretable Machine Learning

Machine learning algorithms usually operate as black boxes and it is unclear how they derived a certain decision. This book is a guide for practitioners to make machine learning decisions interpretable.