Skip to content

Instantly share code, notes, and snippets.

@bhpayne
Last active December 16, 2020 15:13
Show Gist options
  • Save bhpayne/bf4c89fe54ccfe962bf88468314bf0e2 to your computer and use it in GitHub Desktop.
Save bhpayne/bf4c89fe54ccfe962bf88468314bf0e2 to your computer and use it in GitHub Desktop.
# thanks to https://dreampuf.github.io/GraphvizOnline
digraph G {
label="how to browse the internet"
labelloc = "t"; // place the label at the top (b seems to be default)
#concentrate=true; # edge overlap # https://stackoverflow.com/a/4671508/1164295
#overlap=false; # no effect
compound=true; # as per https://stackoverflow.com/a/2012106/1164295
# ovals are intended to be tangible activites;
# everything else (rectangles) are abstractions
# assume single tab for browser
# assume standard desktop workstation (keyboard, monitor, mouse, tower)
"Invisible" [height=0, width=0, margin=0, style=invis];
subgraph cluster_phase_power_up {
label = "phase: power up";
href = "phase_power_up.html"
during_power_up_push_power_button [label="user:\npush power button" color="forestgreen"];
during_power_up_wire_current_short_circuit [label="wire current short circuits"];
during_power_up_push_power_button -> during_power_up_wire_current_short_circuit;
node [shape="rectangle"];
subgraph cluster_power_to_components {
label = "CPU:\n executes instructions at bottom of memory map";
subgraph cluster_BIOS_runs {
label = "BIOS sequence";
during_power_up_power_to_components_bios_ram_dectection [label="BIOS:\n RAM detection"];
during_power_up_power_to_components_bios_hw_detect_init [label="BIOS:\n HW detect/init"];
subgraph cluster_during_power_up_power_to_components_bios_boot_sequence {
label="BIOS:\n boot sequence";
during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader [label="BIOS:\nboots some devices directly \ninto your OS-specific bootloader"];
during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr [label="BIOS:\nboots other devices (any hard disk, \nor anything emulating a hard disk) into an MBR"];
during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr -> during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader;
}
during_power_up_power_to_components_bios_ram_dectection -> during_power_up_power_to_components_bios_hw_detect_init;
during_power_up_power_to_components_bios_hw_detect_init -> during_power_up_power_to_components_bios_boot_sequence_harddisk_mbr [lhead="cluster_during_power_up_power_to_components_bios_boot_sequence"];
} # cluster_BIOS_runs
} # cluster_power_to_components
color=blue;
} # cluster_phase_power_up
subgraph cluster_phase_system_idle {
label = "phase: system idle";
href = "phase_system_idle.html";
during_system_idle_os_wait_for_user_input [label="OS:\n waits for user input" shape="rectangle"];
color=blue;
} # cluster_phase_system_idle
during_power_up_power_to_components_bios_boot_sequence_os_specific_bootloader -> during_system_idle_os_wait_for_user_input;
subgraph cluster_phase_browse_web {
label = "phase: browse web";
href = "phase_browse_web.html"
node [shape="rectangle"];
subgraph cluster_during_browse_web_open_web_browser{
label="user:\nopen web browser";
subgraph cluster_during_browse_web_open_web_browser_move_mouse_to_icon {
label="user:\nuse mouse to move pointer\n on desktop to icon for browser";
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves [label="mouse:\n moves across surface"];
during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor [label="light sensor:\ndetects movement"];
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor;
during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent [label="mouse PCB:\nsignal sent"];
during_browse_web_open_web_browser_move_mouse_to_icon_light_sensor -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent;
during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable [label="mouse wire:\nsignal crosses cable"];
during_browse_web_open_web_browser_move_mouse_to_icon_signal_sent -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable;
during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os [label="OS:\ninterprets signal"];
during_browse_web_open_web_browser_move_mouse_to_icon_signal_crosses_cable -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os;
during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen [label="OS:\nmoves pointer on screen"];
during_browse_web_open_web_browser_move_mouse_to_icon_signal_interpreted_by_os -> during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen;
}
subgraph cluster_during_browse_web_open_web_browser_click_on_icon {
label="user:\nuse mouse to click icon for browser";
during_browse_web_open_web_browser_click_on_icon_mouse_button_click [label="mouse:\nbutton click"];
during_browse_web_open_web_browser_click_on_icon_signal_sent [label="mouse PCB:\nsignal sent"];
during_browse_web_open_web_browser_click_on_icon_mouse_button_click -> during_browse_web_open_web_browser_click_on_icon_signal_sent;
during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable [label="mouse wire:\nsignal crosses cable"];
during_browse_web_open_web_browser_click_on_icon_signal_sent -> during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable;
during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os [label="OS:\ninterprets signal"];
during_browse_web_open_web_browser_click_on_icon_signal_crosses_cable -> during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os;
during_browse_web_open_web_browser_click_on_icon_signal_os_moves_pointer_on_screen [label="OS:\nclicks icon on screen"];
during_browse_web_open_web_browser_click_on_icon_signal_interpreted_by_os -> during_browse_web_open_web_browser_click_on_icon_signal_os_moves_pointer_on_screen;
}
during_browse_web_open_web_browser_move_mouse_to_icon_signal_os_moves_pointer_on_screen -> during_browse_web_open_web_browser_click_on_icon_mouse_button_click [lhead="cluster_during_browse_web_open_web_browser_click_on_icon" ltail="cluster_during_browse_web_open_web_browser_move_mouse_to_icon"];
}
during_browse_web_enter_URL_of_desired_site [label="user:\nenter URL of desired website" color="forestgreen"];
subgraph cluster_browse_web_show_webpage {
label="browser:\nshow webpage";
subgraph cluster_browse_web_show_webpage_signal_to_monitor{
label="video card:\nsend signal to monitor";
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [label="turn on pixels"];
}
}
during_browse_web_read_webpage [label="user:\nread webpage" shape="oval" color="forestgreen"];
during_browse_web_click_on_link [label="user:\nclick on link" color="forestgreen"];
during_browse_web_close_browser [label="user:\nclose browser" color="forestgreen"];
during_browse_web_scroll_webpage [label="user:\nscroll webpage" color="forestgreen"];
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_enter_URL_of_desired_site [ltail="cluster_during_browse_web_open_web_browser"];
during_browse_web_enter_URL_of_desired_site -> during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [lhead="cluster_browse_web_show_webpage"];
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels -> during_browse_web_read_webpage [ltail="cluster_browse_web_show_webpage"];
during_browse_web_read_webpage -> during_browse_web_click_on_link;
during_browse_web_click_on_link -> during_browse_web_close_browser;
during_browse_web_read_webpage -> during_browse_web_scroll_webpage;
during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves -> during_browse_web_close_browser [ltail="cluster_during_browse_web_open_web_browser"];
during_browse_web_enter_URL_of_desired_site -> during_browse_web_close_browser;
during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels -> during_browse_web_close_browser [ltail=cluster_browse_web_show_webpage];
during_browse_web_read_webpage -> during_browse_web_close_browser;
during_browse_web_click_on_link -> during_browse_web_show_webpage_send_signal_to_monitor_turn_on_pixels [lhead=cluster_browse_web_show_webpage];
color=blue;
} # cluster_phase_browse_web
during_browse_web_close_browser -> during_system_idle_os_wait_for_user_input;
subgraph cluster_phase_power_down {
label = "phase: power down";
href = "phase_power_down.html"
during_power_down_power_button_interrupts_current [label="power button:\ninterrupts current" shape="oval"];
during_power_down_wire_current_short_circuits [label="wire:\n current short circuits" shape="oval"];
during_power_down_motherboard_does_something [label="motherboard:\n does something" shape="rectangle"];
during_power_down_push_power_button -> during_power_down_power_button_interrupts_current;
during_power_down_power_button_interrupts_current -> during_power_down_wire_current_short_circuits;
subgraph cluster_user_initiates_shutdown {
label="user initiated shutdown";
node [shape="rectangle"];
during_power_down_push_power_button [label="user:\npush power button" shape="oval" color="forestgreen"];
during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button [label="user:\n clicks on 'shutdown' button" color="forestgreen"];
during_browse_web_user_initiates_shutdown_user_reisub [label="user:\n types REISUB" color="forestgreen"];
} # cluster_user_initiates_shutdown
during_power_down_CPU_powers_off [label="CPU:\n powers off" shape="rectangle"];
during_power_off_OS_does_something [label="OS:\n does something" shape="rectangle"];
during_power_down_wire_current_short_circuits -> during_power_down_motherboard_does_something;
during_power_down_motherboard_does_something -> during_power_down_CPU_powers_off;
during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button -> during_power_off_OS_does_something;
during_power_off_OS_does_something -> during_power_down_motherboard_does_something;
during_browse_web_user_initiates_shutdown_user_reisub -> during_power_down_CPU_powers_off;
color=blue;
} # cluster_phase_power_down
during_system_idle_os_wait_for_user_input -> during_browse_web_user_initiates_shutdown_user_clicks_on_shutdown_button;
during_system_idle_os_wait_for_user_input -> during_browse_web_user_initiates_shutdown_user_reisub;
during_power_up_wire_current_short_circuit -> during_power_up_power_to_components_bios_ram_dectection;
during_system_idle_os_wait_for_user_input -> during_browse_web_open_web_browser_move_mouse_to_icon_mouse_moves [lhead="cluster_during_browse_web_open_web_browser"];
subgraph cluster_phase_power_off {
label="phase: power off";
href = "phase_power_off.html"
during_power_off_motherboard_battery_powers_switch [label="motherboard:\n battery powers switch"];
color=blue;
} # cluster_phase_power_off
during_power_down_CPU_powers_off -> during_power_off_motherboard_battery_powers_switch;
during_power_off_motherboard_battery_powers_switch -> during_power_up_push_power_button;
} # G
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment