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

Boohoo. If I come into work with a big pink sombrero on my head people would probably give me some unfavorable remarks. My reasons for wearing it are irrelevant. It wouldn't excuse violence or career repercussions, but it would be childish to expect that you can present yourself in any way you like without others reacting to it. That is a key purpose of presentation.


All I can say is you need to read this all over again -- starting with the original blog post -- because you have missed the point in a big, big way.


Sexual assault is no joke. But so what if someone gives you "unwanted attention"? We have become a culture of whiners and rationalisers. It would be like me, as a man, going on and on about how unfair it is that I'm expected to hide fear and put the safety of females before my own. Of course, we're well along the way to destroying that tradition. People ignore the myriad of subtle advantages to this "sexist" approach, starting with the fact that in an emergency no thought needs to be exercised - men know reflexively that they are to put themselves between danger and other people. Maybe we can weaken this a bit and use some different criteria like "the best and bravest should protect others". But if we let the more fantatical egalitarians run the show it will end up with unworkable madness like demanding equal representation in self-sacrifice between men and women.


Well, the "so what" is everything: Unwanted Attention is Unwanted because it embraces some sort of threat or menace or unreasonable expectation or social tension or unease. To say that we should stop giving women this sort of unwanted attention is not whining or rationalizing, nor is it fanatical egalitarianism. It's just demanding a culture where we men know that it's dangerous to control, frightening to objectify, and despicable to rape. The problem is that we accidentally think of these things as "you know, just a thing we do." We just casually say "I totally owned you at TF2" or "he used to be my boss but then I was promoted and I made him my bitch" -- and if you were asked about the slavery and rape metaphors there you just say "Lighten up, I wasn't being literal about it."

Power doesn't have to pervade the society, and it's a bit bizarre how it does. Only last year I joined up with an Ultimate club in Delft, after a childhood in the US. I hated sports in the US because it was cutthroat and antisocial. In the Netherlands there is a big difference, "what sport do you play?" is actually, like, an everyday question. You're expected to have one. And I liked Ultimate here, at least, because people were immediately giving me tips on how to throw cleaner, how to run better, how to stop faster, how to jump higher. It isn't about someone being Team Captain and you wondering whether you'll get Picked Last. I don't know where we learned that as children, but it was part of this bizarre Culture of Power.

And it's the same Power Culture which Joel Spolsky warns entrepreneurs about: don't try to dictate what your artists do; instead try to facilitate, let them express themselves as artists.

Power Culture might have "subtle advantages" as you say. It probably means that we can hire fewer teachers for larger classrooms, because kids are scared that they might be sent to The Principal's Office. But the social repercussions are pretty amazing. In a couple centuries I wonder whether this sort of culture will seem as foreign to them as owning slaves seems to us.


Today I learned: "I owned you at <x>" is a slavery metaphor. It was always just something I said. Now I know, and therefore probably can't say it anymore...


If no one in the context of the discussion finds it offensive, I would say it is fine to say it. If the original meaning of a word has become archaic, then I cannot see a rational reason why one cannot say it. If someone becomes offended by usage of the word, then maybe your position should be re-evaluated, but most insults have their history in bigotry, and trying to cleanse yourself that way is not productive. The word "git" comes from the word "beget", insinuating that they are a forgotten offspring: a bastard. Some people would be offended by being called a bastard, because of it's meaning of being born out of wedlock. But I cannot see anyone being offended by being called a git for it's original meaning. The term no longer means what it does, and censuring it as such does not make sense to me. The same might apply to "I owned you", though I don't know the term so well, so I can't really comment.


Though it is my example, I would add that I don't think that it started out as a slavery-of-others metaphor.

So, before there was "pwned" there was "ownership." You "owned at the game" rather than "owning the other players." The ownership was to entitle that your mastery of the game was so complete that you transcended mere "participation" in the game and instead cultivated "belonging."

Unfortunately, etymology is something of a footnote in real life.


Sorry, I can't talk to someone who says that rape is "accepted" as something that we just do. There are some idiots trying to justify it for sure. Not once did I try to justify rape. You talk nonsense about "power culture" that I never even brought up. I believe in small, resilient entities. This is the opposite of a "power culture". Centuries ago it would have been inconceivable that we would eliminate smallpox. The fact that we might eliminate the flu and other small-harm diseases in the future is not a reason to laud the idea as a good one.


That's pretty much exactly the conversation the military is having about letting women serve in front line combat roles.


I'm sure all of your coworkers are very thankful to have a super-hero like you around to protect them from all the mortal dangers that pop up in the office on a daily basis.

If I heard you going on and on about how it's unfair that your expected to hid fear and put the safety of all the women-folk before your own, I wouldn't think you were a whiner, I'd think you have a damned screw loose.

Read what you wrote, man. We're not talking about the wilderness of Afghanistan, we're talking about a cube farm. Your macho baggage has no place in that setting. If you can't get rid of it, at least suppress it long enough to not burden your co-workers with it.


What is your problem? I don't ever talk about this in that setting. I'm illustrating an idea, and you try to bully me with things I never did. I don't have "macho" baggage. Where did you get this information from? How would you even know if it was true? I'm pointing out that society imposes some limitations on people and that it's pointless to complain over every single little thing. Your admission that these impositions on men are no big deal just serves to illustrate my point: that there's nothing serious going on here. Just first-worlders complaining over every little perceived disadvantage. And yes I would say something if I witnessed someone bullying a coworker as the OP describes. That doesn't mean I'd be sympathetic to whining about it.


The problem with these posts is that we only hear the horror stories. We get a sensational picture of constant harassment from one unlucky person. Most of what was written here was outright harassment. In many places it would be seen as outright illegal for the company to allow this to continue.

I take issue with complaining about "subtle" sexism, however. Life is not fair for men either. In fact, unfairness is universal in life for reasons that are out of anybody's control. By pushing for unobtainable fairness, you are training people to expect fairness, which is disabling. Boys are attacked by other boys in school. You are constantly tested by other males for signs of fear. Big deal. It toughens you up for later life. Gender "equality" in many ways has become just another production output to be maximised without regard to secondary costs.


We're not talking about "life" in any sort of universal context. Whatever 'female privilege' you can try to conjure up in general is largely irrelevant to this very specific setting: a technology profession. Is it really unobtainable to not tend towards choosing the woman to be the head of the potluck or to take notes just because she's a woman? Is it really that unobtainable to not make jokes about PMS or breasts? We're in a really sad state if it's impossible to go to work and not do those things, and a sadder one if those things are so important people will fight for the ability to do them.


You are painting these things as universal. If there were some rule about women and potlucks I'd care. As it is, there is not. I have never even seen a potluck in the workplace! There are much bigger, structural problems to worry about right now. It's like we're on a boat with a hole in the bottom and every interest group is complaining that their feet are getting wetter than all the others. We wouldn't have this problem if the environment were more conducive to smaller businesses - women could avoid these problems by becoming their own bosses. Instead of escaping our entrapments we are arguing for better conditions in the prison.


It seems you're suggesting that working for a company in the technology industry is being imprisoned or that it's prohibitively (and increasingly?) difficult to start a small technology business. As far as I can tell, tech is still a growth industry, and the boats are floating higher, not sinking.

Even if so, why is it irrelevant to bring up a specific reason that women might leave a company? If I was my own boss and had female employees that I wished to retain, I'd consider OP's article to contain a very important lesson.

Also, just because someone has a serious case of cancer doesn't mean it's a waste of their time to complain about someone punching them in the face. Yes, they have a 'much bigger' problem to worry about, but that doesn't mean everything else goes out the window.


You use sophistry. Punches to the face face will make a cancer patient worse. In fact, getting the flu may kill them. The poster is not a cancer patient; presumably, they are a reasonable independent person with some self esteem. So they are capable of learning resilience. We need to distinguish between small harms that ultimately do us good and large harms that are sending society on a destructive course.


Replying here since we reached the thread root.

> >You have given nothing to support the argument that treating someone as subservient based on gender 'ultimately does us good.'

> I never said this. Quote me where I said this, or I will be forced to regard you as a liar.

You said, in the context of the OP's complaint about "'subtle' sexism":

> We need to distinguish between small harms that ultimately do us good and large harms that are sending society on a destructive course.

If you weren't arguing the poster's issue with subtle sexism as was one of those small harms then you've just been going on a random tangent.

If someone accuses you of saying something you didn't mean, it's not necessarily because they are lying or making things up. It could be a misunderstanding, a misinterpretation or a lack of clarification on either side. Further, if someone summarizes or distills your argument and cannot source that summary verbatim, that also doesn't mean it's a lie or inaccurate.

> And I never said "small issues don't matter". Why make things up?

You said this:

> There are much bigger, structural problems to worry about right now. It's like we're on a boat with a hole in the bottom and every interest group is complaining that their feet are getting wetter than all the others.

which implies that people shouldn't be complaining about their feet getting wet because there's a bigger issue. It very much implies that you think small issues should be ignored in favor of the large issues.

Why is it wrong to ask for people to attempt to refrain from being subtly sexist? Is it really that difficult of a thing to do?


Thank you for your clarifications. I'm glad we've been able to get past the quibbles.

I don't think smaller issues should be ignored. Continuing my metaphor, I don't think the flu should be ignored. It is a health problem that must be addressed. But for most healthy individuals it is properly addressed by sleep, fluids and relaxation. Sometimes people get it badly and theuy need further treatment. But by stuffing everyone with antibiotics to prevent the mere possibility of pneumonia or even bronchitis, we are causing secondary problems such as antibiotic resistance. Similarly, whenever we try to over-think human interaction we grow the beast of rationalistic meddling.

Trying to eliminate the flu would be foolish. Stuffing people with antibiotics is foolish. I am not making a dogmatic statement about how all small problems are irrelevant. I am expressing frustration with more complaints over increasingly marginal grievances. It points to a lack of character and a mindless quest to maximise some sense of fairness that for me often lacks authenticity. If we become touchy about small issues we will lose all resilience and perspective.

Leaving aside despicable comments about breasts and so forth that we can easily address through instant reprimand, I don't think being asked to do the notes in a meeting or organise a potluck represents subservience. It is just as stupid as complaining about a request for "a few strong men" to help move some things. Or the stupid outrages over "mrs" versus "ms". People are so sensitive. Raise your objection or get on with it.

I'm not saying the poster is a bad person here. I don't think it's wrong to make this post. Nor would I think it's wrong for someone to complain about any number of other trivial things. But it does point to a sense of entitlement and lack of resilience. I don't like that, and I think we should be working against that trend, not with it.


Because of your plea for civil discussion, I mistakenly assumed that you would interpret my words in good faith (and, for the record, I can't downvote.) Instead, I suppose I should have qualified the hypothetical punches as just sufficient in force to cause pain and irritation but not enough to exacerbate health issues. I'm really not sure what the flu has to do with anything, facial contusions are quite a different thing than a systemic infection.

The point still stands, that small issues matter even when there are bigger issues.

You have given nothing to support the argument that treating someone as subservient based on gender 'ultimately does us good.'

Toughening (or lightening) up is a good thing. I was bullied in school to a distressing degree. Later in my life, I went through training where I learned to shrug off hits far worse than any bully had given me. Sometimes they were accidental and I laughed about it.

However, that doesn't mean it's ok for someone to just walk up to me and sock me in the face. It doesn't mean that it's ok to attack people and just demand that they toughen up and deal with it.

By your argument we should all treat each other like complete crap at home and at work, because it will build character like a lifelong boot camp. Heck, maybe we should treat women specifically like crap so they can get more resilient and perform better than men.

Of course, another poster claims that computer programmers are awkward around women and have such bad self-esteem they should be forgiven. I wonder how well they would fare if the tables were turned.

Honestly, it sounds like an argument born out of the desire to not give up being a jerk to women. It sounds like "lighten up," for no real reason. And, whatever the development potential, it's pushing women away from the field.


>You have given nothing to support the argument that treating someone as subservient based on gender 'ultimately does us good.'

I never said this. Quote me where I said this, or I will be forced to regard you as a liar.

And I never said "small issues don't matter". Why make things up? I am saying that I am bored with endless complaints that exist around noise level. Since I posted a few times and I may not have been redundant enough, I'll be explicit in that I think taunting women about their breasts in the workplace is despicable and anyone who witnessed such a thing should immediately speak up. Anything less is cowardice.

My beef with this post is the complaints about "subtle" sexism. People don't seem to understand that people are unfair to others all the time. There is nothing but a kind of blind secular faith that eliminating these micro-injustices is going to help anybody. So you show me someone who refuses to hire women or abuses them and I will tell them where to stick it. I stand up to people who promote ideas I think are harmful. But I don't want to hear about "perceived" problems that are indistinguishable from the noise-level unfairness that nobody can stop ("boohoo I got asked to take some notes and I think it _might_ have been because I am a woman"). If you don't want to take notes say "no". Better yet do a shitty job. Instead we have people arguing about how one type of slave gets whipped on the buttocks and the other gets it on the thigh, missing the point that if we set the slaves free they wouldn't be getting whipped at all. But don't let me stop you opining about the decor while the house burns down.

And the people down-voting me are just PC thugs with no ability to confront an alternate point of view.


Don't downvote, respond. I am not abusing anyone here.


I'm not downvoting, or commenting on the topic. However, comments like yours here should be downvotes. It's a comment that contributes nothing, simply you whining about being downvoted. If you honestly care about quality, you shut up about pointless numbers that mean nothing.


Your justification of bullying and aggression is just sad.

Life isn't intrinsically fair, but that doesn't mean we should stop trying to make it so. Further, that men don't have perfect lives does not somehow imply that sexism is ok. We can end it. We will.


Your response is sad, because you accuse me of things I never said. I never said "bullying" was justified. Infectious disease is a fact of life. We can wash our hands and prevent the worst plagues, but there is every reason to think that total elimination of disease would be ecologically unsound for humans. People need an immune system. Do you think that I am now "justifying" HIV? It's not "sexism" to be a prejudiced human being.


You justified bullying when you talked about how childhood aggression is useful because it toughens the victim up for later life (that is, putting up with other aggression).

Sexism is not some uncontrollable virus. Sexism is something that people do to other people. And, happily something that some people don't do to other people. We have a choice, and pretending otherwise is absurd.


Give me one example of a society where youthful aggression has been eliminated.


Again, HN shames itself by down-voting a point it has no answer. Someone show me how we can eliminate "bullying" and unfairness anymore than we can eliminate disease. Too much social control will just give rise to new problems, thus creating more need for the "fairness" industry.


There's a big difference between "can't answer" and "no point in answering". For me, you've put yourself in the latter bucket.


Down-voting is not for responses you don't find interesting. It is for hiding responses that abuse the forum. Your mental lethargy is not an excuse to down vote people you disagree with.


Downvotes are for all your meta discussion about downvotes and comments that don't contribute.


How.. hypocritical. Dumbo.


Hypocritical implies I'm some how under the impression my comment is contributing to the central discussion. That I might teach you some manners makes the price worth it. I can see however that learning is not something you do.



Wait, you mean you wouldn't sacrifice the workplace happiness of your entire office to satisfy the hypersensitivity of one employee?


The fact that you can't document the web standards in a few pages demonstrates how badly designed it is. Instead of shaping humans to fit the system, the system should be simple enough that anyone can understand it. The limit is then just how creative and clever they can be with that understanding.

Remember when anyone could do some calculations in Basic and assembler? Now you have to absorb loads of "expert" knowledge to do anything interesting.


Computing is hard; let's go shopping.


The "computing is hard" excuse is a pathetic cop-out by people who can't see past their own self interest.


As opposed to the lies of journalists who emphasise the wrong facts.


Are you suggesting that journalists promote greater truth than entertainers? Have you read the news lately? Truth isn't limited to mere factual correctness.


I understand the line of argument that essentially goes "Daisey still highlights a situation that needs to be addressed", but that is fundamentally different from suggesting that factual correctness somehow doesn't matter. Indeed, Daisey is perhaps one of the most obvious examples of why factual correctness does matter, because all of his falsehoods seem to stem from an egotistical desire to paint him as the savior of China's oppressed worker. So while Daisey's overall point is true, it remains that a fundamental part of it- specifically the role of Mike Daisey- is completely false, and, insofar as it really amounts to Daisey attempting to stroke his own ego, it really is tremendously disgusting.


I find the behaviour repugnant. But the message is being overshadowed by the messenger.


That's true in the sense that factual correctness is a necessary but not sufficient condition for truth.

Take-away: Whether you're a journalist or not, if you're telling people a story that purports to be true, it needs to actually be true. Even in the case of 'pure' entertainers.


What about the truth elucidated in philosophy, religion and even fiction? It's not like philosophers ever obtain "factual" status, and yet there is tremendous truth in many philosophical works.


Perhaps I should have said it this way: If you're telling a story that purports to be factually true, it needs to actually be factually true.

Fiction by definition doesn't purport to factually be true, so that's ok. Most philosophy doesn't, either. Most or all religious texts do, and so most or all religious texts fail my test.


Am suggesting that entertainers don't have to put forward the literal and a literal, factual truth is sometimes crucial. Sure "other truths" are very important also but they can't substitute for factual correctness.

Obviously, also, I mean actually journalists rather than those who play them on TV (Fox News etc).


Indeed. I often like to think of the difference been The Daily Show and Fox News. The former is often as insightful, accurate and ethically-oriented as good journalism -- but officially presented as comedy and entertainment. The latter is elite-serving propaganda thinly disguised as "for the little guy" journalism and low-brow patriotism.


Also, this paper suggests that the answer to multi-tasking problems is to move the complexity out into the language. It's funny how PL researchers will always spin the situation so that it demands more PL research. If we're really moving into a many cores future as people suggest, then we should have architectures that give each application a dedicated core. No context switching. Of course, you'd need a simple system and not a billion daemons running in the background waiting to be exploited by criminals.


Jonathan Shapiro is not a traditional PL researcher. He is the architect and lead developer of EROS (www.eros-os.org) and CapROS (http://www.capros.org), and the author of a vast number of papers on secure and high-performance reliable real-time operating systems. The confinement mechanism in EROS was provably secure (i.e. provably impossible for applications to leak permissions) by Shapiro, and AFAIK is still the only meaningful and practical security mechanism demonstrated to do so, which is a pretty significant contribution in the field of computer science.

(Although having been a voyeur of his work for over a decade now, I'm sure he would be quick to point out that much of EROS was based on formalising ideas from GNOSIS and KeyKOS, and the work of Hardy, Franz, Landau et al. over 20-30 years earlier.)

BitC evolved out of a need to prove that the implementation of the confinement mechanism (prototyped in EROS) matched the model (proven in his PhD thesis), and so the CapROS system (built in BitC) was born (well that plus some architectural changes based on lessons learned from EROS). From that perspective it's much more than just another systems programming language - it has a definitive purpose to advance the state of the art in practical and theoretical computer science. (FWIW, they never did accomplish this goal [http://www.bitc-lang.org/docs/bitc/bitc-origins.html]).


I've been looking through EROS, CapROS, Coyotes, etc. for a bit - thanks for all the references.

Is there still any forward motion here? It seems like a lot of the sites haven't been updated for a good number of years. A notable exception was BitC, which was news from 2010 - still not that recent.


Not that I'm aware of, unfortunately. I haven't followed things much over the past 2-3 years, though.

I suspect there are two forces at play:

1. Building a pure capability-based operating system has minimal payoff. While personally I believe the result will be an amazingly reliable, high performance, secure system, the fact is the operating systems we have today are apparently "good enough" that nobody is interested in funding further work in this area (AFAIK Shapiro and others did form a venture in this regard; what came of it I don't know). Keep in mind that much existing software will have to be re-engineered, and a good part of the OS utilities redesigned since if you're going the pure capability route the significance of files becomes pretty much purely a user thing.

2. At a higher level, in my opinion (as an amateur capability-based systems theorist) the benefits of distributed capability-based systems have already been realised as the shape of the evolving web, albeit on much cruder foundations than those designed as part of the literature. Cookies + URLs are pretty much capabilities, and web services (including web sites!) are effectively distributed objects. Javascript + HTML have fulfilled the dream of being able to ship and run data, code and user interfaces remotely, which is the foundation for an unplanned human + computer usable distributed ecosystem.

Javascript, while not the cleanest language, is a solid language for a capability-based system (in terms of capability rules: everything is an object, objects can only be accessed via references [capabilities], objects references can only be acquired by (a) creating the object or (b) by receiving a capability), i.e. capabilities cannot be forged. If you're interested in what an even more pure approach, designed by people who really know what they're talking about, would look like then take a look at http://www.erights.org and http://www.waterken.com .

In this sense, the first true modern capability-based operating system will probably be the first true web operating system.

I think it's pretty cool, and a confirmation of the ideas in Gnosis, KeyKOS, EROS, Coyotos, CapROS, E, etc. that the natural evolution of the largest distributed system on the planet (the Internet) effectively took the form of a distributed capability-based system.


Thanks, I really appreciate the info. Sorry for my slow response, I hope you see this.

Building a pure capability-based operating system has minimal payoff.

Given the massive security problems we see today, if capabilities are the right solution (are they?), it seems like the payoff could be massive. It seems like "mass adoption" would be hard to achieve (except in the really long term), but it seems like it would be possible to find early adopters who "really really" need good security (e.g. certain military applications, maybe?).

At a higher level, in my opinion (as an amateur capability-based systems theorist) the benefits of distributed capability-based systems have already been realised as the shape of the evolving web, albeit on much cruder foundations than those designed as part of the literature.

This is extremely interesting. Reminds me of the idea behind the "separation kernel" which is supposed to mimic in software the security that can be achieved by connecting systems only over extremely well-defined channels (e.g., the systems are physically disconnected except for an ethernet port that is very well controlled). I can find a refence on security kernels if you're interested and not aware of them already.

Anyway, it does seem to me that there are lots of applications (e.g., embedded applications) where distributing everything over the Internet isn't really going to work (not that you're suggesting that). I'd really like to see people tackle security for this kind of system in an entirely new way. Maybe capabilities is part of that.


A better idea would be to just build a small system whose security was obvious. Computer scientists are right to mimic mathematics. They're just mimicking it too directly. Mathematics is based on construction from simple axioms and cross-checking of different theories. Computer systems should be reduced to small parts with redundant checks against human error. If you prove a kernel "correct" that just means it will be that much harder to rewrite it if it turns out not to be what you wanted.


I've read many of your comments on this thread, and I believe most of them to be unrealizable for non-trivial applications. Anyone can write a simple web-service, but how does one write a super low latency network file system in such a way that "security is obvious?"


Your accusation is useless because the PL tools don't solve this problem either. Currently the only tools we have in networks are cryptographic and social, and those are not provably secure. And the point is that what is considered "non-trivial" nowadays is actually "monstrously huge and self-serving". A computer is just a tool but people want to build a whole world in there. And after that they become addicts, leading to absurd rationalisations about how we need more to cure us.


Why downvote? HN has really gone down the tubes. Why do peopel who downvote harmless comments without a response get downvote privileges?


Wasn't me (I can't downvote) but I have had a similar experience in the Go thread so I share your frustration. This is the reason I stopped visiting Reddit.


I just downvoted you because you are saying something dismissive about someone who has clearly spent a long time studying the alternatives and making a balanced informed decision.

Now it may be that you have some great insight but your post doesn't seem to give me any epiphanies.


Well feel free to let software rot into pure shit under these continued rationalisations. What a great service you're doing to the users.


"If we're really moving into a many cores future as people suggest, then we should have architectures that give each application a dedicated core. No context switching."

You probably don't want that either because the cost of moving data between cores will be so high from both a performance and a power consumption POV. The days of free coherency between cores will eventually come to an end; you can already see evidence of that in multi-socket Intel and AMD machines (if you try to ignore the NUMA nature of memory, you swamp the link between sockets and perf tanks in a variety of apps).


Why would you be moving data between cores? I'm talking about an arrangement where each core is dedicated to a single program. No sharing of memory, even via the kernel. Each hardware devices talks to a single core only. Multiplexing of hardware would be done in.. hardware. For all intents and purposes the "core" could be out on the network.

All this throughput nonsense is benchmrk lies. Websites are not as a general rule highly responsive. They have huge variability in response times. Who cares if it costs a bit more to run the system if it means having a nice predictable system built for simplcity and safety from the ground up?


You need an event-driven system because the number of "tasks" rarely matches the number of physical cores available. One tried and true, fault-tolerant event-driven interface is provided by the kernel: processes (and threads). It has interfaces for binding to NUMA regions and such.

Any system you design will have to tackle a lot of the hard problems that kernels deal with. Now maybe you have a simpler system in mind, but it has to be drastically better for anyone to consider giving up binary compatibility.


You are completely misunderstanding me. I am not saying "let's all move to this new utopian system". I am suggesting that we move away from the idea of making universal systems entirely. Write software that is small enough that complete rewrites can be accomplished without trouble. The current situation is to build ourselves a problem that gets harder and harder to undo as time goes on.

You can't call something that's been around for less than 100 years "tried and true". I'm not saying we can't have "virtual CPUs" for tasks that can handle a performance hit. But it is becoming an unavoidable impediment. "Simple" doesn't mean "easy". It means predictable, small and undoable. The exact opposite to where we are heading.


I write a lot of code that runs in funny environments like the Compute Node Kernel running on Blue Gene systems, with offset-mapped memory (no TLB) and no over-subscription. It's fantastic for reproducible performance, but it's a specialized environment and people want to do things like run Python (as "glue" for some scientific applications) which needs dynamic loading. Since all IO is exported to separate IO nodes, and due to file system consistency semantics, dynamic loading is a tremendous bottleneck. This has escalated to the point where people burn a quarter million core hours to load Python (plus C extension modules) once on a large machine. To really solve the scalability problem, we needed to make dlopen() avoid touching the file system (by patching ld.so and implementing the POSIX file API with collective semantics served over the fast network).

The point here is that there are good reasons to want to use different systems together and then you end up putting in lot of effort working around the limitations of the specialized environments.


It sounds like you're basically proposing Plan 9--lots of very small, single-purpose components with one standardized way of passing data between them used across the entire system.

Also, you can ask a lot of people to give up binary compatibility and be okay, but asking people to give up source compatibility and change applications is a much, much harder pill to swallow. Specialized environments (like the syscall-shipping CNK on Blue Gene like jedbrown mentions) are usually seen as something to work around because they are impediments to productivity. A more robust system wouldn't be considered useful if everyone has to start from scratch.


I'm not really interested in what's "considered useful". Look at the state of web applications. Basically what we could already do in 1996 but using more resources and full of ads and other distractions. And yet to many people this step backwards represents state of the art computing. "Productivity" is highly overrated. Computers are already extremely useful without a bunch of gimmicks. Most of the Web 2.0 companies are creating the desire for their own product. Facebook has turned family photo sharing into a circus show. It doesn't serve any need other than to push for more neomaniacal computerisation. Some people will want to share family photos over the web. We can do that with very simple software. It can even be loaded on demand and sandboxed without any configuration without a hugely complex platform. _Simple_ virtual machines capable of this kind of work aren't hard to construct. But people keep chasing idiotic benchmarks instead. And if it's too slow then change the hardware to make sandboxing easier.


How do you handle DMA and other I/O in your system?


Each hardware device is accessed by a single process at a time. Any multiplexing that needs to be fast is done in hardware. Other multiplexing can be done in user space. For example, and application can request a dedicated channel to some blocks on the hard disk (adjudicated by the OS) or just use another hard disk. Remember, we're building simple applications here so things don't need to constantly write off the the disk for various tasks. You would only be dealing with the disk if your actual data was too big to fit into memory. Cases like that need careful design, not delegation off to some other programmer who doesn't know your problem.

If you're running a server application you split it into some reasonable number of tasks and allocate cores to them as needed. Nothing else runs on the system at all. If you need more cores either upgrade your hardware or you build another identical machine and talk to it over the network. If you look at the way Moore designs, he's crafting a complete artifact to solve a specific problem, not just throwing generic parts together.


The problem with systems design is that it's all so complex. Multitasking has become an excuse to run everything as some absurd daemon. Badly designed hardware has to be papered over with undocumented binary drivers. Everything is optimised for throughput benchmarks, so we get warm ups and unpredictable pauses visible to the user. And it's all full of security holes.

The plain truth of the matter is that none of these things are due to a lack of special language support. It's that the whole system is too complex, and the complexity isn't even quarantined in such a way as to be harmless. We need to be able to start over (something the author acknowledges). We can't do this if we build yet another complex system in the belief that we'll get it all right this time round.


The problem with that is "Worse is Better". And there's just so much momentum behind current technologies, that switching seems almost unimaginable to most. Can you imagine not having Unix-like systems, and not being able to use C and all the languages built around that ecosystem?

But if you're looking for a replacement for the entire software stack we use today, one that tries to shun complexity (20k LOC for everything from kernel to common GUI apps), here you go: http://www.vpri.org/pdf/tr2011004_steps11.pdf

More info (see previous STEPS reports): http://vpri.org/html/writings.php


Thanks for the link. I will check this out later.

>Can you imagine not having Unix-like systems, and not being able to use C and all the languages built around that ecosystem?

Yes! Charles Moore has been essentially living this since the 1970's. No many have his level of courage though.


You mean this one? http://en.wikipedia.org/wiki/Charles_H._Moore

Can you give some more detail? What does he use?


Towards the bottom of that page it mentions color forth. That is what he uses. It is a forth like language that removed punctuation and replaces it with colors.


Ah, upon further reading, colorForth has its own operating system, so he probably uses that too. I had seen the forth bits, but the GP implied he was using some non-Unix OS, and I was still curious about that.


Forth is conventionally a compiler, REPL, editor and OS all in one package. If I recall correctly, the reference implementation of ColorForth happens to run as a Windows application, but it pretty much lives in its own memory image and could probably be made bootable.


Sorry I wasn't clearer about that. Much like there were Lisp machines in the 80s Mr. Moore ran(perhaps still runs) a company that does custom Forth machines. So he uses his own hardware and his own software, turtles all the way down so to speak.


> Yes! Charles Moore has been essentially living this since the 1970's. No many have his level of courage though.

I'm an unbounded admirer of Charles Moore. But courageous? He's a software solipsist. His approach is certainly bold but I doubt he sees himself as courageous.


Call it bold or courageous. He's doing something few are willing to do. I'm not saying he's a hero in the same sense as a soldier or anything here, but he's worth 100x more than the drones who just keep piling mess upon mess without even being able to admit what they are doing.


But that would break the backwards compatibility with previous systems and architectures. The markets can't have that.


"Only C"? What about Forth?


Software is too complicated. Now that we have a generation growing up with computers software engineers are happily brain-damaging them into expecting hugely complex software that doesn't really work. The browser is the perfect example. Why can the user manually reload a page? Shouldn't it all update automatically? The answer is: it's that way because it was convenient for lazy designers a long time ago and nobody bothered fixing it. And it will be rationalised as a good decision now that people have been damaged into thinking it's a good thing. What's there has blinded people to what is possible. Don't let people fool you into thinking that there are good reasons why we ended up with, say, C instead of Forth. It's all rubbish. We've become a field of charlatans.


This isn't rationalizing, but... no, automatic refreshing isn't being 'lazy'. They're called browsers because they were meant to let people browse, not consume as a TV watcher.

If I was reading a book, and the author made an update, I wouldn't necessarily want the new update from the author. Notify me there's an update? Sure! Automatically replace the copy I'm reading with the update, simultaneously removing my ability to ever get back to the version I was reading? No thanks.

"What's there has blinded people to what is possible." As someone who has a good idea of what's possible, I tend to agree, and think of browser 'cookie' support as a good example. 'cookies' were lambasted as the embodiment of evil in the mid-late 90's. The hysteria around them was insane. Why? We had little control over the visibility of what a cookie was, what it said, and how to manage them. Even today, in 2012, cookies are little understood, and to 'manager' them requires multiple clicks in to layers of menus often marked 'advanced' or 'privacy' (both are silly labels for cookie data, imo). We could have given people easier access to view/manage/understand cookie data, and probably avoided national legislation like we see in some countries now, but that would have meant breaking the status quo. Far easier to focus on browser market share and "standards compliance" as the primary measurements of browser utility and acceptance.


<blockquote>Automatically replace the copy I'm reading with the update, simultaneously removing my ability to ever get back to the version I was reading?</blockquote>

This is an asinine example. Why would the author do this except to correct typos or update the kind of information you want updated? Who are these nefarious authors trying to destroy your reading experience? They don't exist, and this kind of lazy thinking is why it took until very recently for browsers to even have the possibility of auto-update without polling (hello 1970).


Your first sentence is in conflict with your example. The UI complication of the refresh button is minuscule in comparison to the technical complexity of implementing universally canonical web page views. But even assuming you could make that work well enough it's impossible to make software that anticipates all needs correctly. A good example was brought up on 5by5 a few weeks ago: should the iPhone alarm be silenced by silent mode. People will expect it to work one way or another and they will be burned badly when it doesn't do what they expect (think setting an alarm to catch an early flight vs being in an opera).

It's easy to sit on a mountain top and spout off declarations about how things should be, but in no place is the old adage "the devil is in the details" more apropos then software development. Even the UI designer runs into these fundamental conflicts, but the low-level programmer is inundated with them. And worse yet, software stacks are so deep and CPUs so powerful that the scope of what software actually does is increasingly difficult to mentally model. The only way out of this is to ruthlessly narrow the scope and have an organization-wide emphasis on UX. This works for Apple, but consider that in order to do this they basically punt on all the hairiest business requirements because it just doesn't serve their vision. Nevertheless those requirements are real and unignorable which is why SAP et al thrive.

The reason most software is bad is not for lack of effort, it's just damn hard to do right. It's good to ask big questions, but then go try to solve some of them rather than admonish those of us who pour our lives into this.


Stop making stupid excuses. The fact that some people might get confused by some detail (like your iPhone alarm example) does not change the fact that some some other things are idiotic (like the refresh button). And your take on the refresh problem shows why this whole thing is a complete mess: I'm not suggesting "universal" auto-refresh. This is why the browsers is such a failure technologically: people want to try to solve all the problems in the platform instead of just providing simple, powerful primitives. As you recognise we need to restrict scope. The only software that actually works is simple and small. And I'm not just "admonishing others". I dropped out of academia and industry and moved into a cheaper neighbourhood to be independent so I can write the simplest software possible. To me that's better than empty talk about "UX" and other modernistic double-talk about how hard we've got it. And having an independent perspective, I can see that it's rationalisations all the way down. We will have botnets etc forever until people tackle the problems as a basic level by simple designs that eliminate the problems. But people can't even conceive of putting ethics before their own financial well-being because as an industry we have no ethics. Just pride in spreading our bullshit around as much as possible.

If software engineers built bridges we'd make it drive up and down the river, put in a few houses to be "efficient". And then when the thing breaks down we'd complain that it's "too hard". No shit it's too hard: because we promise more than we can deliver, hiding the risks and problems from the user. Firefox has as a feature in every version the ability for criminals to install rogue programs on your computer. And yet you won't see this in their marketing material. This is a solved problem. We know how to eliminate memory-safety problems, but Mozilla would rather take N years to do their rust rewrite (if it even happens) because it's in their self interest. If we had any ethics as an industry Firefox would come with a warning that it makes it possible to install rogue programs on your computer. But it won't.


You're off the deep end man. Sure, things could be immeasurably better if you could get everyone to swim in the same direction to solve the big problems. That's not how things work though, we're all in the same boat you are, trying to do the best we can in an imperfect world. This is not a failure of the profession, it's a universal human failing, maybe even more universal than that.


I only seem off the deep end because the industry has brainwashed itself. The computer no longer exclusively serves humans. Rather, humans now look to the computer to know what to do. Talk about "imperfect worlds" is the same thing irresponsible scientists say about "imperfect information". People think spreading harmful theories is fine because they have "imperfect information". It is the same with software. People have lost touch with the possibility of doing nothing instead of engaging in harmful action. If the economy was in a downturn would you see that as an excuse to turn to the tobacco business? The basic misconception here is that the production of more software overrides problems such as increasingly irreversible dependency on complex systems. I keep hearing the same thing I heard when I was in academia: admissions that people were creating problems along with endless excuses and expressions of career-motivated cowardice. Anyone who criticises the bank bailouts as moral hazard and who is also working to build complex systems today is a hypocrite. Because it is the same heroin addict thinking: that we can fix an addiction by increasing the dosage.


Refresh does have a bit of an "implementation model of yesteryear" feel to it. On the other hand I've never observed it to be a massive pain point for users and removing it would need to be done very carefully so as not to create more problems than it solves.

A warning from experience if you are thinking of implementing Alan Cooper's theories on the topic of legacy UI: Be very careful when removing conventional things because they seem archaic and make sure that they respond to a genuine pain point and your dev team has the chops to fully implement the solution you propose. Otherwise you're going to end up with a half-arsed unconventional UI which will just confuse everyone.


I might agree with this statement if the web had produced anything like a "conventional UI" that is consistent. Every website is completely different. Just look at Facebook. This is a horribly confusing website and most of the features are the kind of self-justifying nonsense I'm talking about. Nobody wanted Facebook until Facebook came along and convinced people to turn photo/comment sharing into a sterile game.


Err, what are you supposed to do when you edit a file on your webserver and want to see how it looks? HTTP is not NFS!

But you are mostly right, software has far, far too many pointless layers of abstraction now, requiring vast resources just to do trivial tasks. There's nothing 99% of people use a wordprocessor or a spreadsheet for that you couldn't do on an 8-bit micro in the 80s. Games these days are just not fun, whereas the 8-bit days were a golden era of creativity. We need to take it back to the old school.


On automatic website refreshing:

See guidelines 97 and 98 from Jakob Nielsen and Marie Tahir's book 50 Websites Deconstructed [1] for the primary reason why there has been little interest in removing the "refresh" button from browsers.

Technical limitations don't really exist (and if they do exist it'd be fairly easy to solve). Server-sent events[2] and WebSocket[3] are already implemented in the latest versions of popular browsers. Modules or implementations within popular HTTP servers already exist for doing HTTP push (they tend to use older AJAX-like techniques though).

If usability was no concern (or very carefully handled) it'd be fairly easy to write your own nginx module or "WebSocket server"[4] that uses inotify to check for file system changes. For each change that impacts an open WebSocket connection, a "refresh this page" notification can be sent to the browser (which then uses JavaScript to force a page refresh). There is a potential for smarter refresh mechanisms in browsers that maintain the current scroll state, field values, etc but you'd still be frustrating the user with severe usability problems.

[1] http://www.useit.com/homepageusability/guidelines.html

[2] https://en.wikipedia.org/wiki/Server-sent_events

[3] https://en.wikipedia.org/wiki/WebSockets

[4] http://altdevblogaday.com/2012/01/23/writing-your-own-websoc...


Yes but none of these things existed in 1993. You can call it "lazy" I suppose that TBL didn't implement all the features you take for granted 20 years later before releasing the first browser(!)


It's lazy when your platform still has mandatory polling decades after interrupt driven programming was invented.


Interrupts are not without drawbacks. There are valid reasons to not implement them, particularly on the web.


So, WebSockets are a mistake then?


Websockets are like airplanes: useful, but not for daily commuting.


So do you have any technical points to make, or just more dumb excuses? If you don't want interrupts, you just use them to implement polling.


Interrupts are stateful on the server side; that creates problems in terms of scalability, both due to increased memory usage and by being less flexible (either you have each user "locked" to a single process, or you have to implement state sharing, which adds overhead).

It can also be extremely wasteful - if I leave a tab open for hours or days, you'll have to waste your resources and mine to keep pushing me stuff I won't see, while now I just hit refresh when I want to see new content.

In terms of usability, it's often jarring to watch content change when you're interacting with it - that's why even sites that implement real time notifications often have a link or button that you have to press to update the UI. In many cases, doing that completely negates the benefits of pushing.

Also, see the thesis on "Architectural Styles and the Design of Network-based Software Architectures": http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

Polling is a good default for the web; it fits most use cases (content that rarely changes) in a simple and economical way. WebSockets are useful for the exceptions.


It fits most cases.. except that web applications are _constantly_ polling for information. Which may be fine, but you can implement polling with interrupts. What part of that do you not understand? Are you aware that the OS is using an interrupt-driven system to poll the server? It's just hidden from you, so you have no choice. This is just dumb engineering. And to say that it's good for "most things" is just lazy thinking. "Most things" are that way precisely because of the crappy architecture. Rationalisations.


It fits most cases.. except that web applications are _constantly_ polling for information.

Web applications are a very small part of the web as a whole.

you can implement polling with interrupts

But why would you?

Are you aware that the OS is using an interrupt-driven system to poll the server?

Yes. So? In that case, interrupts are a great fit. In others, they aren't.

This is just dumb engineering.

Why?

And to say that it's good for "most things" is just lazy thinking.

It's not good: it's better for most things. There's nothing lazy about evaluating the options and choosing one.

"Most things" are that way precisely because of the crappy architecture. Rationalisations.

Sure, everyone who implemented this shit is dumb and lazy. It couldn't be that they have good reasons for doing what they did.

I see you criticized me for not providing technical points, yet now you refuse refute them. I don't see the point of this conversation anymore.


You haven't made any technical points. You just waffled nonsense about scalability. I see you're bowing out of the argument because you have no case. Once you have interrupts on a platform, you have polling. If you're stuck with polling you can't recover interrupts. Which is why we have websockets decades late. The truth is there is not tension between interrupts and polling. Interrupts are plainly superior, since you can opt out of them trivially. But the platform should not opt out ahead of the developer. This turns out to be inadequate, so we get polling implemented inside interrupts and then a separate mechanism for interrupts. And the interrupt driven stuff has stupid reload buttons and so forth on the GUI. It's dumb engineering because increases complexity and leads to bad results for the user. You have no case. Polling is dumb. And if you think software engineers ever needed "good reasons" to add a bunch of pointless complexity to things, then you simply have no clue on the history of software development.


Notice how the posts that are downvoted have no replies, because the downvoters cannot argue their case. How sad.


I had not downvoted you, but I thought about it - because you are making ranty, ad hominem attacks ("lazy thinking", "dumb excuses"), and you appear to be ignoring or handwaving away all the actual points anyone makes. I have no interest in engaging you in any discussion for these reasons, and I expect that other people feel the same way: hence, downvotes and lack of replies. Feel free to do what you wish with this information.


"HTTP is not NFS" is a technical challenge that is potentially solvable. With single page apps the reload button is becoming increasingly irrelevant anyway though.


Writing desktop apps within a browser running on a desktop is what's crazy... Pointless layers of abstraction.


It's only pointless because we are still using the "Desktop" model. I'm not advocating one over the other but as we see Mozilla try boot to gecko and Google trying Chrome OS we are seeing the early stages of the "webtopbrowserthing" being refined. We are in that transition state where we are trying to figure out what platform is where the money is.


Those of us who have been around for a while look at what Google are doing with a sense of deja vu

http://en.wikipedia.org/wiki/NeWS

And NeWS was better in the sense that it used PS for everything rather than an unholy mess of JavaScript, CSS, HTML, etc etc.


It just goes to show that market forces do not care about technical merit and ultimate purpose in the least. NeWS never got traction, yet the advance of the web is inexorable. Why?

Well the web is supported everywhere because it was simple. The fact that it is available everywhere (which is actually pretty amazing and unique in the entire history of media if you stop and think about it) meant people kept pushing the boundaries. The limitations caused standards to be pushed forward. Wide use of the standards means no platform can break free from supporting it (Microsoft did their best for almost a decade!).

Obviously it looks like a Frankenstein monster from an engineering perspective, but it doesn't matter because that's where the investment is going. The good news is it will evolve and improve, and soon enough the grey beards who remember that there could have been a better way will all be dead; a lot like UNIX actually ;)

edit: I'd appreciate if bitter GUI developers would respond rather than misdirect their anger at the down vote button.


Well. You're getting downvoted for wishing death on people you've never met.

>The good news is it will evolve and improve, and soon enough the grey beards who remember that there could have been a better way will all be dead; a lot like UNIX actually ;)

That sounds like some sort of evil plot. For that matter my beard isn't anywhere close to being gray and I know that things could have been better. And if you didn't have +8000 karma I would think you were trolling.

That you're not just makes it worse.


Who's wishing death on anyone? It's just a colorful way of saying that people will soon enough take the web heritage of apps for granted.


>The good news is...soon enough the grey beards...will all be dead... ;)

You're the one who asked. If thats what I got out of it it's probably what the people downvoting got out of it too.

For what it's worth maybe the intended message would have come through better if you were saying it in your voice with tone and inflection rather than the way I read it as words on the screen.


What are the practical issues you're concerned about? Dev time? performance / reliability?


Dev time, you say. Well let me tell you a story. I am quite into 8-bit, I like buying micros from the 80s as junk and fixing them up. Recently, my old lady and I wanted a spreadsheet to track days off, vacations and so on. I could have done it on the quad-core, 8G Mac in Excel or online with Google Docs... But I actually did it in ViewSheet on a BBC Micro.

So dev time, well the last THIRTY YEARS of dev time haven't gotten me any anything I didn't have already.


I would personally not put up with a spreadsheet where the GOTO cell function is rather awkardly hidden on function key number seven.


And today I walked a mile from my grandmother's to my house. The last HUNDRED YEARS of car manufacturing haven't gotten me any anything I didn't have already.


A car could get you there faster, or dryer in the rain, or carrying more stuff. But there's not much Excel can do for the vast majority of users who just want a table with a few dozen records, that ViewSheet (or the granddaddy of them all VisiCalc) can't. Same with wordprocessing.


Except many of those users don't want just a table with a few dozen records - they want that plus a couple of small features. And the real problem is that they don't want the same couple of features. Hence, you end up with huge beasts to support each combination.

For example, what if you want to use your spreadsheet when you're not home? Never happened to you? Well, it happened to others.


ViewSheet delivered a basic spreadsheet + sample code in BBC Basic to manipulate it. It could do anything Excel + VBA can do today.


Yes, as long as you can code; but in that case, so can raw assembly. Most people can't code, so that doesn't help them if they want something more. Excel, on the other hand, has features they can actually use.

Or to use my previous analogy, you're essentially saying that because you can build your own custom designed car from parts, pre-built cars are useless.


People should simply design something small that satisfies a niche. If it doesn't have enough features for some person, rewrite it. When software is small you can rewrite as much as you want. Software engineers labour in the delusion that their creations are so fantastic and amazing that it can only accomplished through huge complexity.


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

Search: