13 ms·
Linus Torvalds on aliasing
- solotronics 8y agoI never really understood why people complain about Linus personality. If you don't like it go somewhere else nobody is forcing you to code for Linux. Fork it and make your own.
- iliaznk 8y agoRight, but why does an adult have to behave like a spoiled little princess anyway?
- iliaznk 8y agoFunny, that people adore when Linus does it, but dislike when somebody else does that to Linus... Okay, whatever.
- coldtea 8y agoIt's actually like a rough drill sergeant. "Spoiled little princesses" are those that can't take some strong words and need hugs and smiles...
- mark_edward 8y agoIt's also people who throw fits with little provocation when they don't like things, which sounds fitting to me. Seriously, the thing gets merged anyway but he has to "express himself"
- brynjolf 8y agoI found your post aggressive. Will you please change it to appease me?
- mark_edward 8y agoI see what you're doing, and it doesn't make any sense. I just said I didn't like a pointless display of emotion, and so you do a "satirical" emotional appeal?
- yellowapple 8y ago> Fork it and make your own Even Google couldn't pull that off with Android.
- iliaznk 8y agoAnother question is would Linux become what it's become if everyone would really have just forked it?
- Brian_K_White 8y agoAnother question is would Linux become what it's become if only nice polite guys were allowed to code it?
- iliaznk 8y agoThat's irrelevant, nobody's talking about allowing or not allowing to participate, but accepting help while insulting the helpers, seems disgusting to me and I really find it weird that some people readily accept that while demanding respect and politeness in other situations. Double standards – that's what it is.
- Grollicus 8y agoI don't see him here "insulting the helpers". He's saying the argument for this change is bad, he's saying a bunch of things in the C standard are bad, but there's nothing personal there.
- ianbooker 8y agoThen you do not understand the whole point of asking this question. Its speculative whether the counterfactual "Linus is nice to everyone"-Kernel would be better or worse. Both options are possible. Like everywhere in capitalism, just being nice and doing the right thing must not always select you as a winner...
- signa11 8y ago> ... if everyone would really have just forked it? well, if you can keep pace with it, why not ?
- zaarn 8y agoLinus shows this behavior more rarely rather than often (about once a month) and usually in the direction of people he knows can take a bit of a rant.
- Angostura 8y agoYeh, I get the impression he does it with people he would have a beer with.
- drdrey 8y agoCan someone ELI5 what the issue is with type punning and union aliasing?
- ufo 8y agoSuppose you want to look at the bits of a floating point number, as though it were an integer. The type punning way to do that would be to access a double in memory through an integer pointer: double d = 3.14; int64_t *p = (int64_t *) &d; // !!! int64_t n = *p; The union aliasing way would be to makeset the double field in a union and read the integer field back: typedef union { double d; int64_t n; } int_or_double; int_or_double u; u.d = 3.14 int64_t n = u.n According to the standard, the union aliasing approach is allowed, but the type punning one is undefined behavior. --------- The standard team decided to forbid type punning to allow compilers to implement more optimizations. They still allow union aliasing because they felt there should still be a way to do low-level type casts if for those that absolutely want to.
- blorsh 8y agoNo, type punning via unions is a gcc extension. The standard only allows reading a value as the type it was written with or as char, and an access as char is only good for copying. If a char access used different bit order, that would be OK according to the standard because you couldn't tell unless you violated the standard. It seems every compiler will tolerate a memcpy for type punning, even though this isn't required.
- pubby 8y agoTo me, this rant seems more directed at C standards people than the guy he sent it to. That doesn't excuse his vitriol, but I hope people will read between the lines. Sometimes people forget that C was created for writing operating systems. They get in their mind that C is all about high-performance, and that making it competitive with FORTRAN is the way to go. I understand that, but it's not what C was created for. If the world's most famous C programmer and OS guru wants to have strong opinions on the direction of the language, I say allow it.
- raverbashing 8y agoYes. From the article: " The standard simply is not important, when it is in direct conflict with reality and reliable code generation."
- zwischenzug 8y agoHis rant seems directed against the _argument_ that standards should be followed without question.
- simias 8y ago>C was created for writing operating systems That doesn't properly justify C's minefield around aliasing and type punning in general. It's UB galore. Thing is, whenever you're writing low level code that's tied to hardware in my experience you very often end up having to pun your types to match hardware constraints, and at this point the C standard basically says "lol good luck with that bro". I'm not a programming language expert but IMO at the very least C should make reading from a different union member than was last written to "implementation defined" instead of UB (with suitable constraints if the sizes of the members differ I suppose). In effect that's mostly how compilers deal with that anyway. So I agree with Linus that the C standard is really unhelpful in these situation, although his childish anger is unnecessary and counter-productive.
- pubby 8y ago>at the very least C should make reading from a different union member than was last written to "implementation defined" That's how it is :) The standard even describes union behavior as "type punning". I don't know if C++ allows it though.
- matt4077 8y agoI'm in no way offended by Torvalds' typical expletive-laden rants. But they do strike me as a terrible way to communicate. These outbursts seem to happen every few weeks, and have long seized to surprise. IF anything actually bad ever comes up, he has no further escalation available to raise awareness. It also reminds me of these choleric bosses screaming at someone every day: it's almost always a sign that they're insecure, sociopaths, or can't handle their responsibilities.
- beaconstudios 8y agoThis is the actual reason his manner of communication is poor - swearing and generally blunt language like this should be reserved for shaking people into action, whether it's due to their otherwise ambivalent attitude or the severity of the situation. By making a big fuss for every moderate concern he has, he leaves few options open for when the situation demands that people spring into action.
- watwut 8y agoLinus Torvals says something technical and full of insights while keeping control over emotions - crickets nobody cares. Linus Torvals adds some insults into the above or simple does not even attempts to keep control over his emotional side - half people jump up and down happy like a fourteen years old. Wow, look, he used insult! The other half suddenly turns into prude "I never swear nor insult anyone" Victorian aristocrats - despite having tweet feeds full of, and I am quoting here, "fucks".
- ufo 8y agoI work with a codebase that implements a sort of OO inheritance in C. It looks like this: #define BASE_FIELDS int a; int b; int c; struct Base { BASE_FIELDS }; struct Derived1 { BASE_FIELDS int d; int e; }; struct Derived2 { BASE_FIELDS int f; int g; }; Then, it has lots of code that accesses Derived objects through a `Base*`, with ->a and so on. Is this against the standard C aliasing rules? If so, how would this need to be rewritten to conform to the standard?
- comex 8y agoIt is against the rules. To fix that, you'd need to put a field of type 'struct Base' in the derived struct(s) rather than just copying its fields. edit: If you want to keep the existing syntax and can use GCC extensions, it should be legal to use an unnamed union: struct Derived1 { union { struct Base base; struct { int a; int b; int c; }; }; int d; int e; }; edit2: or, with -fms-extensions, just struct Derived1 { struct Base; int d; int e; };
- ufo 8y agoPutting a field of type 'struct Base' adds extra padding in my case, unfortunately.
- loa-in-backup 8y agoI believe there is a way to disable field alignment on a case-by-case basis. I could be wrong, though.
- comex 8y agoYes, there's the GCC extension __attribute__((packed)), or #pragma pack, an extension supported by both GCC-style compilers and MSVC.
- Taniwha 8y ago
- netule 8y agoNotice that after his rant, he still tested the code, and merged it: https://lkml.org/lkml/2018/6/5/774 https://lkml.org/lkml/2018/6/5/774
- sleepychu 8y agoDid he get some follow up from the author of the changes?
- proaralyst 8y agoI think that's here: https://lkml.org/lkml/2018/6/6/88 https://lkml.org/lkml/2018/6/6/88
- taneq 8y agoWell he did start the rant with "I have no problem with the code, it's just the rationale that I disagree with." And from what I've seen, Linus is nothing if not pragmatic. Good code is good code regardless of the rationale.
- tonyedgecombe 8y agoWhich shows how pointless the rant was.
- emerged 8y agoI have no problem with the rant, just question its emotional source (presumably negative emotion from other areas of his personal life)
- klagermkii 8y agoIf you have invested 20+ years of your life into a particular project, and you have someone doing something that you consider potentially harmful to it, could that not be enough to react angrily? I don't see why it would need to be negative emotion sourced from another area of his life that is leaking out here. You presumably have to be pretty emotionally invested in something to work on it that long as a hobby and only later as a job.
- mundanevoice 8y agoWhen people can't find fault in the technical argument, they start attacking other things like. > Oh! He is so rude, He insults so much. If you have a better argument to counter his logic, please post that, it would be more useful for everyone involved. Posting pretty useless comments here is pretty lame.
- rdiddly 8y agoI'll critique his prose on efficiency grounds. He wastes many words making a point.
- mundanevoice 8y agoLet's stop policing speech, alright? You can use as many words as you want to express your views. I personally would not use the same words he might use, but let's not be hypocrites and say that none of us have written an angry or frustrated response to something that we think is stupid and just plain wrong.
- AnthonBerg 8y agoI posit that there is no policing here. By what definition is there policing? Speech is a topic of discussion just like anything else under the sun. (And also: People here have no authority or power to police anything.)
- rdiddly 8y agoI did use as many words as I wanted. You can take as many steps as you want to get to the mailbox too. And you'll be taking more steps if you detour to go sniff dog shit. Going in a straight line solves two problems - it's faster and it smells better.
- strictfp 8y agoWait, so according to you it's OK to be as rude as you wish, as long as you are technically correct? I think most people couldn't care less who's right or wrong in this discussion. They are simply reacting to the discourse. Personally, I'm far from convinced that there even is an objective right or wrong in this question. It's probably just a matter of taste and/or perspective. I find Linus behavior rude because in discussions like this he seems to have little to no understanding of other perspectives than his own. Either that or he is deliberately provoking this other fellow to get him off his high horses. In either case, it's not exactly accepted public discourse. He has said himself that he needs to do this to drive his point across, and given the medium and audience I can agree that the political challenge of running the project must be huge. But surely there must be a more diplomatic way to the same end?
- lightedman 8y ago"So what's the _real_ reason for avoiding union aliasing?" Gee, Linus, you couldn't just Google "Reasons to avoid union aliasing" and see posts going all the way back to 2011 griping about how it screws even the most basic code beyond repair?
- greyman 8y agoDoesn't C have something better than that type punning via union to achieve the same effect? I understand Linus reasoning, but still it's an ugly hack.
- AstralStorm 8y agoType punning to char* is explicitly allowed. (But going from char* to any other type is not...)
- acqq 8y agoSee other comments, some variant of "type punning via union is not allowed according to the C standard" is what made Linus responding like that. Moreover, even using union for that is a compiler switch in gcc, to avoid compiler following "the standard." Linus points that following the standard is definitely wrong thing to do: "When documented gcc behavior says one thing, and the standard might be unclear, we really don't care one whit about the lack of clarity in some standard." I think the union thing was at least initially implemented as not functioning at all in clang, where developers "followed the standard."
- mistermann 8y agoI sometimes wonder what the world of computing, or even the world in general, would look like today if Linus Torvalds hadn't existed, or happened to have not gotten into computers.
- ankurdhama 8y agoSomeone else would have.
- loeg 8y ago(BSD :-))
- bcaa7f3a8bbc 8y agoTheo de Raadt has this potential on the alternative timeline.
- mistermann 8y agoThey very well may have, but is there any compelling evidence that leads one to such a conclusion? (Or, were you referring to the purchase of GitHub...in which case, ignore my comment.)
- bcaa7f3a8bbc 8y agoBetter security in general maybe? The mainline kernel community is known for its conservatism on introducing security mitigation that may affect development in other ways. In comparison, BSD is more security-minded (M* Money per Linus). Although much has been changed after KSPP.
- mundanevoice 8y agoExcept BSD even being older than Linux never really took off either in Desktop space or Servers.
- 8y ago
- 2bitencryption 8y agofirst thing I do when I see a Linus email: ctrl+f "braindamage". never disappoints.
- bcaa7f3a8bbc 8y agoSometimes, "braindead".
- ddtaylor 8y agoI search for "garbage" or "trash"
- CBLT 8y agoPrevious discussion: https://news.ycombinator.com/item?id=17242103 https://news.ycombinator.com/item?id=17242103
- coding123 8y agoI think we are at the point where someone just needs to put up a Linus swearing email tracker with analytics and shit and stop posting these threads. We have to come to the realization that the discussion on this is: a) useless- doesn't change anything b) the publicity is affecting the other side more So basically Linus is Trump
- some_account 8y agoI really love that he is the way he is. Smart and honest. Nothing like Trump.
- LaGrange 8y ago"Smart and honest" is literally the justification Trump voters would usually employ.
- deleted 8y ago[deleted]
- ankurdhama 8y agoNot sure what the word "smart" means but he is surely pragmatic and based on such emails looks like he gets easily frustrated.
- Techonomicon 8y agoHe gets frustrated with people that are supposed to be experts but that don't match up to that in practice (in his eyes at least)
- ankurdhama 8y agoNobody is expert and everybody makes mistakes. He should probably lower his expectations.
- mundanevoice 8y ago
- piinbinary 8y agoGoogle cache: http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fwww.yodaiken.com%2F2018%2F06%2F07%2Ftorvalds-on-aliasing%2F&oq=cache%3Ahttp%3A%2F%2Fwww.yodaiken.com%2F2018%2F06%2F07%2Ftorvalds-on-aliasing%2F&aqs=chrome..69i57j69i58.1183j1j7&sourceid=chrome&ie=UTF-8 http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...
- muxator 8y agoCome on, this is wonderfully blunt! > In fact, I'll take real toilet paper over standards any day, because at least that way I won't have splinters and ink up my arse.
- johnday 8y agoYou can be blunt without being rude. Most of the post is just rudeness.
- raverbashing 8y agoRudeness is a cultural variable. An Englishman saying "that's interesting" can be more rude than someone else saying "get lost"
- mcbits 8y agoHere is a slightly more readable version that's not white-on-white, half-pixel-thick text: https://lkml.org/lkml/2018/6/5/769 https://lkml.org/lkml/2018/6/5/769
- kuschku 8y agoReading on a 400dpi 300nits screen in a slightly dark room, the lkml link hurts the eyes significantly more. Reading on a shitty 96dpi 100nits screen from 2004 in a bright room, the lkml link is the more readable one. Another situation of the eternal issue of "we need a web standard for specifying relative contrast", not "make everything blinding #000 on #fff".
- AstralStorm 8y agoOr perhaps do not specify any dumb colours, let the browser do its job of presenting things. Oh wait, you know you can switch CSS to default layout? Perhaps the browser could use an option to still apply layout but ignore formatting and colours.
- mort96 8y agoThe problem is that browsers are generally really terrible at presenting text in a readable and good-looking way. Compare http://motherfuckingwebsite.com/ http://motherfuckingwebsite.com/ and http://bettermotherfuckingwebsite.com/ http://bettermotherfuckingwebsite.com/ - most people would agree that the second is significantly easier to read. I really wish browsers' default formatting could be trusted to be as readable as possible, but alas.
- mcbits 8y agoAlso useful would be a standard way to normalize the apparent size and weight of different fonts so the fallbacks won't look like shit. Apparently my problem is more with the Courier font bundled with Ubuntu, as replacing Courier on that page with just about any other font makes it somewhat readable (still a "disabled" gray, but at least visible).
- 8y ago
- Benjamin_Dobell 8y agoLinus has done some (okay, lots of) wonderful stuff. However, his attitude here is pretty extreme. Being incredibly rude, then proceeding to merge said pull request. If Linus is willing to merge the PR, then it can't be that bad. Surely there was a more tactful way to approach this, even for Linus.
- iliaznk 8y agoWhy should he NOT being rude? Has anyone ever answered him in the same way? Has anyone ever publicly explained him that while being a sociopathic nerd he still must comply to some basic rules of conduct like we all do. The guy is willingly putting on and supporting the public image he's got and, obviously, loving it. I know, that he's smart and what not, but why should it be an excuse for being an asshole? I just realised that he reminds me of Taleb.
- topspin 8y ago> Has anyone ever publicly explained him that while being a sociopathic nerd he still must comply to some basic rules of conduct like we all do[?] Yes. Back in 2014 several DebConf attendees publicly confronted Torvalds, quoting some of the outrageous things he's written to/at people and making him explain himself. It makes for some rather cringy moments and there is no evidence it had any meaningful impact on him. You may watch it all here: https://www.youtube.com/watch?v=5PmHRSeA2c8 https://www.youtube.com/watch?v=5PmHRSeA2c8
- coldtea 8y ago>Why should he NOT being rude? Has anyone ever answered him in the same way? Several, but no one that mattered enough with respect to Linux for his opinion to matter in return. His OS, his rules. Others can always fork it if they have an issue with that. It seems to have worked fine as a gatekeeping technique for the last 25+ years, even if it hurts some feelings. Linus goes for an in-the-trenches, rough camaraderie, approach, rather than a "professional soft spoken cubicle workers" approach.
- 8y ago
- xenadu02 8y agoMake this construct legal behavior without making it 10x slower than clang/gcc are today: void wat(uint16_t *x, uint16_t *y) { *x = *y; } uint64_t a[100] = { 0 }; wat((uint16_t *)&a[0], (uint16_t *)(((char *)&a[0]) + 1)); When you think you've figured that one out, try this one: uint16_t heh = 0xFFFF; extern uint16_t doesAnything(uint16_t *, uint16_t *); void wat(uint16_t *x, uint16_t *y) { *x = *y + doesAnything(&heh, y); } uint64_t a[2] = { 0 }; wat((uint16_t *)&a[0], (uint16_t *)(((char *)&a[0]) + 1));
- AstralStorm 8y agoMissing the point. Linus was talking about union aliasing.
- thecompilr 8y agoCan't say much changed over the years https://lkml.org/lkml/2003/2/26/158 https://lkml.org/lkml/2003/2/26/158
- caf 8y agoIt's important to bear in mind that Linux isn't written in standard C - it's written in a dialect of C implemented by recent-ish versions of GCC (there is a particular minimum GCC version supported), with certain compiler switches. There's nothing wrong with this - it's an important enough project to be able to make those kinds of demands.
- stefan_ 8y agoAndroid kernels are built with Clang. So really it's just missing support for MSVC, for obvious reasons.
- Uberphallus 8y agoAnd Borland Turbo C, don't forget it.
- tiberius1900 8y agoClang was made to support GCC extensions and be as close to a drop-in replacement for GCC as possible. Linux misses support for MSVC, Intel C Compiler, XL C and basically every other C Compiler ever written except for these 2.
- saagarjha 8y agoClang doesn't support every GCC extension, though. For example, nested functions is something that it doesn't do.
- geocar 8y agoYup. And that one is a deal-breaker for me. Nested functions is exactly how you would write it in assembly. Does anyone know why clang won't support them? "Blocks" are fucking stupid.
- favorited 8y agoBecause throwing a trampoline on an executable stack is a hack and a glaring exploitation vector. http://lists.llvm.org/pipermail/cfe-dev/2015-September/045037.html http://lists.llvm.org/pipermail/cfe-dev/2015-September/04503...
- nikofeyn 8y agoi really wish a person many software engineers idolize or at least obviously respect and pay attention to, myself being excluded from these camps, didn’t communicate like a child. it’s an embarrassment for the field.
- maxehmookau 8y agoraises hand I would love to be able to contribute to the linux kernel one day. But I'm unlikely to ever become part of the community when its leader behaves like this.
- qaq 8y agoYou have to realize that extreme PC thing is very US centric and pretty recent at that.
- AnthonBerg 8y agoPC? This is not politically correct, this is an opinion based on free will and self-respect. “I don’t want to volunteer where the boss is an abusive asshole.” By what definition is that PC?
- qaq 8y agousing profanity and being "abusive asshole" are orthogonal concepts. I obviously do not encourage anyone to volunteer in projects they feel uncomfortable with.
- Angostura 8y agoThey may be orthogonal. Often, however, they are related.
- hfdgiutdryg 8y agousing profanity and being "abusive asshole" are orthogonal concepts In this sub-thread, you're the first one to bring up swearing.
- maxehmookau 8y agoI'm not American. I'm just a respectful human being who expects to be treated with respect at work.
- 8y ago
- sandGorgon 8y ago> The fact is that gcc documents type punning through unions as the "right way". You may disagree with that, but putting some theoretical standards language over the explicit and long-time documentation of the main compiler we use is pure and utter bullshit. this was the whole point of the rant.
- lifeisstillgood 8y agoI Wish I could write like that.
- okket 8y agoDéjà vu (or "dupe") https://news.ycombinator.com/item?id=17242103 https://news.ycombinator.com/item?id=17242103
- mosselman 8y agoI would go out of my way to avoid people who communicate like this with me. People put time and energy in making software better, at least in their own eyes, for others and then they get textually abused like this by someone who has his fame to protect himself with. He also does no service to his own arguments by peppering them with childish swearing because things like "So standards are not some kind of holy book that has to be revered. Standards too need to be questioned." can't be said enough to some people in the industry. If his reply were written with more tact and less swearing it would be a lot more powerful. We as an industry should demand this of each other, but also of our 'celebrity' colleagues.
- ralfn 8y agoWhen it comes to being oversensitive needy little things there is no true Scottsman. As a northern European I find it not only comfortable that Linus runs Linux, but I would be less comfortable if it was another American smile in face pretend to be your friend but be shady as fuck attitude that you guys seem to confuse for 'professionalism'. So let's chalk this to cultural differences. We wouldn't hire someone like you and you wouldn't hire someone like him.
- richmarr 8y agoAs another Northern European I disassociate myself from your comment. Yes, there are cultural differences between the US and Europe. No, that doesn't mean that Europe agrees with your opinion on what constitutes acceptable behaviour in the software community. You do not speak for us.
- ezoe 8y agounion wasn't designed for the type punning in the first place. It's just historically used for type punning. For modern compiler, just use memcpy and compiler can optimize away the memcpy and produce the exactly same code. But the kernel developers has some issues on trusting compiler generated code.
- henearkr 8y agoAm I the only one understanding that finding funny ways to rant is one of Linus' favourites hobbies? And so that he is not doing that to hurt people, but to entertain? He makes that particularly clear by attending gatherings about pirates' language, etc. Stop try to change him, because without this humorous spice his release notes would be way too boring.
- jhoechtl 8y ago> In fact, I'll take real toilet paper over standards any day, because at least that way I won't have splinters and ink up my arse. So Linus, made my day!
- minipci1321 8y agoI never take these "what Linus just said" posts for their face value. To me, it sounds as a half-staged, half-talking-to-buddies, mostly good-natured grudges, for some reason I cannot explain. (That said, I am not contributing to kernel, my very first post to some kernel list got a much worse response for no good reason (not from Linus). It was enough.) But I work in customer support of highly technical products, and I visit various companies very often. By now, I can figure this type of persons from the first communication -- not the ones who does it the way Linus does it (see above), but the real a&^%$%^$les -- owning some inner knowledge unavailable to others, just because they happened to be here from the bigbang and haven't evolved since. Boy, is this "rough but just and truthful" attitude counter-productive to projects! I haven't seen any exception to that yet.
- squarefoot 8y agoI also wouldn't like being addressed like that and if I was I probably would quit working with him, but he gave a very clear explanation why he became more direct in dealing with people. And unless one lives that same experience in his own shoes it's not easy to make an opinion.
- pajop 8y agoplot twist: Linus actually merged it! :) https://lkml.org/lkml/2018/6/5/774 https://lkml.org/lkml/2018/6/5/774
- badpenny 8y agoKind of sad that a person as intelligent as him can get to his age and still not realise that talking to people that way is at best highly ineffective and at worst will make them actively hostile towards you. That's not to mention rude and mean-spirited.
- nabla9 8y agoSwearing and profanity is an art form. Habitual swearing is bad style just like habitual use of smileys and LOL's. If Linus would habitually curse in the kernel list, it would have no emphasis effect and it would be a really bad style. Linus using cursing in a rant equals [for wider distribution] and it works perfectly. I can't remember a single discussion linked to HN that didn't start from cursing. It provided the opportunity for people to be offended. For technical people it's a challenge (like a glove slap). Example: * his opinion about hardening: https://lkml.org/lkml/2017/11/21/356 https://lkml.org/lkml/2017/11/21/356 * previous message that collected the attention: "Those security people are f*cking morons." https://lkml.org/lkml/2017/11/17/767 https://lkml.org/lkml/2017/11/17/767
- Forge36 8y agoHow well do they know each other? Is it possible Rafael (the contributor) wasn't as upset by this as an outside observer? Linus is obviously being harsh, his words are also preserved publicly as a part of the contribution. He's arguing against the logical fallacy. Had he not swore: would we discuss this?
- alexeiz 8y ago> In fact, I'll take real toilet paper over standards any day You can print the Standard on the real toilet paper and have the best of both worlds. Read before wipe!
- JakeTyo 8y agoThis guy writes like an angsty teenager. I find it hard to take him seriously.
- jeisc 8y agoIt is people that matter; all software is only made to serve people. One person can be the holder of a solution to an important problem, so that person must be able to express his ideas even when they go against the common wisdom.