The few middle-class housing efforts lead to donut-hole problems (e.g. you are allowed to live here if you make less than $140k, but one dollar over and you’re back with impossibly high rents) and outright abuse (e.g. “It’s not me making $400k, that’s my LLC.”) Bonus 3/2

I suspect many don’t understand how much wealth is necessary to comfortably raise a family in NYC with minimal risk. Most couples making $250,000 cannot raise family without significant sacrifices to either their livelihood and/or longterm financial stability. 2/2

New York City has become family hostile unless you are fortunate enough to either luck into a situation and/or be exceedingly wealthy (or be able to absorb a ton of risk/debt.) 1/2

Siri went been 2 for 2 on these sports questions:

How tall is Joe Montana? (6’ 2”)

”Who is the University of Houston football coach?” (Major Applewhite)

While not much, I was pleasantly surprised.

Let’s see if this WordPress plug-in to post to Twitter works.

I was feeling particularly tired and unmotivated this morning, but then I wrote some stupid stuff on the internet and now I feel energized. It’s amazing what even a tiny amount of creative time can do.

Capturing Responses from Dialogs using MacOS JavaScript for Automation

I had to make my first dialog using MacOS’s JavaScript for Automation, and quickly ran into the question of how to capture its response. Take this example:

var choice = app.chooseFromList(["a","b","c","d"], {
    withTitle:"Hey you",
    withPrompt:"Select something",
    okButtonName:"Do It",
    cancelButton:"Spoilsport"
});

In JavaScript this would involve using either handler, something like:

choice.onSelect = function(event) {...}

Or it would involve a listener like:

choice.addEventListener("select", function(event){...});

In both cases, it’s still unclear where on the event I would get the response to tell me that a selection happened or that the dialog was cancelled. On a lark, I tried just querying my variable for the dialog (“choice” in this case), and found that the result was available directly from there. The resulting working code:

if(choice){
    response = choice;
} else {
    response = "user cancelled";
}

This syntax for what is ultimately asynchronous input is a bit crazy for any longtime JavaScript web programmer like myself. That said, I love the simplicity, and suspect that it’s more intuitive for someone without a history web programming.

I understand why many other fans of the NFL don’t like preseason. It’s a series of sloppy and ultimately meaningless games that aren’t even any real indicator of how good a team actually is. That said, one aspect of preseason I do enjoy is watching long shots make the team.