Skip to content

Instantly share code, notes, and snippets.

View josh-works's full-sized avatar

Josh Thompson josh-works

View GitHub Profile
@josh-works
josh-works / both-affordable-and-profitable.md
Last active April 11, 2023 20:02
Affordable (to buy/rent) and profitable (to build): uncovering unicorns in housing/development policy in the USA today.
View both-affordable-and-profitable.md

Thesis: Housing can be affordable to the purchaser and profitable to the developer. For example, a finished studio apartment could be available at $700/mo, or a three-bed at $1300/mo, and the developer who builds it will consider the ROI on the project/investment to be exceptional.

The need to do something tends to trump the need to understand what needs to be done. And without data, anyone who does anything is free to claim success.

  • Angus Deaton, The Great Escape

Housing, broadly, is often considered a political issue, to be fixed by politicians.

I'll be quoating broadly from a recent seminal book by Urban Economist Alain Bertaud, specifically from Chapter 6: Affordability (p 219).

@josh-works
josh-works / flow-school-notes.md
Last active May 21, 2021 18:14
Ongoing course notes for Idahosa's Flow School
View flow-school-notes.md
@josh-works
josh-works / cannot-get-4k-and-and-60hz-at-same-time.md
Last active March 8, 2021 06:35
I'm making a plea for help from others for resolving my display problems. This is basically what I would write in StackOverflow, if I knew which StackOverflow topic to use. Any help is much appreciated!
View cannot-get-4k-and-and-60hz-at-same-time.md

currently trying: USB-C->DisplayPort cord with SwitchResX to "force" the display up to a reasonable level

My home office setup has suffered some problems of late that are driving me insane.

The most annoying is my wired mouse. I use a wired Redragon Mammoth hooked up to my USB-C hub, and it started giving me problems when dragging anything. Like... a file, a screenshot, a window, it would rapidly (dozens of times a second) "drop" what I was dragging and then pick it up again.

This had extremely unpredictable effects, and was highly disruptive to my workflow.

I don't think my mouse is failing (my bluetooth mouse works fine, and for a variety of reasons I think the problem is my monitor is running at 30hz, not 60. more on that later.)

@josh-works
josh-works / process-over-everything.md
Last active April 14, 2022 01:35
Process & Workflow for solving programming challenges, Turing
View process-over-everything.md

"Process" is greater than everything

Having a good process is how you go about doing anything that takes a long time and is hard. A good process can be a faithful tool to help you learn dozens of things, now, and five years from now. It's flexible and it's powerful.

One of the biggest pieces of "having a good process" is "taking plentiful notes, easily and quickly"


I won't try to convince you. Here's Arique, currently in Mod 1, on how she's made use of this general process:

@josh-works
josh-works / exceptional_values.rb
Last active February 10, 2021 18:07
test, and the code that makes the test pass, to understand whole values and exceptional values, from Avdi Grim's https://avdi.codes/courses/moom/, based on https://josh.works/primative-obsession-and-exceptional-values
View exceptional_values.rb
class Object
def exceptional?
false
end
end
Course = Struct.new(:name, :duration) do
def duration=(new_duration)
self[:duration] = Duration(new_duration)
end
@josh-works
josh-works / benchmark_double_inject.md
Last active April 13, 2018 17:45
ruby, benchmarking, double_inject
View benchmark_double_inject.md

Double inject. What does it mean?

i want to know how long it takes to do some stuff. I've got some code like this:

def count_stuff(list)
  list.inject([]) do |results, item|
    results << get_results_from_something_else(values)
  end.flatten.uniq
View url_validator.md

I needed a URL validator - it needed to check that URL's had HTTP or HTTPS at the beginning. I initially wrote a "before save" action, but didn't like it cluttering up my model. I found a reference to basically "monkey patching" Rail's default Validator class, so that's what I did!

# concerns/url_validator.rb
require 'uri'

class UrlValidator < ActiveModel::Validator

  def validate(record)
    if record.url?
View on_learning.md

On Learning

topics: {
      DEEP WORK:
        protect and cultivate (limited) attention,
        ear plugs,
        skeptical of music,
        examine your own process,
 downtime,
View better_questions.md
View on_cleaner_controllers.md

On cleaner controllers

A few days ago, I worked on a project that was mostly about serving up basic store data (modeled after Etsy) to an API.

We had a few dozen end-points, and all responses were in JSON.

Most of the action happened inside of our controllers, and as you might imagine, our routes.rb file was bananas.

One of the instructors made an exceptionally simple suggestion, I was embarrassed to not have seen it.