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

Great! This server isn't for you then. Find another one.


There are plenty of instances who makes it a selling point that they don't block anything. If the have free speech in their name, you can assume that's the case.

The end result however is what you'd expect and the experience on those instances are very different from what you see on the more mainstream ones, and most people wouldn't like it.


Also, there are instances who deliberately block such servers, because in some circles, human rights like free speech are somehow considered evil.


A few do. Mostly, though, those servers are blocked because of continued harassment from their users. https://xkcd.com/1357/ comes to mind.

Some of the "free speech", "low-moderation" instances have self-policing communities. Others are full of neo-nazis. Yet others are run by bigots and ban anyone who objects to the hate and vitriol. They are not all the same.


That was the comic that made me lose respect for Mr. Munroe, because he is too intelligent to miss the point so badly: Free Speech is an age-of-enlightenment concept, not a legal construct from the US constitution. Worse, while it is true that no-one HAS to listen, actively preventing OTHERS from listening is obviously ethically wrong.

If you feel harassed by an user, filter that user. If you feel harassed by every single account on an instance, filter that instance for yourself (this option currently does not seem to exist in Mastodon). But do not go crying to our admin and deny me, who happens to be on the same server as you and is semi-ok with some of the folks on that other server the ability to interact with them.

This is creating filter bubbles, your users will at first love the friendlyness and fluff, but it also is exactly what led to the right-wing successes we've seen all over the world in the last few years. Filter bubbles destroy democratic societies.

> Yet others are run by bigots and ban anyone who objects to the hate and vitriol.

You see the dangers of giving admins that level of control? Now you got an instance in which there are no more discussions, only self-assuring and groupthink, and which will slowly become more radicalised. If filtering was strictly an user's issue, other users may have seen the objection to hate and vitriol (which often starts underhanded), and have had another view.

By the way, that is true no matter which political fringe a server admin belongs to: I know a Mastodon instance on which some users become increasingly radicalised against car owners right now, to the point where mass executions are being normalised by joking about them. Guess what happens when you try to become a voice for reason... But are ALL of them just evil, unredeemable beings that need to be banned from talking? Should my Mastodon admin block that instance for spreading hate and vitriol, even though the majority still talks about other things? Obviously, that's a silly idea.


> But do not go crying to our admin and deny me, who happens to be on the same server as you and is semi-ok with some of the folks on that other server the ability to interact with them.

Here's another way to look at it: Our instance has moderation policies. You chose that instance in part because of those moderation policies, just as I did. Those moderation policies are there so we can interact with each other with the peace of mind that we're not going to have, say, child sexual abuse imagery DM'd to us.

Then an instance comes along with a few hundred follow bots that do that. So, after a few reports, our instance admin defederates from the instance.

If you don't like this, you're perfectly welcome to go to another instance, with different federation policies. Thanks to federation, you can do this and still stay in contact with me! It's a win-win!

> You see the dangers of giving admins that level of control?

No, not really. Those people are probably always going to exist. Honestly, much as I hate Nazis, if they're over there doing their thing, and not trying to harass or murder me and my friends, I'm happy just to let them do that. It's just a website; it's not like their kids won't have external influences and be able to figure out that, hey, Nazism is actually bad.


That's interesting. I mostly had the opposite experience.

I tried journaling electronically many times over the years, from basic text files with zero format, to markdown files... even a private Tumblr blog. I couldn't make any of them work for more than a couple of weeks.

The electronic thing just kinda disappeared from my vision.

I started a bullet journal about 12 months ago, and it's the first thing I've ever managed to use consistently for journaling. Partly because of the very short-form bullet points that a day of journaling is made up of, but the act of hand writing the entries and having a physical journal was the magic for me.


The biggest draw back of physical journals is your hand hurting after writing too much.

It's easier to get ergonomic keyboards and chairs compared to writing gear.


If your hand hurts after writing with a pen you're probably holding it wrong. There are a lot of complex biomechanics going on and very little attention is paid to building proper form any more. Proper form costs nothing beyond a little of your time training yourself out of whatever bad form you happen to have adopted.

The most common reason for your hand hurting after an extended writing session is a death grip on the writing tool; ideally you should be holding it just hard enough to put it where you want. Someone should be able to lean over your shoulder and snatch the tool from your hand with little resistance.

Also very common is putting weight on your wrist. Your whole arm should be a little bit active, carrying your hand around the page as you write or draw. Ideally your wrist is completely stiff; this does little for control, but it helps lower the chances of the tendons that control your fingers rubbing up against the bones of your wrist and deteriorating. You could get a wrist brace to help you practice this.

If you want more of this stuff you will find it in vintage "penmanship manuals", from the days when the most convenient method of writing was a fountain pen. I largely got it by word of mouth when I was working in animation next to old pros who routinely passed on their secrets of proper form as a way to help the new kids avoid career-ending wrist injuries from bad form.


I wrote a decently complete NES emulator[1], and the 6502 is definitely a fun CPU to emulate compared to other CPUs. The Z80-ish CPU in the Game Boy is not as fun, and as soon as you get into 68000 territory, it definitely stops being fun for a hobbyist.

Getting the graphics and sound in sync with the CPU is a lot more challenging if you're looking to support many games, but if you just want to play some of the super simple early NES games, like Donkey Kong, then you can get away with a lot of inaccuracies.

[1]: https://github.com/ltriant/nes


At my last job at an email security provider, this was a huge pain in the ass. We would provision new mail servers, and because the new servers' IP reputation to Office365, Google, etc. was poor initially, someone (until it became a shell script) had to spend the better part of a week taking the new server out of rotation, putting it back in, and so forth, so not too many of our client's emails got stuck in the new server's reputation blackhole.

I was there for 10 years, and this was only a problem in the final ~2 years of my employment, which roughly lines up with your 4 years remark.


> This was also the era of “web-safe colors” — a palette of 216 colors, where every channel was one of 00, 33, 66, 99, cc, or ff — which existed because some people still had 256-color monitors! The things we take for granted now, like 24-bit color.

Ah, I remember so many evolutions of my own websites using 336699 and 6699ff as the main colors. I still default to them even now when I just need _something_ that isn't default colors.

And wow, I forgot all about image maps! I used to stare in awe of the super artistic websites that used image maps heavily, as if I was witnessing the blackest of black magic.


I recently wrote a NES emulator in Rust aswell. It was one of the most fulfilling side projects I've done. I did a brief write-up too: https://ltriant.github.io/2019/11/22/nes-emulator.html

Kudos to getting to this point. Adding support for more mappers is a nice incremental thing that can be done at your leisure, and once you get save states implemented, playing games at your own pace is super fun :)


Thanks! Mapper 1 is since done as well as battery-backed RAM support, and I'll be implementing mappers 2-4 in the next couple days. I just read your blog post and the audio section caught my eye: I went through the exact same struggles with trying to queue 44,100Hz to SDL, including trying to implement dynamic sampling, but it was never quite right and I got quite frustrated with it. So eventually I took another pass at using the callback method instead, which I thought wasn't possible as you can't exfiltrate a reference to the struct that you give the audio device, but I got it to work this time with an Arc<Mutex<Vec<u8>>> and it's wayyy better.

The APU sends all of its samples to a staging buffer, then between video frames, the Mutex for the SDL buffer is locked and the staging buffer is emptied into it. The SDL callback also locks the Mutex 60 times per second, takes evenly spaced samples from the raw data, and truncates what it consumed if it had more than it needed. Now the audio keeps perfect pace with the emulator, whether it slows to 58 FPS or goes too fast, and there's no popping and clicking. If you're curious, here are the relevant spots in the code now:

https://github.com/spieglt/nestur/blob/master/src/audio.rs https://github.com/spieglt/nestur/blob/e49921541d493b3616352...

I just beat the first Zelda dungeon last night, saving the file afterwards, and it was indeed really satisfying.


ADC = A + V + C

SBC = A - V - (1 - C)

SBC = A + (-1 * (V - (1 - C)))

SBC = A + (-V + (1 - C))

SBC = A + -V + 1 + C

I am not able to follow the mathemagic behind the third line. Is it normal algebra or its in 1's complement?


I think it looks odd, too. If you go with this:

    ADC = A + V + C
    SBC = A - V - (1 - C)
    SBC = A + (-1 * (V - (C - 1)))
    SBC = A + (-V + (C - 1))
    SBC = A + -(V + 1) + C
"The SBC instruction subtracts a value from the accumulator register, with an extra 1 subtracted from the result if the carry flag is NOT set."

The explanation fits though. If the carry flag is not set (C == 0) then you subtract an extra 1. If C == 1 then it's A-V.


Wow, yeah, that's a bit off. And incorrect. It should end up being equivalent to:

SBC = A - V - 1 + C

Thanks. I'll fix this up :)


> but the - 1 is taken care of because of the fact that ADC and SBC do the opposite thing with the carry flag.

Also, this line is bothersome, they do opposite things but that's why you have already done (1 - C).

Maybe the fact that -V is actually (!V + 1) (in 2's complement) that eats up the extra -1 is the correct explanation?

So,

  SBC = A - V - 1 + C

  SBC = A + !V + 1 - 1 + C

  SBC = A + !V + C


Ah yeah you’re right. I had a brain fart and got my -V and !V confused.

At the time of writing I was sure I had it right too!

I’ll fix that up. Thanks :)


That’s an excellent write up and some well written code! I might use this as a reference if I ever try to write an emulator in Rust :)


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

Search: