41554 blogs · [ { "id": "01a08791-787d-711f-9e80-02f9a748de67", "title": "Exploring source code via Griddler and Griddler-Mailgun", "url": "https://josh.works/exploring-source-code-via-griddler-and-griddler-mailgun", "published_at": "2019-05-31T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9a79d065f", "title": "Turing Prep Chapter 3: Moar Mythical Creatures", "url": "https://josh.works/turing-backend-prep-mythical-creatures", "published_at": "2019-05-31T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9a79ea8b4", "title": "Turing Prep appendix: Troubleshooting Errors", "url": "https://josh.works/turing-backend-prep-troubleshooting-guide", "published_at": "2019-05-19T14:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9a87967d3", "title": "Turing Prep Chapter 2: Run your first tests (and make them pass)", "url": "https://josh.works/turing-backend-prep-02-first-tests-and-making-them-pass", "published_at": "2019-05-19T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9a8d4dfc4", "title": "Turing Prep Chapter 1: Make Mod 1 Easier Than It Otherwise Would Be", "url": "https://josh.works/turing-backend-prep-01-intro", "published_at": "2019-05-09T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9a9a78dbc", "title": "2018 In Review & Thoughts on 2019", "url": "https://josh.works/2018-review", "published_at": "2019-05-05T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9aa054eb8", "title": "Troubleshooting Chinese Character Sets in MySQL", "url": "https://josh.works/troubleshooting-chinese-character-sets-in-mysql", "published_at": "2019-04-21T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9aa14d2a7", "title": "VCR's debug_logger and `git diff`", "url": "https://josh.works/vcr-debug-logger-and-git-diff", "published_at": "2019-04-19T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9aa7ddfb3", "title": "Climbing in Cuba, 2019", "url": "https://josh.works/climbing-in-cuba-2019", "published_at": "2019-04-12T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9ab658e9e", "title": "Some Lessons Learned While Preparing for Two Technical Talks", "url": "https://josh.works/lessons-learned-from-giving-technical-talks", "published_at": "2019-03-19T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9ac22adff", "title": "HTTParty and to_json", "url": "https://josh.works/httparty-and-to-json", "published_at": "2019-03-12T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9acaae0e1", "title": "Job Hunting Recommendations for Early-Career Software Developers", "url": "https://josh.works/remote-job-resources", "published_at": "2019-02-26T11:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9acda2343", "title": "2018 Reading Review & Recommendations", "url": "https://josh.works/recommended-books-from-2018", "published_at": "2019-02-25T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9acf12204", "title": "Pry-ing into a Stack Trace", "url": "https://josh.works/prying-into-a-stack-trace", "published_at": "2019-02-22T12:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9ad9e768e", "title": "How To Procfile: Run Just a Single Process", "url": "https://josh.works/procfile-run-a-single-process", "published_at": "2019-02-21T08:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9ae9cd1ab", "title": "Whole Messages in Slack", "url": "https://josh.works/whole-messages-in-slack", "published_at": "2019-02-20T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9af08e0c1", "title": "Blood Flow Restriction with Tyler", "url": "https://josh.works/blood-flow-restriction-for-climbing", "published_at": "2019-02-16T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9af85a18d", "title": "The Complete Guide to Rails Performance: basic setup", "url": "https://josh.works/rails_performance_course_basic_setup", "published_at": "2018-11-29T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b04c8860", "title": "Growing in your first software development job", "url": "https://josh.works/growing-in-first-software-development-job", "published_at": "2018-11-28T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b1176ebb", "title": "Primitive Obsession & Exceptional Values", "url": "https://josh.works/primative-obsession-and-exceptional-values", "published_at": "2018-10-12T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b1f70486", "title": "`ls` command to show directory contents", "url": "https://josh.works/ls_command_recursively_list_directory_contents", "published_at": "2018-10-03T11:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b266cb04", "title": "Rails Migration: When you can't add a uniqueness constraint because you already have duplicates", "url": "https://josh.works/add_uniqueness_constraint_on_column_with_existing_duplicates", "published_at": "2018-09-28T10:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b3104349", "title": "Sidekiq and Background Jobs for Beginners", "url": "https://josh.works/sidekiq-and-background-jobs-in-rails-for-beginners", "published_at": "2018-07-30T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b3420abb", "title": "Mocks & Stubs & Exceptions in Ruby", "url": "https://josh.works/mocks-stubs-exceptions-ruby", "published_at": "2018-05-26T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b380b903", "title": "Recommended Reading", "url": "https://josh.works/recommended-reading-original-list", "published_at": "2018-05-17T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b3df334f", "title": "Pry Tips and Tricks", "url": "https://josh.works/pry-tips-and-tricks", "published_at": "2018-05-07T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b3e4b117", "title": "MacOS: Keyboard Shortcut to Toggle Bookmarks Bar in Firefox", "url": "https://josh.works/firefox-toggle-bookmark-bar-keyboard-shortcut", "published_at": "2018-02-15T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b4950dab", "title": "Denver.rb meetup notes", "url": "https://josh.works/denverrb", "published_at": "2018-02-12T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b4daee4d", "title": "Boulder Ruby Group meetup notes", "url": "https://josh.works/boulder_ruby_group", "published_at": "2018-02-10T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b535fcc1", "title": "Testing Rake Tasks in Rails", "url": "https://josh.works/test-rake-tasks-in-rails", "published_at": "2018-02-08T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b598a4f9", "title": "Array divergence in Ruby", "url": "https://josh.works/array-divergence", "published_at": "2018-02-02T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b6386719", "title": "How To Take Back Your Attention On The Internet with uBlock", "url": "https://josh.works/take-back-your-attention", "published_at": "2018-01-21T08:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b66cd5e5", "title": "Recommended books from 2017", "url": "https://josh.works/recommended-books-from-2017", "published_at": "2018-01-15T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b721af3c", "title": "MySQL concatenation and casting", "url": "https://josh.works/mysql-concat-cast", "published_at": "2018-01-13T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b8103808", "title": "2017 In Review & Thoughts on 2018", "url": "https://josh.works/2017-review", "published_at": "2018-01-01T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b882a48b", "title": "My terminal setup", "url": "https://josh.works/terminal-setup", "published_at": "2017-12-26T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b899cd8f", "title": "Cultivate Curiosity, or 'Reasons to be More Childlike'", "url": "https://josh.works/cultivate-curiosity-reasons-to-be-more-childlike", "published_at": "2017-12-25T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b8c01ad5", "title": "Setting up for 'SQL Queries for Mere Mortals'", "url": "https://josh.works/setting-up-sql-queries-for-mere-mortals", "published_at": "2017-12-22T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b930f130", "title": "On Friction", "url": "https://josh.works/on-friction", "published_at": "2017-12-20T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b99f9c68", "title": "Quick Dive into React", "url": "https://josh.works/quick-dive-into-react", "published_at": "2017-10-29T13:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9b9ff3127", "title": "Elixir/Phoenix part deux", "url": "https://josh.works/elixir-phoenix-part-deux", "published_at": "2017-10-28T07:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9baf02adf", "title": "First pass with Elixir/Phoenix", "url": "https://josh.works/first-pass-elixir-phoenix", "published_at": "2017-10-27T07:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bbb6c458", "title": "Blocks and Closures in Ruby", "url": "https://josh.works/blocks_and_closures", "published_at": "2017-09-26T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bc04eea5", "title": "Metaprogramming in Ruby: method_missing", "url": "https://josh.works/metaprogramming-method-missing-01", "published_at": "2017-09-24T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bcd13006", "title": "The How and Why of BlockValue", "url": "https://josh.works/block-value", "published_at": "2017-09-14T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bd6118db", "title": "A Retrospective on Seven Months at Turing", "url": "https://josh.works/turing-retrospective", "published_at": "2017-08-08T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9be5acbb6", "title": "Anki and Memorization with Spaced Repetition Software", "url": "https://josh.works/anki-spaced-repetition-system", "published_at": "2017-06-06T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bf0d2239", "title": "On Learning", "url": "https://josh.works/learning-how-to-learn", "published_at": "2017-06-05T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bf3d7b8a", "title": "Workflow for developers (AKA My current tools)", "url": "https://josh.works/developer-workflow", "published_at": "2017-05-29T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bf5a0cc3", "title": "How to Ask Questions of Experts To Gain More than Just Answers", "url": "https://josh.works/better-questions", "published_at": "2017-05-22T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bfad2a11", "title": "Switching to Jekyll", "url": "https://josh.works/switching-to-jekyll", "published_at": "2017-05-15T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9bfcc0b91", "title": "Finding an Edge", "url": "https://josh.works/finding-an-edge", "published_at": "2017-05-09T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c047d5c3", "title": "On Cleaner Controllers", "url": "https://josh.works/cleaner-controllers", "published_at": "2017-05-09T12:18:52+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c0f26493", "title": "Tour of D3 for Clueless Folk Like Me", "url": "https://josh.works/tour-of-d3", "published_at": "2017-04-19T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c1425a7e", "title": "Playing with the HTTP send/response cycle in Ruby, without Faraday (\"HTTP Yeah You Know Me\" project)", "url": "https://josh.works/playing-with-http-send-response", "published_at": "2017-04-07T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c1724a2b", "title": "Streets in Asheville", "url": "https://josh.works/asheville-streets", "published_at": "2017-02-11T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c216b078", "title": "2016 - Biggest Lesson, Most Dangerous Books", "url": "https://josh.works/2016-most-dangerous-books", "published_at": "2017-01-11T00:00:00+00:00" }, { "id": "01a08791-787d-711f-9e80-02f9c264c13c", "title": "December Review, January Goals", "url": "https://josh.works/december-review-january-goals", "published_at": "2017-01-05T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48a0e10b4", "title": "December 2016 Goals", "url": "https://josh.works/monthly%20evaluation/2016/12/20/december-2016-goals/", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48a8668f7", "title": "November 2016 Review", "url": "https://josh.works/growth/2016/12/14/november-2016-review/", "published_at": "2016-12-14T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48a8ed90a", "title": "Typing for Programmers", "url": "https://josh.works/typing-for-programmers", "published_at": "2016-12-11T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48b56d86b", "title": "November 2016 Goals", "url": "https://josh.works/november-2016-goals", "published_at": "2016-11-09T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48be689e3", "title": "October 2016 Review", "url": "https://josh.works/october-2016-review", "published_at": "2016-11-01T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48c535fa5", "title": "Quitting the shallow for the deep", "url": "https://josh.works/i-quit", "published_at": "2016-10-24T12:18:52+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48ce5d858", "title": "October 2016 Goals", "url": "https://josh.works/monthly%20evaluation/2016/10/19/october-2016-goals/", "published_at": "2016-10-19T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48d9ed13f", "title": "Wrapping my head around local politics 001", "url": "https://josh.works/local%20government/2016/08/24/wrapping-my-head-around-local-politics-001/", "published_at": "2016-08-24T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48e36b750", "title": "Resources for People with Jobs", "url": "https://josh.works/jobs/2016/07/21/be-better-at-your-job/", "published_at": "2016-07-21T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48eae6faf", "title": "How Can You Buy Happiness?", "url": "https://josh.works/money/2016/07/07/can-you-buy-happiness/", "published_at": "2016-07-07T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48ed4913c", "title": "Write Less Say More", "url": "https://josh.works/growth/2016/07/06/write-less-say-more/", "published_at": "2016-07-06T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba48f4a5fd7", "title": "Five Lessons Learned in Buenos Aires", "url": "https://josh.works/travel/2016/07/05/five-lessons-learned-in-buenos-aires/", "published_at": "2016-07-05T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49032a5a8", "title": "Three Android Apps I Use Every Day (and maybe you'll use them too)", "url": "https://josh.works/growth/2016/07/04/three-android-apps-i-use-every-day-and-maybe-youll-use-them-too/", "published_at": "2016-07-04T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba490d29d36", "title": "The Millionaire Next Door", "url": "https://josh.works/books/2016/07/04/the-millionaire-next-door/", "published_at": "2016-07-04T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba4912f7050", "title": "Avoid a car accident with a $3 tool", "url": "https://josh.works/cars/2016/07/04/avoid-a-car-accident-with-a-3-tool/", "published_at": "2016-07-04T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba4913ef3aa", "title": "Ruby Tutorial 001", "url": "https://josh.works/programming/2016/06/23/ruby-tutorial-001/", "published_at": "2016-06-23T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba492325417", "title": "A message for high schoolers", "url": "https://josh.works/college/2016/06/05/a-message-for-high-schoolers/", "published_at": "2016-06-05T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba4931e5930", "title": "12 Lessons Learned While Publishing Something Every Day for a Month", "url": "https://josh.works/growth/2016/06/05/12-lessons-learned-while-publishing-someone-every-day-for-a-month/", "published_at": "2016-06-05T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba493e2eb92", "title": "Customer Success: American Airlines Case Study", "url": "https://josh.works/customer-success-american-airlines-case-study", "published_at": "2016-06-04T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49497aed7", "title": "Success is not support", "url": "https://josh.works/customer%20success/2016/06/03/success-is-not-support/", "published_at": "2016-06-03T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49556b39e", "title": "Gratitude 3x/day", "url": "https://josh.works/growth/2016/06/01/gratitude-3xday/", "published_at": "2016-06-01T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49615852f", "title": "An Intro to Customer Success", "url": "https://josh.works/an-intro-to-customer-success", "published_at": "2016-05-31T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba496c90012", "title": "62 lessons learned after one year of full-time travel", "url": "https://josh.works/62-lessons-learned-after-year-of-full-time-travel", "published_at": "2016-05-30T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba4976fba1a", "title": "On Boldness In Climbing", "url": "https://josh.works/climbing/2016/05/29/on-boldness-in-climbing/", "published_at": "2016-05-29T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba497aa5ff3", "title": "An announcement, and a teaser (for you rock climbers)", "url": "https://josh.works/climbing/2016/05/28/an-announcement-and-a-teaser-for-you-rock-climbers/", "published_at": "2016-05-28T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49827118c", "title": "Social skills are like any other skills", "url": "https://josh.works/growth/2016/05/27/social-skills-are-like-any-other-skills/", "published_at": "2016-05-27T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba498a24f3a", "title": "Career advice for Millenials. (ugh. I hate this title)", "url": "https://josh.works/growth/2016/05/25/career-advice-for-millenials-ugh-i-hate-this-title/", "published_at": "2016-05-25T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba499592fdb", "title": "Who inspires you, and is still alive?", "url": "https://josh.works/growth/2016/05/24/who-inspires-you-and-is-still-alive/", "published_at": "2016-05-24T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba499b7155b", "title": "OK, some new books", "url": "https://josh.works/ok-some-new-books", "published_at": "2016-05-23T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba499e67706", "title": "No New Books", "url": "https://josh.works/no-new-books", "published_at": "2016-05-22T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49adfe840", "title": "Constraints", "url": "https://josh.works/growth/2016/05/21/constraints/", "published_at": "2016-05-21T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49b8fa8a6", "title": "Lay a foundation", "url": "https://josh.works/growth/2016/05/20/lay-a-foundation/", "published_at": "2016-05-20T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49b9e0da6", "title": "The advantage of low friction goals", "url": "https://josh.works/advantage-of-low-friction-goals", "published_at": "2016-05-19T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49c69c023", "title": "Travel somewhere fun. But first get on Scott's email list", "url": "https://josh.works/misc/2016/05/18/scotts-cheap-flights/", "published_at": "2016-05-18T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49ca2f297", "title": "Input metrics vs. Output metrics", "url": "https://josh.works/growth/2016/05/17/input-metrics-vs-output-metrics/", "published_at": "2016-05-17T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49d2ed627", "title": "Give it 30 days", "url": "https://josh.works/growth/2016/05/16/give-it-30-days/", "published_at": "2016-05-16T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49d807e98", "title": "Cheap fix to night-time teeth grinding", "url": "https://josh.works/misc/2016/05/15/fix-night-time-teeth-grinding/", "published_at": "2016-05-15T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49df1777a", "title": "My all-time favorite question to ask people (and why you should ask it too)", "url": "https://josh.works/growth/2016/05/14/my-favorite-question/", "published_at": "2016-05-14T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49e31db77", "title": "How to never accidentally click Twitter's \"Moments\" again (and to block anything else on the internet you don't want to deal with) - with uBlock", "url": "https://josh.works/misc/2016/05/13/how-to-never-accidentally-click-twitters-moments-again-and-to-block-anything-else-on-the-internet-you-dont-want-to-deal-with/", "published_at": "2016-05-13T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49f0892bc", "title": "Find out how much money you've made (in your entire life)", "url": "https://josh.works/find-out-how-much-money-youve-made", "published_at": "2016-05-12T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49f923c99", "title": "The Slight Edge, and why you should read it", "url": "https://josh.works/growth/2016/05/11/the-slight-edge-and-why-you-should-read-it/", "published_at": "2016-05-11T00:00:00+00:00" }, { "id": "01a08791-787e-7010-8e12-fba49fa8bd8c", "title": "Overcome (some) barriers in work with this magic phrase", "url": "https://josh.works/overcome-barriers-in-work-with-this-magic-phrase", "published_at": "2016-05-10T00:00:00+00:00" } ] posts Claim your blog
Back to wonder_er
Blog · corpus.blog/blogs/josh.works/posts

wonder_er

josh.works

2019

2018

2017

2016