Threads for hiredman

  1. 1
    1. Get a data store that supports compare-and-set on a single row/document. Any acid database will do, many non-acid databases will do that as well (dynamodb, dunno what google cloud has)
    2. Define a mapping like (old_state, input) => new_state (define a state machine), where the inputs are the messages on the queue and webhook responses.
    3. every user gets a row in the datastore holding their state value.
    4. on the queue processors pull from the queue, look up the user state, for the given input and state find the new state, compare-and-set the users state to the new state
    5. on the webhook processors receive a webhook request, look up the user state, for the given input and state find the new state, compare-and-set the users state to the new state

    The only tricky thing is in defining the state machine almost every state will be able to accept a webhook response because they come in asynchronously.

    edit: and of course, if the compare-and-sets fail, do the usual thing and loop, read the new state, and cas again

    1. 2

      I haven’t seen the talk mentioned in this post, but this post and the linked notes the author of the post made while listening to the talk lead me to conclude that it would have made me angry. And instead of actually listening to the talk I have chosen to fly off the handle a little. I am sure I have missed something or misunderstood something, and I just plain wrong. Luckily the internet will correct me.

      This is the same form vs. function debate that you see expressed in all the technological arts at least since the Victorian era. To see it handled without nuance, and without respect for both approaches is upsetting. You could argue that a ten minute talk doesn’t give space for nuance, and my reply would be then don’t give talks on nuanced subjects in 10 minutes.

      I happen to hate the forms I encounter in most tech products and many open source projects, so to me the world of forms is tainted. To others I am sure this is evidence that we don’t prioritize the forms enough(This view point must exist, but I just cannot imagine it. Nothing seems to get you on a PMs shit list faster than prioritizing function over form).

      The other thing is my programming work broadly breaks down in to two broad areas: 1. Work for hire. 2. Work for fun.

      When I am working for someone, then of course they have final say on priorities, organization, what have you. If you want you can hire me and tell me what to do.

      When I am working for fun I will do as I like, and resent anyone telling me to focus on something else, or making others feel bad for spending their leisure time on idle notions that they enjoy. Someone is composing a sonnet somewhere, should they stop because no one will ever read it? Because there is no market fit? Let it go because there is no app for that? Some people have a sonnet shaped hole to fill. My hole is process calculi shaped.

      And a third thing, the idea that tools don’t matter more than what you build with them is ludicrous. Would it make sense to tell a painter that brushes don’t matter, they should just focus on how their paintings are lit when displayed in a gallery? I have been, in fits and starts, learning to make wooden furniture by hand. This has caused me to start collecting various hand tools: chisels, planes, saws, etc. So far, I doubt any single piece of furniture I have made could re-coupe the cost of the tools used to make it. But expecting a single item to pay for a set of tools is crazy, it has never been that way. A good set of tools can be used over and over again on many projects and will improve every project.

      The vast majority of programmers now working will work on multiple projects, most likely for multiple different companies during the span of their careers. A good metaphorical toolbox will pay dividends because they can just hoist it on to their shoulder and move to the next job with it. Projects come and go, jobs come and go, a good tool is a family heirloom, and have been since the stone axe.

      Most programmers are going to be working for a company, the company has some artifact, some thing it makes and rents out or sells or whatever, but programmers are not making money off these artifacts. They are making money off their skill with the metaphorical tools of the trade.

      1. 1

        I hate chat ops so much. The last company I was working at had a “devops” team that started adding more and more bots to their irc channel, until you couldn’t get a hold of a real person in the channel. They then decided irc was too noisy and ran away to slack, so we could not get a hold of them using irc, which other teams were all using.

        1. 1

          Hiredman, we hear you.When done wrong, it can be pretty terrible.

        1. 1

 doesn’t resolve for me using google’s dns servers. I tried to look it up using some online dns tools, and none of them seem to find an A, CNAME, or AAAA record for

          Edit: works on my phone though, so I must just be doing something wrong

          1. 1

            Good catch, thanks for that!

   should work as intended.

          1. 3

            I hate that this made it to the front page of a news aggregator, it is using the transient interfaces without regard for their intended semantics, just horrible. everyone please take a moment to remind yourself to read the docs. in this case the transient docs ( are short and sweet, if anything they lean super hard on emphasizing the semantics over the mechanics of actual use or how you would create your own transients.