My name is Dan. I am a developer advocate at Databricks focused on Generative AI.
Before starting at Databricks, I worked at bit.io, which offered a fast and easy-to-use cloud Postgres database (with one of the best product demos I've ever seen). In my role, I used bit.io databases to manage the data in various data science research projects. I've analyzed data and written about topics such as methane emissions, Bayesian statistics, labor turnover, the size of the House of Representatives, and much more. Read more…
Recent Posts
(2024-05-05) Persistent Elements in Daily Journals with Org Agenda
I use denote's journaling features to keep a daily project log, where I record whatever I'm working on, stray bits of knowledge, some TODOs, fleeting thoughts, etc.
In some cases, I want to refer back to these notes. But I (will) have a lot of these journal files. I don't want to search through them manually to find the name of that article, or that recommendation I jotted down, or whatever it was.
This post shows a quick solution to this issue using org-agenda-custom-commands to make a custom view over specified tags in my journal files.
(2024-03-29) Retrieving Data for the H2o RAG Benchmark
I was looking for a good dataset to use for comparing different models in a RAG application when I found this post on Reddit. It compares a bunch of models on a collection of questions over a set of documents provided by H2O.ai.
I wasn't super interested in the benchmark, but the files (mostly pdfs, one mp3, jpg, other file types) interested me for use in my own testing. This short post shows how to get them using the scripts provided by h2o.ai.
(2024-03-25) Making headings for recurring tasks in org mode
This short post shows how to use the org-clone-subtree-with-time-shift
command to make org headings for recurring tasks. I was recently trying to add a five-week class to my org agenda and I didn't want to manually create each heading and add or modify the timestamp. This approach made it very easy.
(2023-12-17) Introduction to Emacs Hooks
Today I was customizing the appearance of org files displayed with org-tree-slide. In particular, I wanted to increase the font size and start Olivetti mode whenever I started org-tree-slide-mode
and return everything to normal when I was done. This, I quickly discovered, required the use of hooks. Hooks are not especially complicated, but they are useful and worth taking a few minutes to understand. This post will cover the basics of working with hooks in emacs.
(2023-07-09) YASnippet for Prompt Templates for Chatgpt-Shell
The wonderful chatgpt-shell package by Xenodium lets you interact with the gpt-3.5 and gpt-4
APIs in emacs via a handy shell built on top of comint-mode
. It also integrates
well with org-mode
.
I find that I tend to re-use a few prompt patterns for specific tasks. Yasnippet provides a great
way to create prompt templates made up of some fixed component with placeholders
for user input. I can easily insert these prompt templates when working with
chatgpt-shell
to gain easy access to reusable, task-specific prompts. This post
describes how to start using Yasnippet for prompt templates for use with
chatgpt-shell
.
(2023-06-01) Writing on AI and Postgres
Since this start of this year, I've been working on and writing about AI tools for working with Postgres databases. Most of this work has involved finding different ways to integrate ChatGPT (and previously Codex) with other tools and workflows. I wanted to collect and share some of that writing here, as it's related to a lot of the other things I write about on my personal blog.
(2023-03-10) Using the ChatGPT API with Julia Part 2: Defining a Chat Struct
One of the things that makes working with the ChatGPT API a little different
from working with, e.g., the davinci-text-003
model api is the need to maintain