gitextract_2xwy4ck2/ ├── 01_graphic_elements/ │ ├── 01_one_with_everything/ │ │ └── one_with_everything_java/ │ │ └── one_with_everything_java.pde │ ├── 02_quadrilateral_zoo/ │ │ └── quadrilateral_zoo_java/ │ │ └── quadrilateral_zoo_java.pde │ ├── 03_initials/ │ │ ├── initials_java/ │ │ │ └── initials_java.pde │ │ ├── initials_javascript/ │ │ │ ├── index.html │ │ │ ├── libraries/ │ │ │ │ ├── p5.dom.js │ │ │ │ ├── p5.js │ │ │ │ └── p5.sound.js │ │ │ └── sketch.js │ │ └── initials_python/ │ │ ├── initials_python.pyde │ │ └── sketch.properties │ ├── 04_braille_tool/ │ │ └── braille_tool_java/ │ │ └── braille_tool_java.pde │ ├── 05_mondrian/ │ │ └── mondrian_java/ │ │ └── mondrian_java.pde │ └── 08_kaleidoscope/ │ └── kaleidoscope_java/ │ └── kaleidoscope_java.pde ├── 02_iteration/ │ ├── 01_simple_iteration_seven_circles/ │ │ ├── simple_iteration_java/ │ │ │ └── simple_iteration_java.pde │ │ ├── simple_iteration_js/ │ │ │ ├── index.html │ │ │ ├── simple_iteration_js.js │ │ │ └── sketch.properties │ │ └── simple_iteration_python/ │ │ ├── simple_iteration_python.pyde │ │ └── sketch.properties │ ├── 02_transitioning_rectangles/ │ │ ├── transitioning_rectangles_java/ │ │ │ └── transitioning_rectangles_java.pde │ │ ├── transitioning_rectangles_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── transitioning_rectangles_js.js │ │ └── transitioning_rectangles_python/ │ │ ├── sketch.properties │ │ └── transitioning_rectangles_python.pyde │ ├── 03_string_art_challenge/ │ │ ├── string_art_challenge_java/ │ │ │ ├── simple/ │ │ │ │ └── string_art_simple_java.pde │ │ │ └── string_art_challenge_java.pde │ │ ├── string_art_challenge_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── string_art_challenge_js.js │ │ └── string_art_challenge_python/ │ │ ├── sketch.properties │ │ └── string_art_challenge_python.pyde │ ├── 04_mini_calendar/ │ │ ├── mini_calendar_java/ │ │ │ ├── mini_calendar_java.pde │ │ │ └── sketch.properties │ │ ├── mini_calendar_js/ │ │ │ ├── index.html │ │ │ ├── mini_calendar_js.js │ │ │ └── sketch.properties │ │ └── mini_calendar_python/ │ │ ├── mini_calendar_python.pyde │ │ └── sketch.properties │ ├── 05_receding_landscape/ │ │ ├── receding_landscape_java/ │ │ │ ├── receding_landscape_java.pde │ │ │ └── sketch.properties │ │ ├── receding_landscape_js/ │ │ │ ├── index.html │ │ │ ├── receding_landscape_js.js │ │ │ └── sketch.properties │ │ └── receding_landscape_python/ │ │ ├── receding_landscape_python.pyde │ │ └── sketch.properties │ ├── 06_lines_to_the_cursor/ │ │ ├── lines_to_the_cursor_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── lines_to_the_cursor_java.pde │ │ ├── lines_to_the_cursor_js/ │ │ │ ├── index.html │ │ │ ├── lines_to_the_cursor_js.js │ │ │ └── sketch.properties │ │ └── lines_to_the_cursor_python/ │ │ ├── lines_to_the_cursor_python.pyde │ │ └── sketch.properties │ ├── 07_color_bar_gradient/ │ │ ├── color_bar_gradient_java/ │ │ │ └── color_bar_gradient_java.pde │ │ ├── color_bar_gradient_js/ │ │ │ ├── color_bar_gradient_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_bar_gradient_python/ │ │ ├── color_bar_gradient_python.pyde │ │ └── sketch.properties │ ├── 08_dashed_line/ │ │ ├── dashed_line_java/ │ │ │ ├── dashed_line_java.pde │ │ │ └── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── dashed_line_js/ │ │ │ ├── dashed_line_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── dashed_line_python/ │ │ ├── dashed_line_python.pyde │ │ └── sketch.properties │ ├── 09_nested_iteration_checkers/ │ │ ├── checkers_java/ │ │ │ ├── checkers_java.pde │ │ │ └── sketch.properties │ │ ├── checkers_js/ │ │ │ ├── checkers_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── checkers_python/ │ │ ├── checkers_python.pyde │ │ └── sketch.properties │ ├── 10_iteration_with_functions/ │ │ ├── interaction_with_functions_js/ │ │ │ ├── index.html │ │ │ ├── interaction_with_functions_js.js │ │ │ └── sketch.properties │ │ ├── iteration_with_functions_java/ │ │ │ └── iteration_with_functions_java.pde │ │ └── iteration_with_functions_python/ │ │ ├── iteration_with_functions_python.pyde │ │ └── sketch.properties │ ├── 11_stochastic_elements/ │ │ ├── stochastic_elements_java/ │ │ │ └── stochastic_elements_java.pde │ │ ├── stochastic_elements_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── stochastic_elements_js.js │ │ └── stochastic_elements_python/ │ │ ├── sketch.properties │ │ └── stochastic_elements_python.pyde │ ├── 12_interrupted_grid/ │ │ ├── interrupted_grid_java/ │ │ │ └── interrupted_grid_java.pde │ │ ├── interrupted_grid_js/ │ │ │ ├── index.html │ │ │ ├── interrupted_grid_js.js │ │ │ └── sketch.properties │ │ └── interrupted_grid_python/ │ │ ├── grid_with_randomness_python.pyde │ │ └── sketch.properties │ ├── 13_geometric_progression/ │ │ ├── geometric_progression_java/ │ │ │ ├── geometric_progression_java.pde │ │ │ └── sketch.properties │ │ ├── geometric_progression_js/ │ │ │ ├── geometric_progression_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── geometric_progression_python/ │ │ ├── geometric_progression_python.pyde │ │ └── sketch.properties │ ├── 14_moire_patterns/ │ │ ├── moire_java/ │ │ │ └── moire_java.pde │ │ ├── moire_js/ │ │ │ ├── index.html │ │ │ ├── moire_js.js │ │ │ └── sketch.properties │ │ └── moire_python/ │ │ ├── moire_python.pyde │ │ └── sketch.properties │ ├── 15_recoding_schotter/ │ │ ├── schotter_java/ │ │ │ └── schotter_java.pde │ │ ├── schotter_js/ │ │ │ ├── index.html │ │ │ ├── schotter_js.js │ │ │ └── sketch.properties │ │ └── schotter_python/ │ │ ├── schotter_python.pyde │ │ └── sketch.properties │ └── 16_hexagonal_grid/ │ ├── hexagonal_grid_java/ │ │ └── hexagonal_grid_java.pde │ ├── hexagonal_grid_js/ │ │ ├── hexagonal_grid_js.js │ │ ├── index.html │ │ └── sketch.properties │ └── hexagonal_grid_python/ │ └── hexagonal_grid_python.pyde ├── 03_color/ │ ├── 02_overlapping_color/ │ │ ├── overlapping_color_java/ │ │ │ └── overlapping_color_java.pde │ │ ├── overlapping_color_js/ │ │ │ ├── index.html │ │ │ ├── overlapping_color_js.js │ │ │ └── sketch.properties │ │ └── overlapping_python/ │ │ ├── overlapping_python.pyde │ │ └── sketch.properties │ ├── 03_constructing_a_gradient/ │ │ ├── constructing_a_gradient_java/ │ │ │ ├── constructing_a_gradient_java.pde │ │ │ └── sketch.properties │ │ ├── constructing_a_gradient_js/ │ │ │ ├── constructing_a_gradient_js.js │ │ │ └── index.html │ │ └── constructing_a_gradient_python/ │ │ ├── constructing_a_gradient_python.pyde │ │ └── sketch.properties │ ├── 04_color_wheel/ │ │ ├── color_wheel_java/ │ │ │ └── color_wheel_java.pde │ │ ├── color_wheel_js/ │ │ │ ├── color_wheel_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_wheel_python/ │ │ ├── color_wheel_python.pyde │ │ └── sketch.properties │ ├── 05_threshold_of_perception/ │ │ ├── threshold_of_perception_java/ │ │ │ ├── sketch.properties │ │ │ └── threshold_of_perception_java.pde │ │ ├── threshold_of_perception_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── threshold_of_perception_js.js │ │ └── threshold_of_perception_python/ │ │ ├── sketch.properties │ │ └── threshold_of_perception_python.pyde │ ├── 06_interactive_complement/ │ │ ├── interactive_complement_java/ │ │ │ ├── interactive_complement_java.pde │ │ │ └── sketch.properties │ │ ├── interactive_complement_js/ │ │ │ ├── index.html │ │ │ ├── interactive_complement_js.js │ │ │ └── sketch.properties │ │ └── interactive_complement_python/ │ │ ├── interactive_complement.pyde │ │ └── sketch.properties │ ├── 07_accented_palette/ │ │ ├── accented_palette_java/ │ │ │ └── accented_palette_java.pde │ │ ├── accented_palette_js/ │ │ │ ├── accented_palette_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── accented_palette_python/ │ │ ├── accented_palette_python.pyde │ │ └── sketch.properties │ ├── 08_split_complements/ │ │ ├── split_complementary_java/ │ │ │ └── split_complementary_java.pde │ │ ├── split_complementary_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── split_complementary_js.js │ │ └── split_complementary_python/ │ │ ├── sketch.properties │ │ └── split_complementary_python.pyde │ ├── 09_albers_color_relativity_1/ │ │ ├── color_relativity_1_java/ │ │ │ └── color_relativity_1_java.pde │ │ ├── color_relativity_1_js/ │ │ │ ├── color_relativity_1_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_relativity_1_python/ │ │ ├── color_relativity_1_python.pyde │ │ └── sketch.properties │ ├── 10_albers_color_relativity_2/ │ │ ├── color_relativity_2_java/ │ │ │ └── color_relativity_2_java.pde │ │ ├── color_relativity_2_js/ │ │ │ ├── color_relativity_2_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_relativity_2_python/ │ │ ├── color_relativity_2_python.pyde │ │ └── sketch.properties │ ├── 11_color_inspector/ │ │ ├── color_inspector_java/ │ │ │ └── color_inspector_java.pde │ │ ├── color_inspector_js/ │ │ │ ├── color_inspector_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_inspector_python/ │ │ ├── color_inspector_python.pyde │ │ └── sketch.properties │ ├── 12_color_survey/ │ │ ├── color_survey_alternate/ │ │ │ ├── color_mixer_java/ │ │ │ │ ├── color_mixer_java.pde │ │ │ │ └── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── color_mixer_python/ │ │ │ ├── color_mixer_python.pyde │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── sketch.properties │ │ ├── color_survey_app_js/ │ │ │ ├── package.json │ │ │ ├── server.js │ │ │ └── sketches/ │ │ │ ├── index.html │ │ │ ├── survey/ │ │ │ │ ├── index.html │ │ │ │ └── sketch.js │ │ │ └── viewer/ │ │ │ ├── index.html │ │ │ └── sketch.js │ │ ├── color_survey_java/ │ │ │ ├── color_survey_java.pde │ │ │ └── survey_result.csv │ │ ├── color_survey_py/ │ │ │ ├── color_survey_py.pyde │ │ │ ├── sketch.properties │ │ │ └── survey_result.csv │ │ ├── color_survey_viewer_java/ │ │ │ └── color_survey_viewer_java.pde │ │ └── color_survey_viewer_py/ │ │ ├── color_survey_viewer_py.pyde │ │ └── sketch.properties │ └── 13_palette_from_photo/ │ ├── palette_from_book_java/ │ │ └── palette_from_book_java.pde │ ├── palette_from_book_js/ │ │ ├── index.html │ │ ├── palette_from_book_js.js │ │ └── sketch.properties │ ├── palette_from_book_python/ │ │ ├── palette_from_book_python.pyde │ │ └── sketch.properties │ ├── palette_v2_java/ │ │ └── palette_v2_java.pde │ ├── palette_v2_py3/ │ │ └── palette_v2.py │ └── palette_v2_pyde/ │ ├── palette_v2_pyde.pyde │ └── sketch.properties ├── 04_conditional_testing/ │ ├── 01_left_or_right/ │ │ └── left_or_right_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── left_or_right_java.pde │ ├── 02_billiard_ball/ │ │ └── billiard_ball_java/ │ │ └── billiard_ball_java.pde │ ├── 03_one_person_pong/ │ │ └── one_person_pong_java/ │ │ └── one_person_pong_java.pde │ ├── 04_choose_your_own_adventure/ │ │ └── 04_choose_your_own_adventure_java/ │ │ ├── choose_your_own_adventure_java.pde │ │ └── data/ │ │ └── CenturySchoolbook-60.vlw │ ├── 05_state_machine_1/ │ │ └── state_machine_1_java/ │ │ └── state_machine_1_java.pde │ ├── 06_state_machine_2/ │ │ └── state_machine_2_java/ │ │ └── state_machine_2_java.pde │ ├── 07_state_machine_3/ │ │ └── state_machine_3_java/ │ │ └── state_machine_3_java.pde │ └── 08_state_machine_4/ │ └── state_machine_4_java/ │ └── state_machine_4_java.pde ├── 05_unpredictability/ │ ├── 01_coin_toss/ │ │ ├── coin_toss_book/ │ │ │ └── coin_toss_book.pde │ │ ├── coin_toss_java/ │ │ │ └── coin_toss_java.pde │ │ ├── coin_toss_javascript/ │ │ │ ├── index.html │ │ │ ├── p5.js │ │ │ ├── sketch.js │ │ │ └── style.css │ │ └── coin_toss_python/ │ │ ├── coin_toss_python.pyde │ │ └── sketch.properties │ ├── 02_roll_the_dice/ │ │ ├── dice_roll_book/ │ │ │ └── dice_roll_book.pde │ │ ├── dice_roll_java/ │ │ │ └── dice_roll_java.pde │ │ ├── dice_roll_javascript/ │ │ │ ├── index.html │ │ │ ├── p5.js │ │ │ ├── sketch.js │ │ │ └── style.css │ │ └── dice_roll_python/ │ │ ├── dice_roll_python.pyde │ │ └── sketch.properties │ ├── 03_exquisite_corpse_machine/ │ │ ├── exquisite_corpse_book/ │ │ │ └── exquisite_corpse_book.pde │ │ ├── exquisite_corpse_java/ │ │ │ └── exquisite_corpse_java.pde │ │ └── exquisite_corpse_python/ │ │ ├── exquisite_corpse_python.pyde │ │ └── sketch.properties │ ├── 04_intermittent_events/ │ │ └── intermittent_events_java/ │ │ └── intermittent_events_java.pde │ ├── 05_order_to_chaos/ │ │ └── order_to_chaos_java/ │ │ └── order_to_chaos_java.pde │ ├── 06_drunk_walk_1_brownian_motion/ │ │ └── brownian_motion_java/ │ │ └── brownian_motion_java.pde │ ├── 07_drunk_walk_2_random_lattice_walk/ │ │ └── lattice_random_walk_javascript/ │ │ ├── index.html │ │ └── sketch.js │ ├── 08_drunk_walk_3_smoothed_noise/ │ │ └── smoothed_noise_java/ │ │ └── smoothed_noise_java.pde │ ├── 09_ten_print/ │ │ └── ten_print_java/ │ │ └── ten_print_java.pde │ ├── 10_duotone_truchet_tile_java/ │ │ └── duotone_truchet_tile_java/ │ │ └── duotone_truchet_tile_java.pde │ ├── 11_hitomezashi_sashiko_stitching/ │ │ └── hitomezashi_sashiko_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── hitomezashi_sashiko_java.pde │ ├── 12_noise_mountains/ │ │ ├── noise_mountains_java/ │ │ │ └── noise_mountains_java.pde │ │ └── noise_mountains_js/ │ │ ├── index.html │ │ └── sketch.js │ └── 13_imaginary_islands/ │ └── imaginary_islands_java/ │ └── imaginary_islands_java.pde ├── 06_arrays/ │ ├── 01_living_line_1/ │ │ ├── living_line_java/ │ │ │ └── living_line_java.pde │ │ ├── living_line_js/ │ │ │ ├── index.html │ │ │ ├── living_line_js.js │ │ │ └── sketch.properties │ │ └── living_line_python/ │ │ ├── living_line_python.pyde │ │ └── sketch.properties │ ├── 02_living_line_2/ │ │ ├── living_line_2_java/ │ │ │ └── living_line_2_java.pde │ │ ├── living_line_2_js/ │ │ │ ├── index.html │ │ │ ├── living_line_2_js.js │ │ │ └── sketch.properties │ │ └── living_line_2_python/ │ │ ├── living_line_2_python.pyde │ │ └── sketch.properties │ ├── 03_living_line_3/ │ │ ├── living_line_3_java/ │ │ │ └── living_line_3_java.pde │ │ ├── living_line_3_js/ │ │ │ ├── index.html │ │ │ ├── living_line_3_js.js │ │ │ └── sketch.properties │ │ └── living_line_3_python/ │ │ ├── living_line_3_python.pyde │ │ └── sketch.properties │ ├── 04_calligraphic_polyline/ │ │ ├── calligraphic_polyline_java/ │ │ │ └── calligraphic_polyline_java.pde │ │ ├── calligraphic_polyline_js/ │ │ │ ├── calligraphic_polyline_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── calligraphic_polyline_python/ │ │ ├── calligraphic_polyline_python.pyde │ │ └── sketch.properties │ ├── 05_animated_walk_cycle/ │ │ ├── animated_walk_cycle_java/ │ │ │ └── animated_walk_cycle_java.pde │ │ ├── animated_walk_cycle_js/ │ │ │ ├── animated_walk_cycle_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── animated_walk_cycle_python/ │ │ ├── animated_walk_cycle_python.pyde │ │ └── sketch.properties │ ├── 06_plant_the_flag/ │ │ ├── plant_the_flag_java/ │ │ │ └── plant_the_flag_java.pde │ │ ├── plant_the_flag_js/ │ │ │ ├── index.html │ │ │ ├── plant_the_flag_js.js │ │ │ └── sketch.properties │ │ └── plant_the_flag_python/ │ │ └── plant_the_flag_python.pyde │ ├── 07_longest_line/ │ │ ├── longest_line_java/ │ │ │ └── longest_line_java.pde │ │ ├── longest_line_js/ │ │ │ ├── index.html │ │ │ ├── longest_line_js.js │ │ │ └── sketch.properties │ │ └── longest_line_python/ │ │ ├── longest_line_python.pyde │ │ └── sketch.properties │ └── 08_reordering_rectangles/ │ ├── reordering_rectangles_java/ │ │ ├── Rectangle.pde │ │ └── reordering_rectangles_java.pde │ ├── reordering_rectangles_js/ │ │ ├── index.html │ │ ├── reordering_rectangles_js.js │ │ └── sketch.properties │ └── reordering_rectangles_python/ │ ├── reordering_rectangles_python.pyde │ └── sketch.properties ├── 07_time_and_interactivity/ │ ├── 01_eyes_following_cursor/ │ │ ├── eyes_following_cursor_java/ │ │ │ └── eyes_following_cursor_java.pde │ │ ├── eyes_following_cursor_js/ │ │ │ ├── eyes_following_cursor_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── eyes_following_cursor_python/ │ │ ├── eyes_following_cursor_python.pyde │ │ └── sketch.properties │ ├── 02_fuse_or_progress_bar/ │ │ └── fuse_or_progress_bar_java/ │ │ └── fuse_or_progress_bar_java.pde │ ├── 03_ripples_in_a_pond/ │ │ ├── ripples_in_a_pond_java/ │ │ │ └── ripples_in_a_pond_java.pde │ │ ├── ripples_in_a_pond_js/ │ │ │ ├── index.html │ │ │ ├── p5.js │ │ │ ├── ripples_in_a_pond_js.js │ │ │ └── style.css │ │ └── ripples_in_a_pond_python/ │ │ ├── ripples_in_a_pond_python.pyde │ │ └── sketch.properties │ ├── 04_rain_catcher/ │ │ └── rain_catcher_java/ │ │ ├── Catcher.pde │ │ ├── Drop.pde │ │ ├── Timer.pde │ │ └── rain_catcher_java.pde │ ├── 05_abstract_typewriter/ │ │ └── abstract_typewriter_java/ │ │ └── abstract_typewriter_java.pde │ ├── 06_easing_filtering_a_variable/ │ │ ├── easing_java/ │ │ │ └── easing_java.pde │ │ ├── easing_javascript/ │ │ │ ├── index.html │ │ │ ├── sketch.js │ │ │ └── style.css │ │ └── easing_python/ │ │ ├── easing_python.pyde │ │ └── sketch.properties │ ├── 07_smoothing/ │ │ ├── smoothing_java/ │ │ │ └── smoothing_java.pde │ │ ├── smoothing_javascript/ │ │ │ ├── index.html │ │ │ ├── p5.js │ │ │ ├── sketch.js │ │ │ └── style.css │ │ └── smoothing_python/ │ │ ├── sketch.properties │ │ └── smoothing_python.pyde │ └── 08_audio_sensitive/ │ └── audio_sensitive_java/ │ └── audio_sensitive_java.pde ├── 08_typography/ │ ├── 01_ransom_letter/ │ │ ├── ransom_letter_java/ │ │ │ └── ransom_letter_java.pde │ │ ├── ransom_letter_js/ │ │ │ ├── index.html │ │ │ ├── ransom_letter_js.js │ │ │ └── sketch.properties │ │ └── ransom_letter_python/ │ │ ├── ransom_letter_python.pyde │ │ └── sketch.properties │ ├── 02_one_line_typewriter/ │ │ ├── one_line_typewriter_java/ │ │ │ └── one_line_typewriter_java.pde │ │ ├── one_line_typewriter_js/ │ │ │ ├── index.html │ │ │ ├── one_line_typewriter_js.js │ │ │ └── sketch.properties │ │ └── one_line_typewriter_python/ │ │ ├── one_line_typewriter_python.pyde │ │ └── sketch.properties │ ├── 03_dynamic_text/ │ │ ├── dynamic_text_java/ │ │ │ └── dynamic_text_java.pde │ │ ├── dynamic_text_js/ │ │ │ ├── dynamic_text_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── dynamic_text_python/ │ │ ├── dynamic_text_python.pyde │ │ └── sketch.properties │ ├── 04_responsive_text/ │ │ ├── responsive_text_java/ │ │ │ └── responsive_text_java.pde │ │ ├── responsive_text_js/ │ │ │ ├── index.html │ │ │ ├── responsive_text_js.js │ │ │ └── sketch.properties │ │ └── responsive_text_python/ │ │ ├── responsive_text_python.pyde │ │ └── sketch.properties │ ├── 05_scrolling_headlines/ │ │ ├── scrolling_headlines_java/ │ │ │ └── scrolling_headlines_java.pde │ │ ├── scrolling_headlines_js/ │ │ │ ├── index.html │ │ │ ├── scrolling_headlines_js.js │ │ │ └── sketch.properties │ │ └── scrolling_headlines_python/ │ │ ├── scrolling_headlines_python.pyde │ │ └── sketch.properties │ ├── 06_split_flap_type/ │ │ ├── split_flap_type_java/ │ │ │ └── split_flap_type_java.pde │ │ ├── split_flap_type_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── split_flap_type_js.js │ │ └── split_flap_type_python/ │ │ ├── sketch.properties │ │ └── split_flap_type_python.pyde │ ├── 07_word_finder/ │ │ ├── word_finder_java/ │ │ │ └── word_finder_java.pde │ │ ├── word_finder_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── word_finder_js.js │ │ └── word_finder_python/ │ │ ├── sketch.properties │ │ └── word_finder_python.pyde │ ├── 08_letterform_collage_tool/ │ │ ├── letterform_collage_tool_java/ │ │ │ └── letterform_collage_tool_java.pde │ │ ├── letterform_collage_tool_js/ │ │ │ ├── index.html │ │ │ ├── letterform_collage_tool_js.js │ │ │ └── sketch.properties │ │ └── letterform_collage_tool_python/ │ │ ├── letterform_collage_tool_python.pyde │ │ └── sketch.properties │ ├── 09_procrustean_typography/ │ │ ├── procrustean_typography_java/ │ │ │ └── procrustean_typography_java.pde │ │ ├── procrustean_typography_js/ │ │ │ ├── index.html │ │ │ ├── procrustean_typography_js.js │ │ │ └── sketch.properties │ │ └── procrustean_typography_python/ │ │ ├── procrustean_typography_python.pyde │ │ └── sketch.properties │ ├── 10_text_along_a_curve/ │ │ ├── text_along_a_curve_java/ │ │ │ └── text_along_a_curve_java.pde │ │ ├── text_along_a_curve_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── text_along_a_curve_js.js │ │ └── text_along_a_curve_python/ │ │ ├── sketch.properties │ │ └── text_along_a_curve_python.pyde │ ├── 11_glyph_hacking/ │ │ ├── glyph_hacking_java/ │ │ │ └── glyph_hacking_java.pde │ │ ├── glyph_hacking_js/ │ │ │ ├── glyph_hacking_js.js │ │ │ ├── index.html │ │ │ ├── libraries/ │ │ │ │ ├── rune.js │ │ │ │ └── rune.js-1.1.8/ │ │ │ │ ├── src/ │ │ │ │ │ ├── anchor.js │ │ │ │ │ ├── bezier.js │ │ │ │ │ ├── color.js │ │ │ │ │ ├── events.js │ │ │ │ │ ├── grid.js │ │ │ │ │ ├── group.js │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── box.js │ │ │ │ │ │ ├── parent.js │ │ │ │ │ │ ├── shape.js │ │ │ │ │ │ └── styles.js │ │ │ │ │ ├── node.js │ │ │ │ │ ├── rune.js │ │ │ │ │ ├── shapes/ │ │ │ │ │ │ ├── circle.js │ │ │ │ │ │ ├── ellipse.js │ │ │ │ │ │ ├── image.js │ │ │ │ │ │ ├── line.js │ │ │ │ │ │ ├── path.js │ │ │ │ │ │ ├── polygon.js │ │ │ │ │ │ ├── rectangle.js │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ └── triangle.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── vector.js │ │ │ │ └── test/ │ │ │ │ ├── both/ │ │ │ │ │ ├── anchor.js │ │ │ │ │ ├── color.js │ │ │ │ │ ├── grid.js │ │ │ │ │ ├── group.js │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── box.js │ │ │ │ │ │ ├── shape.js │ │ │ │ │ │ └── styles.js │ │ │ │ │ ├── rendering.js │ │ │ │ │ ├── rune.js │ │ │ │ │ ├── shapes/ │ │ │ │ │ │ ├── circle.js │ │ │ │ │ │ ├── ellipse.js │ │ │ │ │ │ ├── image.js │ │ │ │ │ │ ├── line.js │ │ │ │ │ │ ├── path.js │ │ │ │ │ │ ├── polygon.js │ │ │ │ │ │ ├── rect.js │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ └── triangle.js │ │ │ │ │ ├── utils.js │ │ │ │ │ └── vector.js │ │ │ │ ├── browser/ │ │ │ │ │ └── rune.js │ │ │ │ ├── helpers.js │ │ │ │ ├── matchers.js │ │ │ │ └── node/ │ │ │ │ └── rune.js │ │ │ └── sketch.properties │ │ └── glyph_hacking_python/ │ │ ├── glyph_hacking_python.pyde │ │ └── sketch.properties │ ├── 12_tiny_word_processor/ │ │ ├── tiny_word_processor_java/ │ │ │ └── tiny_word_processor_java.pde │ │ ├── tiny_word_processor_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── tiny_word_processor_js.js │ │ └── tiny_word_processor_python/ │ │ ├── sketch.properties │ │ └── tiny_word_processor_python.pyde │ └── 13_ascii_vision/ │ ├── ascii_vision_java/ │ │ └── ascii_vision_java.pde │ ├── ascii_vision_js/ │ │ ├── ascii_vision_js.js │ │ ├── index.html │ │ └── sketch.properties │ └── ascii_vision_python/ │ ├── ascii_vision_python.pyde │ └── sketch.properties ├── 09_curves/ │ ├── 01_butt_generator/ │ │ ├── butt_generator_java/ │ │ │ ├── butt.tif │ │ │ └── butt_generator_java.pde │ │ ├── butt_generator_js/ │ │ │ ├── butt_generator_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── buttgenerator_python/ │ │ ├── buttgenerator_python.pyde │ │ └── sketch.properties │ ├── 02_parabola/ │ │ ├── parabola_java/ │ │ │ └── parabola_java.pde │ │ ├── parabola_js/ │ │ │ ├── index.html │ │ │ ├── parabola_js.js │ │ │ └── sketch.properties │ │ └── parabola_python/ │ │ ├── parabola_python.pyde │ │ └── sketch.properties │ ├── 03_one_circle_three_ways/ │ │ ├── circle_java/ │ │ │ └── circle_java.pde │ │ ├── circle_js/ │ │ │ ├── circle_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── circle_python/ │ │ ├── circle_python.pyde │ │ └── sketch.properties │ ├── 04_continuity_of_bezier_curves/ │ │ ├── bezier_java/ │ │ │ └── bezier_java.pde │ │ ├── bezier_js/ │ │ │ ├── bezier_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── bezier_python/ │ │ ├── bezier_python.pyde │ │ └── sketch.properties │ ├── 05_phyllotaxis/ │ │ ├── phyllotaxis_java/ │ │ │ └── phyllotaxis_java.pde │ │ ├── phyllotaxis_js/ │ │ │ ├── index.html │ │ │ ├── phyllotaxis_js.js │ │ │ └── sketch.properties │ │ └── phyllotaxis_python/ │ │ ├── phyllotaxis_python.pyde │ │ └── sketch.properties │ ├── 06_lissajous/ │ │ ├── lissajous_java/ │ │ │ └── lissajous_java.pde │ │ ├── lissajous_js/ │ │ │ ├── index.html │ │ │ ├── lissajous_js.js │ │ │ └── sketch.properties │ │ └── lissajous_python/ │ │ ├── lissajous_python.pyde │ │ └── sketch.properties │ ├── 07_spiral/ │ │ ├── spiral_java/ │ │ │ ├── screen-0042.tif │ │ │ ├── spiral.tif │ │ │ └── spiral_java.pde │ │ ├── spiral_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── spiral_js.js │ │ └── spiral_python/ │ │ ├── sketch.properties │ │ └── spiral_python.pyde │ ├── 08_polar_curve/ │ │ ├── polar_curve.tif │ │ ├── polar_curve_java/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ └── polar_curve_java.pde │ │ ├── polar_curve_js/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ ├── index.html │ │ │ ├── polar_curve_js.js │ │ │ └── sketch.properties │ │ └── polar_curve_python/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ ├── polar_curve_python.pyde │ │ └── sketch.properties │ ├── 09_fourier_synthesis/ │ │ ├── fourier_synthesis_java/ │ │ │ └── fourier_synthesis_java.pde │ │ ├── fourier_synthesis_js/ │ │ │ ├── fourier_synthesis_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── fourier_synthesis_python/ │ │ ├── fourier_synthesis_python.pyde │ │ └── sketch.properties │ ├── 10_osculating_circle/ │ │ ├── osculating_circle_java/ │ │ │ └── osculating_circle_java.pde │ │ ├── osculating_circle_python/ │ │ │ ├── osculating_circle_python.pyde │ │ │ └── sketch.properties │ │ └── osculating_js/ │ │ ├── index.html │ │ ├── osculating_js.js │ │ └── sketch.properties │ ├── 11_circle_morphing/ │ │ ├── circle_to_triangle_java/ │ │ │ └── circle_to_triangle_java.pde │ │ ├── circle_to_triangle_js/ │ │ │ ├── circle_to_triangle_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── circle_to_triangle_python/ │ │ ├── circle_to_triangle_python.pyde │ │ └── sketch.properties │ └── 12_shaping_functions/ │ ├── shaping_functions_java/ │ │ └── shaping_functions_java.pde │ ├── shaping_functions_js/ │ │ ├── index.html │ │ ├── shaping_functions_js.js │ │ └── sketch.properties │ └── shaping_functions_python/ │ ├── shaping_functions_python.pyde │ └── sketch.properties ├── 10_shapes/ │ ├── 01_make_a_star/ │ │ ├── make_a_star_java/ │ │ │ └── make_a_star_java.pde │ │ ├── make_a_star_js/ │ │ │ ├── index.html │ │ │ ├── make_a_star_js.js │ │ │ └── sketch.properties │ │ └── make_a_star_python/ │ │ ├── make_a_star_python.pyde │ │ └── sketch.properties │ ├── 02_random_splat/ │ │ ├── random_splat_java/ │ │ │ └── random_splat_java.pde │ │ ├── random_splat_js/ │ │ │ ├── index.html │ │ │ ├── random_splat_js.js │ │ │ └── sketch.properties │ │ └── random_splat_python/ │ │ ├── random_splat_python.pyde │ │ └── sketch.properties │ ├── 03_connect_the_dots/ │ │ ├── connect_the_dots_java/ │ │ │ └── connect_the_dots_java.pde │ │ ├── connect_the_dots_js/ │ │ │ ├── connect_the_dots_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── connect_the_dots_python/ │ │ ├── connect_the_dots_python.pyde │ │ └── sketch.properties │ ├── 04_axis_aligned_bounding_box/ │ │ ├── bounding_box_java/ │ │ │ └── bounding_box_java.pde │ │ ├── bounding_box_js/ │ │ │ ├── bounding_box_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── bounding_box_python/ │ │ ├── bounding_box_python.pyde │ │ └── sketch.properties │ ├── 05_computing_the_centroid/ │ │ ├── centroid_java/ │ │ │ └── centroid_java.pde │ │ ├── centroid_js/ │ │ │ ├── centroid_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── centroid_python/ │ │ ├── centroid_python.pyde │ │ └── sketch.properties │ ├── 06_computing_the_perimeter/ │ │ ├── perimeter_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── perimeter_java.pde │ │ ├── perimeter_js/ │ │ │ ├── index.html │ │ │ ├── perimeter_js.js │ │ │ └── sketch.properties │ │ └── perimeter_python/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── perimeter_python.pyde │ │ └── sketch.properties │ ├── 07_computing_the_area/ │ │ ├── area_java/ │ │ │ ├── area_java.pde │ │ │ └── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── area_js/ │ │ │ ├── area_js.js │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── area_python/ │ │ ├── area_python.pyde │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── sketch.properties │ ├── 08_shape_metrics_compactness/ │ │ ├── compactness_java/ │ │ │ ├── compactness_java.pde │ │ │ └── data/ │ │ │ ├── CenturySchoolbook-106.vlw │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── compactness_js/ │ │ │ ├── compactness_js.js │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-106.vlw │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── compactness_python/ │ │ ├── compactness_python.pyde │ │ ├── data/ │ │ │ ├── CenturySchoolbook-106.vlw │ │ │ └── CenturySchoolbook-60.vlw │ │ └── sketch.properties │ ├── 09_detecting_high_curvature/ │ │ ├── high_curvature_java/ │ │ │ └── high_curvature_java.pde │ │ ├── high_curvature_js/ │ │ │ ├── high_curvature_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── high_curvature_python/ │ │ ├── high_curvature_python.pyde │ │ └── sketch.properties │ ├── 10_hand_drawn_graphics_library/ │ │ ├── hand_drawn_java/ │ │ │ ├── EllipseHand.pde │ │ │ ├── LineHand.pde │ │ │ ├── RectHand.pde │ │ │ └── hand_drawn_java.pde │ │ ├── hand_drawn_js/ │ │ │ ├── hand_drawn_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── hand_drawn_python/ │ │ ├── hand_drawn_python.pyde │ │ └── sketch.properties │ └── 11_blob/ │ ├── blob_java/ │ │ ├── Blob.pde │ │ └── blob_java.pde │ ├── blob_js/ │ │ ├── blob_js.js │ │ ├── index.html │ │ └── sketch.properties │ └── blob_python/ │ ├── blob_python.pyde │ └── sketch.properties ├── 11_geometry/ │ ├── 01_midpoint_of_a_line_segment/ │ │ ├── midpoint_of_a_line_segment_java/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ └── midpoint_of_a_line_segment_java.pde │ │ ├── midpoint_of_a_line_segment_js/ │ │ │ ├── index.html │ │ │ ├── midpoint_of_a_line_segment_js.js │ │ │ └── sketch.properties │ │ └── midpoint_of_a_line_segment_python/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ ├── midpoint_of_a_line_segment_python.pyde │ │ └── sketch.properties │ ├── 02_intersection_of_two_rectangles/ │ │ ├── intersection_of_two_rectangles_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── intersection_of_two_rectangles_java.pde │ │ ├── intersection_of_two_rectangles_js/ │ │ │ ├── index.html │ │ │ ├── intersection_of_two_rectangles_js.js │ │ │ └── sketch.properties │ │ └── intersection_of_two_rectangles_python/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── intersection_of_two_rectangles_python.pyde │ │ └── sketch.properties │ ├── 03_construction_of_a_perpendicular/ │ │ ├── construction_of_a_perpendicular_java/ │ │ │ ├── construction_of_a_perpendicular_java.pde │ │ │ └── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── construction_of_a_perpendicular_js/ │ │ │ ├── construction_of_a_perpendicular_js.js │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── construction_of_a_perpendicular_python/ │ │ ├── construction_of_a_perpendicular_python.pyde │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── sketch.properties │ ├── 04_parallel_polyline/ │ │ ├── parallel_polyline_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── parallel_polyline_java.pde │ │ ├── parallel_polyline_js/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ ├── index.html │ │ │ ├── parallel_polyline_js.js │ │ │ └── sketch.properties │ │ └── parallel_polyline_python/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── parallel_polyline_python.pyde │ │ └── sketch.properties │ ├── 05_compass_orientation/ │ │ ├── compass_orientation_java/ │ │ │ ├── compass_orientation_java.pde │ │ │ └── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ ├── compass_orientation_js/ │ │ │ ├── compass_orientation_js.js │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── compass_orientation_python/ │ │ ├── compass_orientation_python.pyde │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ └── sketch.properties │ ├── 06_angle_between_three_points/ │ │ ├── angle_between_three_points_java/ │ │ │ ├── angle_between_three_points_java.pde │ │ │ └── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ ├── angle_between_three_points_js/ │ │ │ ├── angle_between_three_points_js.js │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── angle_between_three_points_python/ │ │ ├── angle_between_three_points_python.pyde │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ └── sketch.properties │ ├── 07_distance_from_a_point_to_a_line/ │ │ ├── distance_from_a_point_to_a_line_java/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ └── distance_from_a_point_to_a_line_java.pde │ │ ├── distance_from_a_point_to_a_line_js/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ │ └── CenturySchoolbook-72.vlw │ │ │ ├── distance_from_a_point_to_a_line_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── distance_from_a_point_to_a_line_python/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── CenturySchoolbook-64.vlw │ │ │ └── CenturySchoolbook-72.vlw │ │ ├── distance_from_a_point_to_a_line_python.pyde │ │ └── sketch.properties │ ├── 08_intersection_of_two_line_segments/ │ │ ├── intersection_of_two_line_segments_java/ │ │ │ └── intersection_of_two_line_segments_java.pde │ │ ├── intersection_of_two_line_segments_js/ │ │ │ ├── index.html │ │ │ ├── intersection_of_two_line_segments_js.js │ │ │ └── sketch.properties │ │ └── intersection_of_two_line_segments_python/ │ │ ├── intersection_of_two_line_segments_python.pyde │ │ └── sketch.properties │ ├── 09_centroid_of_a_triangle/ │ │ ├── centroid_of_a_triangle_java/ │ │ │ ├── centroid_of_a_triangle_java.pde │ │ │ └── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── centroid_of_a_triangle_js/ │ │ │ ├── centroid_of_a_triangle_js.js │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── centroid_of_a_triangle_python/ │ │ ├── centroid_of_a_triangle_python.pyde │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── sketch.properties │ ├── 10_triangle_circumcenter/ │ │ ├── triangle_circumcenter_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── triangle_circumcenter_java.pde │ │ ├── triangle_circumcenter_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── triangle_circumcenter_js.js │ │ └── triangle_circumcenter_python/ │ │ ├── sketch.properties │ │ └── triangle_circumcenter_python.pyde │ ├── 11_triangle_orthocenter/ │ │ ├── triangle_orthocenter_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── triangle_orthocenter_java.pde │ │ ├── triangle_orthocenter_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── triangle_orthocenter_js.js │ │ └── triangle_orthocenter_python/ │ │ ├── sketch.properties │ │ └── triangle_orthocenter_python.pyde │ └── 12_triangle_incenter/ │ ├── triangle_incenter_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── triangle_incenter_java.pde │ ├── triangle_incenter_js/ │ │ ├── index.html │ │ ├── sketch.properties │ │ └── triangle_incenter_js.js │ └── triangle_incenter_python/ │ ├── sketch.properties │ └── triangle_incenter_python.pyde ├── 12_image/ │ ├── 01_collage_machine/ │ │ ├── collage_machine_java/ │ │ │ └── collage_machine_java.pde │ │ ├── collage_machine_js/ │ │ │ ├── collage_machine_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── collage_machine_py/ │ │ ├── collage_machine_py.pyde │ │ └── sketch.properties │ ├── 02_color_of_a_pixel/ │ │ ├── color_of_a_pixel_java/ │ │ │ └── color_of_a_pixel_java.pde │ │ ├── color_of_a_pixel_js/ │ │ │ ├── color_of_a_pixel_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── color_of_a_pixel_py/ │ │ ├── color_of_a_pixel_py.pyde │ │ └── sketch.properties │ ├── 03_subsample_and_downsample/ │ │ ├── subsample_downsample_java/ │ │ │ └── subsample_downsample_java.pde │ │ ├── subsample_downsample_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── subsample_downsample_js.js │ │ └── subsample_downsample_py/ │ │ ├── sketch.properties │ │ └── subsample_downsample_py.pyde │ ├── 04_random_dot_dithering/ │ │ ├── random_dot_dithering_java/ │ │ │ └── random_dot_dithering_java.pde │ │ ├── random_dot_dithering_js/ │ │ │ ├── index.html │ │ │ ├── random_dot_dithering_js.js │ │ │ └── sketch.properties │ │ └── random_dot_dithering_py/ │ │ ├── random_dot_dithering_py.pyde │ │ └── sketch.properties │ ├── 05_searching_for_the_brightest_point/ │ │ ├── brightest_point_java/ │ │ │ ├── brightest_point_java.pde │ │ │ └── data/ │ │ │ └── Helvetica-Bold-72.vlw │ │ ├── brightest_point_js/ │ │ │ ├── brightest_point_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── brightest_point_py/ │ │ ├── brightest_point_py.pyde │ │ ├── data/ │ │ │ └── Helvetica-Bold-72.vlw │ │ └── sketch.properties │ ├── 06_image_averaging/ │ │ ├── image_averaging_java/ │ │ │ └── image_averaging_java.pde │ │ ├── image_averaging_js/ │ │ │ ├── image_averaging_js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── image_averaging_py/ │ │ ├── image_averaging_py.pyde │ │ └── sketch.properties │ ├── 07_edge_detector_sobel_filter/ │ │ ├── sobel_java/ │ │ │ └── sobel_java.pde │ │ ├── sobel_java_2/ │ │ │ └── sobel_java_2.pde │ │ ├── sobel_js/ │ │ │ ├── index.html │ │ │ ├── sketch.properties │ │ │ └── sobel_js.js │ │ └── sobel_py/ │ │ ├── sketch.properties │ │ └── sobel_py.pyde │ └── 08_pixel_sort/ │ ├── pixel_sorting_java/ │ │ └── pixel_sorting_java.pde │ ├── pixel_sorting_js/ │ │ ├── index.html │ │ ├── pixel_sorting_js.js │ │ └── sketch.properties │ └── pixel_sorting_py/ │ ├── pixel_sorting_py.pyde │ └── sketch.properties ├── 13_visualization/ │ ├── 01_text_message_isotype/ │ │ └── text_message_isotype_java/ │ │ └── text_message_isotype_java.pde │ ├── 02_temperature_timeline/ │ │ └── temperature_timeline_java/ │ │ ├── data/ │ │ │ ├── Helvetica-Bold-56.vlw │ │ │ └── global-temp/ │ │ │ ├── README.md │ │ │ ├── datapackage.json │ │ │ ├── monthly_csv.csv │ │ │ └── monthly_json.json │ │ └── temperature_timeline_java.pde │ ├── 03_pie_chart/ │ │ └── pie_chart_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── pie_chart_java.pde │ ├── 04_radar_charts/ │ │ └── radar_charts_java/ │ │ └── radar_charts_java.pde │ ├── 05_path_plotting_1/ │ │ └── path_plotting_1_java/ │ │ ├── data/ │ │ │ └── run.csv │ │ └── path_plotting_1_java.pde │ ├── 06_path_plotting_2/ │ │ └── path_plotting_2_java/ │ │ ├── data/ │ │ │ ├── Helvetica-Bold-72.vlw │ │ │ └── run.csv │ │ └── path_plotting_2_java.pde │ ├── 07_dot_map/ │ │ └── dot_map_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── rat_sightings_lite.tsv │ │ └── dot_map_java.pde │ ├── 08_heat_map/ │ │ └── heat_map_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── rat_sightings_lite.tsv │ │ └── heat_map_java.pde │ ├── 09_social_network_graph/ │ │ └── social_network_graph_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── dolphin_relations.xml │ │ └── social_network_graph_java.pde │ ├── 10_social_network_matrix/ │ │ └── social_network_matrix_java/ │ │ ├── data/ │ │ │ └── monkey_relations.xml │ │ └── social_network_matrix_java.pde │ ├── 11_real_time_iss/ │ │ ├── iss_js/ │ │ │ ├── index.html │ │ │ ├── libraries/ │ │ │ │ ├── p5.dom.js │ │ │ │ ├── p5.js │ │ │ │ └── p5.sound.js │ │ │ └── sketch.js │ │ └── real_time_iss_java/ │ │ └── real_time_iss_java.pde │ ├── 12_web_scraping/ │ │ └── web_scraping_java/ │ │ └── web_scraping_java.pde │ └── 13_one_dataset_four_ways/ │ └── one_dataset_four_ways_java/ │ ├── data/ │ │ └── SlateGunDeaths.tsv │ └── one_dataset_four_ways_java.pde ├── 14_text_and_language/ │ ├── 01_string_search/ │ │ └── string_search_java/ │ │ └── string_search_java.pde │ ├── 02_nonsense_words/ │ │ └── nonsense_words_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── clean.py │ │ │ ├── prefixes.txt │ │ │ ├── prefixes_dict.txt │ │ │ ├── roots.txt │ │ │ ├── roots_dict.txt │ │ │ ├── suffixes.txt │ │ │ └── suffixes_dict.txt │ │ └── nonsense_words_java.pde │ ├── 03_letter_frequency/ │ │ └── letter_frequency_java/ │ │ ├── data/ │ │ │ └── frankenstein.txt │ │ └── letter_frequency_java.pde │ ├── 04_letter_pair_frequency/ │ │ └── letter_pairs_java/ │ │ ├── data/ │ │ │ └── dubois.txt │ │ └── letter_pairs_java.pde │ ├── 05_average_word_length/ │ │ └── average_word_length_java/ │ │ └── average_word_length_java.pde │ ├── 06_sorting_words/ │ │ ├── sorting_words_java/ │ │ │ └── sorting_words_java.pde │ │ └── sorting_words_python/ │ │ └── sorting_words.py │ ├── 07_cut-up_machine/ │ │ └── cut-up_machine_java/ │ │ ├── cut-up_machine_java.pde │ │ └── data/ │ │ ├── CenturySchoolbook-60.vlw │ │ └── news.txt │ ├── 08_bigram_calculator/ │ │ └── bigram_calculator_java/ │ │ ├── bigram_calculator_java.pde │ │ └── data/ │ │ └── green_eggs_and_ham.txt │ ├── 09_dammit_jim/ │ │ └── dammit_jim_java/ │ │ ├── dammit_jim_java.pde │ │ └── data/ │ │ ├── CenturySchoolbook-60.vlw │ │ ├── clean.py │ │ ├── jobs.txt │ │ └── jobs_raw.txt │ ├── 10_knock_knock_joke_generator/ │ │ ├── _archived/ │ │ │ ├── knock.py │ │ │ └── output.txt │ │ ├── knock_knock_java/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ └── noun-definition.txt │ │ │ └── knock_knock_java.pde │ │ ├── knock_knock_joke_python/ │ │ │ ├── knock_knock_joke_python.pyde │ │ │ └── sketch.properties │ │ └── prep/ │ │ ├── noun-definition.txt │ │ └── prepDict.py │ ├── 11_translator_pig_latin/ │ │ ├── translator_pig_latin_java/ │ │ │ ├── data/ │ │ │ │ └── CenturySchoolbook-60.vlw │ │ │ └── translator_pig_latin_java.pde │ │ └── translator_pig_latin_python/ │ │ ├── output.txt │ │ └── pig_latin.py │ ├── 12_argots_and_language_games/ │ │ └── translator_argots_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── translator_argots_java.pde │ ├── 14_rhyming_couplets/ │ │ └── rhyming_couplets_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── little_women.txt │ │ ├── debug.txt │ │ ├── rhymes.txt │ │ └── rhyming_couplets_java.pde │ ├── 15_haiku_finder/ │ │ └── haiku_finder_java/ │ │ ├── Pair.pde │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── cmudict.0.6d.txt │ │ │ └── little_women.txt │ │ └── haiku_finder_java.pde │ ├── 16_markov_text_generator/ │ │ ├── markov_python/ │ │ │ ├── markov.py │ │ │ ├── markov_lines.txt │ │ │ └── transcript.txt │ │ └── markov_text_generator_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ └── transcript.txt │ │ └── markov_text_generator_java.pde │ ├── 17_limerick/ │ │ ├── archive/ │ │ │ ├── limerick_java/ │ │ │ │ ├── data/ │ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ │ ├── kafka.txt │ │ │ │ │ └── wittgenstein.txt │ │ │ │ └── limerick_java.pde │ │ │ └── limerick_java_2/ │ │ │ ├── data/ │ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ │ └── lime.yaml │ │ │ └── limerick_java_2.pde │ │ ├── data/ │ │ │ └── scotland_places.txt │ │ └── limerick_java/ │ │ ├── data/ │ │ │ ├── CenturySchoolbook-60.vlw │ │ │ ├── adjectives.txt │ │ │ └── scotland_places.txt │ │ └── limerick_java.pde │ └── other/ │ ├── _IMPORTANT_text_code/ │ │ ├── Cut iii/ │ │ │ ├── make_recipe.py │ │ │ └── recipe.txt │ │ ├── Grammar/ │ │ │ ├── grammer.py │ │ │ ├── occupations.txt │ │ │ └── output.txt │ │ ├── Joke/ │ │ │ ├── knock.py │ │ │ └── output.txt │ │ ├── Markov/ │ │ │ ├── markov.py │ │ │ ├── markov_lines.txt │ │ │ └── transcript.txt │ │ ├── People, Places, Things/ │ │ │ ├── output.txt │ │ │ └── replace_nouns.py │ │ ├── Rhyme/ │ │ │ ├── output.txt │ │ │ ├── rhyme.py │ │ │ └── sentences.txt │ │ ├── Sort/ │ │ │ ├── alphabet/ │ │ │ │ ├── alphabetic.py │ │ │ │ └── output.txt │ │ │ ├── frequency/ │ │ │ │ ├── freq.py │ │ │ │ └── output.txt │ │ │ └── length/ │ │ │ ├── length.py │ │ │ └── output.txt │ │ ├── Syllable/ │ │ │ ├── haiku1.txt │ │ │ ├── haiku2.txt │ │ │ ├── haiku3.txt │ │ │ ├── haiku4.txt │ │ │ ├── haiku5.txt │ │ │ ├── haiku6.txt │ │ │ ├── haiku7.txt │ │ │ ├── syllables.py │ │ │ └── word.txt │ │ ├── Translation/ │ │ │ ├── output.txt │ │ │ └── pig_latin.py │ │ └── n-gram/ │ │ ├── huckfinn.txt │ │ ├── ngram.py │ │ ├── similarity.txt │ │ └── tomsawyer.txt │ ├── cutup_1/ │ │ ├── cutup_1.pyde │ │ ├── data/ │ │ │ ├── Times-Roman-14.vlw │ │ │ └── frost.txt │ │ ├── screen-0153.tif │ │ ├── screen-0177.tif │ │ ├── screen-0185.tif │ │ ├── screen-0207.tif │ │ ├── screen-0246.tif │ │ └── sketch.properties │ ├── cutup_2/ │ │ ├── cutup_2.pyde │ │ ├── data/ │ │ │ ├── macbeth.txt │ │ │ └── trump.txt │ │ ├── screen-0041.tif │ │ ├── screen-0059.tif │ │ ├── screen-0060.tif │ │ ├── screen-0083.tif │ │ ├── screen-0095.tif │ │ ├── screen-0100.tif │ │ ├── screen-0139.tif │ │ ├── screen-0523.tif │ │ ├── screen-0810.tif │ │ ├── screen-1084.tif │ │ ├── screen-1779.tif │ │ ├── screen-2009.tif │ │ ├── screen-3087.tif │ │ └── sketch.properties │ └── tfidf/ │ └── tfidf_java/ │ ├── data/ │ │ ├── CenturySchoolbook-60.vlw │ │ ├── frankenstein.txt │ │ └── little_women.txt │ └── tfidf_java.pde ├── 15_simulation/ │ ├── 01_recursive_tree/ │ │ └── recursive_tree_java/ │ │ └── recursive_tree_java.pde │ ├── 02_fireworks_particle_shower/ │ │ └── fireworks_java/ │ │ ├── Particle.pde │ │ ├── ParticleSystem.pde │ │ └── fireworks_java.pde │ ├── 05_cursor_particles/ │ │ └── cursor_particles_java/ │ │ ├── cursor_particles_java.pde │ │ └── data/ │ │ └── CenturySchoolbook-60.vlw │ ├── 06_flow_field/ │ │ └── flow_field_java/ │ │ └── flow_field_java.pde │ ├── 07_spring/ │ │ └── spring.pde │ ├── 08_circle_packing/ │ │ ├── circle_packing_montecarlo_java/ │ │ │ └── circle_packing_montecarlo_java.pde │ │ ├── circle_packing_montecarlo_p5js/ │ │ │ ├── circle_packing_montecarlo_p5js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ ├── circle_packing_montecarlo_pyde/ │ │ │ └── circle_packing_montecarlo_pyde.pyde │ │ └── circle_packing_simple_java/ │ │ └── circle_packing_simple_java.pde │ ├── 09_conways_life/ │ │ └── conways_life_java/ │ │ └── conways_life_java.pde │ ├── 10_diffusion_limited_aggregation/ │ │ ├── dla_java/ │ │ │ └── dla_java.pde │ │ ├── dla_p5js/ │ │ │ ├── dla_p5js.js │ │ │ ├── index.html │ │ │ └── sketch.properties │ │ └── dla_pyde/ │ │ ├── dla_pyde.pyde │ │ └── sketch.properties │ ├── 11_snowflake/ │ │ └── snowflake_java/ │ │ └── snowflake_java.pde │ └── 13_differential_growth/ │ └── differential_growth_java/ │ └── differential_growth_java.pde ├── 16_machine_learning/ │ ├── 04_what_do_you_see/ │ │ └── what_do_you_see_js/ │ │ ├── index.html │ │ └── what_do_you_see_js.js │ ├── 05_dont_touch_your_face/ │ │ └── dont_touch_your_face_js/ │ │ ├── dont_touch_your_face_js.js │ │ └── index.html │ ├── 06_emoji_translator/ │ │ └── emoji_translator_js/ │ │ ├── emoji_translator_js.js │ │ └── index.html │ └── 10_environmental_sound_clock/ │ └── environmental_sound_clock_js/ │ ├── environmental_sound_clock_js.js │ ├── index.html │ └── style.css ├── 17_sound/ │ ├── 01_theremin/ │ │ └── theremin_js/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── index.html │ │ ├── libraries/ │ │ │ └── tone.js │ │ ├── sketch.properties │ │ └── theremin_js.js │ ├── 02_sequencer_I/ │ │ └── sequencer_I_js/ │ │ ├── index.html │ │ ├── libraries/ │ │ │ └── tone.js │ │ ├── sequencer_js.js │ │ └── sketch.properties │ ├── 03_sequencer_II/ │ │ └── sequencer_II_js/ │ │ ├── index.html │ │ └── sketch.js │ ├── 08_visualizer/ │ │ └── visualizer_java/ │ │ ├── data/ │ │ │ └── beat_8bitsigned.raw │ │ └── visualizer_java.pde │ ├── 09_data_sonification/ │ │ └── data_sonification_js/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── data_sonification_js.js │ │ ├── index.html │ │ ├── libraries/ │ │ │ └── tone.js │ │ └── sketch.properties │ ├── 10_delay_line_effect/ │ │ └── delay_line_effect_js/ │ │ ├── delay_line_effect_js.js │ │ ├── index.html │ │ ├── libraries/ │ │ │ └── tone.js │ │ └── sketch.properties │ ├── libraries/ │ │ ├── Tone.js │ │ ├── p5.dom.js │ │ ├── p5.js │ │ └── p5.sound.js │ └── work_in_progress/ │ ├── fft/ │ │ ├── index.html │ │ └── sketch.js │ ├── guitar.maxpat │ ├── polyphony/ │ │ └── polyphony.pde │ ├── sequencer_2/ │ │ └── sequencer_2_js/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ ├── index.html │ │ ├── libraries/ │ │ │ └── tone.js │ │ ├── sequencer_2_js.js │ │ └── sketch.properties │ ├── voice_synthesizer/ │ │ ├── data/ │ │ │ ├── OCRAStd-96.vlw │ │ │ └── voice_raw_8bit_signed.raw │ │ └── voice_synthesizer.pde │ └── whistle_cursor/ │ └── whistle_cursor.pde ├── 18_games/ │ ├── 02_collision_detection/ │ │ └── collision_detection_java/ │ │ └── collision_detection_java.pde │ ├── 03_whack_a_mole/ │ │ └── whack_a_mole_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── whack_a_mole_java.pde │ ├── 04_WASD_navigation/ │ │ └── WASD_navigation_java/ │ │ └── WASD_navigation_java.pde │ ├── 05_recoding_a_classic/ │ │ └── snake_java/ │ │ └── snake_java.pde │ ├── 06_physics_fun/ │ │ └── physics_fun_java/ │ │ ├── data/ │ │ │ └── CenturySchoolbook-60.vlw │ │ └── physics_fun_java.pde │ └── 07_level_designer/ │ └── level_designer_java/ │ ├── data/ │ │ └── CenturySchoolbook-60.vlw │ └── level_designer_java.pde ├── README.md └── checklist.md