HN user

to3m

4,399 karma

(account dormant as of 21/3/18)

Posts5
Comments2,038
View on HN

Bah... my intent was certainly to be vulgar, and I stand by that. But if it's going to be interpreted as specifically offensive towards women (an implication not present in UK English) then I'll certainly apologise to all that were thus offended, because that was not part of the plan.

Looks like it's too late to delete it, so we're stuck with it forever.

Please still do drive carefully!

Right, but since the driver has seen there's somebody on foot on the pavement, how come they haven't slowed down already? Perhaps the person could trip and fall into the road. Perhaps the person could have a fit and fall into the road. Perhaps the person is just crazy and is contemplating leaping into the road. Perhaps the person is drunk, hasn't seen you, and just fancies crossing the road there and then. It really doesn't matter. These are not capital offences.

What if that person were your son, daughter, wife, husband, parent, or whatever? Would you be so blasé over their losing their life, and all because somebody couldn't even be bothered to just move their foot a bit and press a pedal?

My car has cruise control with brake functionality. Not sure if I've ever seen it actually do it - I only really use cruise control on the motorway, where I expect wind resistance is a major factor - but apparently it will apply the brakes to maintain the set speed when necessary.

At town speeds I would expect it to use the brakes a lot more readily. At 30mph in 3rd (2000rpm) or 4th (1500rpm) there's not really all that much engine braking, and wind resistance won't slow it much either.

(Mine is a 2010 model, but I think this stuff was introduced in 2004-6, something like that... it's not exactly new technology.)

Hmm... I have to say the APIs and command line tooling is not where Perforce shines ;)

I found the APIs generally a disaster, and rapidly gave up on them. It was much easier to just run p4.exe and scrape the output. But... oh god. That's not saying much. The command line client was shit too. It eventually proved possible to get everything I wanted, but the data was never quite in the right format, the available queries were never quite suitable, and the results were never quite normalized enough. In the end I had to run p4.exe several times, discarding a lot of redundant data while doing this, and then cross-referencing the multiple sets of results afterwards to get what I wanted.

(One thing I had hopes for initially was p4's supposedly Python pickle-friendly output. But this was no good either! - since, from memory, p4 produces multiple pickles'-worth of data in one go, but Python will only read one pickle at a time, so you couldn't actually read it in from Python without a bit of work. Really made me wonder whether anybody actually tested any of this stuff. Really felt like the thing had been coded by a bunch of Martians, working from a description of the process made by people who'd never used Python and weren't even programmers in the first place.)

When you've got a lot of people, you've got a lot of changes - that's the long and the short of it. This is one thing the check in/check out model (as exemplified by Perforce, among others) is really good for managing. When you go to check out a file, you find out straight away if someone else has it checked out.

If you're just going to make a quick tweak, you'll probably risk it. Either they check it in first, and you've got a very minor merge, or you do it first, and they've got a similar minor merge. Not a big deal, in either case. (And when your gamble doesn't pan out, tough luck. No sympathy from anybody. You knew the risks.)

But, if you're going to make a very large, sweeping change, you'll probably be a bit more cautious. And that's fine: you can go over and talk to them, or message them, or email them, or whatever, to find out what they're doing, and coordinate your modifications appropriately.

I've literally never once found this less than somewhat useful. It's, like, the source control analogue of static typing: a huge pain in the arse if you're not used to it, but, if you've seen it play out, it's a mystery how anybody gets any work done in its absence.

(Of course, if you use git, maybe you can just email/Slack/etc. everybody on the team before you go to edit a file, just in case, and then wait for anybody to mail you back before proceeding... well, I don't deny that would work, assuming everybody checks their mails/Slack/etc. regularly enough. After all, I hear people get work done in dynamically typed languages too! But just think how much better things could be, if the version control system could look after this for you!)

I don't know how many committers have been on the average project I've worked on, but it's probably 25+, and I've worked on several with 50+ - and I don't know how you'd even make Git work at that sort of scale. Obviously people do actually do this, so I assume it must work somehow; I just don't see how it's going to work particularly well.

The larger projects I've worked on have typically used Perforce, but I used Alien Brain (which is pretty terrible) for some of the older ones. The check in/check out workflow, which is the same in each case, is basically what makes it all work once you get past a handful of people. Just simply being able to see who else is working on a (almost certainly perfectly cleanly mergeable) file that you're contemplating modifying is a big time-saver.

(I've used SVN, at a much smaller scale. It has similar Lock/Unlock functionality, which is a good start, but the performance in general of that seemed to be really bad. Locking a few hundred files might take a full minute, for example. Meanwhile, Perforce will check out 1.9 gazillion files in ten seconds, and that's only because it takes nine seconds to change NTFS permissions for that many files.)

I copied the 6510 illegal opcode behaviour for the SY6502A emulator for my BBC Micro, and I've yet to see a problem from it. If they didn't all have the same PLA, then perhaps the differences didn't cause any useful effects...

(Some BBC Micro games definitely do use illegal opcodes, but I didn't take very careful notes when I was writing ver 1, rather a long time ago. For the current version, I just made sure the Lorenz 6502 test suite ran to completion.)

137438953482 actually corresponds to the 10 and 32 4-byte values concatenated into one 8-byte value

32<<32|10 might be a bit clearer, then...

Sure, you can do this, but don't. Approximately the last thing you want is a copy constructor that can fail.

If you have to do an OS call to duplicate the underlying resource, assume the class isn't copyable in this way. It's almost certainly possible to make it moveable, and this will get you the bulk of the benefit: you can return it from functions, and you have a std::vector of it.

(Also worth noting that close (2), which presumably you'd call from the destructor, can fail with EIO or EINTR. I don't consider looping on EINTR ever safe, but that's up to you. EIO, on the other hand - what are you going to do about that? And if you don't call close from the destructor, what the hell use is this class anyway?? Overall, I don't think value objects make very good wrappers for a POSIX-style file descriptor.)

You're assuming that the way people behave is wrong, and that the way you think they should behave is right. Well, guess what: they're going to keep on behaving as they do anyway, no matter what you think. Now suppose you still want to convince people of something. Are you going to adopt a technique that works, or one that doesn't?

If you don't have a very high opinion of HN commenters, you'll probably assume that they get their opinions from Wikipedia. But that means they'll have a pretty good idea of whether a given game is good or bad in terms of odds.

Besides, casinos will often give you free booze simply because you're sat at a table gambling. You don't have to actually win money to profit! You just need to start sensible, and then keep it going long enough to get drunk.

A better alternative to "you have to sugarcoat all your thoughts by 30% before you speak them out" would be to train people to be better at taking criticism

The amount of extra effort involved in having a few people "sugarcoat" (as you call it) is tiny compared to the effort in retraining vast swathes of people out of what is after all a fairly standard human behaviour. Behaviour so standard in fact that this doesn't count as "sugarcoating" at all, really, at least not in my view - more like the process of actually assembling a persuasive argument from the unrefined raw material.

(I originally started this post with "Come on, come on, don't be silly". But then I took it out, because it felt a bit rude. But, if you don't think it will hurt, you can imagine I left it in.)

Just for posterity, since even after 1 day I'm 50% LOLing at this and 50% still mildly annoyed: because you accused me in another subthread of being equivalent to those that would send their political enemies to the Gulag, when the sum total of what I do is click the Flag button on an HN article. Perhaps sometimes (e.g., now) I might also make a post criticising people with whom I disagree.

The consequences of my doing this are so mild, I just don't accept that this is worthy of serious condemnation. If you want to think the worse of me for doing it, be my guest - but nobody's going to get packed off to the Gulag, nobody's going to get sacked, nobody's going to get sent to Coventry. In fact, even once flagged, the discussion is still there. It's just not on the front page any more. Even once flagged, there are numerous other venues where this discussion could continue! And indeed, part of the reason I click Flag is to encourage this discussion to take place in those other venues rather than here.

Meanwhile, you advocate real-life consequences with material repercussions for those whose ideology you oppose.

I expect the moderators, or whoever it is that looks after this stuff, decided that since it was discussing the same case as the other articles then it counted as one in principle.

Sometimes multiple articles relating to a particular issue are posted. When these links don't attract much discussion, this isn't much of a problem. But when they do, it's probably best to try to centralize the discussion, lest the entire front page get filled up multiple copies of the same stuff.

This has happened before in the past and it's a bit dull if it's something in which you have zero interest.

Awesome, thanks - I just got bingo!

I don't know if you're aware but articles can move off the front page because people (like me) flag them (as I did). If enough people flag it, off it goes.

Sometimes the article sticks around, and obviously mine was a minority voice. Sometimes it disappears, probably because, I expect, most people are like me: we've seen this stuff discussed before, and the discussions are, on average, poison - or, worse, repetitive and dull.

So, flag. Flag, flag, flag. (That's what I think to myself, anyway. Actually, I only get the option of flagging it the once.) I make no bones about this, and I won't apologize for my actions, because I have nothing to apologize for. I vote according to my principles and mine alone. If these principles happen to be shared by others, great. If not, that's fine too. Democracy in action.

(Well... I do admit that I give the discussions a quick skim, just on the off-chance I might see tptacek in action. My guilty pleasure! There's also the chance that somebody might actually, you know, make a good point, but I don't worry too much about that because my experience is that the risk is very low...)