RSSAmplifier

Blog

Amit's Thoughts

Amit has crazy thoughts .

amitp.blogspot.comRSS feed ↗25 posts

Latest posts

LLMs and shaders

In the last post I described how chat interfaces to LLMs are giving a limited view of what the LLMs could do. In this post I wanted to compare this to graphics pipelines. Graphics pipelines used to be "fixed function" , where the graphics system (such as Silicon Graphics hardware) would offer you the graphics features: you always got a matrix multiply (translate, scale, rotate, perspective, etc.)…

LLMs: screenwriters vs characters

I often see someone say "the AI said XYZ" but my understanding is that what an LLM like ChatGPT shows us is not the the LLM answering, but something slightly different. I am going to post my current understanding, with the expectation that my readers will correct me ( xkcd 386 and/or Cunningham's Law ). When we chat with an LLM, we might see something like: User: Hello. My name is John. Assistant:…

Emacs per-project colors

For several years now I've been using color in my Emacs buffers to mark whether it's a "work" project or a "personal" project. I think I first showed this in a blog post I wrote in 2017 , when I had switched to spaceline 's mode line. Since then I've extended that color to also work on the tab line, current line, and header line. I wanted to make it work with the cursor color but couldn't figure…

Emacs Tree-sitter custom highlighting, part 3

In the last post I described how, for a particular project with certain naming conventions, I wanted to use emacs tree-sitter font-locking to highlight variables that might be used in the wrong context: I found a way to make it work for simple expressions but it was relying on regular expression matching rather than tree-sitter parse trees. I set a goal of handling these types of expressions:…

Emacs Tree-sitter custom highlighting, part 2

In the last post I described my initial attempt at customizing font-lock using Emacs 29 tree-sitter. Regular font locking uses regular expression matching. Tree sitter allows combining regular expression matching with parse tree matching, like "variable declaration" or "function call". The ideas I came up with were mostly things that I could have implemented with regular expressions alone, but I…

Emacs Tree-sitter custom highlighting, part 1

A few years ago I blogged about custom tree-sitter-based syntax highlighting in emacs . I started out with highlighting certain keywords in red. I wanted to show the keywords that interrupt control flow: Screenshot showing syntax highlighting of keywords in black or red I highlight regular keywords ( while , if ) in bold. I highlight control flow interrupting keywords ( return , continue ) in red.…

Emacs consult-buffer filenames

When working on my web projects I often have same the same filename in different folders, such as projectname/index.html and anotherproject/index.html . When opening files in Emacs, I might have to open index.html if I'm already in projectname/ or type ../anotherproject/index.html to open from another folder. I switch folders enough that I wanted to have a more consistent way to open things. I now…

Observational studies

Star Trek Red Shirt, Wikipedia, Derek Springer, CC BY-SA 2.0 People who wear red shirts on the original Star Trek have a high mortality rate . can we conclude that red shirts caused the high mortality rate? can we solve the problem by having them yellow shirts instead? Every time I see observational study results like "people who eat lots of beef get cancer" it reminds me of the Star Trek…

Status codes like TODO

I often put TODO comments into my projects, including in source code. And I'll change it to DONE afterwards. I ended up keeping a list of four-letter codes: This is my collection so far: IDEA : maybe someday TODO : doing later SOON : doing soon NEXT : doing now DONE : done HACK : done in a cheesy way, blend of todo and done WAIT : waiting for some external change (event) HOLD : waiting for some…

Using an LLM to query my notes

" robot asks a question holding a book " image from stable diffusion I occasionally play with LLMs (large language models). Last time I had tried Simon Willison's llm software to search over my notes. Today I tried amaiya/onprem to ask questions about my notes. The documentation is pretty good but I made a few changes for my configuration, so I decided to write them down here. I'm running these on…

Emacs and shellcheck

Julia Evans had a great talk called Making Hard Things Easy . One of the takeaways for me was that I should be using tools for parts of a system I find hard to remember. In particular, when writing bash scripts I should be using shellcheck . It turns out Emacs 29 has support for shellcheck , and older versions of Emacs can use the flymake-shellcheck page . To set it up in Emacs 29: ( use-package…

Road Archaeology, part 2

In a previous post I showed some examples of how railroads influenced the shape of Interstate 5 in California. In this post I have some more examples of what I call "road archaeology". Looking at the present roads, we can make guesses about the past. In Las Vegas the major casinos are along "The Strip". Just to the west of this is the interstate highway, I-15. What is the history here? My guess ,…

Mac keyboard with hidutil

[Update: 13-Apr-2023 with some of the background context and some things I learned from hackernews ] [Update: 18-Dec-2023] This hidutil stopped working for me in MacOS 13.6 and 14.2. Also see other people having problems too . [Update: 28-Jan-2024] Some people say hidutil works again in Mac OS 14.3. On my Mac, I've used KeyRemap4Macbook, Karabiner, Karabiner Elements, and FunctionFlip for some of…

Road Archaeology, part 1

While on road trips I notice sometimes there are places where a road will deviate from the path I expect it to take. I take a note of it and then investigate what happened there. Usually there's some geography or history involved. Take I-5 in Northern California for example. There's a straight segment from Dunnigan CA to Williams CA: Map of I-5 between Dunnigan CA and Williams CA But let's zoom in…

Emacs: marking text

Although I primarily use Emacs, I love the idea of vim text objects, and wanted to incorporate them into my editing. The Kakoune introduction explains that vim uses verb first, noun second for its commands, whereas Kakoune uses noun first, verb second. I wrote a blog post about why I prefer noun-verb over verb-noun , not only in text editors but also in games and other applications. I started…

Axial name highlighting

I like to try various things out in my editor to see if they're useful. Most are interesting but not useful. On my guide to hexagons I use colors for the three hexagon axes (q, r, s). I thought it might be cool to do something similar in the text editor, for x and y: Coloring variables by which axis they refer to Type systems already do so much for us. A type system catches operations that should…

Beer mode and coffee mode

Over the years I've mentioned to people that I work in two modes: Beer Mode 🍺 I'm relaxed and make connections between many different ideas. I can come up with new creative ideas. Coffee Mode ☕ I'm focused and make progress on my work. I am productive and can complete existing projects. I assumed that the names "Beer Mode" and "Coffee Mode" are something I saw somewhere. But then when I went…

Microtunnels

I'm a big fan of tunnels. I've previously blogged about tunnels for package delivery and tunnels for infrastructure like electricity, internet, water, etc. But I think tunnels might also be useful at a very small scale, within my yard. If we had flexible tunnel boring machines that could dig 4mm diameter tunnels: For each plant with invasive root systems (bamboo, blackberry) I'd tell the machine…

Non-consensual personalization

Illustration from unDraw I want to personalize things I use. I want to change the settings. I want to change the colors, the design, the functionality. It used to be more common that I could do this type of thing. But these days, it seems like companies want to use "AI" to personalize things without my consent. Instead of asking me what I want, they decide what I want. On Netflix, I'd love to…

Roman numerals and currency

I find that Roman Numerals didn't "click" for me. At an intellectual level, I understand how they work. But they felt unintuitive. Until now! Image of US paper currency, from Wikipedia, public domain Let's start with the simplified version: I is 1. If you want more than 1 you write more of them: II is 2, III is 3, etc. But it doesn't keep going like this. IIII is 4 (yes, it is! I'll cover IV…

Firefox 89 tab appearance

Firefox 89 has a new appearance, removing features (ugh) and annoying some people while delighting others. It can be disabled by setting browser.proton.enabled to false: Firefox 89 with Proton disabled I mostly like the new design though, but I strongly dislike some elements, especially the tabs: Firefox 89 tab appearance I want the active tab to be much brighter. I couldn't see a way to set the…

Automatically generate IDs for emacs org-mode headings

I write some of my web pages with emacs org-mode, and then export to html. Like markdown, org-mode is a convenient format to write a simple subset of html. Each heading in the document will get exported with an ID so that it can be linked to from the table of contents. The default IDs look like #org3091de9 . I usually replace these with a custom id that matches the section heading, so a heading…

OpenTTD on Windows 10 + Steam

Transport Tycoon / OpenTTD is my favorite game of all time, and I wanted to play it on Steam. I kept getting "file not writable" error. I tracked it down to the Windows security system blocking it. To unblock: Start → Settings → Update & Security → Windows security → Open Windows Security → Virus & threat protection → Manage settings → Controlled folder access → Manage Controlled folder access →…

Building Emscripten on Apple ARM M1

Update: [2021-01-24] The workarounds in this blog post are now obsolete, as openjdk, yuicompressor, and emscripten are now available in ARM homebrew. On Mac, Emscripten is available in the Intel version of Homebrew, but not the ARM version of Homebrew. I use Emscripten rarely enough that this doesn't bother me. However, I thought I'd try compiling it on the ARM version. I couldn't get openjdk…

Tags vs labels

In online collections (photos, bookmarks, blog posts, emails, etc.), “labels” and “tags” are typically words attached to the content. For example I have a photo of a hummingbird on which I used the labels hummingbird (what it is) and coyote hills (where it was). These words are non-hierarchical, unlike “categories” or “folders”. But are “labels” and “tags” the same thing? A long time ago, I read…

Amit's Thoughts · RSS Amplifier