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.
UsesThis: Rob Pike
171–180 of 192 posts
Re: UsesThis: Rob Pike
#172Earlier 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.
Re: UsesThis: Rob Pike
#173Earlier 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.
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
#174Earlier 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?…
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
#175I 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
#176Earlier 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…
Re: UsesThis: Rob Pike
#177Earlier 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…
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
#178He 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.
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
#179I'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.
[1] http://www.vitanuova.com/inferno/ [2] http://www.bluishcoder.co.nz/2012/06/11/building-inferno-os-...
Re: UsesThis: Rob Pike
#180Earlier 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...