HNHacker News
TopNewBestAskShowJobs

_dwt

415 karma · joined June 18, 2020

Consultant, programmer, recovering "real" engineer.

I like sunsets, long walks on the beach, functional programming, type systems, interpreters and compilers, and many other things which don't pay the bills.

blog: https://usethe.computer

submissionscomments
_dwt··on We reduced the cost of building Mastodon at Twitter-scale by 100x
Hmmm, "Rama is programmed entirely with a Java API – no custom languages or DSLs" according to the landing page, but this sure looks like an embedded DSL for dataflow graphs to me - Expr and Ops everywhere. Odd angle to take.
_dwt··on Ask HN: Why do so many assume we’re on the cusp of super-intelligent AI?
It is, though, by the same argument also collectively dumber than the dumbest person who ever lived. No single human moron's brain could accommodate so much misinformation, useless fluff, spurious reasoning, etc. etc. etc.

So I think time will tell. My money is on a sort of regression to the mean: these models will capture the style and "creativity" of the average 2020s Reddit, StackOverflow, etc. user. I can't say I'm terribly excited.

_dwt··on A visual book recommender
Find something on the map that you know you like. Now look around it to see similar (i.e. if you like this, you're likely to like that) books.
_dwt··on Ask HN: AI “white mirror” – what are some inspiring future visions you've seen?
I think most new parents have semi-wished for, like, a life-size cutout of themselves attached to a Roomba that could roll into their nursery at 3am when the baby randomly wakes and make vaguely reassuring noises to soothe them back to sleep. I know I have. But I'm not sure it's wise to enable or encourage this level of parental disengagement.

Anyway, what I really wanted to share is "The Robot and the Baby", by John McCarthy (yeah, the same one): http://jmc.stanford.edu/articles/robotandbaby/robotandbaby.p...

_dwt··on The Derivative of a Regular Type is its Type of One-Hole Contexts (2001) [pdf]
I think lenses/optics have stolen some of zippers' (very localized) thunder in recent years, but I still enjoy finding excuses to use them every once in a while. (OK, so really just a couple Advent of Code problems.)

I have never actually had the wherewithal to go through the whole automatic-derivation-of-zippers thing, but this (https://stackoverflow.com/questions/25554062/zipper-comonads...) StackOverflow Q&A (along with all of Conor McBride's SO answers - compiled at https://personal.cis.strath.ac.uk/conor.mcbride/so-pigworker...) might be of interest in conjunction with the linked paper.

_dwt··on Method Chaining in Pandas: Bad Form or a Recipe for Success?
I had a whole rant queued up on "Pandas and its consequences have been a disaster for the human race" (well, at least for newbie programmers), but I think instead I want to focus on the damn dictionary splats. I just don't get it - it's pure "clever" code in the pejorative Dijkstra sense. It's hard to edit, it's hard to typecheck. Why not pay the very low whitespace tax to give each key/value pair its own longhand line:

  .astype({
    'central_air': bool,
    'ms_subclass': 'uint8',
    ...
  })
Now if, say, ms_subclass and overall_qual need different types, that's an easy diff to read. Ah, but I suppose that wouldn't be as Twitter-friendly.
_dwt··on Ask HN: Am I the only one not caring about GitHub Copilot?
I find the legal and ethical implications more interesting than the technology as it stands. Maybe I just don't do the kind of work it's suited to, but I didn't find it terribly useful when I gave it a go. I had an experience that went "oh wow, that turned out a lot of code fast and it looks pretty good" followed by "oh, it made the exact subtle mistakes everyone makes when they write this kind of thing". No surprise given the nature of ML.

On the other hand, I find myself torn between "information wants to be free and this is one more nail in the coffin of our odd and ahistorical concepts of 'intellectual property' and 'plagiarism'" and "oh great, another way for giant corporations to reap all the benefits from work done by individuals and smaller businesses".

I don't think I'll ever use the thing, and I have ~0 power over the societal implications, so overall - yeah, can't get that exercised over it either.

_dwt··on Six programming languages I’d like to see
That's R (and S/S+ before it), for better or worse.
_dwt··on Data-Oriented Programming: A link in the chain of programming paradigms
What, you’re not persuaded that the concept of immutability popped into existence in the late 2000s with the appearance of Clojure?
_dwt··on I don’t know how to count that low
Oooof, SAS (in the author's dad anecdote). If they get hooked young, it's expensive hell to get them to quit. I'm not sure how that colors by analogy my view of the main point of the article, but it's tempting to reach for: yes, if you get addicted to expensive (and/or proprietary) complexity, you sometimes lose sight of how to build simple solutions to simple problems. I'm not sure that's an argument in favor of the intellectual superiority of those who build the complexity...
_dwt··on We moved from Pony to Rust
I know a little about cars and I'm still confused - I think I just have a very different view of the relative "it factors" between each pair of languages. De gustibus...
_dwt··on If I could bring one thing back to the internet it would be blogs (2020)
From experience, no, but your 5th-least-favorite post may somehow make it to the front page of HN over many more interesting ones, where it will be nitpicked to death by some guy who thinks the solution to the world's problems is XSLT. That can be a tad demotivating.

The content marketing / grind thing - as far as I can tell, those people are born (decanted?) that way. It's a whole other value system.

_dwt··on High Performance Correctly Rounded Math Libraries for 32-Bit Floating Point
Any good resources (or even search term hints) you could recommend on the more modern/async approaches? I’d love to read about them.
_dwt··on Good Design is Imperfect Design, Part 1: Honest Names
Without quibbling about the particular (adding a month) example, I can vouch that this is a great way to help the people for whom the software is being built refine their thinking. I help clients often with inherited/legacy/hacked-together code, often written by non-expert programmers for "odd" platforms (think: Excel VBA macros, which use the spreadsheet itself as the sole data structure). Identifying the awkward implicit concepts in this code, and giving them corresponding awkward names, can help the client recognize places where their tool doesn't map onto their domain knowledge the way they thought it did. As a recent example: "run of same-named tasks when ordered by date, then name" isn't exactly the same concept as "block of time dedicated to a specific task"!
_dwt··on The Dangerous Ideas of “Longtermism” and “Existential Risk”
I am not sure that concern over "AI risk" is fungible with concern over climate change. In my experience, people concerned over superintelligent AI seem to be of a philosophical and cultural orientation which is entirely aware of the risks of climate change and favors some degree of directed action against it. I am not sure, on the other hand, that I could think of a single "climate denier" I've met who would even parse the phrase "AI risk" in the sense used here.

As someone concerned about the "AI risk" of real existing ML systems turning society into a "legibility"-oriented nightmare for real existing humans in the here and now - and not at all concerned that we'll have a general AI that can out-think a human child in the next couple decades - I do share a sense of unease with the religious and eschatological overtones of the "superintelligence" crowd.

However, I find a great deal of irony in the fact that I've heard this exact argument - including a recognition of the religious-doom-prophecy-guilt-trip aspect - from global warming skeptics! I have to admit, when the author concludes with a call to action for the "global North", do they include the developing countries (e.g. China, India) likely to drive the bulk of emissions change over the next few decades? Otherwise, it might almost read as the invocation of a scientific doom prophecy to advance an only-somewhat-related agenda. This association unfortunately polarizes people who might be convinced to take more practical steps in the here-and-now - just as is the case with AI.

_dwt··on The Prosperous Software Consultant (2018)
One great thing about offering training and workshops is that, especially if you can partner with another company to handle the sales, marketing, online platform, etc., online courses built from this material make a great first "product" to start transitioning from a purely service-based (get paid for your time) business to one with some sources of recurring revenue (get paid for work you've already done).
_dwt··on The Prosperous Software Consultant (2018)
"Back in the day", some of us used to deliberately alternate pronouns for these sorts of hypothetical people. The idea was to help nudge people toward perceiving "gender-atypical" occupations/situations/etc. as normal: "The programmer opens her text editor...".

Since then the world has changed quite rapidly when it comes to norms around writing, pronouns, and gender, so perhaps "they" fills the same role for younger writers.

_dwt··on D3 7.0
It's a real pain. I work with lots of "data science" types who are often trying to concurrently learn JavaScript and d3 - often with JS as their first or second programming language. It's difficult enough for an experienced programmer coming back to d3 after a few versions to pick out what's d3 vs. what's Observable - and very difficult to help a relative newbie through the process of turning what's shown in an Observable notebook into something that can run in an ordinary web page.
_dwt··on Replit used legal threats to kill my open-source project
I think that Repl.it can pound sand unless they've got an enforceable non-compete in their intern contract, and that the CEO seems a little unhinged, but it does seem unwise to e-mail them unprompted with this kind of project. Falls under the same general category as "don't talk to the cops".
_dwt··on Microsoft Power Fx – A low-code general purpose programming language
There are so many things I like about this - leaning in to the idea that spreadsheet formulas are a functional programming language, and enhancing that with inferred static types, plain-text persistence, (semi-)structural editing.

And then they go and re-enact Tony Hoare's billion dollar mistake, for no good reason that I can see:

> Some language such as JavaScript uses the concept of an "undefined" value for uninitialized variables or missing property. For simplicity's purpose, we have avoided this concept, treating instances that would be undefined elsewhere as either an error or a blank value. For example, all uninitialized variables start with a blank value. All data types can take on the value of blank.

This is the same spurious "simplicity" seen in Go, and I don't understand the appeal - especially coming from a team that clearly "gets it" when it comes to the importance of expressive types.

_dwt··on ‘What Tech Calls Thinking’ Might Be Something Else
"Disruption is a theodicy of hypercapitalism." Ok, after a minute's reflection, I think I can parse that: just as medieval theologians wrangled with how a just God could permit bad things to happen to good people, and often moved the goalposts by applying circular logic, Silicon Valley encourages us to think of winners and losers in the market as morally justified on the basis of their "disruptive" potential, usually in a post hoc fashion. Maybe?

I had to look up "aperçu", with disappointing result (just say "insight").

The rest of the review just seems to descend into infighting (?) with the author over identity and diversity.

What am I missing? I'll admit to being mildly intrigued only by the mention of Rene Girard in passing.

_dwt··on Rust 1.47
The future is here now, for the last ~week or so, on nightly Rust:

    #![feature(const_generics, const_evaluatable_checked)]

    fn append<T: Copy + Default, const N: usize, const M: usize>(
      xs: &[T; N], ys: &[T; M]) -> [T; N + M] {
        let mut result = [T::default(); N + M];
        result[..N].copy_from_slice(&xs[..]);
        result[N..].copy_from_slice(&ys[..]);
        result
    }

    fn main() {
        let arr = append(&[1i32; 3], &[2i32; 4]);
        dbg!(arr);
    }
_dwt··on Shared salary spreadsheet reveals Microsoft employee earnings for a second year
It seems a bit extreme (and, frankly, dangerous) to give every idiot on Twitter access to salary information on every W-2 employee at every public company. Especially in our current culture of online discourse and with our current norms (or lack thereof) about the line between professional and personal lives and views.
_dwt··on How to Leave Work at Work
Have you ever been able to solve a problem at work that nobody else could, or solve it faster, or cleaner, or more robustly, by virtue of having learned previously about some random topic which you had no idea would one day be applicable to your work? I think most programmers have, and I'd hope that a good boss at a good organization would understand that - as long as you're accomplishing everything that's required of the job - independent learning is a great use of (a reasonable fraction of your) time that will benefit both you and the business.
_dwt··on BuckleScript Is Rebranding
I get puzzled by how often projects whose ostensible user bases are composed entirely of technical professionals seem to make vast sweeping branding changes on the basis of "simplifying" the "confusing" naming, so that we end up with three(?) different things (a compiler, a language syntax, a new almost-compatible version of the language syntax) with the same name.

Is there really a large audience of programmers capable of writing OCaml but not catching on that "BuckleScript" referred to the compiler? (For that matter, is there really a large audience of programmers capable of writing OCaml but only if the syntax superficially resembles JS? Maybe I'm the one out of sync here...)

_dwt··on Ask HN: Have any of you moved back home to save money?
Is it possible that there are places in the United States which are neither the Bay Area, nor NYC, nor Oklahoma? Surely at least some residents of these places, if they exist, might in fact dispute the broad-spectrum superiority of our most culturally legible cities. Some of these hypothetical humans might even work more than 100 hours a week, perhaps even outdoors!
_dwt··on On the Folly of Rewarding A, While Hoping for B (1975) [pdf]
It just made me more cognizant that people respond to incentives rather than intentions. It's not enough to propose new "corporate values" or state that a policy proposal must be passed because it "addresses" some problem - show me how the proposed change incentivizes the desired behavior. Are there perverse incentives? Principal-agent problems? And so on.

Make no mistake, I think people are "intrinsically motivated" too, at least to a point. I'd like to believe I am. But it's hard to deny that people (myself included) do things for some reason, some gain - even if that gain is something intangible like "a feeling that I'm doing good" or "perceived status in my organization".

_dwt··on Ask HN: Advice for a prisoner learning to program
Why not check out the K&R C book and work through that? It's still an amazingly self-contained book that manages to be a language tutorial (and almost a reference), while still being approachable without programming experience. C compilers are easy to get hold of, and for better or worse the language will certainly still be around in a decade or five. Ironically, it might even give him a stronger foundation in programming than the average "learn Python in a day" web course.
_dwt··on Micromort
I think about this sometimes from a slightly different angle - not the "expected value" number of deaths, but rather the (utilitarian?) math of actions which affect a huge number of people a little bit each. If you waste, say, 5 minutes each of a million people's time, in some sense that's almost 10 years of life lost. I think about this a lot when there are discussions about whether performance matters any more in software.
_dwt··on On the Folly of Rewarding A, While Hoping for B (1975) [pdf]
I stumbled on this paper very early on in my career and it significantly shifted my attitudes toward work, politics, and society. In short: people follow incentives.

Of course, the suggestion of "altering the reward system" breaks down a bit in the presence of Goodhart's law, but it's still very common to see (especially in large or unusually bureaucratic organizations) policies which create incentives completely at odds with the stated goal or metric. One of my favorite examples is the "budget game" many companies play, where each department/division/etc. puts forward a proposed set of projects and budget; the corporate planners then allocate the overall corporate budget. Departments obviously "sand-bag" and ask for more than they think they need (knowing they won't get everything they ask for); there's often a "use it or lose it" policy too, which leads to what I can only describe as an orgy of spending at the end of the fiscal year. This can be great fun for vendors, consultants, and so on!

← PreviousPage 3 of 3