I remember a couple months after ChatGPT came out I was in a 1-1 with a coworker who hadn’t really played around with it much. I was very much toying around with it and was surprised at how good at stuff it was. I wanted to show him it was for real, he was skeptical, so over a half hour we had it make a bee and a flower buzz around in d3, copying and pasting between jsfiddle and ChatGPT. By the end of it, we had a nice animation and were both throughly surprised that the computers could code so well now.
I have had a similar notion, around the same time, with tui's and strace in particular. Lots of experiments, never quite good enough to publish or try to popularize. Something I've found in the last few years though, and especially the last six months, is that the impulse to make a better tui has died for me. Claude et al are going to wield these tools via cli far better than I can via tui. The built in visualization is nice for sure in tui, an embodied perspective on how to investigate something, however Claude can make a custom one for me in the moment within a few minutes. My impulse is to throw Claude at the issue with the bare linux toolbox while I do other things, not hand craft better tools that I don't have much motivation to use right now.
A craftsman's pride is an industrialist's nightmare! Software has been transitioning from a craft into an industrial process for the last two decades or so, and the software craftsmen of all stripes understandably do not like this!
> Software has been transitioning from a craft into an industrial process for the last two decades or so
This seems like a good insight and it feels true to me as well.
My guess is the absolute number of people who treat it like a "craft" is higher than 20 years ago, but as a fraction of all developers it has shrunk dramatically.
I've been meaning to write down my thoughts about software explicitly not being a craft for many years now and life keeps getting in the way. It's a direct response to the Etsy engineering blog, "Code As Craft". I agree that there are more code craftsmen in general than before, but by percentage there's way more software engineers. Engineering best practices to me are in many ways about robbing coding and software from the mystique of craftsmanship and turning it into a repeatable industrial process that isn't inhumane per se but doesn't depend on any particular person to make it work.
I am not joking when I say that software craftsmen lost the war when tabs vs spaces was obviated as a point of contention by CI enforced formatting and linting around broader community standards.
Very much agreed. Something specific that has helped me a lot (beyond just automatic formatting, linting and testing) was putting a hard fail on any file with more than 1500 lines or so, with an allowlist for specific files with specific reasons for their length. I realized the agents were squirreling away code without wanting to do any sort of refactor. Every time one of these rat's nests has turned up, the codebase has been much improved with a small refactor, to the point it doesn't feel like such a pile of slop anymore.
Matters of taste. I don't mind bigger files where it makes sense, and sometimes for the nature of the domain, it is nice to have more things in one file. As well, they write so many comments that 200 lines doesn't feel right to me.
I've been working on a newish variant of Sudoku called Binku. It combines the traditional Sudoku rules and adds the rules from a game called Binario/Takuzu (with 1-4 as one color and 5-8 as the other color).
It's been well received by the (very kind!) Sudoku/puzzle communities, so I'm working on throwing a nice interface on it that fits the rules a bit better. I've found about five other examples of others doing a variation of this ruleset before in one way or another, and it's been fun trying to see how hard/deep I can get this puzzle to go.
My party trick is meeting everyone in a room once and then raffling off their names a half hour later. If I was really trying, I can remember them all after a week or a month. Sometimes, I really can try and the name will come back to me after a few minutes. It's magic to some, which is true in that most magic is just lots of intense preparation and practice. So, here's all the tricks I have developed.
First, you need to put yourself in situations where you can practice learning and remembering people's names. At the start of college, I had read How to Win Friends & Influence people and it directly influenced me to try and learn how to remember people's names. This was a very good environment for this, I was constantly meeting people, and wouldn't it be nice if I made a good impression on them! Conversely, hard to practice the skill if you aren't meeting people often. It's also not a permanent skill for me, and if I fall into a routine without meeting many new people, then it's not as easy, but thankfully still comes back soon after.
The next thing was that I wasn't trying to remember somebody's name, I was habitually checking during the initial conversation to see if I had forgotten it. Depending on the culture you are in, you have about 15 minutes after meeting someone to ask them their name again, as almost certainly they have forgotten yours, people are not good at this. It's an easy way to indicate that you are interested in continuing to know them, it's social, polite and even charming at times, as why else would you want to know their name if you didn't want to contact them in the future because they're good people? So a few minutes, then ten minutes, then a half hour, you check if you know it, and ask if you don't. That's easier to remember for me, than to remember somebody's specific name.
I have kept a daily journal for most of my adult life, and it's more or less write only, I don't often go back and read it, and often cannot, my handwriting is so bad. But it's helpful on days when I need to write things out, and it's another useful habit in learning to remember names. At the end of the days when I was really training this skill, I made myself write down the names of everyone I had met that day. This was often difficult, and I remember getting headaches doing it at times, trying to write down the names of 20 or 30 people at a time. However, it helped set the expectation that I would remember everyone's names, and that reinforced the behaviors.
I did find that I developed chunking of names for lack of a better term. I would remember names in order of where I met them and maybe even which part of a room I was in. Not unlike a mind palace, but not something I really tried to do consciously. Just the idea of remembering I met Grace, Alice and Bob in that order at this party.
After that, just try and do your best for a couple months and it will improve without a doubt. People tell me they are bad at remembering names, and I ask them honestly, how hard do you try to remember them? Even a little bit of effort goes a very long way here.
What I will say is that I have difficulty learning somebody's name in two specific scenarios, beyond it being a bit harder as I get into my thirties now. If I am on zoom, it does not work at all the same. Their names are right there and so I never really feel the need to learn it and I can feel that I don't really know it. The second is that if I have to learn the name at the same as learning that it is a specific persons name, then I struggle with it. That is to say, if it's a name that is foreign to me, it's harder for me to remember, and so I have a habit of asking them to say it again right off the bat. I'm living in a different country now than before, and I can tell that I've gotten more used to the names and language with the time as it is easier for me to remember most of the people's names now. The trickiest ones for me at times are not putting together names that sound very similar together mentally but are in fact spelled and pronounced differently.
With that, that's all my tricks. I am pretty happy with it and it's served me pretty well over the years. I never turned into one of those freaks with the excel spreadsheets full of names and birthdays though ;) That's a step beyond me, and I'm just not socially diligent enough to keep that up long term yet. Good luck!
He is not a trustworthy negotiating partner. This is a real estate developers approach to deals - they are only selling you a condo once, so they are going to screw you as badly as they can while still making the sale. They never plan to do business with you again.
Perversely, I’m not even sure that US seizing foreign owned gold would crash the gold market. Remember prices are set by incremental sales, not total held. So there would likely be a rush to buy gold domiciled outside the US, creating upwards price pressure if only temporary.
Sure he might want to do that, but I think his behavior shows he's still beholden to the markets to a large degree. A lot of his (self?) image is tied into 'economic performance', rightly or wrongly.
And despite the meme that GOP is better for stock market & that Trump is obsessed with it - its only up 10% since inauguration vs 17% this far into Biden presidency.
And he seems to be trying to crash it each spring (Tariffs, Iran).. looking forward to next season.
The market is not stupid enough to ignore what he does after hours, it just blunts the knee jerk reaction by a few hours.
>Many of the solutions to these problems require money – running more buses, improving stop amenities, or upgrading signals – or the political will to take away street space for busways and transit lanes. But stop balancing can have a meaningful impact on these issues for a fraction of the price.
To me, this exemplifies a type of thinking that is endemic to policymakers in the US. We can tinker at the edges, we can use computers to optimize what we have, but the idea of using money and political will to change anything at all in a meaningful way is anathema, beyond the pale. Giving up before even getting started. Sure, optimize away, but don't expect me to be inspired by pushing papers around.
That level of risk aversion has been burned into policymakers, especially at the local level. Wasting taxpayer money by letting an inefficient system continue to degrade makes less news than doing so by investing in a risk that failed, and gets a lot fewer people screaming at you in public and sending you death threats.
Yes! "We tried nothing and we're all out of ideas" is not inspiring! Mamdani threw cash at the problem of snow on the streets and now, huh, suddenly there's not so much snow on the streets of NYC compared to previous blizzards, who would have thought.
The issue is that all money-throwing needs to be balanced by careful thought. This cycle the money-throwing at snow plowing worked. Next cycle, it will not be as effective, as more people who want to "game" the rewards will enter the equation. So every cycle, along with money, some thought will need to go into improving the system or coming up with alternate solutions.
I don't think that is the issue. This article and your comment advocates that in lieu of more money, we throw more thought at it, in the name of balance. Weak! Put some thought into preventing the gaming of the system, yes, but keep the money flowing to getting the work done, not overthinking how to do the work.
A large chunk of problems faced by regular Americans can be solved by money equivalent to a rounding error compared to how much we spend on military, private health subsidies, interest payments, corporate benefits. Yet the "who will pay for it??" narrative never comes up when talking about any of these, only school lunches and buses.
I'm not a chess engine guy, but I've talked to some, and, from what I recall, there is a very interesting difference between an engine like Leela Chess Zero (lc0) and Stockfish. Stockfish internally calculates in centipawns while lc0 calculates in WDL's. Stockfish has a model they use that converts their centipawn calculation to WDL's, but it's not _really_ WDL of the position, it's just their estimate of it according to a probabilistic model. Same in reverse applies to lc0. Why I find this interesting is that it shows how they come from different generations, with Stockfish representing the old deterministic style with deep search, and lc0 being directly inspired by Alpha Zero and the new generation of engines based on neural nets. Stockfish has by now adopted the best of both worlds (deep search with a small neural net) and is the better for it, but I still think the developers of both engines banter over who is really producing the True WDL numbers for a given position.
For my part, I find that WDL is more amendable to interpretation. Being up 5 pawns worth of material sort of makes sense, but being told you have a 95% chance of winning makes more sense to me at first blush.
To your last point, the centipawns thing doesn't make a whole lot of sense from an interpretation perspective because it is so shallow. WDL can give you much more insight into how tame or chaotic things are. A 1 pawn evaluated advantage with a 95% chance to win is wildly different from a similar evaluation and a 50% chance to win. The first position likely has an obvious tactic that leads to a win, the latter may require perfect play for 15 moves that only a computer can calculate.
Also, from a computer perspective, a >= 1 pawn is usually sufficient for a computer to win 100% of the time so it's not really interesting and says very little about whether a person could win 100% of the time.
Yep, exactly. I spent a lot of time trying to figure out better ways for interpreting the evaluations of engines for https://www.schachzeit.com/en/openings/barnes-opening-with-d... and I ended up liking WDL much better than centipawns. A blunder defined in terms of decreasing your chance of winning by such and such percentage is, to me, a much better definition than a blunder losing such and such material. What does that mean? It makes sense to me now, but it took a long while.
Relatedly, there is an interesting thing that lc0 has been doing as well, where it takes the contempt concept even further, and can beat you with queens odd. https://lczero.org/blog/2024/12/the-leela-piece-odds-challen... It assumes it is better than you and that it shouldn't just give up because you might be up a knight, rook or even queen.
If there is a 15 move sequence that leads to a guaranteed win, stockfish would not call it a 1 pawn advantage (given the sufficient calculation time) instead calling it a won position.
I think you may be mistaking your understanding of stockfish as shallow in that regard.
Where the big differences might emerge is in strategic mid game positions without any clear tactics or forcing moves. There lc0 can somehow "feel" that a position seems better.
It's always made as much sense to me as being up or down money in Monopoly, or points in basketball. Stating the W/L value of a position feels like an weird mixing of the present and future to me. Of course the centipawn value holds an implicit prediction of the future, but the indirection makes it more palatable.
I learned chess when I was 5, and didnt have a chess computer in the first like 5 years and by then I have progressed quite far.. so i cannot really tell
Makes sense. I started learning how to play Chess when I was ~30 and my tutors were just chess engines, game reviews on chess.com and whatever books I found interesting enough to get through. I have fun, and that's all I'll ever have, no titles or anything. The centipawn stuff makes sense now, but it took a while.
reply