Hacker Newsnew | past | comments | ask | show | jobs | submit | dmeybohm's commentslogin

I am not the original commenter, but I think saying the jokes are “bigoted” shows a bias, and it was good to emphasize that by not addressing the other argument. We could have a discussion about whether getting fired for talking about conduct at your employer is right, but to link it with the idea that someone told “bigoted” jokes is to conflate two things.

To say those jokes are “bigoted” has a high bar, since comedy is about entertainment and not real. The jokes in the article don’t meet that bar, but one should be circumspect about drawing that conclusion because comedy isn’t real. To throw around that judgment offhand without supporting it is to lend support to a world based on censorship and conformity. It should not just be an assumption - “yeah of course these jokes are bigoted.” - that should be the substance of the discussion before we draw that conclusion.

So it’s proper to call out the bias of the commenter and not address their other argument.


>So it’s proper to call out the bias of the commenter

I think whether or not their words amount to bias is up for debate, but I don't object to that subject being brought up in addition to the subject under discussion so far.

>and not address their other argument.

This part I don't agree with. That other argument is completely independent, and worth pursuing. Abandoning it completely is conceding defeat on that front.


Addressing a biased interlocutor acting in bad faith isn't a proper usage of finite time and attention.


Imagine a hypothetical person asked you the same question, but in good faith.

How would you respond?


Yeah I agree, the ListView naming is more appropriate.

I haven't used non-owning types like string_view or span too much because I haven't needed that level of performance or memory optimization yet, and so those just seem like footguns as compared to just a reference without those needs. I do like to use a technique in classes that use non-owning references that would work for those too to prevent this particular problem.

For that, there are two methods with the same name, but different access - an lvalue version and an rvalue version. Then, you delete the rvalue method like this:

  class Response {
    auto getListView() & -> ListView {
      return ListView(m_List);
    }
    void getListView() && = delete;
  }
Then you get a compile error like in Rust when you try to call getListView() from a temporary object, but if you call the method from an lvalue it still works at least as long as the object is in scope.


I used to prefer Vim but moved to using IDEs. In professional development, you want to use the best tools - a forklift vs. a shovel. I don’t think text editors are the best tool for that, but why do programmers insist on using worse tools?

From my previous experience, I’d guess it’s these psychological factors:

1. IDEs have more cognitive overhead, and programmers have to keep a lot of state in their heads. So using a text editor gets out of their way initially to get started developing. In the long-run, though, it’s worse for cognitive overhead because you have to keep more state in your head due to having worse code completion. You also have the additional effort needed to set up plugins with text-based tools to provide additional features that are helpful for daily tasks.

2. IDEs tend to have more knobs - big menus, dropdowns etc. Those can reduce your ability to focus when you’re not used to them. Many of the available options likely aren’t applicable to what you’re working on, and can be distracting.

3. A lot of programmers have a sense of elitism, and using text-based tools looks retro and more intimidating to those not familiar with it. In so doing, this validates the view of oneself as a member of a priestly class of text-slinging wizards.

4. Programmers love to yak-shave. Using more primitive tools gives a reason for us to customize the experience, even or especially if it’s an inefficient waste of time. Programmers love opportunities for self-expression through code and customizing the experience of using their coding environments for its own sake.


> 3. A lot of programmers have a sense of elitism, and using text-based tools looks retro and more intimidating to those not familiar with it. In so doing, this validates the view of oneself as a member of a priestly class of text-slinging wizards.

That's usually what I hear from people finding out I like/use Vim. It's like they can't come to peace with the fact that I like it for its bindings and plugins, no, it has to be because I want to be a snob about it. And those judgements only start once they find out I am using vim, before that I am just a regular guy but as soon as they see me type `vi`, blam, I am an elitist asshole. Fuck that.

Turns out I use vscode (debugging so much nicer) AND vim (quick notes and configuring stuff so much faster) (and Kate).

Once, I was debugging a config file in a video meeting with a colleague. I was frustrated because I had difficulties making the config file works and was mumbling "goddamitthingofhelltheresalwasysomething" and that colleague jumps at me "ah ! you are frustrated because you are using vim and can't paste the buffer (or saving the file or something)."

/rant


vi is a pretty effective byte-code for communicating what is in my brain into what is on the screen. Kind of like a protobuf for text editing.


>...worse code completion

Have you tried LSP, say like in a LunarVIM or AstroVIM setup? These are self-contained packagings so you don't have to fiddle around with plugins (though you can also achieve the same results through plugins), and as I understand it you get the same code completion and intelligence you get in VSCode.


I always end up working on PHP code with dynamic methods or properties (you know, the kind using the magic methods __get or __call()) - so you don’t get any code completion for those. I love PHPStorm, and I find it frustrating when I don’t get code completion.

I wanted to get completion for that dynamic code too. So I wrote a plugin to do that and it’s called “PHP Houdini.” I’m also charging for it - it’s free for 30 days [1]. I don’t expect there’s a big market for it, and I’ve mostly written it for myself when I get thrown into new PHP code bases.

The code for configuring the autocompletion reads like English, but it’s ordinary PHP. I actually wrote what is effectively itself has autocompletion. You create a file called “.houdini.php” in the route of your projects, and then call various functions on the return value of a “houdini()” builder function.

Writing it was fun because I effectively wrote a small PHP subset interpreter to handle the configuration. I’m interested in any feedback. Thanks!


This is a wonderful article and I really enjoyed the graphs and the clear explanations.

I wrote a simple chess engine in C and then ported it to C++ [1]. It doesn't use transposition tables or quiescence search. Instead of that, I simply search only to depth=1 and then even depths (2, 4, 6...) after that, which tends to limit the horizon effect. It's not that sophisticated, but I usually lose against it. Even so, it's fun when I pull off a win.

I even tried porting it to web assembly [2]. It mostly works, but the display code still has a bug where the interface disappears sometimes, and I'm still trying to figure out why. Also it doesn't work on mobile browsers I've tried.

[1] https://github.com/dmeybohm/wisdom-chess

[2] https://wisdom-chess.netlify.app/


I wrote a utility to copy small files from Linux -> DOS over a LapLink cable.

https://github.com/dmeybohm/ppcopy

I used it to fix a Windows 98 laptop that wasn't booting all the way to Windows. The would boot to a DOS prompt only, there was no CD-ROM driver, and I only had a Windows 98 install CD. So, there was no to re-install Windows to fix it.

So I wrote the assembly copier for the parallel port. I think it was about 200-500 bytes. Then I used dos DEBUG.EXE to write the hexadecimal code for the program into memory and then write the .COM program to disk. Surprisingly, I didn't make any mistakes (or any that mattered...) and it worked the first time. I had also done a checksum in the copy program in case I screwed it up. But it took about an hour to write the program into DOS debug.exe.


Even in DOS, I think

    copy LPT1 output.bin
would have worked at the time.

Anyway, was there a chance you posted that story to Reddit or somewhere else previously? I'm sure I've read it before.


Thanks - I don't know if I ever tried that. I'm curious if that works, sadly I don't have any hardware to check anymore.

It seems unlikely to me though that that would work on DOS without special software because it's such a pauper's OS. To implement the read-side, the DOS kernel or COPY program would have to have a way to pretend to be a printer and then clock the data in according to some protocol. And given DOS is so resource constrained, seems unlikely Microsoft would add code in those fundamental pieces for such a use case, unless it were as simple as switching a few instructions.

There is also the INTERLNK and INTERSVR programs that are built-in to either MS-DOS 6 or 6.22 that could help with that use case.

Yeah, I've probably posted about it before - maybe even here.


Copying from a COM port could work because the MODE command could set the various settings - but input from LPT1 or PRN wouldn’t work by default in DOS.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: