News for hackers. Stuff that matters.
Re:Web Design: The First 100 Years (2014) by ploxiln on Tuesday July 21, 2015 @03:15AM (#9920891)
I just wanted to mention that I really liked this article/slides, and agree that most software sucks...

... but I think the systems built "by hackers for hackers", nix clones in general and linux distributions in particular, are generally the best stuff out there.

It's all the attempts to be "intuitive" and "easy" and "just work" that really fails. It's the stuff "by designers for users" that sucks.

The old-ish core unix/linux stuff has been slowly polished over the years and works pretty damn well, and you depend on its quiet stable operation for all your fancy user-friendly (and "dev-friendly") layers that need to be completely replaced every couple of years, for your favorite phone and your favorite websites.

EDIT: you complain about trying to compile kdevelop, on ubuntu... well there's your mistake, both of those things are trying hard to be user-friendly. Try plain debian, plain vim, etc.

Re:Web Design: The First 100 Years (2014) by klum on Tuesday July 21, 2015 @03:42AM (#9920944)
There's a quote by someone (Steve Jobs?) to the effect that there are three phases of understanding a problem: first, you don't understand it; second, you research it and come up with all kinds of complicated solutions and, third, you really understand the problem and you can find a solution which is elegant and actually works.

This is oversimplified, but I think most of the things today that try to be user-friendly and intuitive are stuck in the second phase--it takes a lot of effort and care to get to the third one. The iPhone interface (touch, swiping, ...) might actually be an example of a successful attempt at the "just works"-category--we've all heard of babies learning to navigate iPads etc. And today it seems so obvious, you don't even think about all the nuances that have to be right for this to work, but that's probably a hallmark of the designs that really are intuitive--they seem so obvious you don't immediately realize someone had to come up with them, and iterate on them until they just worked.

Re:Web Design: The First 100 Years (2014) by chipsy on Tuesday July 21, 2015 @06:55AM (#9921401)
There's definitely a learning curve involved. UX improvements tend to follow an arc from "configure everything, expose everything" towards "a bit too crude for power users, but 99% of use-cases are automated, defaulted, and profiled into nothing".

Hacker personalities tend to fall into conflict with that ambition(even if they enjoy the results) since "hackability factor" is dependent on having something to configure, and you can't configure a nothing that just works - especially since in the space between "configure everything" and "just works", you have a form of the uncanny valley effect where the experience gets a lot worse and there is no possibility to configure yourself out of it. That stops UX from enjoying simple incremental improvements.

Re:Web Design: The First 100 Years (2014) by jefurii on Tuesday July 21, 2015 @02:21PM (#9924518)
> "configure everything, expose everything"

The very UNIX-y solution is to have a nice, simple, friendly UI on top of the infinitely-configurable command-line engine. Or better yet, two different friendly UIs and you choose which one you like better.

Re:Web Design: The First 100 Years (2014) by groby_b on Tuesday July 21, 2015 @07:55PM (#9926774)
And that's what got us into the mess we're in, because by now there are 754 friendly UIs, and choosing which one you like better is draining your soul.

You. Don't. Want. Infinitely. Configurable.

What you do want is lots of simple, friendly tools with limited configurability that you can connect to solve larger issues.

To compare it to language, you don't want to have two great novels that are paths through "choose your own adventure". You want words that work together, that are composable according to well-understood, simple rules.

Whenever a system like that comes along (unix pipes, REST APIs), people can build amazing things on top of that. The infinitely configurable hypercomplex thing idea gives you XSL:FO, XSLT, the W3C, C++, and assorted fun.

Re:Web Design: The First 100 Years (2014) by plonh on Wednesday July 22, 2015 @01:06AM (#9927833)
I don't limited configurability tool that doesn't have an option for my particular monitor's resolution.
Re:Web Design: The First 100 Years (2014) by dasil003 on Tuesday July 21, 2015 @01:08PM (#9923813)
But there's also the quote that successful complex systems only evolve from simple systems.

Steve Jobs solution was to make a simple 80% solution. And of course that works in the consumer market for a great many things, particularly innovative new products. However some things are irreducibly complex and still require a solution. In these cases visionaries fail us, and what we need it is practical iteration to get us a working solution. The end result is always ugly, but it works. Until we have bigger brains I don't see how we can avoid this fundamental limitation in our ability to build systems.

Re:Web Design: The First 100 Years (2014) by klum on Tuesday July 21, 2015 @03:18PM (#9924982)
Sure, but I still think you can make things intuitive--just not to some random person on the street but to someone with the requisite domain knowledge.

At least, that's what I like to think.

Relatively speaking, humans have been thinking about interaction with computers for a very short time, so maybe there's hope in the future :).

Re:Web Design: The First 100 Years (2014) by vezzy-fnord on Tuesday July 21, 2015 @09:29AM (#9922076)
Unix is great, but it seems like it has killed off a lot of hackers' imaginations. Hell, we haven't even iterated on Unix all that much since System III, not even something like Sprite, Spring or Amoeba.

"Unix has retarded OS research by 10 years and linux has retarded it by 20." -- Boyd Roberts

Re:Web Design: The First 100 Years (2014) by ploxiln on Tuesday July 21, 2015 @01:23PM (#9923957)
There was Plan9. But the people who worked on that, who are bitter that nobody uses it, or anything like, or even anything "post unix", don't realize what the killer feature of linux was, which ended "OS research":

It was the large body of useful open source and copyleft code. This made it so everyone could stop pouring huge resources into the base OS layer individually, use something that works really quite well (with whatever necessary tweaks since it is open source), and focus on what goes on top. And there's no one extracting rent on this layer. There's no licenses and activations. Nothing of the sort. (You can contract for RHEL, but you can just as easily not.)

BSDs came a couple of years after linux, and plan9 was open sourced many years after (and initially under the problematic "lucent public license"). It was way too late. And the innovations to the most basic interfaces of the OS were just not nearly as valuable as the body of open source which was already available for Linux / BSD.

Plan9 is like the Concorde - pinnacle of tech/design, nobody uses it. Never had seat-back entertainment. Never had wifi. Maybe a silly metaphor, but it fits the OP.

There are still low-level changes these days in Linux and BSDs. Nothing that drastically breaks compatibility of course. But more security boundaries and privilege management (openbsd w/x and aslr stuff, linux seccomp-bpf, freebsd capsicum, containerization), and speed/efficiency measures like sendfile(), epoll() / kqueue(), RCU fs cache lookups, etc.

Re:Web Design: The First 100 Years (2014) by vezzy-fnord on Tuesday July 21, 2015 @01:34PM (#9924079)
There's far, far more than Plan 9. That's only the beginning. Many others iterated heavily on Unix architectures to make them more novel, or started from scratch. John Ousterhout and U.C. Berkeley developed Sprite, which introduced things like checkpointing, live migration, SSI, log-structured file systems and other things. Andy Tanenbaum did Amoeba, which is sadly only remembered for being the platform that birthed Python. Spring was Sun Microsystems' research system, the name service of which brilliantly resolved the problem of "naming things" (I highly recommend you read this paper: https://www.usenix.org/legacy/publications/library/proceedin...). Unfortunately, Sun barely implemented any of its ideas to Solaris. Just the least interesting ones like the doors IPC mechanism.

Never had wifi.

Well, it was developed during a different time. It did get wi-fi thanks to 9front, though.

linux seccomp-bpf

A sandboxing/syscall filtering mechanism. Nothing new there, and its interface is rather leaky, much like Berkeley sockets are.

freebsd capsicum

This is one of the few legitimately interesting projects going on. Bringing capability-based security on top of fds. I don't know if it'll catch on beyond FreeBSD, though. Google seems to be an early adopter.

containerization

Nothing that IBM didn't do much better. Docker reeks of opportunism.

sendfile(), epoll() / kqueue()

sendfile(2) is just a cheap trick that got turned into a syscall: https://groups.google.com/forum/#!msg/golang-nuts/gdp1q6T0DN...

epoll(2) isn't anything special, it's a rather convoluted if performant I/O multiplexing mechanism. kqueue(2) is much cleaner designed, at least.

Re:Web Design: The First 100 Years (2014) by amyjess on Wednesday July 22, 2015 @11:17AM (#9930095)
Yeah, I think what really killed Plan 9 was that they went out of their way to torpedo compatibility with Unix software.

It's a shame, because Plan 9 had so many brilliant ideas, but once you have a mature ecosystem, incompatibility is a killer.

I wonder how well v9fs works...

Re:Web Design: The First 100 Years (2014) by pjmlp on Tuesday July 21, 2015 @09:57AM (#9922265)
" We really are using a 1970s era operating system well past its sell-by date. We get a lot done, and we have fun, but let's face it, the fundamental design of Unix is older than many of the readers of Slashdot, while lots of different, great ideas about computing and networks have been developed in the last 30 years. Using Unix is the computing equivalent of listening only to music by David Cassidy. "

-- Rob Pike on his Slashdot interview

Re:Web Design: The First 100 Years (2014) by iopq on Tuesday July 21, 2015 @12:47PM (#9923627)
"That's why I created a language that feels like it was made 30 years ago"
Re:Web Design: The First 100 Years (2014) by digi_owl on Tuesday July 21, 2015 @01:37PM (#9924111)
And a hammer is perhaps as old as humanity.
Re:Web Design: The First 100 Years (2014) by Confusion on Wednesday July 22, 2015 @07:58AM (#9929019)
The hammer has been reinvented and innovated many times. You don't use a rock strapped to a stick with leather straps, do you?
Re:Web Design: The First 100 Years (2014) by vezzy-fnord on Tuesday July 21, 2015 @02:35PM (#9924620)
Just because Unix is a hammer doesn't mean you shouldn't use or build jackhammers.
Re:Web Design: The First 100 Years (2014) by digi_owl on Tuesday July 21, 2015 @04:14PM (#9925425)
Right tool for the job though. And all to often the attitude is that the jackhammer is always better because it is newer.
Re:Web Design: The First 100 Years (2014) by matt_s on Tuesday July 21, 2015 @12:45PM (#9923603)
I think that is the point of the article above. Is it good enough? What killer feature of an operating system is missing that would take it to another level? And for said killer feature, how will that help normal humans?
Re:Web Design: The First 100 Years (2014) by vezzy-fnord on Tuesday July 21, 2015 @01:23PM (#9923953)
Oh, too many things to list. Orthogonal persistence, seamless process checkpointing, process migration, dynamic binding (like dynamic linking but with unused symbols being deduplicated and freed), a generic name service that lets users define their own mechanisms for resolving names to resources throughout the system (like how directories, environment variables, device nodes are all discrete objects that name references -- imagine redirecting between any arbitrary object type or making your own abstract one) [1], single-system imaging, dynamic code upgrading for every part of the system, process and executable semantics implemented as user-space servers, capability-based security, autorestarting drivers, etc. etc.

The thing is that despite them bringing enormous economic benefits when realized in the mainstream, the short-term incentives are aligned to hacking around what's broken instead.

[1] https://www.usenix.org/legacy/publications/library/proceedin...

Re:Web Design: The First 100 Years (2014) by nostrademons on Tuesday July 21, 2015 @01:57PM (#9924312)
I'm not sure that many of those are a net win for the end-user (where end-user = "grandma"), though. Orthogonal persistence and seamless process checkpointing destroy the "reboot to fix corrupted software" solution, and now that devices can stay in sleep mode for 6 months on a charge, there's very little reason for them. End users don't want to think about names, let alone generic naming services that let them perform more configuration; they want to think in terms of tasks and get them done with a minimum of extraneous details. Dynamic code upgrading loses much of its benefit when users want to be prompted every time an upgrade is ready.

Many of these would be big wins for developers. But developers actually have an incentive to make their own job harder, as long as they charge for their skills. Tougher development serves as a barrier to entry for the profession, which increases the wages they can charge. Make an OS so developer-friendly that the end-user can develop and the profession of software engineer would go away...which may not actually be a bad idea in theory, but neither software engineers nor end-users seem to be that keen on it.

Re:Web Design: The First 100 Years (2014) by vezzy-fnord on Tuesday July 21, 2015 @02:06PM (#9924380)
Orthogonal persistence and seamless process checkpointing destroy the "reboot to fix corrupted software" solution

Well, not if you can also just restart to known-good states. Having a reincarnation server of some sorts is a given.

Not to mention "turn it off and on again" usually never works for Unix to begin with.

Dynamic code upgrading loses much of its benefit when users want to be prompted every time an upgrade is ready.

How does DSU hinder post-completion prompting?

But developers actually have an incentive to make their own job harder, as long as they charge for their skills. Tougher development serves as a barrier to entry for the profession, which increases the wages they can charge. Make an OS so developer-friendly that the end-user can develop and the profession of software engineer would go away...which may not actually be a bad idea in theory, but neither software engineers nor end-users seem to be that keen on it.

This is actually an interesting hypothesis. That a lot of inefficiency in software is really a form of job security.

It might make sense, but then again it seems like programmer wages dropping is inevitable, since software does not have scarcity unless you maintain it artificially. I'd wager FOSS has had an impact, though it obviously hasn't finished the job.

It's certainly possible this is why programmable UIs like Oberon and Cedar never caught on, though.

Re:Web Design: The First 100 Years (2014) by nostrademons on Tuesday July 21, 2015 @02:36PM (#9924642)
How does DSU hinder post-completion prompting?

It doesn't hinder it, but post-completion prompting destroys a lot of the benefit.

Think about the user's perspective: they have already context-switched out of what they were doing to read the upgrade notice. Most apps these days either have auto-save or they're passive information-consumption apps, and so they're not going to lose work if the system shuts them down and restarts them. The OS can prompt them and restart the affected programs automatically after swapping out the binaries in the background, like how MacOS/Ubuntu/Google software updaters work.

So making it fully dynamic saves the user about 30 seconds every month, at the cost of a lot of complexity. There are much easier ways to save 30 seconds per month in user time.

This is actually an interesting hypothesis. That a lot of inefficiency in software is really a form of job security.

It doesn't even have to be deliberate. The only requirement necessary for this dynamic to emerge is to believe in the division of labor and have a mechanism for payment.

A certain segment of the developer population has a burning curiosity about how things work, all the way down. This segment is disproportionately represented among OS developers, because why else do you get into OS development if not to know how things work all the way down? The general public lacks this desire; most of them are quite happy to fork over money (or their personal data) to get the computer to do something useful to them. And a good portion of the developer population lacks it as well; many of them are quite happy to make what people want in exchange for money. The general public doesn't care about orthogonal persistence as long as they don't lose work when an app crashes. A commercial developer would almost rather it didn't exist, because then he can build auto-save functionality into his product and use it to differentiate from his competitors.

OSes that understand this dynamic and embrace it - like Microsoft, Apple, Android - tend to do much better than OSes that don't, like Genera, SmallTalk, or Oberon.

Re:Web Design: The First 100 Years (2014) by digi_owl on Tuesday July 21, 2015 @04:19PM (#9925462)
> Many of these would be big wins for developers. <

I sometimes wonder if devops is the developers way to get admins out of their way so they can work on the next shiny without the admin going "sorry, not until you can prove it is as stable etc as the one we already have".

Re:Web Design: The First 100 Years (2014) by dangerlibrary on Tuesday July 21, 2015 @09:50AM (#9922213)
s/retarded/delayed the need for/g

-- sed, awk, and their friends.

Re:Web Design: The First 100 Years (2014) by _yosefk on Tuesday July 21, 2015 @03:46AM (#9920954)
Erm... I sort of figured it out years and years ago, and I do work in plain vim.

(Hence to me there's no difference whatsoever between one Linux distro and another, because in any case I can only get plain vim and plain grep to work and not much else. So I won't reply wrt Debian vs Ubuntu except that the other standard reply that I get apart from "running old software" being wrong is, I always seem to be using the wrong distribution. I think the one thing that unites all the distros is that each of them is always the wrong one...)

The difference is that on Windows I can run VS just as easily as I can run vim.

Re:Web Design: The First 100 Years (2014) by ploxiln on Tuesday July 21, 2015 @04:06AM (#9920996)
One time I wanted to edit and compile a large open source application on windows... can't just run a build, have to open the project file in VS... VS has to index the source code for intellisense, slows down the whole interface and uses a full gig of memory, and I haven't started a build yet...

Really, I'm just quite biased against windows in particular, because I had only Windows 98 and Windows XP when I first came of the age to have and tinker with my own computer, and the amount of stuff that you can't control and can't fix (installing common software, networking, file sharing, drivers) is infuriating. If something only runs on Windows, that's it's biggest flaw.

EDIT it's an easy potshot so I'll throw in this link http://visualstudio.uservoice.com/forums/121579-visual-studi...

Re:Web Design: The First 100 Years (2014) by vitd on Tuesday July 21, 2015 @02:31PM (#9924587)
Well, I've had the opposite experience. I wanted to build a basic open source package for unix on my Mac. I got the source and followed the instructions to "make whatever". It failed with highly cryptic errors that I later learned through lots of searching meant there were dependencies on other open source projects I didn't have, and all of which had the same sort of dependency problems of their own, and some of which didn't have the proper config files for building on a Mac. I gave up.

But honestly all of that misses the point. The article is talking about typical users, not developers. Building stuff is far beyond people who don't know what a browser cookie is.

Re:Web Design: The First 100 Years (2014) by shkkmo on Tuesday July 21, 2015 @12:22PM (#9923385)
So the solution is to find ways to further democratize hacking and allow people to build the tools they need.
Re:Web Design: The First 100 Years (2014) by nmesse on Wednesday July 22, 2015 @03:56PM (#9931887)
Exactly. Ubuntu is the worst offender of nix based "Easy" systems. By trying to make an uncomplicated system, they have instead done exactly what all these other cr*py systems have done. Made things more complicated.
Re:Web Design: The First 100 Years (2014) by 0xdeadbeefbabe on Tuesday July 21, 2015 @12:28PM (#9923428)
It's the Ned Flanders of the hacker world that are to blame for much of this awful software.