NAME

App::vaporcalc - Calculate e-liquid recipes for DIY vaping

SYNOPSIS

# From a shell:
# sh$ vaporcalc

## From Perl:
# use App::vaporcalc 'vcalc';
# my $calculated = vcalc(...); 
# (See EXPORTED)

WARNING

Nicotine is dangerous; skin contact can kill you.

Don't play with it if you don't respect it!

Any nicotine-containing product should be tested to determine nicotine concentration before use. Testing kits are available online. Be responsible.

DESCRIPTION

This is a set of simple utilities, roles, and objects for managing e-cig liquid recipes and calculating ml quantities based on a simple recipe format.

From a shell, the vaporcalc frontend starts with a base recipe outline and provides a command line interface to tweaking, saving, and loading recipes.

If you'd like to manage recipes from perl, see "vcalc", below (or use App::vaporcalc::Recipe directly).

EXPORTED

vcalc

my $calculated = vcalc(
  target_quantity   => 30,   # ml

  base_nic_type     => 'PG', # nicotine base type (VG/PG, default PG)
  base_nic_per_ml   => 100,  # mg/ml (base nicotine concentration)
  target_nic_per_ml => 12,   # mg/ml (target nicotine concentration)

  target_pg         => 65,   # target PG percentage
  target_vg         => 35,   # target VG percentage

  flavor_percentage => 15,   # target flavor percentage
  flavor_type       => 'PG', # flavor base type (VG/PG, default PG)
);

# Returns an App::vaporcalc::RecipeResultSet ->
my $recipe = $calculated->recipe;   # App::vaporcalc::Recipe instance
my $result = $calculated->result;   # App::vaporcalc::Result instance

A functional interface to App::vaporcalc::RecipeResultSet -- takes a recipe (as a list of key/value pairs or an App::vaporcalc::Recipe object) and returns a calculated App::vaporcalc::RecipeResultSet.

See:

App::vaporcalc::Recipe

App::vaporcalc::Result

App::vaporcalc::RecipeResultSet

TIPS

Less is more with many flavors; you may want to start around 5% or so and work your way up.

Ideally, let juices steep for at least a day before sampling; shaking and warmth can help steep flavors faster.

Don't use flavors containing diacetyl (frequently used to create a buttery taste). It's safe to eat, not safe to vape.

Anything containing artifical coloring or triglycerides is possibly not safe to vape.

Flavors containing triacetin are reported to cause cracking in various plastic tanks. Triacetin is a reasonable flavor carrier and probably OK to vape, but may be rough on equipment.

Buy nicotine from a reputable supplier and test it; there have been instances of nicotine solutions marketed as 100mg/ml going as high as 250mg/ml!

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>