You are having trouble with something in your life like falling asleep, or focusing, or whatever, and you decide to take some supplement or drug. The problem that you will often face, unless it’s something with really strong effects, is that you don’t quite know if it’s working. It might feel like it does, but how can you know that it’s not a placebo?

Oh, you don’t care because it seems to be working anyway? Sure, but placebo effects will fluctuate based on your mood: how confident are you today that the supplement/drug is working? And how confident will you be tomorrow? Placebo effects are unreliable and we can and should do better. In this post I’ll show you how to estimate the actual effects to be able to rely on those instead. I will illustrate step by step with my own example, since I’m currently running one.1

Short, visual guide

To detect the effects of the drug, you first need a measure of what you care about. What are you trying to accomplish with this drug? What should be the effects if the drug worked? Which of those can you measure?

In my case, what I’m trying to measure are the effects of a stimulant, so I want to record things like motivation, tasks accomplished, etc. But those are not the only things you want to measure. Especially if it’s a strong drug with common side effects, you should try to measure those as well. It’s no good if a drug helps you sleep but then gives you a headache the next day, for example. Personally, I would ask an AI about it to make sure you’re not forgetting anything. You don’t want to add stuff mid-experiment or measure things differently.2 Once the experiment starts, you should follow through (so long as you are feeling well and you think it’s safe).

Other things you need:

  • Something with no noticeable effects on you, to be used as placebo (I’m using zinc, though it’s not ideal).
  • HPMC capsules, you probably want them of size 003
  • Some filler for said capsules (in my case it’s protein powder, but you could use flour or creatine or maybe even sugar).
  • A lot of envelopes (annoying to set up but worth it).
  • A program or some other way to do randomization (more on this later).
  • Any tool you need to take measurements.
  • A capsule-making machine or cotton swabs for manual pressing.
  • A big table, completely clear, so that you have plenty of space.

That’s it.

Could you ditch the placebo and just make capsules with only filler? Probably, but I was paranoid that if I did that and I saw a pill inside one of the capsules during the experiment, I’d know for certain that it was an active pill. This is less likely to happen to you if you make sure that the color of the filler and the drug match, but whatever.

The process is as follows:

  1. Verify that you can actually run the experiment
  2. Figure out the dosage that you want to test
  3. Make the pills (two piles, don’t mix)
  4. Put them into envelopes with a small slip of paper saying which kind of pill it contains (active or placebo)
  5. Shuffle them!
  6. Make questionnaires and set up whatever else you need to measure your variables

Verifying viability

I mean this in a specific way: you need a relatively stable life in the first place to not be swamped by noise in the data. You also need something relatively strong or I doubt you’ll be able to convincingly demonstrate that it works. Finally, you must take into account how long will the experiment take. If the drug you’re going to test takes days for your body to process, you’ll need several days in between experiment days, otherwise the drug will still be having an effect on placebo days, or even worse, the effect of one pill might stack with another! That could be unsafe and it completely defeats the purpose of conducting a self-experiment.

Figuring out dosages

If you are testing a mild supplement, dosage is usually less complicated, though you should still check the label, interactions, and contraindications. Prescription drugs are different. Do not treat this post as dosing advice. Follow the prescribing information and, ideally, a doctor’s instructions.

If you are using a prescription-only drug without medical supervision, I’m not going to pretend that is a good idea. At minimum, do not wing it: read the official prescribing information, check maximum doses, check contraindications and interactions, and do not change how the drug is meant to be taken.

Be boringly conservative; the goal is to learn something useful without long-term consequences for your health.

Making the pills

This is where the fun starts. You need HPMC capsules from a more or less trustworthy seller (so that you can be reasonably confident that they are indeed HPMC). If not, they could take longer to get absorbed into your body, if it happens at all. If they are transparent you’ll need some filler so that you can’t tell which one is which by looking at them, and so that they weigh about the same, the stuff inside doesn’t rattle, and so forth.

Protein powder on one bowl, capsules of size 00 on another

Breaking bad. The big container is the protein, the creatine I didn’t use in the end.

Mission Critical
Do not grind the active drug into powder! Some drugs can become dangerous if you do this. Since they can be absorbed much more quickly into your body, the peak concentration that you get can be much higher. That is especially the case with the slow-release variants, where you’d destroy the mechanism when you grind them. Use drugs as they are intended: if the pill admits splitting it into two (because it has a crease to do so and the labels says it’s fine) and you just want half the dose of that pill, sure, split it, it’s an intended use. But don’t go around splitting pills randomly.

If you bought the (cheap, likely worth it) capsule filling machines, you will spend very little time making the pills. If not, you are in for hours of making pills one by one. I don’t have any experience with the machines but there are tutorials on youtube. With the machine it’s obvious that you need to do either the placebos first or the active ones first, but don’t mix them in a batch since you can forget which one is which. Same goes for the manual filling, just do placebos first, for example. Also, make sure to press the filler well. For manual filling, what I did was, put a little filler first, then the placebo/active, then more filler, press, more filler, then maybe press again.

Make all the pills in the exact same way. If it is your first time making something, it’s expected that you will learn something on how to make them better, but refrain from doing things differently with each passing pill. If you allow yourself to do things differently, the second batch might end up looking different than the first, and then you might be able to tell which pill you are taking! For example, if you press the second batch more than the first, the protein powder or whatever you used as filler might move around in one batch but not the other.

Lastly, don’t worry too much either, they don’t need to be perfect. When you are doing the experiment you should take each pill without looking at them anyway. But you should strive to make them such that an accidental glance won’t mean that the data for that day is worthless.

Here’s a picture of the output of this step (quite pretty, I know):

Two containers filled with homemade capsules, one has a piece of paper

Left is placebo, right is active. There’s a small piece of paper with an ‘A’ on the right container to make sure I wouldn’t mess up.

Envelopes

Again, you need to work with two separate piles of envelopes, pieces of paper, and capsules. You must make very sure that you don’t screw up, so start with placebo, for example, and only once you’re finished with that batch make the active one.

After that, cut a bunch of small pieces of paper marked A or P, put them into two piles, and fold each piece of paper. Ideally, they would all look the same, though it’s not too important.

After that, just put one paper in each envelope and the corresponding pill(s). In my case, I put two capsules inside each envelope because I wanted to take one during breakfast and another during lunch, but of course inside each envelope they are either both active or both placebo, not a mix.

Many envelopes filled with pills

If you squint hard you might see the slips of paper that I stuck in the corners of the envelopes so they wouldn’t accidentally fall off when open.

Close the envelopes but don’t mix them yet, as we will see, it’s tricky.

Shuffling envelopes

I wish I had more pictures of the process but I did it late in the afternoon the day before the experiment started.

There are two ways of doing this. The caveman way would be to somehow mix them by hand. This is likely to make the capsules fall out and it’s not going to be random at all.

So let’s be smarter. In this example, we have 10 active pills and 10 placebos.

You first run the program below, or something equivalent. I made it with the Python programming language and the secrets library.4

import secrets

ACTIVE_PILLS=10
PLACEBO_PILLS=10

rng = secrets.SystemRandom()

arr = ["P"] * PLACEBO_PILLS + ["A"] * ACTIVE_PILLS
rng.shuffle(arr)

print(arr)

This gives you output like, for example:

['P', 'P', 'A', 'P', 'A', 'P', 'A', 'A', 'A', 'P', 'A', 'P', 'A', 'A', 'P', 'P', 'A', 'A', 'P', 'P']

Ideally, you would save that output (and the output of the next program) in a file, as a double check on your randomization at the end of the experiment. But I don’t think it’s too bad if you don’t, to be honest, and I didn’t do it myself.

What you do next is pick an envelope from each pile according to that array, and you put them in that order elsewhere. So in that example you pick one from the placebo pile, then another one from the placebo pile, then one from the active one, etc. The output should be, in this example, 20 envelopes in the order specified by the program.

You might think you’re now done, but you’d probably remember, for example, that the first two days are placebo. That’s no good, we want it to both be random and not know anything about the ordering!

Here’s what I did to solve this. You cut small pieces of paper labeled 1 to 20 (in this example). Then you put each piece of paper beside each envelope, 1 for the first, 2 for the second, and so on. Then you run this other script to randomly shuffle those envelopes.

import secrets

N_ENVELOPES=20
rng = secrets.SystemRandom()

arr = list(range(1, N_ENVELOPES + 1))
rng.shuffle(arr)

print(arr)

The output is something like this: [3, 2, 17, 7, 19, 13, 11, 14, 15, 4, 12, 16, 18, 10, 8, 5, 6, 1, 20, 9]

After that you just pick the envelopes in that order and store them in the final place. If you still feel like you remember anything about the order, repeat the last step. Simply re-label them with your tiny pieces of paper and re-shuffle with the above script to your heart’s content.

I should mention that in my setup I did all of this 3 times because I want to conduct the experiment on 3 days per week, and I wanted each weekday to get exactly as many placebos as active, to facilitate the analysis later on and have less randomness. In my experiment, I wanted to have an office day, a remote-work day, and a free day. This is similar to running 3 separate experiments. Those 3 days were Monday, Thursday and Saturday, so I have 3 columns of envelopes, one for each day. The Monday batch is labeled “1M”, “2M”, and so on; the Thursday batch is “1T”, “2T”, etc; and the same pattern for the Saturday batch. I even color-coded them so that I’d be less likely to pick the wrong envelope when I was half-asleep during the morning.

3 stacks of envelopes, each stack marked with a different color

Measuring tools

For the variables that I set out to record, I only needed something to keep track of my sleep hours, quality of sleep and a bunch of other variables that could be recorded with Google Forms. I also bought myself a blood pressure monitor, since stimulants often have the side effect of raising your blood pressure.

For sleep hours and quality of sleep the obvious choice is a smartwatch, but I hate them almost as much as I hate sleeping with a watch. Another option, maybe the best one, would be to use the Oura Ring. I decided it was no good for me because a) it costs easily €400 + a ~€70 yearly subscription and b) I could build my own device to get proxy measurements5. So I decided to use an arduino that I had at home from way back when, buy a €6 clock module, wire 6 buttons and a couple of LEDs and call it a day. The device records when I go to sleep and when I wake up, with a subjective score of sleep quality from 1 to 5. The implicit assumption is that I won’t be using my phone in bed (which in my case is reasonable) and since I can register the going-to-bed more than once, if I can’t sleep for some reason I can always hit the button again. Overall, it doesn’t look very robust and I might get the Oura Ring just to see how it correlates with this contraption’s data. That would be an interesting post for sure.

An arduino contraption with 6 buttons, and two LEDs: green and red

My advice here is: don’t be like me, this machine is rather sketchy :)

Janky Arduinos aside, why Google Forms? Because they are extremely easy to set up, robust (I think?), reasonably customizable, you can download the data as CSV files and you can set up shortcuts to each of them (since you access them via web). Here’s what that looks like on my phone:

Screenshot with a bunch of shortcuts to “websites” (actually the Google Forms)

You will also want to set up reminders at the approximate hours you think you’ll need to fill them just in case.

Recommended settings for all your Google Forms for self-experiments:

  • Collect email addresses: Verified (somewhat optional but I would enable it).
  • Send responders a copy of their response: Always (This is so that if something goes wrong, you could always potentially sift through your emails and collect the data from there. Also, if you ever have cold sweats trying to remember whether you filled a form you can check easily with this option turned on).
  • Allow response editing: On (to fix mistakes when filling a form, presumably you can trust yourself to do so responsibly).
  • Make questions required by default: On (so that you don’t forget to answer any question).

Screenshot of the settings of a google form

A few tips on the content of the forms:

  • Always put a Comments text box at the end, to record anything that will help you understand the data from that form.
  • Always add an option for NAN/unknown/doesn’t apply, etc. You can skip this if you don’t have the question as required. So be explicit about the NAN, except maybe in the questions that are naturally “linear scale”, which maybe should be avoided.6
    Linear scale, Google Forms question

    The so-called linear scale type of question

  • Always add a few questions on the probability of having taken the pill. One in the questionnaire right after taking the pill, another at the point when you think you’d notice the effect subjectively. This is useful to make sure the blind isn’t broken; or even if it is, it gives you some measure of how good you are at noticing the active condition. This is especially interesting if you have some metric that gets recorded early. For example, I have a measure which means “time until I started doing some cognitively demanding task”. Presumably, I will be more likely to start such a task earlier with a stimulant than without, and this will be so before I even have time to notice what kind of pill I took. That’s useful information even if the blind is broken later during the day.
  • Adding questions to a form after you have answered it is safe (a new field is created in the CSV). Adding options to questions is also safe: since they are stored as strings regardless, the new value is just another string that might show up. But I haven’t tested what happens if you remove questions or options, so do some testing beforehand to make sure it’s alright (I bet it is).
  • Despite the previous point, try to design them well from the start, since even seemingly innocent things like adding options will skew the results, making you answer in some way before having the new option, and answering with the new one afterwards.
  • Try to make the wording neutral. For example, I have a question asking for my reasoning for thinking that I did/did not take the active pill. A neutral answer is “appetite”, because it works both for “lack of appetite” and for “normal appetite”. It’s pointless to add two separate options for this and even worse if you put only one like “lack of appetite”.

Further advice

  • Make a promise to yourself that you will call off the experiment if you’re feeling unwell. You are doing the experiment to improve something in your life, not to make it worse.
  • Similarly, stop the day protocol if you aren’t feeling well.
  • To keep track of the previous, have a question in a form like “did you take the pill today?”. This is especially relevant if you are supposed to take two pills, you want to be able to record if you took the first pill but not the second.

The dataset I’ll be building myself

The table below is the schema of roughly the dataset I hope to build. To understand it, bear in mind that what I’m testing myself is a stimulant/nootropic/smart drug. These are supposed to make you more productive, but can also disrupt your sleep, give you headaches, and so on. Productivity measures are therefore important outcome variables and health related ones are tied to side effects. Both need to be recorded in every self-experiment! You need to understand the tradeoff that you are making, if there is any.

Also, I should mention that not all these performance metrics are very concrete. In particular, the one tracking how valuable the day was is especially important, since super narrow metrics of performance will hide real improvements. For example, I consider writing this blogpost a very valuable activity. Or maybe some other day I will help a friend with something important to them. Those need to be measured somehow. Of course, you can’t read as much in them, since those subjective “metrics” could be simply a proxy to how happy a drug makes you, regardless of anything else.

If you plan on doing an experiment, I strongly encourage you to produce a table like this one, adapted to what you want to track.

Some notes to understand the table:

  1. FP, SP stand for First Pill and Second Pill, EOD means End of Day, BP is Blood Pressure.
  2. 1..5 means there are 5 categories, where 1 is the worst, 3 is mid, 5 is best.
  3. Each row of the dataset will be a pill/experiment day.
  4. The previous (*_prev) variables refer to a measurement taken the previous natural day. By design I don’t do experiments in consecutive days. Similarly, I also take some measurements the day after.
  5. Screentime since last full charge is a terrible measure, but GrapheneOS doesn’t have the google app and I don’t want to install such an invasive sort of app from third parties. I have made sure to make charging my phone during the night as hard to skip as possible (so that full charge and EOD coincide) and it seems to be working fine. I predict a lot of missing data though.
  6. Blood pressure will only be recorded when at home. I won’t carry the machine around nor measure it anywhere else.
Variable NameData TypeTriggerMeaningReason for includingSource
dateDate-Day of recording (except for variables *_prev and *_after)-Smartphone forms
pill_idCategory-iM for Monday pill # i, iT for Thursday, iS for Saturday-Smartphone form
activeBool-(Placebo day=0, Active day=1) (known after full experiment)-Slips inside envelopes
n_beers_prevOrdinalEOD# of 1/3L (~11 oz.) beers drunk previous day (0, 1, 2, 3+)Potential hangover can skew the dataSmartphone form
gym_prevBoolEODWent to the gym the previous day?FatigueSmartphone form
sleep_qualityOrdinalWaking upSleep quality (1..5) (i.e. if I woke up a lot, etc)Stimulants can disturb sleep patternsDevice with 5 physical buttons
bed_startTimestampGoing to bed-Stimulants can disturb sleep patternsDevice used for sleep_quality
bed_endTimestampWaking up-Stimulants can disturb sleep patternsDevice used for sleep_quality
fp_timeTimestampFPTime where I took the pill (nan if I didn’t)-Smartphone form
fp_okBoolFPWhether I took the pillCompliance with treatment, data consistency checkSmartphone form
baseline_motivationOrdinalFP(1..5)Predictor of productivitySmartphone form
prob_active_fpFloatFPSubjective probability of having taken the stimulantStudy if the blind is broken early onSmartphone form
reason_p_act_fpStringFPReason for prob_active_fpMight help make sense of noisy probsSmartphone form
screen_charge_okBoolFPWas the phone fully charged during the night?If not fully charged, screen time won’t match daily usageSmartphone form
form_2h_after_timeTimestampFilling “2 hours after FP” formPossible discrepancies between these supposed 2h and realityI’m unlikely to record this at exactly 2h after FPSmartphone form
prob_active_2hFloat~2 hours after FPSubjective probability of having taken the stimulantStudy if the blind is brokenSmartphone form
reason_p_act_2hString~2 hours after FPReason for prob_active_2hMight help make sense of noisy probsSmartphone form
sp_timeTimestampSPTime where I took the pill (nan if I didn’t)-Smartphone form
sp_okBoolSPWhether I took the pillCompliance with treatment, data consistency checkSmartphone form
prob_active_spFloatSPSubjective probability of having taken the stimulantStudy if the blind is broken (appetite & productivity clues)Smartphone form
reason_p_act_spStringSPReason for prob_active_spMight help make sense of noisy probsSmartphone form
productive_morningOrdinalSPProductivity in the morning (1..5)Outcome VariableSmartphone form
bp_timeTimestampSP or arrival homeTimestamp of blood pressure measurements-Smartphone form for BP
coffee_before_bpBoolSP or arrival homeWhether I had coffee at any point before measuring BPCaffeine can affect BP and heart rateSmartphone form for BP
exercise_before_bpBoolSP or arrival homeWhether I exercised at any point before measuring BPExercise can affect BP and heart rateSmartphone form for BP
sys_pressure_1IntSP or arrival homeSystolic blood pressure (1st reading)Stimulants can increase blood pressureBlood Pressure Monitor
dia_pressure_1IntSP or arrival homeDiastolic blood pressure (1st reading)Stimulants can increase blood pressureBlood Pressure Monitor
bpm_1IntSP or arrival homeBeats per minute (1st reading)Stimulants can increase heart rateBlood Pressure Monitor
sys_pressure_2IntSP or arrival homeSystolic blood pressure (2nd reading)Stimulants can increase blood pressureBlood Pressure Monitor
dia_pressure_2IntSP or arrival homeDiastolic blood pressure (2nd reading)Stimulants can increase blood pressureBlood Pressure Monitor
bpm_2IntSP or arrival homeBeats per minute (2nd reading)Stimulants can increase heart rateBlood Pressure Monitor
productive_afternoonOrdinalEODProductivity in the afternoon (1..5)Outcome VariableSmartphone form
n_tasks_accomplishedIntEODNumber of tasks accomplished from planned the previous dayTo calculate fraction of accomplished tasksSmartphone form
n_tasks_plannedIntEODNumber of tasks planned the previous dayTo calculate fraction of accomplished tasksSmartphone form
day_valueOrdinalEODHow valuable the day has been (1..5)Holistic, relevant outcomeSmartphone form
n_beersOrdinalEODNumber of 1/3L (~11 oz.) beers drunk that day (0, 1, 2, 3+)Alcohol can confound sleep, heart rate, and productivitySmartphone form
alcohol_otherFloatEODEstimation of grams of ethanol from sources other than beerSo that we don’t miss alcohol consumptionSmartphone form
n_coffeesOrdinalEODNumber of coffees (0, 1, 2, 3+)StimulantSmartphone form
screen_minutesIntEODScreentime since last full chargeProxy for low quality/low productivity daySmartphone form
screen_minutes_ytIntEODScreentime on YouTube since last full chargeProxy for low quality/low productivity daySmartphone form
screen_minutes_xIntEODScreentime on X since last full chargeProxy for low quality/low productivity daySmartphone form
screen_minutes_whatsappIntEODScreentime on WhatsApp since last full chargeToo much might be indistinguishable from social media usageSmartphone form
screen_minutes_other_doomIntEODScreentime on other social media since last full chargeProxy for low quality/low productivity daySmartphone form
headacheOrdinalEODHad headache? (0=none,1=mild,2=moderate,3=severe)Side effectSmartphone form
libraryBoolEODWent to the library today?Library attendance predicts long, productive study sessionsSmartphone form
gymBoolEODWent to the gym today?FatigueSmartphone form
study_statusCategoryEOD(No study/Studied, not recorded/Study recorded/Unknown)Double check and useful to know if I studiedSmartphone form
vomitBoolEODDid I vomit at any time that day?You could vomit the pill, also a bad day anywaySmartphone form
officeBoolEODDid I go to the office today?I have some flexibility and also there might be holidaysSmartphone form
abnormal_dayBoolEODAny weirdness (travel, illness, whatever)Stuff happensSmartphone form
abnormal_day_reasonStringEOD-Stuff happensSmartphone form
time_to_startFloat1st 25+ minutes focused after FPNaN for unknown, inf for never focusedProductivity measure before pill effect might be noticeableSmartphone form
n_exercises_completedIntEOD (daily aggregate)Number of completed exercisesThis is one of the main outcomes, very valuableMy trusty notebook
n_exercises_attemptedIntEOD (daily aggregate)Number of attempted exercisesThis is one of the main outcomes, very valuableMy trusty notebook
hours_studiedFloatEODDecimal hoursThis is one of the main outcomes, very valuableMy trusty notebook
motivation_next_morningOrdinalBreakfast (day after)(1..5)To see if taking the pill on day t affects motivation in t+1Smartphone form
headache_next_morningOrdinalBreakfast (day after)Have headache? (0=none,1=mild,2=moderate,3=severe)Side effectSmartphone form

I will be publishing this once the experiment is over (it’ll take months). I might remove some variables from the published dataset for privacy reasons.

In my limited experience so far, tasks planned/accomplished and time to start are the hardest things to measure. The first because I forget to set up some time the day before to think carefully about it, the second because it’s event driven and hard to know after the fact when you started.

As you can see, this is a lot. So that’s why you need to make things as easy as possible for yourself to record everything. Your smartphone is king for most of this, and so is Google Forms, or I suppose Microsoft’s.

Final remarks

I hope this inspires you to test things for yourself. Science is awesome and this sort of resembles it, doesn’t it? I’m sure I’m making a million mistakes and that I will make more in the coming months but it’s a lot of fun and potentially very enlightening.

Enjoy!


  1. The only caveat here is that the stuff needs to go orally, which is why I will say simply “drug” or “pill”. I don’t even know how to go about this with injected drugs and I wouldn’t recommend that you try, since I see a lot of contamination risks and lots of other ways you could hurt yourself unknowingly. Please be careful. ↩︎

  2. Do as I say on this, and not as I did, because it has already happened to me in this experiment. ↩︎

  3. Ideally opaque, but those are harder to find and it’s not necessary. Plus, they might contain titanium dioxide, which EU authorities have already banned as a food additive (though it still appears in medical products). ↩︎

  4. The secrets library is meant to be used in cryptography, so it should have top-notch random number generation. Using it instead of, say, numpy, seems like an easy win in this case. ↩︎

  5. I could also use a headband like this for a price in that ballpark but they don’t seem to allow you to download your own data, which is an absolute no-no. ↩︎

  6. You could always add the 0 as an option to mean NaN but this is awkward. ↩︎