Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Browser History Confessional: Searching My Recent Searches

Browser History Confessional: Searching My Recent Searches

We all only have so much working memory available in our brains. Developers may joke about spending their day composing search engine queries. The reason it's a joke is because of the truth behind it. Search-driven development is a reality.

Join me, and my actual search history, on a journey to solve recent challenges I faced. I'll categorize the different types of information I often search for. You'll leave with tips on retrieving the knowledge you need for your next bug, feature, or pull request.

B2f82edebc6e840ed97c8606700d123a?s=128

Kevin Murphy

April 27, 2022
Tweet

More Decks by Kevin Murphy

Other Decks in Technology

Transcript

  1. @kevin_j_m Browser History Confessional Searching My Recent Searches @kevin_j_m Kevin

    Murphy
  2. Mine @kevin_j_m Alluvial Deposit Active Search History kevinjmurphy.com/alluvial how to

    give a good presentation
  3. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History kevinjmurphy.com/alluvial

    how to give a good presentation Be prepared Look at the audience Read this before you get on stage
  4. @kevin_j_m What @kevin_j_m

  5. @kevin_j_m How @kevin_j_m

  6. @kevin_j_m Why @kevin_j_m

  7. Mine @kevin_j_m Alluvial Deposit Active Search History kevinjmurphy.com/alluvial Kevin Murphy

  8. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History About

    Me Kevin Murphy Personal Website kevinjmurphy.com @kevin_j_m / Twitter twitter.com BookBub: handpicked ebook deals bookbub.com BookBub is Hiring! bookbub.com/careers Tech Leads & Mobile Devs Ads
  9. @kevin_j_m Alluvial Deposit Sifting out 3 gems since 2022 @kevin_j_m

  10. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    History 2 how to give a good presentation Kevin Murphy
  11. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    History 2 how to give a good presentation Kevin Murphy May 18, 2022 
 10:31 AM May 18, 2022 
 10:32 AM
  12. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component_test.rb class DateTimeComponentTest < ViewComponent::TestCase test "displays the formatted date and time" do end end timestamp ruby Recall Details
  13. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component_test.rb class DateTimeComponentTest < ViewComponent::TestCase test "displays the formatted date and time" do time = DateTime.new(2022, 3, 20, 3, 25, 6) end end timestamp ruby Recall Details
  14. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component_test.rb class DateTimeComponentTest < ViewComponent::TestCase test "displays the formatted date and time" do time = DateTime.new(2022, 3, 20, 3, 25, 6) render_inline(DateAndTimeComponent.new(time)) end end timestamp ruby Recall Details
  15. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component_test.rb class DateTimeComponentTest < ViewComponent::TestCase test "displays the formatted date and time" do time = DateTime.new(2022, 3, 20, 3, 25, 6) render_inline(DateAndTimeComponent.new(time)) assert_selector "p", id: "date", text: "Mar 20, 2022" end end timestamp ruby Recall Details
  16. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component_test.rb class DateTimeComponentTest < ViewComponent::TestCase test "displays the formatted date and time" do time = DateTime.new(2022, 3, 20, 3, 25, 6) render_inline(DateAndTimeComponent.new(time)) assert_selector "p", id: "date", text: "Mar 20, 2022" assert_selector "p", id: "time", text: "03:25 AM" end end timestamp ruby Recall Details
  17. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component.html.erb <div> <p id="date"> <%= l(@timestamp, format: :date) %> </p> <p id="time"> <%= l(@timestamp, format: :time_of_day) %> </p> </div> timestamp eruby Recall Details
  18. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL config/locales/en.yml en: time: formats: date: "" time_of_day: "" timestamp yaml Recall Details
  19. @kevin_j_m Recall Details > rails test # Running F Finished

    in 0.414796s, 45.8056 runs/s, 4.9408 assertions/s 1 runs, 1 assertions, 1 failures, 0 errors, 0 skips
  20. Mine @kevin_j_m Alluvial Deposit Active Search History Recall Details ruby

    strftime
  21. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Recall

    Details ruby strftime Class: DateTime (Ruby 3.1.1) ruby-doc.org strftime (DateTime) - APIdock apidock.com Ruby Date Format (strftime) Cheat Sheet shortcutfoo.com
  22. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Recall

    Details ruby strftime Class: DateTime (Ruby 3.1.1) ruby-doc.org strftime (DateTime) - APIdock apidock.com Ruby Date Format (strftime) Cheat Sheet shortcutfoo.com
  23. @kevin_j_m ruby-doc.org/stdlib-3.1.1/libdoc/date/rdoc/ DateTime.html#method-i-strftime

  24. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL config/locales/en.yml en: time: formats: date: "" time_of_day: "" timestamp yaml Recall Details
  25. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL config/locales/en.yml en: time: formats: date: "%b %-d, %Y" time_of_day: "%I:%M %p" timestamp yaml Recall Details
  26. @kevin_j_m Recall Details > rails test # Running . Finished

    in 0.414796s, 45.8056 runs/s, 4.9408 assertions/s 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
  27. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Recall

    Details 1 ruby strftime May 18, 2022 
 10:35 AM Bookmark search by keywords Reference materials
  28. @kevin_j_m Alluvial Deposit Active Search History DateTimeComponent May 18, 2022

    10:38 AM
  29. @kevin_j_m Alluvial Deposit Active Search History DateTimeComponent Unknown Unknown

  30. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL datetime_helper.rb module DatetimeHelper def l_datetime(timestamp, placeholder: "Unknown", **opts) end end placeholder ruby Solve Direct Problems
  31. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL datetime_helper.rb module DatetimeHelper def l_datetime(timestamp, placeholder: "Unknown", **opts) if timestamp.present? else end end end placeholder ruby Solve Direct Problems
  32. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL datetime_helper.rb module DatetimeHelper def l_datetime(timestamp, placeholder: "Unknown", **opts) if timestamp.present? l(timestamp, **opts) else end end end placeholder ruby Solve Direct Problems
  33. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL datetime_helper.rb module DatetimeHelper def l_datetime(timestamp, placeholder: "Unknown", **opts) if timestamp.present? l(timestamp, **opts) else placeholder end end end placeholder ruby Solve Direct Problems
  34. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component.html.erb <div> <%= heroicon "calendar" %> <p id="date"> <%= l(@timestamp, format: :date) %> </p> </div> placeholder eruby Solve Direct Problems
  35. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component.html.erb <div> <%= heroicon "calendar" %> <p id="date"> <%= l_datetime(@timestamp, format: :date) %> </p> </div> placeholder eruby Solve Direct Problems
  36. @kevin_j_m Solve Direct Problems > rails test # Running Error:

    DateTimeComponentTest#test_displays_the_formatted_date: NoMethodError: undefined method `l_datetime' for #<DateTimeC
  37. @kevin_j_m Solve Direct Problems > rails test # Running Error:

    DateTimeComponentTest#test_displays_the_formatted_date: NoMethodError: undefined method `l_datetime' for #<DateTimeC
  38. @kevin_j_m Solve Direct Problems > rails test # Running Error:

    DateTimeComponentTest#test_displays_the_formatted_date: NoMethodError: undefined method `l_datetime' for #<DateTimeC Ruby Exception
  39. @kevin_j_m Solve Direct Problems > rails test # Running Error:

    DateTimeComponentTest#test_displays_the_formatted_date: NoMethodError: undefined method `l_datetime' for #<DateTimeC app/helpers/datetime_helper.rb Ruby Exception
  40. @kevin_j_m github.com/github/view_component

  41. @kevin_j_m viewcomponent.org

  42. @kevin_j_m viewcomponent.org

  43. @kevin_j_m viewcomponent.org

  44. @kevin_j_m viewcomponent.org

  45. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component.html.erb <div> <%= heroicon "calendar" %> <p id="date"> <%= l_datetime(@timestamp, format: :date) %> </p> </div> placeholder eruby Solve Direct Problems
  46. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL date_time_component.html.erb <div> <%= heroicon "calendar" %> <p id="date"> <%= helpers.l_datetime(@timestamp, format: :date) %> </p> </div> placeholder eruby Solve Direct Problems
  47. @kevin_j_m Solve Direct Problems > rails test # Running .

    Finished in 0.414796s, 45.8056 runs/s, 4.9408 assertions/s 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
  48. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    History Comments 2 ruby strftime May 18, 2022 New Comment The ruby docs include a list of the directives. 10:35 AM B Create I S
  49. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    History Comments 2 ruby strftime May 18, 2022 New Comment The ruby docs include a list of the directives. 10:35 AM B Create I S
  50. @kevin_j_m Solve Direct Problems Started POST "/comments" Processing by CommentsController#create

    as TURBO_STREAM Redirected to http://localhost:3000/queries/17 Completed 302 Found in 9ms Started GET "/queries/17" Processing by QueriesController#show as TURBO_STREAM Rendering queries/show.erb Rendered queries/show.erb Completed 200 OK in 6ms
  51. Mine @kevin_j_m Alluvial Deposit Active Search History Solve Direct Problems

    Processing #show as TURBO_STREAM
  52. @kevin_j_m Solve Direct Problems Started GET "/queries/17" Processing by QueriesController#show

    as TURBO_STREAM Rendering queries/show.erb Rendered queries/show.erb Completed 200 OK in 6ms Started GET "/queries/17" Processing by QueriesController#show as HTML Rendering layout layouts/application.html.erb Rendering queries/show.erb within layouts/application Rendered queries/show.erb within layouts/application Completed 200 OK in 6ms
  53. @kevin_j_m Solve Direct Problems Started GET "/queries/17" Processing by QueriesController#show

    as TURBO_STREAM Rendering queries/show.erb Rendered queries/show.erb Completed 200 OK in 6ms Started GET "/queries/17" Processing by QueriesController#show as HTML Rendering layout layouts/application.html.erb Rendering queries/show.erb within layouts/application Rendered queries/show.erb within layouts/application Completed 200 OK in 6ms
  54. Mine @kevin_j_m Alluvial Deposit Active Search History Solve Direct Problems

    Rails turbo stream not rendering layout
  55. Mine @kevin_j_m Alluvial Deposit Active Search History Solve Direct Problems

    Rails turbo render layout
  56. @kevin_j_m github.com/hotwired/turbo-rails

  57. @kevin_j_m discuss.rubyonrails.org/

  58. @kevin_j_m

  59. @kevin_j_m 🏃

  60. @kevin_j_m 📖

  61. @kevin_j_m 🎸

  62. @kevin_j_m 🍨

  63. @kevin_j_m ⁉

  64. @kevin_j_m Solve Direct Problems I have a fresh Rails 7

    app, and my form isn’t rendering the show action after redirecting. What turbo thing am I missing? gist.github.com/…
  65. @kevin_j_m Solve Direct Problems I have a fresh Rails 7

    app, and my form isn’t rendering the show action after redirecting. What turbo thing am I missing? gist.github.com/… Shout-out to @RogersKonnor. It really helps if the views are *.html.erb, not only *.erb.
  66. @kevin_j_m Solve Direct Problems Started GET "/queries/17" Processing by QueriesController#show

    as TURBO_STREAM Rendering queries/show.erb Rendered queries/show.erb Completed 200 OK in 6ms Started GET "/queries/17" Processing by QueriesController#show as HTML Rendering layout layouts/application.html.erb Rendering queries/show.erb within layouts/application Rendered queries/show.erb within layouts/application Completed 200 OK in 6ms
  67. @kevin_j_m HOTWIRE HTML Over The Wire

  68. @kevin_j_m HOTWIRE ERB Over The Wire

  69. @kevin_j_m HOTWIRE ERB Over The Wire

  70. @kevin_j_m Solve Direct Problems Started GET "/queries/17" Processing by QueriesController#show

    as TURBO_STREAM Rendering queries/show.erb Rendered queries/show.erb Completed 200 OK in 6ms Started GET "/queries/17" Processing by QueriesController#show as HTML Rendering layout layouts/application.html.erb Rendering queries/show.erb within layouts/application Rendered queries/show.erb within layouts/application Completed 200 OK in 6ms
  71. @kevin_j_m Solve Direct Problems Started GET "/queries/17" Processing by QueriesController#show

    as TURBO_STREAM Rendering queries/show.html.erb Rendered queries/show.html.erb Completed 200 OK in 6ms Started GET "/queries/17" Processing by QueriesController#show as HTML Rendering layout layouts/application.html.erb Rendering queries/show.html.erb within layouts/application Rendered queries/show.html.erb within layouts/application Completed 200 OK in 6ms
  72. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Solve

    Direct Problems Too many view_component documentation Copy exact issue Start at primary source May 18, 2022 10:48 AM
  73. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Solve

    Direct Problems Too many view_component documentation Copy exact issue Start at primary source Rails turbo stream render Take a break Talk to a human May 18, 2022 10:45 AM May 18, 2022 10:48 AM
  74. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    History Comments 2 ruby strftime May 18, 2022 Comments The ruby docs include a list of the directives. 10:35 AM May 18, 2022 10:50 AM
  75. @kevin_j_m Alluvial Deposit Active Search History Search History Search History

    Comments
  76. @kevin_j_m rack-mini-profiler

  77. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL app/controllers/queries_controller.rb class QueriesController < ApplicationController def index @queries = Query .all .order(searched_at: :asc) end end history-slowdown ruby Revisit Assumptions
  78. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL app/controllers/queries_controller.rb class QueriesController < ApplicationController def index @queries = Query .all .order(searched_at: :asc) .includes(:comments) end end history-slowdown ruby Revisit Assumptions
  79. 1 2 3 4 5 6 7 8 9 10

    11 12 @kevin_j_m NORMAL Gemfile group :development, :test do gem "bullet" end history-slowdown ruby Revisit Assumptions
  80. Mine @kevin_j_m Alluvial Deposit Active Search History Revisit Assumptions ruby

    n+1 bullet alternative
  81. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Revisit

    Assumptions ruby n+1 bullet alternative bullet Alternatives | LibHunt ruby.libhunt.com Squash N+1 queries early with n_plus_one_control evilmartians.com 4 Non-standard Ways to Fix N+1 Queries in Rails pawelurbanek.com
  82. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Revisit

    Assumptions ruby n+1 bullet alternative bullet Alternatives | LibHunt ruby.libhunt.com Squash N+1 queries early with n_plus_one_control evilmartians.com 4 Non-standard Ways to Fix N+1 Queries in Rails pawelurbanek.com
  83. @kevin_j_m evilmartians.com/chronicles/squash-n-plus-one-queries- early-with-n-plus-one-control-test-matchers-for-ruby-and-rails

  84. @kevin_j_m github.com/palkan/n_plus_one_control

  85. @kevin_j_m github.com/palkan/n_plus_one_control

  86. @kevin_j_m github.com/palkan/n_plus_one_control

  87. @kevin_j_m I Know I Can, But Should I? Evaluating Alternatives

    kevinjmurphy.com/railsconf-2019
  88. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Revisit

    Assumptions 1 ruby n+1 bullet alternative May 18, 2022 11:05 AM Expand knowledge base Validate relevant criteria Make intentional choice
  89. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Clear

    Search History 1 ruby n+1 bullet alternative May 18, 2022 11:05 AM
  90. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Clear

    Clear Search History 1 ruby n+1 bullet alternative May 18, 2022 11:05 AM
  91. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Clear

    Clear Search History 0
  92. @kevin_j_m Code Review 1 2 3 4 5 class SearchHistory

    def self.clear Query.delete_all end end Submit Review
  93. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps we start with using `destroy_all` and benchmark the worst-case performance impact? Add Comment B I S Submit Review
  94. Mine @kevin_j_m Alluvial Deposit Active Search History Share Communal Knowledge

    rails delete_all callbacks
  95. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails delete_all callbacks Active Record Relation delete_all api.rubyonrails.org delete_all (ActiveRecord::Relation) apidock.com CollectionProxy `delete_all` and `destroy_all` gist.github.com
  96. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails delete_all callbacks Active Record Relation delete_all api.rubyonrails.org delete_all (ActiveRecord::Relation) apidock.com CollectionProxy `delete_all` and `destroy_all` gist.github.com
  97. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps we start with using `destroy_all` and benchmark the worst-case performance impact? Add Comment B I S Submit Review
  98. Mine @kevin_j_m Alluvial Deposit Active Search History Share Communal Knowledge

    rails delete_all vs destroy_all
  99. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails delete_all vs destroy_all CollectionProxy `delete_all` and `destroy_all` gist.github.com Delete vs. Destroy: Does it even matter? medium.com delete_all vs destroy_all ridingwithrails.wordpress.com
  100. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails delete_all vs destroy_all CollectionProxy `delete_all` and `destroy_all` gist.github.com Delete vs. Destroy: Does it even matter? medium.com delete_all vs destroy_all ridingwithrails.wordpress.com
  101. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps we start with using `destroy_all` and benchmark the worst-case performance impact? Add Comment B I S Submit Review
  102. Mine @kevin_j_m Alluvial Deposit Active Search History Share Communal Knowledge

    rails dependent options
  103. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails dependent options Active Record Associations - Ruby on Rails Guides guides.rubyonrails.org Rails Dependent Destroy dev.to Rails 6.1 adds support for destroying in background blog.saeloun.com
  104. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Share

    Communal Knowledge rails dependent options Active Record Associations - Ruby on Rails Guides guides.rubyonrails.org Rails Dependent Destroy dev.to Rails 6.1 adds support for destroying in background blog.saeloun.com
  105. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps we start with using `destroy_all` and benchmark the worst-case performance impact? Add Comment B I S Submit Review
  106. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps a middle ground will be using `destroy_all` and changing the comments association to the `:destroy_async` option? We may need to do some benchmarking to test. Add Comment B I S Submit Review
  107. @kevin_j_m Share Communal Knowledge 1 2 3 class SearchHistory def

    self.clear Query.delete_all `delete_all` is a great choice for performance. I’m concerned, because this doesn’t honor `:dependent` rules, that it won’t delete associated records (like comments). Perhaps a middle ground will be using `destroy_all` and changing the comments association to the `:destroy_async` option? We may need to do some benchmarking to test. Add Comment B I S Submit Review
  108. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Share

    Communal Knowledge 3 rails delete_all callbacks Technical details May 18, 2022 11:12 AM
  109. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Share

    Communal Knowledge 3 rails delete_all callbacks rails delete_all vs destroy_all Introduce alternative Technical details May 18, 2022 11:12 AM May 18, 2022 11:15 AM
  110. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Share

    Communal Knowledge 3 rails delete_all callbacks rails delete_all vs destroy_all Introduce alternative Technical details rails dependent options Look at what I learned! May 18, 2022 11:12 AM May 18, 2022 11:15 AM May 18, 2022 11:21 AM
  111. Mine @kevin_j_m Alluvial Deposit Active Search History Search Experience Why

    Search?
  112. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    Experience 4 Solve Direct Problems Recall Details Revisit Assumptions Share Communal Knowledge
  113. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    Experience 4 Solve Direct Problems Recall Details Revisit Assumptions Share Communal Knowledge Accumulate experience
  114. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    Experience 4 Solve Direct Problems Recall Details Revisit Assumptions Share Communal Knowledge Accumulate experience Utilize experience
  115. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    Experience 4 Solve Direct Problems Recall Details Revisit Assumptions Share Communal Knowledge Accumulate experience Utilize experience Expand experience
  116. @kevin_j_m Alluvial Deposit Active Search History Search History Searches: Search

    Experience 4 Solve Direct Problems Recall Details Revisit Assumptions Share Communal Knowledge Accumulate experience Utilize experience Expand experience Preserve experience
  117. Mine @kevin_j_m Alluvial Deposit Active Search History Recall Details Presentation

    Resources
  118. @kevin_j_m 1 2 3 Alluvial Deposit Active Search History Recall

    Details Presentation Resources Browser History Confessional kevinjmurphy.com/browser-history Questions? Hallway Track @kevin_j_m / Twitter twitter.com
  119. @kevin_j_m