Live data from Hacker News

UsesThis: Rob Pike

rob.pike.usesthis.com

171–180 of 192 posts

Re: UsesThis: Rob Pike

#171
Maybe we can ask him what its like to be coding at 50?

For a serious question, does acme lend itself to a chording keyboard? It seems like this is taking another step towards Engelbert's vision in the mother of all demos.

Re: UsesThis: Rob Pike

#172

Earlier quoted context omitted.

I didn't understand his use of the word caching to mean the same thing as a local git repository, but rather a simple latency optimization; SVN has a "cache" too. He also states that most if not all real computation takes place off the device, in the server. If that's not the definition of a dumb terminal, what is? If I misunderstood him, well, good, I'm glad we're not so far apart. But I don't think so.

Remember who Dr Pike works for: "real computation" means updating the Page rank of the World Wide Web, adding up America's phone bills, and other things from the don't-try-this-at-home category.

True. I guess from that perspective, anything that's not a major cluster looks like a dumb terminal.

Re: UsesThis: Rob Pike

#173
post #161

Earlier quoted context omitted.

If you forget to save your file, it won't be on your Plan 9 file server either. The only program which has the state persistence you describe is acme which can dump its state to a file and load it again later, but most every editor on every operating system can do that. And you have to run the Dump command manually, so if you forget, you lose your state the same as you would if you forgot to save before unplugging yo…

Ah, that's why in LaLa Land, all our apps save automatically and everything is version controlled.

In OSX Lion, Apple released Auto Save and Versions, which does exactly this. Except that just a tiny amount of applications I use in my daily development life does this. But in casual use, it's actually quite nice. If the application implements the whole set of Lion auto saving / state API's, you don't even have to save the files for them to remain available.

I can write on multiple unsaved documents with TextEdit, close TextEdit, and all the documents open up in their unsaved state as I open TextEdit. It's quite nice. But to have these features, requires too much of a workflow change to what people are used to, and the LaLa Land of it breaks down right after the user hits an application that does not implement the system, and loses their data (by clicking on don't save or assuming that everything is recovered after a crash).

More info on Auto Save and Versions: http://support.apple.com/kb/HT4753

Re: UsesThis: Rob Pike

#174
post #153

Earlier quoted context omitted.

I'm not sure what you mean by large scale refactoring, but refactoring is much easier in acme compared to any editor I used before because of the powerful sam command language[1] and structural regular expressions[2]. [1] http://plan9.bell-labs.com/sys/doc/sam/sam.pdf [2] http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf

I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified. That sort of things. There are other services that an IDE can provide: - name completion - list of variables in current scope - list of visible types - access to documentation - code annotation All these could be implemented in external tools, but how snappy would the interface be?…

> I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified.

This is trivial in sam and acme because of the sam command language and structural regular expressions. See the links in my previous post. In fact not only that it's easy, I haven't yet found any alternative environment where the operation is so powerful. A few days ago I used sam to extract all structs in the Go tree that use a map but not a mutex, or structs that use the first ones and don't have a mutex either. I only cared about a select/find operation, but I could have paired it with a modify operation that could have added the mutex, for example. The scope and power of the language is unmatched.

> name completion

Personally I think it's worthless (and so do most acme users I know) but it's easy to implement as an external program. Jason Catena did it in one of his Inferno labs.

> list of variables in current scope

One sam command away.

> list of visible types

Same, or use Go.

> access to documentation

Right click on identifiers if you have plumber configured.

> code annotation

No idea what this is.

> inter process communication using pipes isn't really that fast compared to shared memory

Actually, it is. There are very few programs in the world where pipe throughput is not enough.

Re: UsesThis: Rob Pike

#175
Many of the things he says I agree with, others I don't. I think that's the thing with computing. Everyone's tastes are at least slightly different. We don't all want exactly the same things.

I think the big failure is programmers' inability to bring these desired advances, like what Plan 9 achieved, to a wider audience. I mean, he says he had this wondwerful environment at Bell Labs, but almost no one outside of Bell Labs gets to experience that pleasure. Why not? They open sourced it too late? I'm not sure I buy that. It's still better than UNIX, so what's changed? It's like there's some assumption that people just don't deserve anything better, and there's no point in working towards it. Except if you're at Bell Labs.

We're stuck with old UNIX, with all of its historical cruft. Like him, I've just learned to cope with it. (It's funny he's complaining about argv limits (see 2004 Slashdot interview). That seems to suggest he likes to compose super long argv's. No? Maybe he does not like xargs? I never did. But then I've seen similarly unexplainable limits in the Plan 9 port to UNIX. Why can't I have a Plan 9 sed command file with a very large number of commands?)

We could certainly have better. Perhaps it's simply a matter of getting behind the right projects, instead of just following the money and being lazy... working at Google and buying MacBook Pros. That's sort of like giving up. Complacency.

Honestly, "grep'ing the web" just doesn't sound all that "amazing" to me. I don't care how many servers they have running, Google is not Bell Labs.

Re: UsesThis: Rob Pike

#176
post #142
post #44

Earlier quoted context omitted.

It is really a shame, bordering on suspicious, that Google Takeout doesn't include any approximately realtime sync APIs for maintaining an off-cloud copy of your life. Even at Microsoft's worst proprietary height, they could never delete your data.

Why should you have to do that? Why can't google maintain proper backups? They could charge for it. Of course, that means they would need to guarantee they will never, ever, cut you off from your data, not even if you defraud them. Under EU law they basically have a legal obligation to do that, but sadly they don't feel compelled to comply with their legal obligations without a court ordering them to. By the way, if…

Probably the last company I'd ever want in charge of my data is one like Google who allows companies run riot and delete data they don't even own on YouTube.

Re: UsesThis: Rob Pike

#177
post #174

Earlier quoted context omitted.

I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified. That sort of things. There are other services that an IDE can provide: - name completion - list of variables in current scope - list of visible types - access to documentation - code annotation All these could be implemented in external tools, but how snappy would the interface be?…

> I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified. This is trivial in sam and acme because of the sam command language and structural regular expressions. See the links in my previous post. In fact not only that it's easy, I haven't yet found any alternative environment where the operation is so powerful. A few days ago I used sam…

Great! How does a novice like me get his system setup to work with C++, lisp, javascript, or PHP? Do I need to write my own plumbing? Is there repositories of conf files for acme/sam (at least to have some examples to get inspiration from)? I'd like to try.

I don't program in Go btw.

> Actually, it is. There are very few programs in the world where pipe throughput is not enough.

I am very surprised by this. I always thought that programs made of threads were much faster than groups of processi, which have to communicate through OS channels, rather than a common memory space. Maybe I wasn't considering the fact that interactive programs have a lot of time to spare.

Usually, I expect my interactive programs to be snappy when I ask them something, even if I don't do it often at the CPU timescale. That's the real catch in user interaction.

Re: UsesThis: Rob Pike

#178
post #50
post #6

He plants a couple of nice flags: "This is 2012 and we're still stitching together little microcomputers with HTTPS and ssh and calling it revolutionary." and "In summary, it used to be that phones worked without you having to carry them around, but computers only worked if you did carry one around with you. The solution to this inconsistency was to break the way phones worked rather than fix the way computers work."

But, in defense of local storage, if you wanted to use someone else's phone, you had to remember the phone number of who you were calling. This may or may not have been a problem. My mom always carried around a address book with everyone's contact info. Sure, she could call anyone from any phone, but she still needed some local storage with her.

Or you could have a login system on the phone to get access to remote storage.

Stealing phones wouldn't be an issue anymore, except for people using trivial passwords, or writing their password on the phone.

Re: UsesThis: Rob Pike

#179
post #67

I'm a bit surprised that he is happy with a Mac Book. His editor acme requires three mouse buttons and Apple is designed for one mouse button use. Does he use an external mouse all the time? And I'm a bit disappointed that he's not using Plan9. With the current ease of VMs there are no driver and installation issues and he could move the snapshot around.

Did something change recently? Every time I've tried to install plan9 in virtualbox or vmware it ran incredibly slow. Not like "wow this is slow" slow, but "there is something broken here" slow. Just the installation took several hours.

Inferno [1] can run hosted and gives a lot of the Plan 9 feel. You might find it useful if you're wanting to try it out. It might even run on your phone [2].

[1] http://www.vitanuova.com/inferno/ [2] http://www.bluishcoder.co.nz/2012/06/11/building-inferno-os-...

Re: UsesThis: Rob Pike

#180
post #132

Earlier quoted context omitted.

Macbook Pro, vim, and git. Honestly, when there's a discussion of people's work setup on HN, that's kind of what I assume it's going to be.

Don't forget about those crazy people that use emacs instead of vim...

Also, don't forget about those even crazier people (e.g., myself) who prefer a more traditional vi (e.g., nvi) to vim.
Post reply on HN