ahipple's comments

ahipple | 11 months ago | on: The Real Book (2021)

Anybody who's worked with it for any length of time knows that the charts contained are good enough for jam session purposes but either contain inaccuracies when compared to the canonical versions of songs or may have been based on the "wrong" (according to some) canonical versions. Working this out means developing your ears and listening both to the original recordings and to the musicians you're playing with in a given situation. Many people end up in a place where they're just using their ears and memory to skip the book entirely, which in some situations is an essential skill.

Most level-headed people I think regard the book as a useful tool, a step in the growth journey. As egos and insecurities enter the mix you'll occasionally find somebody who'll proclaim that the Real Book is purely a crutch and you should start and end with the ear-training bits or you're "doing it wrong".

ahipple | 2 years ago | on: Consumer Reports finds 'widespread' presence of plastics in food

Most canned foods are heated as part of the canning process, aren't they? There are a handful of things that intentionally contain live cultures -- yogurts, some sauerkrauts & similar -- but otherwise I'd expect almost any canned food to have been packed hot or heated in the container during canning in order to kill food-spoiling organisms.

ahipple | 2 years ago | on: How to burnout a software engineer, in 3 easy steps

    "Nothing gets sold until something gets built"
I suspect I'm not alone in saying this, but having started my "tech" career in marketing/eCommerce agencies, I have _definitely_ worked in organizations where the sales team would sell absolutely anything they could get somebody to agree to buy -- fully ignorant of whether it had been (or even COULD be) built.

ahipple | 2 years ago | on: Svelte is surprisingly easy to learn

Sure -- I did run that code in a JS REPL and saw that it invoked the block immediately, but that isn't necessarily what I want if I'm writing reactive code. I then tried typing `break $` and `continue $` and got SyntaxErrors for my trouble, confirming my hypothesis that this couldn't be plain JavaScript of the sort I was familiar with.

> It's invoked whenever a named variable that is mentioned in the block is explicitly assigned to.

This makes sense in the sense that it's a contract that I can accept and use, but it does imply the existence of a parsing pipeline & runtime of unknown (to me) complexity & capabilities -- exactly the sort of thing a prospective user of the framework would need to learn about sooner or later.

ahipple | 2 years ago | on: Svelte is surprisingly easy to learn

> It doesn't throw a bunch of alien syntax at you, expecting you to decipher it like an ancient scroll

Sounds promising, but the first examples contrasts a React `useEffect` hook (a simple function call, into which you pass a callback and a dependency array) with

    <script>
        $: {
            console.log("Count Changed!", count)
        }
    </script>
    
    <!-- html -->
Which prompted in me roughly these questions:

- Is this actually just JavaScript?

- Oh, is `$` a label? [I googled this to confirm it is]

- I thought JavaScript didn't have a `goto` statement? [I googled this to confirm it doesn't]

- How does this ever get invoked? [I still don't know the answer to this question -- MDN says that labels can only be used with `break` and `continue` statements]

- Does it get invoked only when `count` changes?

- If so, how?

- If not, how do I specify the dependencies?

It might 'just work', but it's also not 'just JavaScript'.

ahipple | 3 years ago | on: When coal first arrived, Americans said 'no thanks'

One could just as easily say that "[foot] traffic flow is more important than being able to [drive] anywhere you want", and in some locales that attitude may serve to benefit more people than the inverse. It's not a given that cars must be the default mode of transportation, but the idea that this _is_ a given is ingrained in the public conversation about infrastructure due to precisely the sort of propaganda the original commenter in this thread was talking about.

ahipple | 3 years ago | on: Show HN: I built an interactive course that helps you learn Vim faster

> Do vim users know if there was anything like Select next occurrence in vim?

As noted in a sibling, you can press * (shift+8) in normal mode with your cursor over a word to find the next instance of the word. This also updates the search pattern so you can use n and shift+n to navigate forward and back between matches.

If you combine this with other bits of the vim "grammar" (which I do think encourages a kind of feature discovery, although I agree there's a large learning "hump" to get over to take advantage of it), you can use something like cgn to change the currently-focused search match, n to navigate to the next search match, and . to replay the command.

So while it's not exactly the same as multi-cursor, you can achieve something very similar (and just as fast) with the following sequence:

  1. In normal mode, place the cursor over the symbol you wish to edit
  2. Press key: \* (read: "find the next occurrence of the current symbol and update the search pattern to be that string")
  3. Press keys: cgn (read: "change the search match under the cursor")
  4. Type the new symbol
  5. Press ESC to return to normal mode
  6. Press keys: n. (read "find the next occurrence of the search pattern [set in step 2] and repeat the last command [the edit from steps 3-5]")
  7. Repeat 6 until all symbols are replaced
Or, in raw keystrokes, I might replace all six "foo"s in a document with "bar" by typing the following sequence of characters (having placed the cursor over a "foo"): *cgnbar<ESC>n.n.n.n.n.

It may seem complex compared to something like multi-cursor editing, but the nice thing here is that there are concepts here that are extensible beyond the scope of that specific edit, and can yield similar "speedy" workflows but on a much wider set of tasks.

- c[something] is a pattern that means "change [the given region]", so you could construct similar commands with different regions (`ciw` to change inside the current word, `ca{` to change the current curly-bracketed region (inclusive), and so on)

- [something]gn is a pattern that means "[do something] to the next search match", so you could delete it with `dgn`.

- . can replay many types of commands, so if I have a more complex sequence of edits to apply starting at a search match, I could do that too (not just simply replacing the symbol).

It's a very powerful paradigm.

ahipple | 3 years ago | on: The Colorado Safety Stop is the law of the land

I've seen fairly commonly in developing suburban scenarios something like "a through street with a new -- but very low-traffic -- intersection with a cross street". People are accustomed to driving fast on the through street, increasing the risks of the conflict at the intersection, but 99% of the time there is no conflict.

The easy solution that's often chosen is to add a stop sign to these intersections, but this tends to result in largely-unnecessary stopping and starting, which then tends to increase the number of conflicts (because the traffic on the through street tends to congest at the new stop rather than passing quickly through it).

A better solution would address the nature of the risk -- speed -- more directly. Traffic calming techniques like narrowing the road, or deflection (manufactured bends in the road or speed humps) would improve outcomes for all road users more than a stop sign that creates congestion (and therefore conflict).

ahipple | 9 years ago | on: Time for the ‘teenage coding god’ meme to die

Given that he started publishing games before he was 20 and had produced Commander Keen, Wolfenstein, and a couple of Dooms before he was 25, I'd guess he was well on his way in his teens.

Not to say that success correlates with skills, I suppose, but he's fairly well-regarded as an innovator from an early age. Odd choice of example from the article's author.

page 1