gitextract_hr2xhgpb/ ├── .gitignore ├── 01_getting-started/ │ ├── 01_helloWorld/ │ │ └── main.go │ ├── 02_numeral-systems/ │ │ ├── 01_decimal/ │ │ │ └── main.go │ │ ├── 02_binary/ │ │ │ └── main.go │ │ ├── 03_hexadecimal/ │ │ │ └── main.go │ │ └── 04_loop/ │ │ └── main.go │ └── 03_UTF-8/ │ └── main.go ├── 02_package/ │ ├── icomefromalaska/ │ │ └── name2.go │ ├── main/ │ │ └── main.go │ └── stringutil/ │ ├── name.go │ ├── reverse.go │ └── reverseTwo.go ├── 03_variables/ │ ├── 01_shorthand/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 02_var_zero-value/ │ │ └── main.go │ └── 03_less-emphasis/ │ ├── 01_declare-variable/ │ │ └── var.go │ ├── 02_declare-many-at-once/ │ │ └── var.go │ ├── 03_init-many-at-once/ │ │ └── var.go │ ├── 04_infer-type/ │ │ └── var.go │ ├── 05_infer-mixed-up-types/ │ │ └── var.go │ ├── 06_init-shorthand/ │ │ └── var.go │ ├── 07_all-together/ │ │ └── variables.go │ └── 08_exercise_your-name/ │ ├── 01_oneSolution/ │ │ └── myNameVar.go │ ├── 02_anotherSolution/ │ │ └── myNameVar.go │ ├── 03_anotherSolution/ │ │ └── myNameVar.go │ └── 04_anotherSolution/ │ └── myNameVar.go ├── 04_scope/ │ ├── 01_package-scope/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02_visibility/ │ │ ├── main/ │ │ │ └── main.go │ │ └── vis/ │ │ ├── name.go │ │ └── printer.go │ ├── 02_block-scope/ │ │ ├── 01_this-does-not-compile/ │ │ │ └── main.go │ │ └── 02_closure/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ ├── 03/ │ │ │ └── main.go │ │ └── 04/ │ │ └── main.go │ ├── 03_order-matters/ │ │ └── main.go │ ├── 04_variable-shadowing/ │ │ └── main.go │ └── 05_same-package/ │ ├── main.go │ └── same.go ├── 05_blank-identifier/ │ ├── 01_invalid-code/ │ │ └── main.go │ └── 02_http-get_example/ │ ├── 01_with-error-checking/ │ │ └── main.go │ └── 02_no-error-checking/ │ └── main.go ├── 06_constants/ │ ├── 01_constant/ │ │ └── main.go │ ├── 02_multiple-initialization/ │ │ └── main.go │ ├── 03_iota/ │ │ └── main.go │ ├── 04_iota/ │ │ └── main.go │ ├── 05_iota/ │ │ └── main.go │ ├── 06_iota/ │ │ └── main.go │ └── 07_iota/ │ └── main.go ├── 07_memory-address/ │ ├── 01_showing-address/ │ │ └── main.go │ └── 02_using-address/ │ └── main.go ├── 08_pointers/ │ ├── 01_referencing/ │ │ └── main.go │ ├── 02_dereferencing/ │ │ └── main.go │ ├── 03_using-pointers/ │ │ └── main.go │ └── 04_using-pointers/ │ ├── 01_no-pointer/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02_see-the-addresses/ │ │ └── main.go │ └── 02_pointer/ │ ├── 01/ │ │ └── main.go │ └── 02_see-the-addresses/ │ └── main.go ├── 09_remainder/ │ └── main.go ├── 10_for-loop/ │ ├── 01_init-condition-post/ │ │ └── main.go │ ├── 02_nested/ │ │ └── main.go │ ├── 03_for-condition-while-ish/ │ │ └── main.go │ ├── 04_for_no-condition/ │ │ └── main.go │ ├── 05_for_break/ │ │ └── main.go │ ├── 06_for_continue/ │ │ └── main.go │ └── 07_rune-loop_UTF8/ │ ├── 01/ │ │ └── main.go │ └── 02/ │ └── main.go ├── 11_switch-statements/ │ ├── 01_switch/ │ │ └── main.go │ ├── 02_fallthrough/ │ │ └── main.go │ ├── 03_multiple-evals/ │ │ └── main.go │ ├── 04_no-expression/ │ │ └── main.go │ └── 05_on-type/ │ └── type.go ├── 12_if_else-if_else/ │ ├── 01_eval-true/ │ │ └── main.go │ ├── 02_not-exclamation/ │ │ └── main.go │ ├── 03_init-statement/ │ │ └── main.go │ ├── 04_init-statement_error_invalid-code/ │ │ └── main.go │ ├── 05_if-else/ │ │ └── main.go │ ├── 06_if-elseif-else/ │ │ └── main.go │ ├── 07_if-elseif-elseif-else/ │ │ └── main.go │ └── 08_divisibleByThree/ │ └── main.go ├── 13_exercise-solutions/ │ ├── 01_hello-world/ │ │ └── main.go │ ├── 02_hello-NAME/ │ │ └── main.go │ ├── 03_hello-user-input/ │ │ └── main.go │ ├── 04_user-enters-numbers/ │ │ └── main.go │ ├── 05_even-numbers/ │ │ └── main.go │ ├── 06_fizzBuzz/ │ │ └── main.go │ ├── 07_threeFive/ │ │ └── main.go │ └── 08_just-fyi/ │ ├── 01_benchMark/ │ │ └── bm_test.go │ ├── 02_benchMark/ │ │ └── bm_test.go │ └── 03_utf/ │ └── main.go ├── 14_functions/ │ ├── 01_main/ │ │ └── main.go │ ├── 02_param-arg/ │ │ └── main.go │ ├── 03_two-params/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 04_return/ │ │ └── main.go │ ├── 05_return-naming/ │ │ └── main.go │ ├── 06_return-multiple/ │ │ └── main.go │ ├── 07_variadic-params/ │ │ └── main.go │ ├── 08_variadic-args/ │ │ └── main.go │ ├── 09_slice-param-arg/ │ │ └── main.go │ ├── 10_func-expression/ │ │ ├── 01_before-func-expression/ │ │ │ └── main.go │ │ ├── 02_func-expression/ │ │ │ └── main.go │ │ ├── 03_func-expression_shows-type/ │ │ │ └── main.go │ │ ├── 04_another-way_func-expression/ │ │ │ └── main.go │ │ └── 05_another-way_func-expression_shows-type/ │ │ └── main.go │ ├── 11_closure/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ ├── 03/ │ │ │ └── main.go │ │ ├── 04/ │ │ │ └── main.go │ │ └── 05/ │ │ └── main.go │ ├── 12_callbacks/ │ │ ├── 01_print-nums/ │ │ │ └── main.go │ │ └── 02_filter-nums/ │ │ └── main.go │ ├── 13_recursion/ │ │ └── main.go │ ├── 14_defer/ │ │ ├── 01_no-defer/ │ │ │ └── main.go │ │ └── 02_with-defer/ │ │ └── main.go │ ├── 15_passing-by-value/ │ │ ├── 01_int/ │ │ │ └── main.go │ │ ├── 02_int-pointer/ │ │ │ └── main.go │ │ ├── 03_string/ │ │ │ └── main.go │ │ ├── 04_string-pointer/ │ │ │ └── main.go │ │ ├── 05_REFERENCE-TYPE/ │ │ │ └── main.go │ │ ├── 06_REFERENCE-TYPE/ │ │ │ └── main.go │ │ └── 07_struct-pointer/ │ │ └── main.go │ └── 16_anon_self-executing/ │ └── main.go ├── 15_bool-expressions/ │ ├── 01_true-false/ │ │ └── main.go │ ├── 02_not/ │ │ └── main.go │ ├── 03_or/ │ │ └── main.go │ └── 04_and/ │ └── main.go ├── 16_exercise-solutions/ │ ├── 01_half/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 02_func-expression/ │ │ └── main.go │ ├── 03_variadic-greatest/ │ │ └── main.go │ ├── 04_bool-expression/ │ │ └── main.go │ └── 05_params-and-args/ │ └── main.go ├── 17_array/ │ ├── 01/ │ │ └── main.go │ ├── 02/ │ │ └── main.go │ ├── 03/ │ │ └── main.go │ ├── 04/ │ │ └── main.go │ └── 05/ │ └── main.go ├── 18_slice/ │ ├── 01_int-slice/ │ │ └── main.go │ ├── 02_int-slice/ │ │ └── main.go │ ├── 03_int-slice/ │ │ └── main.go │ ├── 04_string-slice/ │ │ └── main.go │ ├── 05_slicing-a-slice/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 06_make/ │ │ └── main.go │ ├── 07_append-invalid/ │ │ └── main.go │ ├── 08_append/ │ │ └── main.go │ ├── 09_append-beyond-capacity/ │ │ └── main.go │ ├── 10_append_slice-to-slice/ │ │ ├── 01_slice-of-ints/ │ │ │ └── main.go │ │ └── 02_slice-of-strings/ │ │ └── main.go │ ├── 11_delete/ │ │ └── main.go │ ├── 12_multi-dimensional/ │ │ ├── 01_shorthand-slice/ │ │ │ └── main.go │ │ ├── 02_var-slice/ │ │ │ └── main.go │ │ ├── 03_make-slice/ │ │ │ └── main.go │ │ ├── 04_comparing_shorthand_var_make/ │ │ │ ├── 01_shorthand-slice/ │ │ │ │ └── main.go │ │ │ ├── 02_var-slice/ │ │ │ │ └── main.go │ │ │ └── 03_make-slice/ │ │ │ └── main.go │ │ ├── 05_slice-of-slice-of-string/ │ │ │ └── main.go │ │ └── 06_slice-of-slice-of-int/ │ │ └── main.go │ └── 13_int-slice-plus-plus/ │ └── main.go ├── 19_map/ │ ├── 01_var_nil-map/ │ │ └── main.go │ ├── 02_var_make/ │ │ └── main.go │ ├── 03_shorthand_make/ │ │ └── main.go │ ├── 04_shorthand_composite-literal/ │ │ └── main.go │ ├── 05_shorthand_composite-literal/ │ │ └── main.go │ ├── 06_adding-entry/ │ │ └── main.go │ ├── 07_len/ │ │ └── main.go │ ├── 08_updating-entry/ │ │ └── main.go │ ├── 09_deleting-entry/ │ │ └── main.go │ ├── 10_comma-ok-idiom_val-exists/ │ │ └── main.go │ ├── 11_deleting-entry_no-error/ │ │ └── main.go │ ├── 12_comma-ok-idiom_val-not-exists/ │ │ └── main.go │ ├── 13_loop-range/ │ │ └── main.go │ └── 14_hash-table/ │ ├── 01_letter-buckets/ │ │ ├── 01_runes-are-numbers/ │ │ │ └── main.go │ │ ├── 02_strings-to-rune-conversion/ │ │ │ └── main.go │ │ ├── 03_string-index-access/ │ │ │ └── main.go │ │ ├── 04_remainder-bucket-selection/ │ │ │ └── main.go │ │ ├── 05_hash-function/ │ │ │ └── main.go │ │ ├── 06_get/ │ │ │ └── main.go │ │ ├── 07_scanner/ │ │ │ └── main.go │ │ ├── 08_moby-dicks-words/ │ │ │ └── main.go │ │ ├── 09_int-slice-plus-plus/ │ │ │ └── main.go │ │ ├── 10_hash-letter-buckets/ │ │ │ └── main.go │ │ └── 11_hash-remainder-buckets/ │ │ └── main.go │ ├── 02_even-dstribution-hash/ │ │ └── main.go │ ├── 03_words-in-buckets/ │ │ ├── 01_slice-bucket/ │ │ │ └── main.go │ │ └── 02_map-bucket/ │ │ └── main.go │ └── 04_english-alphabet/ │ ├── 01/ │ │ └── main.go │ └── 02/ │ └── main.go ├── 20_struct/ │ ├── 00_object-oriented/ │ │ └── notes.txt │ ├── 01_user-defined-types/ │ │ ├── 01_alias-type_not-idiomatic/ │ │ │ └── main.go │ │ ├── 02_static-typing/ │ │ │ └── main.go │ │ └── notes.txt │ ├── 02_struct_fields_values_initialization/ │ │ ├── main.go │ │ └── notes.txt │ ├── 03_methods/ │ │ ├── main.go │ │ └── notes.txt │ ├── 04_embedded-types/ │ │ └── main.go │ ├── 05_promotion/ │ │ ├── 01_overriding-fields/ │ │ │ └── main.go │ │ └── 02_overriding-methods/ │ │ └── main.go │ ├── 06_struct-pointer/ │ │ └── main.go │ ├── 07_marshal_unmarshal/ │ │ ├── 01_marshal/ │ │ │ ├── 01_exported/ │ │ │ │ └── main.go │ │ │ ├── 02_unexported/ │ │ │ │ └── main.go │ │ │ └── 03_tags/ │ │ │ └── main.go │ │ └── 02_unmarshal/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02_tags/ │ │ └── main.go │ └── 08_encode_decode/ │ ├── 01_encode/ │ │ └── main.go │ └── 02_decode/ │ └── main.go ├── 21_interfaces/ │ ├── 00_notes.txt │ ├── 01_interface/ │ │ ├── 01_no-interface/ │ │ │ └── main.go │ │ ├── 02_interface/ │ │ │ └── main.go │ │ ├── 03_interface/ │ │ │ └── main.go │ │ ├── 04_interface/ │ │ │ └── main.go │ │ └── 05_io-copy/ │ │ ├── 01_no-error-checking/ │ │ │ └── main.go │ │ └── 02_error-checking/ │ │ └── main.go │ ├── 02_package-sort/ │ │ ├── 00_notes.txt │ │ ├── 01_sort-names/ │ │ │ └── main.go │ │ ├── 02_sort-names_type-StringSlice/ │ │ │ └── main.go │ │ ├── 03_sort-Strings/ │ │ │ └── main.go │ │ ├── 04_sort-names_type-StringSlice_reverse/ │ │ │ └── main.go │ │ ├── 05_sort-int_type-IntSlice/ │ │ │ └── main.go │ │ ├── 06_sort-int_type-IntSlice_reverse/ │ │ │ └── main.go │ │ ├── 07_sort-Ints/ │ │ │ └── main.go │ │ └── 08_standard-library-example/ │ │ └── main.go │ ├── 03_empty-interface/ │ │ ├── 01_no-interface/ │ │ │ └── main.go │ │ ├── 02_empty-interface/ │ │ │ └── main.go │ │ ├── 03_param-accepts-any-type/ │ │ │ └── main.go │ │ └── 04_slice-of-any-type/ │ │ └── main.go │ ├── 04_method-sets/ │ │ ├── 01_value-receiver_value-type/ │ │ │ └── main.go │ │ ├── 02_value-receiver_pointer-type/ │ │ │ └── main.go │ │ ├── 03_pointer-receiver_pointer-type/ │ │ │ └── main.go │ │ └── 04_pointer-receiver_value-type/ │ │ └── main.go │ └── 05_conversion-vs-assertion/ │ ├── 01_conversion/ │ │ ├── 01_int-to-float/ │ │ │ └── main.go │ │ ├── 02_float-to-int/ │ │ │ └── main.go │ │ ├── 03_rune-to-string/ │ │ │ └── main.go │ │ ├── 04_rune-to-slice-of-bytes-to-string/ │ │ │ └── main.go │ │ ├── 05_string-to-slice-of-bytes/ │ │ │ └── main.go │ │ └── 06_strconv/ │ │ ├── 01_Atoi/ │ │ │ └── main.go │ │ ├── 02_Itoa/ │ │ │ └── main.go │ │ └── 03_ParseInt/ │ │ └── main.go │ └── 02_assertion/ │ ├── 01_non-interface-error_invalid-code/ │ │ └── main.go │ ├── 02_interface-string/ │ │ └── main.go │ ├── 03_interface-string_not-ok/ │ │ └── main.go │ ├── 04_interface-int_print-type/ │ │ └── main.go │ ├── 05_interface-int_mistmatched-types-error/ │ │ └── main.go │ ├── 06_interface-int-sum/ │ │ └── main.go │ ├── 07_casting-reminder/ │ │ └── main.go │ └── 08_interface-cast-error_need-type-assertion/ │ └── main.go ├── 22_go-routines/ │ ├── 01_no-go/ │ │ └── main.go │ ├── 02_go_concurrency/ │ │ └── main.go │ ├── 03_wait-group/ │ │ └── main.go │ ├── 04_time-sleep/ │ │ └── main.go │ ├── 05_gomaxprocs_parallelism/ │ │ └── main.go │ ├── 06_race-condition/ │ │ └── main.go │ ├── 07_mutex/ │ │ └── main.go │ ├── 08_atomicity/ │ │ └── main.go │ ├── 09_channels/ │ │ ├── 00_unbuffered-channels-block/ │ │ │ └── main.go │ │ ├── 01_range/ │ │ │ └── main.go │ │ ├── 02_n-to-1/ │ │ │ ├── 01_race-condition/ │ │ │ │ └── main.go │ │ │ ├── 02_wait-group/ │ │ │ │ └── main.go │ │ │ ├── 03_semaphore/ │ │ │ │ └── main.go │ │ │ ├── 04_semaphore_wrong-way/ │ │ │ │ └── main.go │ │ │ └── 05_n-times_to_1/ │ │ │ └── main.go │ │ ├── 03_1-to-n/ │ │ │ ├── 01_1_to_2-times/ │ │ │ │ └── main.go │ │ │ └── 02_1_to_n-times/ │ │ │ └── main.go │ │ ├── 04_pass-return-channels/ │ │ │ └── main.go │ │ ├── 05_channel-direction/ │ │ │ └── main.go │ │ ├── 06_refactor/ │ │ │ └── main.go │ │ ├── 07_incrementor/ │ │ │ └── main.go │ │ └── 08_closures/ │ │ ├── 01_no-closure-binding/ │ │ │ └── main.go │ │ ├── 02_closure-binding/ │ │ │ └── main.go │ │ └── 03_closure-binding/ │ │ └── main.go │ ├── 10_deadlock-challenges/ │ │ ├── 01_deadlock-challenge/ │ │ │ └── main.go │ │ ├── 02_deadlock-solution/ │ │ │ └── main.go │ │ ├── 03_deadlock-challenge/ │ │ │ └── main.go │ │ ├── 04_deadlock-challenge/ │ │ │ └── main.go │ │ └── 05_deadlock-solution/ │ │ └── main.go │ ├── 11_factorial-challenge/ │ │ ├── 01_challenge-description/ │ │ │ └── main.go │ │ └── 02_challenge-solution/ │ │ └── main.go │ ├── 12_channels_pipeline/ │ │ ├── 01_sq-output/ │ │ │ └── main.go │ │ ├── 02_sq-output/ │ │ │ └── main.go │ │ ├── 03_challenge-description/ │ │ │ └── main.go │ │ └── 04_challenge-solution/ │ │ ├── 01_original-solution/ │ │ │ └── main.go │ │ ├── 02_another-solution/ │ │ │ └── main.go │ │ └── README.md │ ├── 13_channels_fan-out_fan-in/ │ │ ├── 01_boring/ │ │ │ └── main.go │ │ ├── 02_sq-output/ │ │ │ └── main.go │ │ ├── 03_sq-output_variation/ │ │ │ └── main.go │ │ ├── 04_challenge-description/ │ │ │ └── main.go │ │ ├── 05_challenge-solution/ │ │ │ └── main.go │ │ ├── 06_challenge-description/ │ │ │ └── main.go │ │ ├── 07_challenge-solution/ │ │ │ └── main.go │ │ ├── 08_challenge-description/ │ │ │ └── main.go │ │ ├── 09_challenge-solution/ │ │ │ ├── 01_troubleshooting-step/ │ │ │ │ └── main.go │ │ │ └── 02_solution/ │ │ │ └── main.go │ │ └── 10_van-sickle_fan-out_fan-in/ │ │ └── main.go │ ├── 14_incrementor-challenge/ │ │ ├── 01_description/ │ │ │ └── main.go │ │ └── 02_solution/ │ │ └── main.go │ └── 15_for-fun/ │ ├── 01/ │ │ └── main.go │ └── README.md ├── 23_error-handling/ │ ├── 01_golint/ │ │ ├── 01_before/ │ │ │ └── main.go │ │ └── 02_after/ │ │ └── main.go │ ├── 02_err-not-nil/ │ │ ├── 01_fmt-println/ │ │ │ └── main.go │ │ ├── 02_log-println/ │ │ │ └── main.go │ │ ├── 03_log-set-output/ │ │ │ ├── log.txt │ │ │ └── main.go │ │ ├── 04_log-fatalln/ │ │ │ └── main.go │ │ └── 05_panic/ │ │ └── main.go │ └── 03_custom-errors/ │ ├── 01_errors-new/ │ │ └── main.go │ ├── 02_errors-new_var/ │ │ └── main.go │ ├── 03_fmt-errorf/ │ │ └── main.go │ ├── 04_fmt-errorf_var/ │ │ └── main.go │ └── 05_custom-type/ │ └── main.go ├── 24_testing/ │ ├── math.go │ └── math_test.go ├── 25_code-walk/ │ ├── main.go │ └── with-comments/ │ └── main.go ├── 26_QUESTIONS-FROM-STUDENTS/ │ ├── 01-package-scope/ │ │ ├── main.go │ │ └── variables.go │ ├── 02-goroutines-printing/ │ │ └── main.go │ ├── 03-range-chan/ │ │ └── main.go │ ├── 04_goroutines_closing-chan/ │ │ ├── 01_broken-code/ │ │ │ └── main.go │ │ └── 02_fixed-code/ │ │ └── main.go │ ├── 05_concurrency-channels/ │ │ └── main.go │ └── 06_performance-ramifications/ │ ├── 01_called/ │ │ └── main.go │ └── 02_not-called/ │ └── main.go ├── 27_code-in-process/ │ ├── 26_playing-with-type/ │ │ ├── 00_types/ │ │ │ ├── 01_division/ │ │ │ │ ├── 01_int-int/ │ │ │ │ │ └── main.go │ │ │ │ ├── 02_int-float/ │ │ │ │ │ └── main.go │ │ │ │ ├── 03_var_int-float/ │ │ │ │ │ └── main.go │ │ │ │ └── 04_var_int-float_invalid-code/ │ │ │ │ └── main.go │ │ │ ├── 02_strings/ │ │ │ │ ├── 01_escape-sequences/ │ │ │ │ │ └── main.go │ │ │ │ ├── 02_sequence-of-bytes/ │ │ │ │ │ └── main.go │ │ │ │ ├── 03_immutable/ │ │ │ │ │ └── main.go │ │ │ │ ├── 04_len/ │ │ │ │ │ ├── 01_len-english/ │ │ │ │ │ │ └── main.go │ │ │ │ │ ├── 02_len-chinese/ │ │ │ │ │ │ └── main.go │ │ │ │ │ └── 03_binary/ │ │ │ │ │ └── main.go │ │ │ │ ├── 05_index-access/ │ │ │ │ │ └── main.go │ │ │ │ ├── 06_slicing/ │ │ │ │ │ ├── 01/ │ │ │ │ │ │ └── main.go │ │ │ │ │ ├── 02/ │ │ │ │ │ │ └── main.go │ │ │ │ │ └── 03_invalid_negative-index/ │ │ │ │ │ └── main.go │ │ │ │ └── 07_concatenation/ │ │ │ │ └── main.go │ │ │ ├── 03_strconv/ │ │ │ │ ├── 01_itoa/ │ │ │ │ │ └── main.go │ │ │ │ ├── 02_fmt-sprint/ │ │ │ │ │ └── main.go │ │ │ │ └── 03_atoi/ │ │ │ │ └── main.go │ │ │ ├── 06_math-pkg/ │ │ │ │ └── main.go │ │ │ └── 07_typeOf/ │ │ │ ├── 01_better-code/ │ │ │ │ └── main.go │ │ │ └── 02_worse-code/ │ │ │ └── main.go │ │ ├── 01_struct/ │ │ │ └── main.go │ │ ├── 02_string/ │ │ │ └── main.go │ │ ├── 03_string-conversion/ │ │ │ └── main.go │ │ ├── 04_string_assertion_invalid-code/ │ │ │ └── main.go │ │ ├── 05_var-for-zero-val-initalization/ │ │ │ └── main.go │ │ ├── 06_shorthand-notation_nonzero-initalization/ │ │ │ └── main.go │ │ ├── xx05_slice-strings/ │ │ │ └── main.go │ │ ├── xx06_slice-strings_conversion/ │ │ │ └── main.go │ │ ├── xx07_int/ │ │ │ └── main.go │ │ └── xx08_slice-ints/ │ │ └── main.go │ ├── 27_package-os/ │ │ ├── 00_args/ │ │ │ └── main.go │ │ ├── 01_Read/ │ │ │ └── 01/ │ │ │ ├── dst.txt │ │ │ ├── main.go │ │ │ └── src.txt │ │ ├── 02_Write/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ ├── 02/ │ │ │ │ ├── hello.txt │ │ │ │ └── main.go │ │ │ └── 03_absolute-path/ │ │ │ └── main.go │ │ ├── 03_mkdir/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 04_FileMode/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 05_file-open/ │ │ │ └── main.go │ │ ├── 06_file-create/ │ │ │ └── main.go │ │ └── 07_Stdout_Stdin/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 28_package-strings/ │ │ ├── 01_strings/ │ │ │ └── main.go │ │ └── 02_NewReader/ │ │ └── main.go │ ├── 29_package-bufio/ │ │ ├── 01_NewReader/ │ │ │ └── main.go │ │ ├── 02_NewScanner/ │ │ │ └── main.go │ │ ├── 03_scan-lines/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ └── 04_scan-words/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ └── 03/ │ │ └── main.go │ ├── 30_package-io/ │ │ ├── 01_copy/ │ │ │ └── main.go │ │ ├── 02_copy/ │ │ │ └── main.go │ │ ├── 03_copy/ │ │ │ └── main.go │ │ ├── 04_TeeReader/ │ │ │ ├── 01/ │ │ │ │ ├── main.go │ │ │ │ └── src.txt │ │ │ └── 02/ │ │ │ ├── main.go │ │ │ └── src.txt │ │ ├── 05_ReadFull/ │ │ │ ├── dst.txt │ │ │ ├── main.go │ │ │ └── src.txt │ │ ├── 06_LimitReader/ │ │ │ ├── main.go │ │ │ └── src.txt │ │ └── 07_WriteString/ │ │ ├── 01_one-way/ │ │ │ ├── hello.txt │ │ │ └── main.go │ │ └── 02_another-way/ │ │ ├── hello.txt │ │ └── main.go │ ├── 31_package-ioutil/ │ │ ├── 00_ReadAll/ │ │ │ └── main.go │ │ ├── 01_ReadAll/ │ │ │ └── main.go │ │ ├── 02_WriteFile/ │ │ │ └── main.go │ │ └── 03_ReadAll_WriteFile/ │ │ ├── hey.txt │ │ └── main.go │ ├── 32_package-encoding-csv/ │ │ ├── 01_NewReader/ │ │ │ └── main.go │ │ ├── 02_column-headings/ │ │ │ └── main.go │ │ ├── 03_panics/ │ │ │ └── main.go │ │ ├── 04_parse-state/ │ │ │ └── main.go │ │ ├── 05_state-lookup/ │ │ │ └── main.go │ │ ├── 06_write-to-html/ │ │ │ └── main.go │ │ ├── 07_NewReader/ │ │ │ ├── main.go │ │ │ └── table.csv │ │ └── state_table.csv │ ├── 33_package-path-filepath/ │ │ ├── 01_Walk/ │ │ │ └── main.go │ │ ├── 02_Walk/ │ │ │ └── main.go │ │ ├── 03_Walk/ │ │ │ └── main.go │ │ └── 04_Walk/ │ │ └── main.go │ ├── 34_package-time/ │ │ ├── 01_now/ │ │ │ └── main.go │ │ ├── 02_time-parse/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 03_format/ │ │ │ └── main.go │ │ └── 04_date-diff/ │ │ └── main.go │ ├── 35_hash/ │ │ ├── 00_notes/ │ │ │ └── notes.txt │ │ ├── 01_FNV/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ └── 02_MD5/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ └── main.go │ ├── 36_package-filepath/ │ │ └── 01_walk/ │ │ └── main.go │ ├── 37_review-exercises/ │ │ ├── 01_gravatar/ │ │ │ ├── main.go │ │ │ └── page.html │ │ ├── 02_word-count/ │ │ │ └── main.go │ │ ├── 03_centered_average/ │ │ │ └── main.go │ │ ├── 04_swap-two_pointers/ │ │ │ └── main.go │ │ ├── 05_clumps/ │ │ │ └── main.go │ │ ├── 06_cat/ │ │ │ └── main.go │ │ ├── 07_copy/ │ │ │ ├── main.go │ │ │ └── newFile.txt │ │ ├── 08_cp/ │ │ │ ├── 01/ │ │ │ │ ├── initial.txt │ │ │ │ └── main.go │ │ │ ├── 02/ │ │ │ │ ├── initial.txt │ │ │ │ └── main.go │ │ │ ├── 03/ │ │ │ │ ├── initial.txt │ │ │ │ └── main.go │ │ │ ├── 04_io-copy/ │ │ │ │ ├── initial.txt │ │ │ │ └── main.go │ │ │ ├── 05_os-write_slice-bytes/ │ │ │ │ └── main.go │ │ │ ├── 06_io-copy_string-NewReader/ │ │ │ │ └── main.go │ │ │ ├── 07_io-copy_bufio-NewReader/ │ │ │ │ ├── initial.txt │ │ │ │ └── main.go │ │ │ └── 08_bufio_scanner/ │ │ │ ├── initial.txt │ │ │ └── main.go │ │ ├── 09_sentence-case/ │ │ │ ├── initial.txt │ │ │ └── main.go │ │ ├── 10_every-word/ │ │ │ ├── initial.txt │ │ │ └── main.go │ │ ├── 11_every-other-word/ │ │ │ ├── initial.txt │ │ │ └── main.go │ │ ├── 12_count-words/ │ │ │ └── main.go │ │ ├── 13_longest-word/ │ │ │ └── main.go │ │ ├── 14_cat-files/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 15_csv_state-info/ │ │ │ ├── state_table.csv │ │ │ ├── step01_read-and-output/ │ │ │ │ └── main.go │ │ │ ├── step02_column-headings/ │ │ │ │ └── main.go │ │ │ ├── step03_panics/ │ │ │ │ └── main.go │ │ │ ├── step04_parse-state/ │ │ │ │ └── main.go │ │ │ ├── step05_state-lookup/ │ │ │ │ └── main.go │ │ │ └── step06_write-to-html/ │ │ │ └── main.go │ │ ├── 16_csv_stock-prices/ │ │ │ ├── step01_stdout/ │ │ │ │ └── main.go │ │ │ ├── step02_html/ │ │ │ │ └── main.go │ │ │ ├── step03_charting/ │ │ │ │ ├── charting_graphing.txt │ │ │ │ └── main.go │ │ │ └── table.csv │ │ ├── 17_MD5-checksum/ │ │ │ └── main.go │ │ └── 18_Walk-dir/ │ │ └── main.go │ ├── 38_JSON/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ ├── 03/ │ │ │ └── main.go │ │ ├── 04/ │ │ │ └── main.go │ │ ├── 05/ │ │ │ └── main.go │ │ ├── 06/ │ │ │ └── main.go │ │ ├── 07/ │ │ │ └── main.go │ │ ├── 08/ │ │ │ └── main.go │ │ ├── 09/ │ │ │ └── main.go │ │ ├── 10/ │ │ │ └── main.go │ │ ├── 11/ │ │ │ └── main.go │ │ ├── 12/ │ │ │ ├── data.json │ │ │ └── main.go │ │ ├── 13/ │ │ │ ├── data.json │ │ │ └── main.go │ │ ├── 14/ │ │ │ └── main.go │ │ ├── 15/ │ │ │ ├── main.go │ │ │ └── output.txt │ │ ├── 15_exercise_csv-to-JSON/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ ├── 02/ │ │ │ │ ├── main.go │ │ │ │ └── output.txt │ │ │ └── table.csv │ │ ├── 16/ │ │ │ └── main.go │ │ └── 17/ │ │ ├── main.go │ │ └── table.json │ ├── 39_packages/ │ │ ├── hello/ │ │ │ ├── bye.go │ │ │ └── hello.go │ │ └── main/ │ │ └── main.go │ ├── 40_testing/ │ │ ├── 01/ │ │ │ ├── example/ │ │ │ │ ├── sum.go │ │ │ │ └── sum_test.go │ │ │ └── main.go │ │ └── 02/ │ │ ├── example/ │ │ │ ├── sum.go │ │ │ └── sum_test.go │ │ └── main.go │ ├── 41_TCP/ │ │ ├── 01/ │ │ │ └── 00_notes.txt │ │ ├── 02_listen/ │ │ │ ├── 00_notes.txt │ │ │ └── main.go │ │ ├── 03_dial/ │ │ │ ├── 00_notes.txt │ │ │ └── main.go │ │ ├── 04_echo-server/ │ │ │ ├── v01/ │ │ │ │ ├── 00_notes.txt │ │ │ │ └── main.go │ │ │ ├── v02/ │ │ │ │ ├── 00_notes.txt │ │ │ │ └── main.go │ │ │ ├── v03/ │ │ │ │ └── main.go │ │ │ └── v04/ │ │ │ └── main.go │ │ ├── 05_redis-clone/ │ │ │ ├── i01/ │ │ │ │ ├── i01_notes.txt │ │ │ │ └── main.go │ │ │ ├── i02/ │ │ │ │ ├── i02_notes.txt │ │ │ │ └── main.go │ │ │ ├── i03/ │ │ │ │ ├── i03_notes.txt │ │ │ │ └── main.go │ │ │ ├── i04/ │ │ │ │ ├── i04_notes.txt │ │ │ │ └── main.go │ │ │ ├── i05_code-issue/ │ │ │ │ ├── i04_notes.txt │ │ │ │ └── main.go │ │ │ └── i06/ │ │ │ ├── i04_notes.txt │ │ │ └── main.go │ │ ├── 06_rot13-server/ │ │ │ ├── v01-todd/ │ │ │ │ └── main.go │ │ │ ├── v02-caleb/ │ │ │ │ └── main.go │ │ │ └── v03-daniel/ │ │ │ └── main.go │ │ └── 07_chat-server/ │ │ └── main.go │ ├── 42_HTTP/ │ │ ├── 01_header/ │ │ │ ├── 00_notes.txt │ │ │ └── main.go │ │ ├── 02_http-server/ │ │ │ ├── i01/ │ │ │ │ └── main.go │ │ │ ├── i02/ │ │ │ │ └── main.go │ │ │ ├── i03/ │ │ │ │ └── main.go │ │ │ ├── i04_POST/ │ │ │ │ └── main.go │ │ │ ├── i05_not-writing_error-in-code/ │ │ │ │ └── main.go │ │ │ ├── i06_PLAIN-TEXT/ │ │ │ │ └── main.go │ │ │ └── i07_Location/ │ │ │ └── main.go │ │ └── 03_http-server_return-URL/ │ │ └── main.go │ ├── 43_HTTP-server/ │ │ ├── 01/ │ │ │ ├── i01/ │ │ │ │ └── main.go │ │ │ └── i02/ │ │ │ └── main.go │ │ ├── 02_requestURI/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ └── 03_restful/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ └── 03/ │ │ └── main.go │ ├── 44_MUX_routing/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ ├── 03/ │ │ │ └── main.go │ │ ├── 04/ │ │ │ └── main.go │ │ ├── 05/ │ │ │ └── main.go │ │ ├── 06_HandleFunc/ │ │ │ └── main.go │ │ ├── 07_HandleFunc/ │ │ │ └── main.go │ │ └── 08_HandleFunc/ │ │ └── main.go │ ├── 45_serving-files/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ ├── 03/ │ │ │ └── main.go │ │ ├── 04_io-Copy/ │ │ │ └── main.go │ │ ├── 05_ServeContent/ │ │ │ └── main.go │ │ ├── 06_ServeFile/ │ │ │ └── main.go │ │ ├── 07_FileServer/ │ │ │ └── main.go │ │ ├── 08_FileServer/ │ │ │ └── main.go │ │ ├── 09_FileServer/ │ │ │ └── main.go │ │ ├── 10_static-file-server/ │ │ │ └── main.go │ │ └── 11_static-file-server/ │ │ └── main.go │ ├── 46_errata/ │ │ ├── 01_set-header/ │ │ │ └── main.go │ │ ├── 02_URL/ │ │ │ └── main.go │ │ ├── 03_URL/ │ │ │ └── main.go │ │ ├── 04_URL/ │ │ │ └── main.go │ │ └── 05_ServeFile/ │ │ └── main.go │ ├── 47_templates/ │ │ ├── 01_text-templates/ │ │ │ ├── 01/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 02/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 03/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 04/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 05/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 06/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 07/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 08/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 09_function/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 10_function/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ └── 11/ │ │ │ ├── main.go │ │ │ └── tpl.gohtml │ │ ├── 02_html-templates/ │ │ │ ├── 01/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 02/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── 03/ │ │ │ │ ├── main.go │ │ │ │ ├── tpl.gohtml │ │ │ │ └── tpl2.gohtml │ │ │ ├── 04/ │ │ │ │ ├── main.go │ │ │ │ ├── tpl.gohtml │ │ │ │ └── tpl2.gohtml │ │ │ └── 05/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── tpl.gohtml │ │ │ └── tpl2.gohtml │ │ └── x03_exercises/ │ │ ├── 01/ │ │ │ ├── hw.gohtml │ │ │ └── main.go │ │ ├── 02/ │ │ │ ├── hw.gohtml │ │ │ └── main.go │ │ └── 03_template_csv-parse/ │ │ ├── hw.gohtml │ │ ├── main.go │ │ ├── parse/ │ │ │ └── parse.go │ │ └── table.csv │ ├── 48_passing-data/ │ │ ├── 01_URL-values/ │ │ │ └── main.go │ │ ├── 02_form-values/ │ │ │ └── main.go │ │ ├── 03_form-values/ │ │ │ └── main.go │ │ ├── 04_form-values/ │ │ │ └── main.go │ │ ├── 05_form-values/ │ │ │ └── main.go │ │ ├── 06_form-values/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 07_form-data/ │ │ │ ├── form.gohtml │ │ │ ├── main.go │ │ │ └── sample.html │ │ └── 08_form_file-upload/ │ │ ├── 01/ │ │ │ ├── form.gohtml │ │ │ ├── main.go │ │ │ └── sample.html │ │ ├── 02/ │ │ │ ├── form.gohtml │ │ │ ├── main.go │ │ │ └── sample.html │ │ ├── 03/ │ │ │ └── main.go │ │ └── 04/ │ │ ├── file.txt │ │ └── main.go │ ├── 49_cookies-sessions/ │ │ ├── 01_set-cookie/ │ │ │ └── main.go │ │ ├── 02_get-cookie/ │ │ │ └── main.go │ │ ├── 03_sessions/ │ │ │ └── main.go │ │ ├── 04_sessions/ │ │ │ └── main.go │ │ ├── 05_sessions-HMAC/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 06_sessions_GORILLA/ │ │ │ └── main.go │ │ ├── 07_cookies_show-visits/ │ │ │ └── main.go │ │ ├── 08_log-in-out/ │ │ │ └── main.go │ │ ├── 09_HTTPS-TLS/ │ │ │ └── main.go │ │ ├── 10_HTTPS-TLS/ │ │ │ └── main.go │ │ ├── 11_HTTPS-TLS/ │ │ │ └── main.go │ │ └── 12_GORILLA_photo-blog/ │ │ ├── assets/ │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── login.html │ │ └── main.go │ ├── 50_exif/ │ │ └── main.go │ ├── 51_appengine-introduction/ │ │ ├── 01_hello-world/ │ │ │ ├── app.yaml │ │ │ └── hello.go │ │ ├── 02_photo-blog_somewhat-crappy-code-FYI/ │ │ │ ├── app.yaml │ │ │ ├── assets/ │ │ │ │ └── tpl/ │ │ │ │ ├── admin_login.gohtml │ │ │ │ ├── admin_upload.gohtml │ │ │ │ └── index.gohtml │ │ │ └── photos.go │ │ ├── 03_google-maps-api/ │ │ │ ├── app.yaml │ │ │ ├── assets/ │ │ │ │ └── templates/ │ │ │ │ └── index.gohtml │ │ │ └── hello.go │ │ ├── 04_SERVICE_users/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ └── 05_GORILLA_photo-blog/ │ │ ├── app.yaml │ │ ├── assets/ │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── login.html │ │ └── main.go │ ├── 52_memcache/ │ │ ├── 01_get-nil/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 02_set_get/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 03_expiration/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 04_increment/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ └── 05_memcache-session/ │ │ ├── 01i/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 02i/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 03i/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 04i/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 05i/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ └── 06_photo-blog_UNFINISHED/ │ │ ├── app.yaml │ │ ├── assets/ │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── login.html │ │ └── main.go │ ├── 53_datastore/ │ │ ├── 00_appengine-documentation-example/ │ │ │ ├── 01_with-modifications/ │ │ │ │ ├── app.yaml │ │ │ │ └── main.go │ │ │ ├── 02_as-in-documentation/ │ │ │ │ ├── app.yaml │ │ │ │ └── main.go │ │ │ ├── 03_no-favicon/ │ │ │ │ ├── app.yaml │ │ │ │ └── main.go │ │ │ └── 04_no-favicon/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 01_partial-example_does-not-run/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ ├── 01_put/ │ │ │ │ ├── app.yaml │ │ │ │ └── words.go │ │ │ ├── 02/ │ │ │ │ ├── app.yaml │ │ │ │ └── words.go │ │ │ ├── 03_get/ │ │ │ │ ├── app.yaml │ │ │ │ └── words.go │ │ │ ├── 04_query-filter/ │ │ │ │ ├── app.yaml │ │ │ │ └── words.go │ │ │ └── 05_query-ancestor/ │ │ │ ├── app.yaml │ │ │ └── words.go │ │ ├── 03_users_datastore_exercise/ │ │ │ ├── app.yaml │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ └── templates.gohtml │ │ └── 04_julien-schmidt-router/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02-with-appengine/ │ │ ├── app.yaml │ │ └── main.go │ ├── 54_AJAX/ │ │ ├── 01/ │ │ │ ├── index.html │ │ │ └── test.html │ │ └── 02_users_datastore_exercise_AJAX/ │ │ ├── app.yaml │ │ ├── main.go │ │ └── templates/ │ │ └── templates.gohtml │ ├── 55_todo-list/ │ │ ├── 01v_content-editable/ │ │ │ ├── app.yaml │ │ │ ├── assets/ │ │ │ │ └── templates/ │ │ │ │ └── index.html │ │ │ └── main.go │ │ └── 02v_input/ │ │ ├── app.yaml │ │ ├── assets/ │ │ │ └── templates/ │ │ │ └── index.html │ │ └── main.go │ ├── 56_twitter/ │ │ ├── 01_ux_design/ │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ └── home.html │ │ ├── 02_ListenAndServe/ │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ └── home.html │ │ ├── 03_error-handling/ │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ └── home.html │ │ ├── 04_template_abstraction/ │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── home.html │ │ ├── 05_document/ │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── home.html │ │ ├── 06_document/ │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── home.html │ │ ├── 07_app-engine/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── home.html │ │ ├── 08_julien-schmidt/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── reset.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ └── home.html │ │ ├── 09_login-form/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── temp/ │ │ │ │ └── tempLogin.html │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── header2.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 10_signup-form-validate/ │ │ │ ├── 01v_form-validation/ │ │ │ │ ├── app.yaml │ │ │ │ ├── doc.go │ │ │ │ ├── main.go │ │ │ │ ├── public/ │ │ │ │ │ └── css/ │ │ │ │ │ ├── login.css │ │ │ │ │ ├── reset.css │ │ │ │ │ ├── signup.css │ │ │ │ │ └── styles.css │ │ │ │ ├── temp/ │ │ │ │ │ ├── tempLogin.html │ │ │ │ │ ├── tempSignup.html │ │ │ │ │ └── test-js.html │ │ │ │ └── templates/ │ │ │ │ └── html/ │ │ │ │ ├── footer.html │ │ │ │ ├── header.html │ │ │ │ ├── header2.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── 02v_datastore-put/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── temp/ │ │ │ │ ├── tempLogin.html │ │ │ │ ├── tempSignup.html │ │ │ │ └── test-js.html │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── header2.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 11_HTTPS-TLS/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── err_main.tmp │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── header2.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 12_error-handling/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── header2.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 13_login_unfinished/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── header2.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 14_code-review/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 15_memcache-home/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 16_abstract-memcache-code/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 17_memcache-templates/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 18_abstract-API-Model/ │ │ │ ├── API/ │ │ │ │ └── users.go │ │ │ ├── IMPORTANT-READ-ME.txt │ │ │ ├── Memcache/ │ │ │ │ └── templates.go │ │ │ ├── Model/ │ │ │ │ └── users.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 19_abstract-API-Model_AE-fix/ │ │ │ ├── API/ │ │ │ │ └── users.go │ │ │ ├── App/ │ │ │ │ ├── app.yaml │ │ │ │ ├── doc.go │ │ │ │ ├── main.go │ │ │ │ ├── public/ │ │ │ │ │ └── css/ │ │ │ │ │ ├── login.css │ │ │ │ │ ├── reset.css │ │ │ │ │ ├── signup.css │ │ │ │ │ └── styles.css │ │ │ │ └── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ ├── Memcache/ │ │ │ │ └── templates.go │ │ │ └── Model/ │ │ │ └── users.go │ │ ├── 20_reverting_to_only_package-main/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 21_set-cookie_no-PATH/ │ │ │ ├── IMPORTANT-TO-READ.txt │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 22_set-cookie_PATH/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 23_set-cookie-UUID/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 24_session/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── memcache.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 25_session-all-pages/ │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ └── userCreation.go │ │ ├── 26_login/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── notes.txt │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 27_logout/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 28_code-review/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 29_password-encryption/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 30_turn-off-memcache/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ └── signup.html │ │ ├── 31_modal-post-tweet/ │ │ │ ├── README.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ ├── modal-tweet.html │ │ │ └── signup.html │ │ ├── 32_tweets/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ └── html/ │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ ├── modal-tweet.html │ │ │ └── signup.html │ │ ├── 33_display-all-tweets/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ └── signup.html │ │ │ └── tweets.go │ │ ├── 34_humanize/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ └── signup.html │ │ │ └── tweets.go │ │ ├── 35_schmidt-params/ │ │ │ ├── 01/ │ │ │ │ └── main.go │ │ │ ├── 02/ │ │ │ │ └── main.go │ │ │ ├── 03/ │ │ │ │ └── main.go │ │ │ ├── 04/ │ │ │ │ └── main.go │ │ │ └── 05/ │ │ │ └── main.go │ │ ├── 36_user-tweets/ │ │ │ ├── READ-ME.txt │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ └── signup.html │ │ │ └── tweets.go │ │ ├── 37_other-implementations/ │ │ │ ├── 01_daniel/ │ │ │ │ ├── app.yaml │ │ │ │ ├── data.go │ │ │ │ ├── email.go │ │ │ │ ├── index.yaml │ │ │ │ ├── main.go │ │ │ │ ├── public/ │ │ │ │ │ ├── makeTweet.js │ │ │ │ │ └── style.css │ │ │ │ └── templates/ │ │ │ │ ├── createProfile.gohtml │ │ │ │ ├── index.gohtml │ │ │ │ ├── login.gohtml │ │ │ │ ├── profile.gohtml │ │ │ │ └── tweet.gohtml │ │ │ ├── 02_tommy/ │ │ │ │ ├── README.md │ │ │ │ ├── app.yaml │ │ │ │ ├── assets/ │ │ │ │ │ └── scripts/ │ │ │ │ │ └── main.js │ │ │ │ ├── data.go │ │ │ │ ├── handlers.go │ │ │ │ ├── main.go │ │ │ │ ├── render.go │ │ │ │ └── templates/ │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── profile.html │ │ │ └── 03_t/ │ │ │ ├── app.yaml │ │ │ ├── data.go │ │ │ ├── index.yaml │ │ │ ├── public/ │ │ │ │ ├── css/ │ │ │ │ │ └── reset.css │ │ │ │ └── js/ │ │ │ │ └── make-post.js │ │ │ ├── routes.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── footer.html │ │ │ │ ├── header.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ └── profile.html │ │ │ ├── templates.go │ │ │ └── temporary/ │ │ │ ├── modal-dialog.html │ │ │ ├── temp_home.html │ │ │ ├── temp_login.html │ │ │ └── temp_profile.html │ │ ├── 38_follow/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── following.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ ├── signup.html │ │ │ │ └── user.html │ │ │ └── tweets.go │ │ ├── 39_unfollow/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── following.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ ├── signup.html │ │ │ │ └── user.html │ │ │ └── tweets.go │ │ ├── 40_send-email/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 41_twitter-send-email/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── email.go │ │ │ ├── following.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ ├── signup.html │ │ │ │ └── user.html │ │ │ └── tweets.go │ │ ├── 42_following/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── email.go │ │ │ ├── following.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── follow.html │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ ├── signup.html │ │ │ │ └── user.html │ │ │ └── tweets.go │ │ ├── 43_following-me/ │ │ │ ├── api.go │ │ │ ├── app.yaml │ │ │ ├── doc.go │ │ │ ├── email.go │ │ │ ├── following.go │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── model.go │ │ │ ├── public/ │ │ │ │ └── css/ │ │ │ │ ├── login.css │ │ │ │ ├── modal-tweet.css │ │ │ │ ├── reset.css │ │ │ │ ├── signup.css │ │ │ │ └── styles.css │ │ │ ├── session.go │ │ │ ├── template.go │ │ │ ├── templates/ │ │ │ │ └── html/ │ │ │ │ ├── follow.html │ │ │ │ ├── followingme.html │ │ │ │ ├── headersFooters.html │ │ │ │ ├── home.html │ │ │ │ ├── login.html │ │ │ │ ├── modal-tweet.html │ │ │ │ ├── signup.html │ │ │ │ └── user.html │ │ │ └── tweets.go │ │ └── 44_code-review/ │ │ ├── api.go │ │ ├── app.yaml │ │ ├── doc.go │ │ ├── email.go │ │ ├── following.go │ │ ├── index.yaml │ │ ├── main.go │ │ ├── model.go │ │ ├── public/ │ │ │ └── css/ │ │ │ ├── login.css │ │ │ ├── modal-tweet.css │ │ │ ├── reset.css │ │ │ ├── signup.css │ │ │ └── styles.css │ │ ├── session.go │ │ ├── template.go │ │ ├── templates/ │ │ │ └── html/ │ │ │ ├── follow.html │ │ │ ├── followingme.html │ │ │ ├── headersFooters.html │ │ │ ├── home.html │ │ │ ├── login.html │ │ │ ├── modal-tweet.html │ │ │ ├── signup.html │ │ │ └── user.html │ │ └── tweets.go │ ├── 57_appengine-channel/ │ │ ├── 01_basic/ │ │ │ ├── app.yaml │ │ │ └── channel.go │ │ └── 02_chat-room/ │ │ ├── app.yaml │ │ ├── handlers.go │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── room.go │ │ └── routes.go │ ├── 58_appengine-search/ │ │ ├── app.yaml │ │ └── search.go │ ├── 59_appengine-GCS-storage/ │ │ ├── 00_GCS-setup/ │ │ │ └── 00_GCS-setup.txt │ │ ├── 01_NewWriter_PEM-auth/ │ │ │ ├── app.yaml │ │ │ └── storage.go │ │ ├── 02_NewWriter_JSON-auth/ │ │ │ ├── README.txt │ │ │ ├── app.yaml │ │ │ └── storage.go │ │ └── 03_put-get-list_JSON-auth/ │ │ ├── README.txt │ │ ├── app.yaml │ │ └── storage.go │ ├── 60_movie-website/ │ │ ├── 01_search/ │ │ │ ├── app.yaml │ │ │ ├── index.go │ │ │ ├── newmovie.go │ │ │ ├── public/ │ │ │ │ ├── main.css │ │ │ │ └── opensearch.xml │ │ │ ├── routes.go │ │ │ ├── search.go │ │ │ ├── templates/ │ │ │ │ ├── index.gohtml │ │ │ │ ├── layout.gohtml │ │ │ │ ├── new-movie.gohtml │ │ │ │ └── search.gohtml │ │ │ ├── templates.go │ │ │ └── types.go │ │ └── 02_image-upload-GCS/ │ │ ├── README.txt │ │ ├── app.yaml │ │ ├── index.go │ │ ├── newmovie.go │ │ ├── public/ │ │ │ ├── main.css │ │ │ └── opensearch.xml │ │ ├── routes.go │ │ ├── search.go │ │ ├── storage.go │ │ ├── templates/ │ │ │ ├── index.gohtml │ │ │ ├── layout.gohtml │ │ │ ├── new-movie.gohtml │ │ │ └── search.gohtml │ │ ├── templates.go │ │ └── types.go │ ├── 61_http-giffy/ │ │ ├── app.yaml │ │ └── http.go │ ├── 62_self-destructing-message/ │ │ ├── 01/ │ │ │ ├── app.yaml │ │ │ └── routes.go │ │ └── 02_crypto/ │ │ ├── 01_nonce/ │ │ │ └── main.go │ │ ├── 02_encrypt/ │ │ │ └── main.go │ │ ├── 03_decrypt/ │ │ │ └── main.go │ │ └── 04_complete/ │ │ ├── app.yaml │ │ └── routes.go │ ├── 63_GCS-filebrowser/ │ │ ├── README.txt │ │ ├── app.yaml │ │ ├── routes.go │ │ ├── session.go │ │ ├── storage.go │ │ └── templates/ │ │ ├── browse.html │ │ └── index.html │ ├── 64_csv-example/ │ │ ├── 01/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ └── stats.go │ │ └── 02/ │ │ ├── app.yaml │ │ ├── routes.go │ │ └── stats.go │ ├── 65_accepting-credit-cards/ │ │ ├── 01_basic-setup/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── 02_customizing_UI/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── 03_stripe-token/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── 04_err-because-of-app-engine/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ ├── stripe.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── 05_charging/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ ├── stripe.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── 06_idempotent/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ ├── stripe.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ └── 07_complete/ │ │ ├── app.yaml │ │ ├── routes.go │ │ ├── stripe.go │ │ └── templates/ │ │ └── index.gohtml │ ├── 66_authentication_OAUTH/ │ │ ├── 01_app-engine-auth_REVIEW/ │ │ │ ├── app.yaml │ │ │ └── main.go │ │ ├── 02_manual-auth/ │ │ │ ├── 01_cookie_REVIEW/ │ │ │ │ └── main.go │ │ │ ├── 02_gorilla_REVIEW_photo-blog/ │ │ │ │ ├── 01_simple/ │ │ │ │ │ └── main.go │ │ │ │ └── 02_photo-blog/ │ │ │ │ ├── assets/ │ │ │ │ │ └── templates/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── login.html │ │ │ │ └── main.go │ │ │ ├── 03_memcache_REVIEW_twitter/ │ │ │ │ ├── README.txt │ │ │ │ ├── api.go │ │ │ │ ├── app.yaml │ │ │ │ ├── doc.go │ │ │ │ ├── email.go │ │ │ │ ├── following.go │ │ │ │ ├── index.yaml │ │ │ │ ├── main.go │ │ │ │ ├── model.go │ │ │ │ ├── public/ │ │ │ │ │ └── css/ │ │ │ │ │ ├── login.css │ │ │ │ │ ├── modal-tweet.css │ │ │ │ │ ├── reset.css │ │ │ │ │ ├── signup.css │ │ │ │ │ └── styles.css │ │ │ │ ├── session.go │ │ │ │ ├── template.go │ │ │ │ ├── templates/ │ │ │ │ │ └── html/ │ │ │ │ │ ├── follow.html │ │ │ │ │ ├── followingme.html │ │ │ │ │ ├── headersFooters.html │ │ │ │ │ ├── home.html │ │ │ │ │ ├── login.html │ │ │ │ │ ├── modal-tweet.html │ │ │ │ │ ├── signup.html │ │ │ │ │ └── user.html │ │ │ │ └── tweets.go │ │ │ └── 04_bcrypt/ │ │ │ ├── 01/ │ │ │ │ ├── README.txt │ │ │ │ └── main.go │ │ │ └── 02/ │ │ │ └── main.go │ │ ├── 03_oauth-github/ │ │ │ ├── 00_readme/ │ │ │ │ └── README.txt │ │ │ ├── 01_authorization-code/ │ │ │ │ ├── app.yaml │ │ │ │ ├── login.go │ │ │ │ └── session.go │ │ │ ├── 02_access-token/ │ │ │ │ ├── app.yaml │ │ │ │ ├── login.go │ │ │ │ └── session.go │ │ │ ├── 03_url-ParseQuery/ │ │ │ │ ├── app.yaml │ │ │ │ ├── login.go │ │ │ │ └── session.go │ │ │ ├── 04_user-email/ │ │ │ │ ├── app.yaml │ │ │ │ ├── login.go │ │ │ │ └── session.go │ │ │ ├── 05_configuration_scheduled-tasks_cron/ │ │ │ │ ├── app.yaml │ │ │ │ ├── cron.yaml │ │ │ │ ├── login.go │ │ │ │ └── scheduled.go │ │ │ └── 06-complete/ │ │ │ ├── app.yaml │ │ │ ├── cron.yaml │ │ │ ├── github.go │ │ │ ├── login.go │ │ │ ├── scheduled.go │ │ │ └── session.go │ │ ├── 04_oauth-twitter/ │ │ │ └── 00_readme/ │ │ │ └── README.txt │ │ ├── 05_oauth-facebook/ │ │ │ └── 00_readme/ │ │ │ └── README.txt │ │ ├── 05_oauth-google/ │ │ │ ├── 00_readme/ │ │ │ │ └── README.txt │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ └── session.go │ │ ├── 06_oauth-linkedin/ │ │ │ └── 00_readme/ │ │ │ └── README.txt │ │ ├── 07_oauth-vk/ │ │ │ └── 00_readme/ │ │ │ └── README.txt │ │ └── 08_oauth-dropbox/ │ │ ├── 00_readme/ │ │ │ └── README.txt │ │ ├── app.yaml │ │ ├── routes.go │ │ └── session.go │ ├── 67_digital-ocean_aerospike/ │ │ ├── 01_helloWorld/ │ │ │ └── testServer.go │ │ ├── 02_fullsite/ │ │ │ ├── .gitignore │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── create.gohtml │ │ │ ├── index.gohtml │ │ │ └── login.gohtml │ │ ├── 03-aerospike/ │ │ │ ├── main.go │ │ │ └── templates/ │ │ │ ├── create.gohtml │ │ │ ├── index.gohtml │ │ │ └── login.gohtml │ │ └── README.md │ ├── 68_task-queue/ │ │ ├── 01_delay/ │ │ │ ├── app.yaml │ │ │ ├── delayed.go │ │ │ └── routes.go │ │ ├── 02_delay-cron/ │ │ │ ├── app.yaml │ │ │ ├── cron.yaml │ │ │ ├── delayed.go │ │ │ ├── routes.go │ │ │ └── scheduled.go │ │ ├── 03_github/ │ │ │ ├── app.yaml │ │ │ ├── github.go │ │ │ ├── login.go │ │ │ └── session.go │ │ ├── 04_github-goroutines/ │ │ │ ├── app.yaml │ │ │ ├── github.go │ │ │ ├── login.go │ │ │ └── session.go │ │ └── 05_github-cron/ │ │ ├── app.yaml │ │ ├── cron.yaml │ │ ├── github.go │ │ ├── login.go │ │ ├── scheduled.go │ │ └── session.go │ ├── 90_append-to-file/ │ │ ├── 01-get-files/ │ │ │ └── main.go │ │ └── 02-apply/ │ │ └── main.go │ ├── 97_temp/ │ │ ├── 01/ │ │ │ └── main.go │ │ └── 02/ │ │ ├── 02 │ │ └── main.go │ ├── 98-good-student-code/ │ │ └── daniel/ │ │ ├── Week1/ │ │ │ ├── blog/ │ │ │ │ ├── blog.css │ │ │ │ └── blog.html │ │ │ ├── fullscreen/ │ │ │ │ ├── fullscreen-style.css │ │ │ │ └── fullscreen.html │ │ │ ├── google/ │ │ │ │ ├── google.css │ │ │ │ └── google.html │ │ │ └── treehouse/ │ │ │ ├── treehouse.css │ │ │ └── treehouse.html │ │ ├── Week10/ │ │ │ ├── dropbox-api/ │ │ │ │ ├── app.yaml │ │ │ │ ├── routes.go │ │ │ │ └── session.go │ │ │ ├── filebrowser/ │ │ │ │ ├── app.yaml │ │ │ │ ├── browse.go │ │ │ │ ├── credentials.go │ │ │ │ ├── public/ │ │ │ │ │ └── styles.css │ │ │ │ ├── routes.go │ │ │ │ ├── session.go │ │ │ │ ├── storage.go │ │ │ │ └── templates/ │ │ │ │ ├── browse.gohtml │ │ │ │ └── credentials.gohtml │ │ │ └── payment/ │ │ │ ├── app.yaml │ │ │ ├── routes.go │ │ │ ├── stripe.go │ │ │ └── templates/ │ │ │ └── index.gohtml │ │ ├── Week2/ │ │ │ ├── backgroundPreview/ │ │ │ │ ├── backgroundPreview.css │ │ │ │ ├── backgroundPreview.html │ │ │ │ └── backgroundPreview.js │ │ │ ├── changingBackground/ │ │ │ │ ├── changingBackground.css │ │ │ │ ├── changingBackground.html │ │ │ │ └── changingBackground.js │ │ │ ├── destructButton/ │ │ │ │ ├── destructButton.css │ │ │ │ ├── destructButton.html │ │ │ │ └── destructButton.js │ │ │ ├── generatedList/ │ │ │ │ ├── script.js │ │ │ │ └── test.html │ │ │ ├── imageListJavascript/ │ │ │ │ └── imageListJavascript.html │ │ │ ├── magic8ball/ │ │ │ │ ├── magic-ball.css │ │ │ │ ├── magic-ball.js │ │ │ │ └── magic8ball.html │ │ │ └── whackAMole/ │ │ │ ├── whackamole.css │ │ │ ├── whackamole.html │ │ │ └── whackamole.js │ │ ├── Week3/ │ │ │ ├── audioPlayer/ │ │ │ │ ├── audioPlayer.css │ │ │ │ ├── audioPlayer.html │ │ │ │ └── audioPlayer.js │ │ │ ├── hoverPreview/ │ │ │ │ ├── hoverPreview.css │ │ │ │ ├── hoverPreview.html │ │ │ │ └── hoverPreview.js │ │ │ └── loadImage/ │ │ │ ├── loadImage.css │ │ │ ├── loadImage.html │ │ │ └── loadImage.js │ │ ├── Week4/ │ │ │ ├── angularAjax/ │ │ │ │ ├── data.json │ │ │ │ ├── gulpfile.js │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ ├── chat/ │ │ │ │ └── chat.html │ │ │ ├── firebaseExample/ │ │ │ │ └── firebaseExample.html │ │ │ ├── flickrFeed/ │ │ │ │ ├── flickr.css │ │ │ │ ├── flickr.html │ │ │ │ ├── flickr.js │ │ │ │ ├── gulpfile.js │ │ │ │ └── package.json │ │ │ ├── liveSearch/ │ │ │ │ ├── data.json │ │ │ │ ├── gulpfile.js │ │ │ │ ├── liveSearch.css │ │ │ │ ├── liveSearch.html │ │ │ │ ├── liveSearch.js │ │ │ │ └── package.json │ │ │ ├── mustacheTemplate/ │ │ │ │ ├── data.json │ │ │ │ ├── gulpfile.js │ │ │ │ ├── mustache.html │ │ │ │ ├── mustache.js │ │ │ │ └── package.json │ │ │ └── routing/ │ │ │ ├── app.js │ │ │ ├── artists.js │ │ │ ├── detail.html │ │ │ ├── list.html │ │ │ ├── routing.html │ │ │ └── style.css │ │ ├── Week5/ │ │ │ └── web-components-training-exercises/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── breaking-shadow-dom-polyfill/ │ │ │ │ ├── another-component/ │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── my-component/ │ │ │ │ │ └── index.html │ │ │ │ └── webcomponents.js │ │ │ ├── css-patterns-input-label-pairs/ │ │ │ │ └── index.html │ │ │ ├── css-patterns-media-object/ │ │ │ │ └── index.html │ │ │ ├── css-patterns-tabs/ │ │ │ │ └── index.html │ │ │ ├── general-components/ │ │ │ │ ├── hello-badge/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── styles.css │ │ │ │ ├── readme.md │ │ │ │ ├── tabs/ │ │ │ │ │ └── index.html │ │ │ │ └── waiting-spinner/ │ │ │ │ ├── index.html │ │ │ │ └── styles.css │ │ │ ├── hello-web-components/ │ │ │ │ ├── index.html │ │ │ │ └── my-first-web-component/ │ │ │ │ └── my-first-web-component.html │ │ │ ├── intro-shadow-dom/ │ │ │ │ └── index.html │ │ │ ├── nesting-components/ │ │ │ │ ├── accordion_component/ │ │ │ │ │ ├── script.js │ │ │ │ │ └── styles.css │ │ │ │ └── index.html │ │ │ ├── progress-bar-component/ │ │ │ │ ├── index.html │ │ │ │ └── script.js │ │ │ ├── styleguide/ │ │ │ │ ├── components/ │ │ │ │ │ ├── accordion.html │ │ │ │ │ ├── badge.html │ │ │ │ │ ├── blink.html │ │ │ │ │ ├── button.html │ │ │ │ │ ├── slider.html │ │ │ │ │ └── spinner.html │ │ │ │ ├── createElement.js │ │ │ │ └── index.html │ │ │ └── ui-libraries/ │ │ │ ├── dogo-toolkit/ │ │ │ │ └── index.html │ │ │ └── jquery-ui/ │ │ │ └── index.html │ │ ├── Week6/ │ │ │ ├── 1-text-editors/ │ │ │ │ ├── 1-emmet.html │ │ │ │ └── 2-emmet.html │ │ │ ├── 2-browser-devtools/ │ │ │ │ ├── zlickr/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── gallery-grid.css │ │ │ │ │ │ ├── gallery.css │ │ │ │ │ │ └── pure.css │ │ │ │ │ └── index.html │ │ │ │ ├── zmail/ │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── email.css │ │ │ │ │ │ └── pure.css │ │ │ │ │ ├── index.html │ │ │ │ │ └── js/ │ │ │ │ │ ├── count.js │ │ │ │ │ ├── menu.js │ │ │ │ │ └── spam.js │ │ │ │ └── zordpress/ │ │ │ │ ├── css/ │ │ │ │ │ ├── blog.css │ │ │ │ │ ├── main-grid.css │ │ │ │ │ └── pure.css │ │ │ │ ├── index.html │ │ │ │ └── js/ │ │ │ │ └── save.js │ │ │ ├── 3-html5/ │ │ │ │ ├── 1-detection/ │ │ │ │ │ └── index.html │ │ │ │ ├── 2-structure/ │ │ │ │ │ ├── 1-past.html │ │ │ │ │ └── 2-today.html │ │ │ │ ├── 3-audio/ │ │ │ │ │ └── index.html │ │ │ │ ├── 4-video/ │ │ │ │ │ └── index.html │ │ │ │ ├── 5-input/ │ │ │ │ │ └── index.html │ │ │ │ ├── 6-mark/ │ │ │ │ │ └── index.html │ │ │ │ └── 7-progress/ │ │ │ │ └── index.html │ │ │ ├── 4-js/ │ │ │ │ ├── 1-jquery/ │ │ │ │ │ └── index.html │ │ │ │ ├── 2-audio/ │ │ │ │ │ └── index.html │ │ │ │ ├── 3-video/ │ │ │ │ │ └── index.html │ │ │ │ ├── 4-form/ │ │ │ │ │ └── index.html │ │ │ │ ├── 5-storage/ │ │ │ │ │ ├── local.html │ │ │ │ │ └── session.html │ │ │ │ ├── 6-geolocation/ │ │ │ │ │ └── index.html │ │ │ │ ├── 7-usermedia/ │ │ │ │ │ └── index.html │ │ │ │ ├── 8-dragndrop/ │ │ │ │ │ └── index.html │ │ │ │ └── 9-canvas/ │ │ │ │ └── index.html │ │ │ ├── 5-web-components/ │ │ │ │ ├── 0-proto/ │ │ │ │ │ └── index.html │ │ │ │ ├── 1-custom-elements/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ └── 2-fcc-location.html │ │ │ │ ├── 2-html-templates/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ ├── 2-fcc-logo.html │ │ │ │ │ └── 3-airport.html │ │ │ │ ├── 3-shadow-dom/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ └── 2-fcc-button.html │ │ │ │ └── 4-html-imports/ │ │ │ │ ├── 1-component.html │ │ │ │ ├── 1-index.html │ │ │ │ ├── 2-index.html │ │ │ │ └── 2-toc.html │ │ │ ├── 6-collapse/ │ │ │ │ ├── 2-index.html │ │ │ │ └── bower.json │ │ │ ├── 7-polymer/ │ │ │ │ ├── 1-registering/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ ├── 1-plain.html │ │ │ │ │ └── 1-polymer.html │ │ │ │ ├── 2-lifecycle/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ ├── 2-index.html │ │ │ │ │ ├── 2-plain.html │ │ │ │ │ └── 2-polymer.html │ │ │ │ ├── 3-properties/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ ├── 1-polymer.html │ │ │ │ │ ├── 2-index.html │ │ │ │ │ └── 2-polymer.html │ │ │ │ ├── 4-local-dom/ │ │ │ │ │ ├── 1-index.html │ │ │ │ │ ├── 1-polymer.html │ │ │ │ │ ├── 2-index.html │ │ │ │ │ └── 2-polymer.html │ │ │ │ └── 5-data-binding/ │ │ │ │ ├── 1-index.html │ │ │ │ ├── 1-polymer.html │ │ │ │ ├── 2-index.html │ │ │ │ └── 2-polymer.html │ │ │ └── 8-bonus/ │ │ │ ├── index.html │ │ │ └── style.html │ │ ├── Week7/ │ │ │ ├── Converter/ │ │ │ │ └── main.go │ │ │ ├── Hello/ │ │ │ │ └── main.go │ │ │ ├── Loops/ │ │ │ │ └── main.go │ │ │ ├── capitalize/ │ │ │ │ ├── main.go │ │ │ │ └── test.txt │ │ │ ├── distanceConverter/ │ │ │ │ └── main.go │ │ │ ├── findSmallest/ │ │ │ │ └── main.go │ │ │ ├── monuments/ │ │ │ │ ├── City_of_Champaign_GPS_Control_Points.csv │ │ │ │ ├── main.go │ │ │ │ └── test.html │ │ │ ├── my-cat/ │ │ │ │ ├── hello.txt │ │ │ │ └── main.go │ │ │ ├── my-md5/ │ │ │ │ └── main.go │ │ │ ├── profileGenerator/ │ │ │ │ └── main.go │ │ │ ├── rotate/ │ │ │ │ └── main.go │ │ │ ├── wordCount/ │ │ │ │ ├── main.go │ │ │ │ └── moby10b.txt │ │ │ └── yahooFinantial/ │ │ │ ├── info.html │ │ │ ├── main.go │ │ │ └── table.csv │ │ ├── Week8/ │ │ │ ├── chatRoom/ │ │ │ │ └── main.go │ │ │ ├── colors/ │ │ │ │ └── main.go │ │ │ ├── csv-convert/ │ │ │ │ ├── main.go │ │ │ │ └── table.csv │ │ │ ├── customHttpServer/ │ │ │ │ └── main.go │ │ │ ├── echoServer/ │ │ │ │ └── main.go │ │ │ ├── firstAppEngine/ │ │ │ │ ├── app.yaml │ │ │ │ └── hello.go │ │ │ ├── firstTemplate/ │ │ │ │ ├── main.go │ │ │ │ └── tpl.gohtml │ │ │ ├── formExample/ │ │ │ │ └── main.go │ │ │ ├── httpAnimals/ │ │ │ │ └── main.go │ │ │ ├── json-example/ │ │ │ │ ├── data.json │ │ │ │ └── main.go │ │ │ ├── photoBlog/ │ │ │ │ ├── adminSite.gohtml │ │ │ │ ├── app.yaml │ │ │ │ ├── main.go │ │ │ │ ├── mainSite.gohtml │ │ │ │ └── style.css │ │ │ ├── profile/ │ │ │ │ ├── app.yaml │ │ │ │ ├── createProfile.gohtml │ │ │ │ ├── main.go │ │ │ │ └── viewProfile.gohtml │ │ │ ├── redisDatabase/ │ │ │ │ └── main.go │ │ │ ├── secureHello/ │ │ │ │ └── main.go │ │ │ ├── static-http/ │ │ │ │ └── main.go │ │ │ ├── testExample/ │ │ │ │ ├── example.go │ │ │ │ └── example_test.go │ │ │ └── todolist/ │ │ │ ├── app.yaml │ │ │ ├── index.html │ │ │ ├── index.yaml │ │ │ ├── main.go │ │ │ ├── script.js │ │ │ └── style.css │ │ └── Week9/ │ │ ├── chat-example/ │ │ │ ├── app.yaml │ │ │ ├── handlers.go │ │ │ ├── public/ │ │ │ │ ├── index.html │ │ │ │ └── main.js │ │ │ └── routes.go │ │ ├── movie-search/ │ │ │ ├── app.yaml │ │ │ ├── data.go │ │ │ ├── details.go │ │ │ ├── index.go │ │ │ ├── index.yaml │ │ │ ├── movie.go │ │ │ ├── route.go │ │ │ ├── search.go │ │ │ ├── template.go │ │ │ └── templates/ │ │ │ ├── addMovie.gohtml │ │ │ ├── details.gohtml │ │ │ ├── header.gohtml │ │ │ ├── index.gohtml │ │ │ ├── movie.gohtml │ │ │ └── search.gohtml │ │ └── storageExample/ │ │ ├── app.yaml │ │ └── storage.go │ └── 99_svcc/ │ ├── 01_string-to-html/ │ │ └── main.go │ ├── 02_os-args/ │ │ └── main.go │ ├── 03_text-template/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 04_pipeline/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 05_pipeline-range/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 06_pipeline-range-else/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 07_composition/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 08_composition-conditional/ │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 09_methods/ │ │ └── main.go │ ├── 10_xss/ │ │ ├── index.html │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 11_html-templates/ │ │ ├── index.html │ │ ├── main.go │ │ └── tpl.gohtml │ ├── 12_parsefiles/ │ │ ├── main.go │ │ ├── tpl.gohtml │ │ └── tpl2.gohtml │ ├── 13_ParseGlob/ │ │ ├── main.go │ │ └── templates/ │ │ ├── tpl.gohtml │ │ └── tpl2.gohtml │ ├── 14_tcp_echo-server/ │ │ └── main.go │ ├── 15_tcp_echo-server/ │ │ └── main.go │ ├── 16_redis-clone_step-2/ │ │ └── main.go │ ├── 17_redis-clone_step-5/ │ │ └── main.go │ ├── 18_rot13/ │ │ └── main.go │ ├── 19_DIY_http-server_request-line_headers/ │ │ └── main.go │ ├── 20_DIY_http-server_step-01/ │ │ └── main.go │ ├── 21_DIY_http-server_step-02/ │ │ └── main.go │ ├── 22_DIY_http-server_step-03/ │ │ └── main.go │ ├── 23_DIY_http-server_step-04/ │ │ └── main.go │ ├── 24_http-server_ServeMux/ │ │ └── main.go │ ├── 25_http-server_DefaultServeMux/ │ │ └── main.go │ ├── 26_serving-files_io-Copy/ │ │ └── main.go │ ├── 27_serving-files_ServeContent/ │ │ └── main.go │ ├── 28_serving-files_ServeFile/ │ │ └── main.go │ ├── 29_serving-files_FileServer/ │ │ └── main.go │ ├── 30_serving-files_FileServer/ │ │ └── main.go │ ├── 31_serving-files_FileServer/ │ │ └── main.go │ ├── 32_static-FileServer/ │ │ ├── assets/ │ │ │ ├── images/ │ │ │ │ └── home/ │ │ │ │ └── imgres.html │ │ │ └── stylesheets/ │ │ │ └── main.css │ │ ├── button.html │ │ ├── floats_in_practice.html │ │ ├── index.html │ │ ├── main.go │ │ ├── register.html │ │ ├── schedule.html │ │ ├── speakers.html │ │ ├── sponsors.html │ │ └── venue.html │ ├── 33_set-cookie/ │ │ └── main.go │ ├── 34_get-cookie/ │ │ └── main.go │ ├── 35_favicon-bye-bye/ │ │ └── main.go │ ├── 36_sessions_cookie/ │ │ └── main.go │ ├── 37_sessions_cookie_log-in-out/ │ │ └── main.go │ ├── 38_HMAC/ │ │ ├── 01/ │ │ │ └── main.go │ │ ├── 02/ │ │ │ └── main.go │ │ └── 03/ │ │ └── main.go │ ├── 39_AES-encrypt-decrypt/ │ │ └── main.go │ ├── 40_sessions_GORILLA/ │ │ └── main.go │ ├── 41_sessions_GORILLA_log-in-out/ │ │ └── main.go │ ├── 42_JSON/ │ │ └── main.go │ ├── 43_sessions_GORILLA_JSON/ │ │ └── main.go │ ├── 44_file-paths/ │ │ └── main.go │ ├── 45_sessions_GORILLA_photo-blog/ │ │ ├── assets/ │ │ │ └── templates/ │ │ │ ├── index.html │ │ │ └── login.html │ │ └── main.go │ └── 46_HTTPS-TLS/ │ └── main.go ├── LICENSE.txt └── README.md