Sign in

Andrew Heiss

@andrew.heiss.phd
19K followers 4.1K following 5.7K posts

Assistant professor at Georgetown University in Qatar (formerly GSU, BYU). Study NGOs, human rights, international politics, causal inference, and stats. 6 kids. #rstats forever. andrewheiss.com Signal: andrewheiss.01

PostsRepliesMedia
Andrew Heiss @andrew.heiss.phd · 13h
we are so back #poliscicooks
Closeup of a freshly baked focaccia
1300
Andrew Heiss @andrew.heiss.phd · 14h
lol those are just all the stops on the oven knob, and the steps here are bizarre: +40, +30, +40, +40, +20, +30
Bosch oven knob with stops at 50, 90, 120, 150, 200, 220, and 250
240
Andrew Heiss @andrew.heiss.phd · 14h
Whipped up a little conversion guide so I can start baking in earnest again
Chart for converting F to C and vice versa
2240
Andrew Heiss @andrew.heiss.phd · 06/10/2026
man, what a view tho
Lusail, Doha, at night
3352
Andrew Heiss @andrew.heiss.phd · 03/10/2026
with conference snacks from carrefour instead of costco #LDSConf
4-yo pointing at a spread of snacks
390
Andrew Heiss @andrew.heiss.phd · 03/10/2026
We don’t have a tv yet, so I found a cheapo projector so we can watch #LDSConf tonight (and kids had a blast playing Breath of the Wild on it)
Empty apartment room with a projector projecting an Apple TV on the wall
2240
Andrew Heiss @andrew.heiss.phd · 02/10/2026
There are two LDS congregations in Doha—one English-speaking and one Tagalog-speaking—and they do a combined Christmas choir so we joined and holy cow the Filipino members bring *so much food and pastries* to the practices and it rules
A bunch of Filipino bread and pudding My 11-yo holding a plate of food
2381
Andrew Heiss @andrew.heiss.phd · 01/10/2026
First time being able to use flour since *July* and I’m so happy! #poliscicooks
2 kg of all purpose flour
080
Andrew Heiss @andrew.heiss.phd · 30/09/2026
Oldest is officially off!
My oldest with three suitcases, ready for her LDS mission
1290
Andrew Heiss @andrew.heiss.phd · 30/09/2026
Marge Simpson holding a potato and saying “I just think they’re neat”
0130
Andrew Heiss @andrew.heiss.phd · 30/09/2026
Water cooler acquired
Water dispenser and a potato
61083
Andrew Heiss @andrew.heiss.phd · 30/09/2026
It’s moving-out-of-the-hotel day!
A hotel hallway full of suitcases
0300
Andrew Heiss @andrew.heiss.phd · 29/09/2026
The greatest trick the devil ever pulled was actually this checkbox
Stay signed in
3696
Andrew Heiss @andrew.heiss.phd · 28/09/2026
ordered what I thought was a pack of 10 boxes of kleenex from carrefour lol
Ten tiny pocket packs of Kleenex
3240
Andrew Heiss @andrew.heiss.phd · 27/09/2026
Got keys to our apartment and the view from the kitchen is, like, amazing FINALLY we can start moving in and finish our months of living out of suitcases in hotels and empty houses
Skyline of Lusail in North Doha
5500
Andrew Heiss @andrew.heiss.phd · 25/09/2026
awww yeahhh the www
Today more than ever, researchers are using the internet to do research – both as a research tool and as the object of study. 

Plus a mid-90s graphic of a purple globe with WWW on it
150
Andrew Heiss @andrew.heiss.phd · 24/09/2026
looking for a water cooler for our new apartment and I am dying at carrefour's recommended items
Screenshot from Carrefour's website showing that people often buy a potato with their super general water dispenserA potato for QAR 3.50
81377
Andrew Heiss @andrew.heiss.phd · 23/09/2026
oooh a missed call *~from the future~*
Missed call notification from tomorrow morning
3460
Andrew Heiss @andrew.heiss.phd · 18/09/2026
It’s getting down to 83° (28.3 C) tonight—that’s downright pleasant finally!
Screenshot from Apple Weather showing it’s 90° in Doha at 11:30 PM and will drop down to 83°
380
Andrew Heiss @andrew.heiss.phd · 18/09/2026
had to use these in Illustrator so I exported them as .ase swatch files with {swatches} (github.com/hrbrmstr/swa...), which was surprisingly easy! #rstats #QuartoPub
Swatches
These colors are available as Adobe swatch files (ASE) that can be opened in Adobe programs like Illustrator, InDesign, and Photoshop, as well as the non-Adobe Affinity (thanks to the neat {swatches} package; see code here).
(with screenshots of the palettes in Illustrator)### Swatches

```{r}
clrs |>
  hex_to_ase("global") |>
  ase_encode() |>
  writeBin(here::here("files", "swatches", "ipol3270-colors.ase"))

ramps |>
  imap(\(x, ramp_name) set_names(x$ramp, paste0(ramp_name, "-", names(x$ramp)))) |>
  list_c() |> 
  hex_to_ase("global") |>
  ase_encode() |>
  writeBin(here::here("files", "swatches", "ipol3270-colors-gradients.ase"))
```
0120
Andrew Heiss @andrew.heiss.phd · 17/09/2026
Made a neat colophone page for my class website so I can remember all my design decisions and colors, etc. (you can see how brand dot yaml works in the wild!) quantf26.classes.andrewheiss.com/resource/col... Even programmatically made a color ramps with WCAG contrast #rstats #QuartoPub


colophon (noun)

col • o • phon /ˈkä-lə-fən, -fän/ /ˈkɒləfən, -fɒn/

    an inscription at the end of a book or manuscript containing information about its production
    this page

Technology

    Last built: 2026-09-17 at 16:09:52 Arabian Standard Time (2026-09-17T13:09:52Z UTC)
    Software: Quarto version 1.11.1 and R version 4.6.1 (2026-06-24)

Colors

I use a bunch of colors for this course website. The two main colors are Georgetown Blue (#041E42) and Al Adaam Maroon (#8A1538), Qatar’s national color. The other colors come largely from CARTOColors’s Prism palette, with some tweaks I made by hand in a color picker.

With a graphic showing these colors: 


    Georgetown Blue (#041E42)
    Al Adaam Maroon (#8A1538)
    Blue (#2878B5)
    Teal (#009E9A)
    Green (#2D934F)
    Gold (#F2B701)
    Orange (#E17C05)
    Red (#CC503E)
    Purple (#6F4C9B)
    Gray (#696A6F)
Huge grid of 11 shades of 10 different colors, all showing different levels of accessibility contrast scores
2383
Andrew Heiss @andrew.heiss.phd · 16/09/2026
She starts today! 9 weeks of language training in Utah, then off to Vietnam!
Family FaceTime call with us and my parents-in-law and my daughter RachelMy daughter holding a Vietnamese flag and the Book of Mormon
1221
Andrew Heiss @andrew.heiss.phd · 15/09/2026
ooooooooh there’s a new Emily St. John Mandel book!
Exit Party
5140
Andrew Heiss @andrew.heiss.phd · 15/09/2026
Dana Salah’s first album is quite good
Bent Bladna by Dana Salah
010
Andrew Heiss @andrew.heiss.phd · 13/09/2026
Reading this bc I know almost nothing about the Korean War and holy moly Douglas MacArthur was an awful human and Stalin and Mao really hated each other
David Halberstam’s The Coldest Winter
1180
Andrew Heiss @andrew.heiss.phd · 13/09/2026
Laufey remains excellent
A Matter of Time by Laufey
050
Andrew Heiss @andrew.heiss.phd · 11/09/2026
We are witnessing a general threat to intellectual work, with misalignment between the outcome of the use of AI and its initial purpose. In many fields and activities, years of training have traditionally served not only to produce a final answer or product, but also to develop understanding and the ability to formulate new questions and ideas. However, building on a vast body of previous human work, AI systems are becoming increasingly capable of producing the results of such work directly, and these goals cease to align. The issues the mathematical community faces now are similar to issues that other scientific and creative professions are facing, and indicate issues that all of humanity might face: how to make sure that, as AI changes the way work is done, we do not lose sight of what that work was meant to achieve in the first place.
0204
Andrew Heiss @andrew.heiss.phd · 10/09/2026
🎶The library, the library. It’s the place where books are free🎶
Qatar National Library library card
070
Andrew Heiss @andrew.heiss.phd · 10/09/2026
4-yo has also been working on sunset photography from our hotel room!?
Sunset in Doha behind the West Bay skyline
090
Andrew Heiss @andrew.heiss.phd · 09/09/2026
Found the annual falconry exhibition
Family and a falcon
1100
Andrew Heiss @andrew.heiss.phd · 09/09/2026
4-yo made a packing list for a hypothetical sleepover ——— Swimsuit Goggles Pajamas Toothbrush Toothpaste Stuffies Blanket Clothes Go!
An old iPhone with the notes app open, with these things listed:

Smost
Gogles
Pajamas
TooTHbRaCH
ToosBascst
STAFEs
BLAKiT
KloS
GO
3130
Andrew Heiss @andrew.heiss.phd · 08/09/2026
ooof this is tough Who did I vote for? I earned 14,794 points over 20 voters on medium mode (avg 740). Model 894, base rate 760. profmusgrave.github.io/votergame2024/
Who did I vote for?
Guessing 2024 voters from the Cooperative Election Study
14,794
points over 20 voters on medium mode — 740 per voter
191
Andrew Heiss @andrew.heiss.phd · 07/09/2026
like the ring builder ruins on Ilus from *The Expanse*
The Ilus ring builder ruins from The Expanse
1131
Andrew Heiss @andrew.heiss.phd · 07/09/2026
Probably my favorite building in Doha, this bonkers portal thing
Katara Towers, looking like a sci-fi portal
3291
Andrew Heiss @andrew.heiss.phd · 05/09/2026
Scene from Bluey where a New Zealand puzzle piece is missing
030
Andrew Heiss @andrew.heiss.phd · 05/09/2026
Scene from Bluey where a New Zealand puzzle piece is missing
1102
Andrew Heiss @andrew.heiss.phd · 05/09/2026
You can use this UN-approved Equal Earth projection right now in #rstats #gis #databs
library(tidyverse)
library(sf)
library(rnaturalearth)

world <- ne_countries() |> filter(sov_a3 != "ATA")

ggplot(data = world) +
  geom_sf() +
  coord_sf(crs = "+proj=eqearth") +
  theme_void()A basic world map using the Equal Earth projection
727081
Andrew Heiss @andrew.heiss.phd · 01/09/2026
heyyy it's Quark with a vampire slayer
Armin Shimerman with Sarah Michelle Gellar in *Buffy the Vampire Slayer*
1130
Andrew Heiss @andrew.heiss.phd · 31/08/2026
hey look it’s the
Sign pointing to the Cool Zone
1160
Andrew Heiss @andrew.heiss.phd · 30/08/2026
the dnc fundraising texts find me even in doha
Fundraising texts from Roy Cooper and Jon Ossoff
070
Andrew Heiss @andrew.heiss.phd · 29/08/2026
And found an almost brand new digital piano on fb marketplace; we’ve got a whole studio going now
Casio digital piano
0190
Andrew Heiss @andrew.heiss.phd · 28/08/2026
Keyboards are here and we’ve got them working through GrandOrgue! Just waiting on the pedals (and to not live in a hotel)
Two MIDI keyboards running as organ manuals through a laptop
071
Andrew Heiss @andrew.heiss.phd · 25/08/2026
hey hey hey I got Positron Server working through JupyterHub running on a DigitalOcean droplet thanks to Posit's Positron for Education license positron.posit.co/education.html - I have a few iPad-only students this semester and now they can use Positron like the rest of the class #rstats
Screenshot of Positron, but in a browser
2405
Andrew Heiss @andrew.heiss.phd · 24/08/2026
Made by Mormons too!
Instructure Holdings, Inc. is an educational technology company based in Salt Lake City, Utah, United States. It is the developer and publisher of Canvas, a web-based learning management system.

History
The company was founded in 2008 by two BYU graduate students, Brian Whitmer and Devlin Daley.
3153
Andrew Heiss @andrew.heiss.phd · 24/08/2026
Using Canvas for the first time and it's actually pretty nice
Norman Rockwell freedom of speech standing man
5141
Andrew Heiss @andrew.heiss.phd · 20/08/2026
@darinself.com it's only in Claude Code, not in the browser - it used to be in manual mode by default, but now it's auto. You can change it in the settings in VS Code/Positron/whatever: code.claude.com/docs/en/perm...
010
Andrew Heiss @andrew.heiss.phd · 18/08/2026
looool a little tree fell on our house days before it’s supposed to go on the market
A tree on our house, with a broken gutter
380
Andrew Heiss @andrew.heiss.phd · 18/08/2026
This place is neat
Exterior of Georgetown University Qatar, with a sand-colored building contrasted with a blue skyMain atrium, with a yellow ceiling, fancy chandeliers, and dozens of flags The library central stairway, with a yellow ceiling and blue sky poking through skylightsTwo minarets of the Education City mosque
0171
Andrew Heiss @andrew.heiss.phd · 18/08/2026
My latest attempt at an AI/LLM policy in my intro to social science stats class. Basically two rules: 1. Everything human-facing must be human-generated 2. You are responsible for understanding, verifying, and citing everything an LLM generates quantf26.classes.andrewheiss.com/syllabus.htm...
Generative AI and LLMs
In this class, I have two general rules regarding LLMs:

Everything human-facing must be human-generated.
You are responsible for understanding, verifying, and citing everything an LLM generates.
I’ll explain what these mean below, but first, an important warning!

LLMs and learning
Phew, I can talk about the relationship between learning and LLMs for hours (see this for a more formal explanation of my thinking). LLMs and generative AI can be useful for statistical programming, but only when you already know what you are doing. They can be dangerous and counterproductive for beginners.

Additionally, using LLMs and generative AI to write does not lead to deeper learning. The point of writing is to help crystalize and organize your thinking. Pasting LLM-generated words into an assignment to make it look like you read and understood the content will not help you learn. Pasting LLM-generated code into an assignment and hoping that it works will not help you learn.Rule 1: Everything human-facing must be human-generated
Generative AI tools like Gemini, ChatGPT, and Claude can be helpful for generating ideas or topics for your assignments and can even help you find existing research about topics you’re interested in. They are useful for debugging and troubleshooting code.

These uses are permitted in this course.

If you want to use LLM tools to document your code, clean up your notes, look up error messages, search for research related to your topic, and so on, cool. Do it. That’s fine. It’s unavoidable nowadays anyway, since every R-related Google search will give you a Gemini-generated answer at the top with mostly working R code.

Any writing and revisions, however, must be your own. You may not use AI tools to write any of the text you submit to me. AI text adds nothing to my understanding. I have no interest in engaging with it at all. There is nothing more disheartening for me than spending my time grading something that ChatGPT spat out in 10 seconds. I want to see good engagement with the readings. I want to see your thinking process. I want to see you make connections between the readings. I want to see your personal insights. I don’t want to see a bunch of words that look like a human wrote them. That’s not useful for future-you. That’s not useful for me. That’s a waste of time.

Thus, anything human-facing (i.e. not stuff done just for yourself, like your own personal notes, research, etc.) must be human-generated (i.e. written by you). You may not use AI tools to write any portion of your assignments. Using AI tools in this way, or failing to disclose the use of AI tools, will be treated as a case of plagiarism and referred to the Honor Council.

Rule 2: You are responsible for understanding, verifying, and citing everything an LLM generates
These tools are really good at working with code, but again, only if you know what you’re doing. Without guidance and expertise, LLMs love making lots of extraneous, convoluted, and weird code by default. The code ostensibly works, but it’s often strange and unnecessary and uses uncommon syntax and packages.

If you use LLMs for help with code, you must understand and verify what’s going on with your code and you must cite where it came from.

This means that you need to know what each line is doing. If the LLM uses a function or gives you an argument that you don’t understand or haven’t seen before, figure out why and figure out if it’s necessary. Look at the documentation for the function. Search Google for other examples. Ask the LLM about it, and then add comments to the code explaining what’s going on.

The citation doesn’t need to be anything formal (i.e. don’t worry about Chicago or APA guidelines)—it just needs to (1) say which LLM you used, and (2) mention what you asked the LLM.

You should do this by using code comments—inside your code chunk, add a # to the beginning of a line so that it’s treated as a comment (or text) instead of actual code.

Here’s an example of what this can look like:Here’s an example of what this can look like:

# This calculates the average GDP per capita in each region in the dataset, 
# for all countries after 2015. I couldn't remember how to use group_by() and 
# summarise() together, so I asked Gemini:
# 
# "I'm using tidyverse. I have a dataset named my_dataset and I'm filtering it 
# to include all countries after 2015. I want to calculate region averages with 
# group_by and summarise but cannot remember the syntax"

my_dataset |> 
  filter(year > 2015) |> 
  group_by(region) |> 
  # Gemini here included na.rm = TRUE, which omits any rows with missing values 
  # when calculating the average. That's okay and necessary here because 
  # South Sudan is missing some years of GDP data
  summarise(avg_gdp = mean(gdp_per_cap, na.rm = TRUE))

# Gemini also included an extra ungroup() function at the end, but I don't need 
# that because there are no groups leftover after summarising here

↑ That’s a lot of extra comments and you won’t always see stuff like that in real life code, but I want to see it here, and future-you will want to see it too.
1114726
Andrew Heiss @andrew.heiss.phd · 17/08/2026
k here we go
Screenshot of season 1 of Buffy the Vampire Slayer from Plex
1230