RSSAmplifier

Blog

Dustin Knopoff

rustacean, cook, and martial arts enthusiast

dustin.knopoff.devRSS feed ↗58 posts

Latest posts

The Space Between Anger and Apathy

Fascinating episode of conflicted U Thant: The Diplomat Who Defined the 1960s. What particularly stuck out to me was a description I haven't been able to find so succinctly anywhere else about a concept in buddhism. Finding the space between anger and apathy

Searching Home Videos with LLMs

I have over 25 hours of video digitized video which was all taken on casette. Because of this, any given video can have many clips within it. In the past I've tried manually separating out clips and even scene splitting via https://www.scenedetect.com but found that it made things a bit more discoverable, but no easier to find clips I remembered but couldn't recall when they…

Dustin's Library Update

Dustin's Library Update

Dustin's Library Update

Type Investigator

How can user-defined input be constrained to not truncate and/or wrap on a page? Let's say there's a fixed width of 600px available and this location will always use Roboto Medium at 22px. The naive approach would be to type a bunch of l s or m s and count how many appear. This is unsufficient since, other than monospaced fonts, different characters take up different amounts of…

What I Use 2023

My Default Apps Mail Client: Apple Mail Mail Server: Fastmail Notes: Obsidian + iA Writer To-Do: Apple Reminders + Things iPhone Photo Shooting: Camera.app Photo Management: Photos.app Calendar: Calendar.app Cloud file storage: iCloud RSS client: Reeder 5 RSS server: Inoreader Contacts: Contacts.app Browser: Safari + Firefox for development Chat: iMessage, Whatsapp Bookmarks: Raindrop.io Read It…

Leslie Lamport on Thinking

Amazing episode of Changelog Interviews with an amazing line from Leslie Lamport. If you're not writing and thinking, you're just thinking about it.

Consistency Originality Gratification

I've recently discovered Indieblog which provides an index of independent blog feeds across the internet and a random button to go an article on any of them. Through that I've found this post: Consistency Originality Gratification . I've read it 3 times now and every time now I feel like there is more layers of life that this applies to than what I originally thought. The pain of…

Dustin's Library Update

How to Create a Tag Cloud (without JavaScript)

With just CSS, HTML, and a generator. To create this, use a tool that can generate HTML from a template. Create a list of tags, setting in the style tag a CSS variable --size set to the number of pages which have a tag. {% set categories = get_taxonomy(kind="tags") %} < ul class = " cloud " role = " navigation " > {% for tag in categories.items %} < li > < a style = " --size: {{tag.pages |…

Conversational affordances

Listening to JSParty introduced me to an excellent article Good conversations have lots of doorknobs . The most exciting bits was the concept of conversational affordances and how they they&#x27;re the key to conversations that click. This comes on the tails of recently reading How to Win Friends and Influence People and The Fine Art of Small Talk . I find the concept of conversational affordances…

Presence and Souls

Listened to two fantastic podcasts today Rick Glassman and The Fundamentalists The most interesting tidbits being Harry Mack stating Being true to your self is about being present And from the Myth of Hustle Culture To be human is to desire knowing what the other wants The soul is that which turns events into experiences

My Woes as a Reader and Writer of Documentation

Listening to GoTime Ep: 268 has charged up my irritation towards how difficult documentation is in a slew of ways both as a reader and writer. Disclaimer Please don&#x27;t expect any solutions, only complaints. As the Reader Organization and Search Two things stand out the first time looking for documentation (besides how fast or slow the page is to load): how it&#x27;s organized and whether…

Frontmatter Rearranging

I have a private site I built using Zola for sharing recipes with my family. We currently add them to a shared iCloud drive and I have a script which runs on occasion to trigger a rebuild the site. A common source of frustration across all times I use zola is if the content already exists and uses frontmatter in a way that differs from what Zola is willing to read. Originally, I&#x27;d had a…

Rap Theory & Practice

YouTube&#x27;s algorithm recommended a fascinating lecture from MIT by Lupe Fiasco Lupe Fiasco presents “Rap Theory & Practice: an Introduction” Of which the most compelling aspects I found were: Pondering things in terms of themselves. In the video, Lupe uses forming an acronym from RAP as the example but urges the audience to consider the same for their roles and passions in life. Being…

The 1975 Interview

The YouTube algorithm recommended The 1975: ‘Being Funny In a Foreign Language’ Interview | Apple Music of which I&#x27;ve developed a great deal of respect for Matt Healy, his outlook on life, and his ability to articulate it. The part that stuck out was a word he made up and defined: sceneius Someone of exceptional capacity to recognize an environment and create new something from it This is a…

Deriving Deserialize on Structs as Arrays

Was watching Decrusted: Serde and found out when you derive #[serde(Deserialize, Serialize)] it can be to an array as opposed to a mapping of some key:value. This is especially helpful as I&#x27;ve got some little automations which query Fastmail via jmap which heavily utilizes arrays for defining what query to run. i.e. # [ derive ( serde :: Deserialize , serde :: Serialize ) ] struct RGB { r :…

impl anyhow Errors into Axum Responses

Been playing around with reimplementing this site using axum and maud , using incremental static generation . Took my eyes awhile to see the axum example of how to convert anyhow errors into axum Responses. Quite simply, it is. struct AppError ( anyhow :: Error ) ; impl IntoResponse for AppError { fn into_response ( self ) -> Response { ( StatusCode :: INTERNAL_SERVER_ERROR , format! ( " Something…

Wasming a Rust Package for Fun

Whilst getting interested in Library.JSON and building my own library , one of the issues I continually run into is slight variations between slugifying in javascript and rust (which the static site generator I use is written in). Eventually I reached the point where I decided it was easier to compile whatever Zola was using for slugs to web assembly than trying to get it exactly the same in…

Sympathy vs Empathy

Today&#x27;s debate was about the difference between sympathy and empathy. The best explanation we reached was the following: You&#x27;re sad because you lost your chocolate. Sympathy is that I&#x27;m also sad because I know how it;s like to lose chocolate and it makes me sad that you lost your chocolate. Empathy is that i know how much you like chocolate and because you lost it, I know how sad…

Iterator Chaining

Trying out Simon Willison&#x27;s suggestion about what to blog about. This Reddit Comment TIL, chaining iterators in rust doesn&#x27;t mean that each operation happens on the entire list in each step, but all of them occur on the current element in an iteration.

Dustin&#x27;s Library Update

About Me

👋 I&#x27;m Dustin, a fullstack developer originally from Connecticut and currently based in London, UK working for Yelp. I&#x27;m obsessed with making people more efficient . It brings me joy to help with automating the repetitive tasks in their life. In code, I find Rust scratches a similar itch of fearless efficiency but, I&#x27;m attempting my best to implement the practices taught in Grokking…

Dustin&#x27;s Library Update

Dustin&#x27;s Library Update

Dustin&#x27;s Library Update

Financial Dashboard

As I&#x27;ve come to increasingly appreciate hledger , I&#x27;ve wanted to use a combination of color and charts to focus on the key insights from my financial data I consider important. I came across this article by @barrucadu and the output, a grafana dashboard, was a sight to see! Naturally, I had a go at using their scripts but ran into too many things I didn&#x27;t understand. Eventually…

Plaintext Accounting Crib Sheet

I recently watched, this video by Colin Dean which for the first time made plaintext accounting click. This is a brief overview of what hledger is used for and the key takeaways to stick with it. Overview hledger is part of a family of programs focused on plaintext accounting . I&#x27;ve found myself hopping around many financial tracking applications and largely unhappy with all of them (…

Playcomb

Senior Capstone Project. See process for full details

Interaction Design - Downsize

Often times for an interaction design class we&#x27;re given a week to "fix" something or come up with a "new" idea. It&#x27;s always incredibly difficult and ends up while easy to complete entirely uninspiring. This particular project was not the case. I&#x27;ve listened to many conversations in which my grandparents explain the absolute complexity of downsizing after living for 80+ years and…

Best Writing in College

The following is the best writing of my college career. What CPU do you need? Shopping for a computer is not as easy as one might think. You have to think about battery life, operating system, weight, screen size, hard drive space, and more! Once these decisions are made, you&#x27;re often forced to deal with decisions such as: Fig 1: Apple Configuration for 16" MacBook Pro Or Fig 2: Lenovo…

Recipe Grabber

Keeping track of things you find on the internet is hard. Every service either wants to be the service for everything on the web and does a poor job displaying&#x2F;indexing the content, or focuses in on a single data type and then you forget about every one of the individual services that are &#x27;perfect&#x27; for that data type. Recipes are a great example of this. You have fantastic recipes…

Interaction Design - COVID

Studying computer science AND design can sometimes feel like the absolute worst position to be in. You&#x27;re constantly aware of the typefaces in advertisements, whether an application is using Electron or not, and at times overwhelmed by all the things in that world that could be tweaked to be better (An absolutely objective opinion, ha). Sometimes, a class assignment will actually line up with…

Readability

What do you do when you want to keep online content that&#x27;s password protected, offline ? For the past year or two, A shortcut to add to iA Writer worked fantastically! Except that all the sudden the sites I was using it on just stopped working. Naturally, that requires me to figure out how to do it myself...and on a mac. Step 1. Lookup html to markdown And you&#x27;ll find a ton of examples…

Extract Zoom links from Calendar

For some reason, Zoom refuses to connect my Northeastern schedule in to the app. Having to open the Calendar app, wait for it to load, click on the next event, and then double click the zoom link in the description is way to much work . iCalBuddy is the CLI utility to access macOS calendars but I found the control over how content is output limiting and not working with what I intended. So I…

Retrieving data from a WKWebView and passing to SwiftUI

A vaguely related continuation of NEU Audit Parsing Skip the backstory 6 months ago, the Northeastern degree audit had bothered me to the point where I felt it was necessary to somehow get it in a machine readable format (JSON). I&#x27;d consider the results a kind of mixed bag. Yes, the output is JSON but I was so done with it that only recently have I considered actually building the UI layer I…

Parsing Northeastern&#x27;s Graduation Audit

See the full example here Northeastern&#x27;s graduation audit software is unattractive, unintuitive, and annoying. I&#x27;ve had to use it on and off for over 4 years and each time I have to use it, I desperately wish that it&#x27;ll be the last time. With that introduction, it&#x27;s no wonder that I&#x27;ve taken it upon myself to write a parser to extract the meaningful bits in the hopes of…

Information Design Final

For our final project, we were required to create a folding infographic on an assigned country. We needed 30 elements focusing on different aspects of the people, infrastructure, and culture of our assigned country. India All data excluding timeline are sourced from CIA World book.

Backup and Setup a Mac from the Terminal

Setting up a computer is not the most enjoyable process. Having to copy over files, reinstall applications, and get system settings exactly as they were before is tedious and time consuming. On Macs, Time Machine exists as an option to essentially clone your previous state. However, I prefer to use a new computer as a kind of spring cleaning, only passing over essentials and not any cruft in the…

Daily Tracker

There are so many areas in the world where we are inefficient. It&#x27;s something that increasingly bugs me with the growth of my knowledge and understanding. Specifically that there are so many places where I realize I could write something that would stop the repetition of a tedious task. This is what makes programming so powerful. But, there is another side, one which I had the opportunity to…

Bashdoc - Parsing with Nom

Part 3 of the unintended Bashdoc series. Since October, my interest in rust has gone from curiosity to "what can I make next in Rust." One of the things I&#x27;d discovered is nom , a library for building parsers. Since it&#x27;s in Rust it&#x27;s super fast. Their example parsers include things like CSV, MP3, PHP, and more. Looking at my own code, the repeated use of split_whitespace() seems…

Bashdoc - Round 2

When I make something like bashdoc , once the idea and way to make it happen is in my head, I work on it over and over again until it&#x27;s done. And when it&#x27;s something like bashdoc which outputs Help: .zshrc sourcez: re-initialize .zshrc file zshconfig: open .zshrc in VSCode vimconfig: open .vimrc in vim docs: shortcut to ~&#x2F;Documents folder svenv: activate virtual python environment…

Bashdoc - Round 1

I believe there is a moment where all developers discover how powerful and efficient mastering the command line is. When using Finder or actually clicking on things or moving the mouse seems like so much extra work. Vim is an excellent example of this. Once you immerse yourself in the syntax of vim, if you go back to a GUI editor it feels like immense effort to actually click to go to the end of a…

Building a Mini Shell in Rust

Disclaimer: I&#x27;m sure there is a much more elegant way to do this. There are 4 parts to a shell: Read Evaluate Print Loop (REPL) for short. A recent assignment for one of my classes was to build a shell in C. So, I figured it would be a good learning experience to do the same in Rust. This article will assume you have a basic knowledge of Rust. Getting Started. Move to a location where…

Making a Vim Extension for TeaCode

TeaCode is this really awesome code expander that has a key detail which puts it above all others for me. It recognizes filetypes as distinct. This means you can have some expander for a function in Python and Swift that are both called with -f ... but output very different results. It&#x27;s been absolutely fantastic jumping between Python, React, and Rust in the past few months and stuff having…

Directory and File Searcher

Since my discovery of fzf and ripgrep , I&#x27;ve been searching for a way to have a single place to search files and their contents easily. Over 3 months later, I found this snippet as an example in the README for fzf . # Modified version where you can press # - CTRL-O to open with `open` command, # - CTRL-E or Enter key to open with the $EDITOR fo ( ) { local out file key IFS = $' \n ' out = (…

Website

This website has been an idea for a long, long time. It started out as HTML written in Python using yattag which became quickly unusable. It was then migrated to using pystache and injected JavaScript. The previous iteration Along the way, I attempted to push the contents to Airtable such that updating the contents would solely require editing a field in the table. Enter React, Gatsby, and Netlify…

Simple Subscriptions

Inspired by Bobby , I wanted to make a very simple subscription tracker in the terminal. The result is a simple output like so: # Subscription Cost Frequency # ============================================================ # Bear $15.99 1 # Sketch $50.00 1 # ============================================================ # Total: $65.99 (per year) with an add and delete command. The data is loaded and…

TeaCode Previewer

In the slack channel for TeaCode, there is a channel #expanders where people can share there expanders. These come in .tcbundle files which look something like this: " expanders " : [ { " name " : " Function " , " is_enabled " : true , " description " : " Creates default function statement. \n > fn do arr \n \n \n > fn do " , " supported_languages " : [ " Python " ] , " pattern " : " fn…