There's a difference between enforcing the law and providing free programs to help existing offenders become compliant. The government is not required to provide software for you to do your taxes, why should they be required to provide free software to help you delete your illegal files? RIAA is more than happy to take the necessary measures to enforce the law through litigation. If you can't prove you own the CDs, what do you expect to happen? What do you think a judge is going to say? "Oh, he stole so much he couldn't remember what he bought? That's fine, just don't do it again."
How much does it cost for you to build a time machine to go back to 1995 and make every audio encoder digitally sign every file it compresses? I don't see how that could be so difficult.
His point is that they don't have to actually store the file in violation. So it doesn't necessarily have to even look like a violation in their records.
Note that I'm saying it doesn't have to, not that it will not, which remains to be seen. However, it would be a PR disaster for Apple if people wound up sued over using iCloud, so it seems unlikely to me.
If a certain fact about you — for example, the members of your Facebook friends list — is viewable to anyone with a Facebook account as long as they're logged in to Facebook, then anybody in the world can obtain that information about you anyway, by getting their own Facebook account. So it's perfectly legitimate for Google to report that as a fact that anyone can find about you, if you Google your own name.
There's a jump here: that just because anyone with a Facebook account can find this fact about you, this justifies anyone at all finding you on Facebook just because they're using Google.
I see two ways to support this notion. The first is that Google has a right to presume that you have your own Facebook account, or are willing to get one to view a search result. The second is that information that is available to anybody with an account on a site ought to be considered public. In other words, either there is something special about Facebook, or there is no difference between restricting something to a huge group that it is easy to join and not restricting it at all.
While I agree with the author that it could help expose Facebook's failure to protect users' privacy, I don't think I feel strongly enough about that to grant either form of the supposition that public in Facebook is equivalent to public. Facebook is not a public utility. I deleted my account, as can anyone else (provided you follow their rather arcane instructions). And I don't want Google to have some kind of "information imminent domain" right that makes it OK for them to anonymously spider sites that require login from everyone else. Google is also not a public utility.
The solution to Facebook sucking should not be granting unnecessary power to Google.
You should get rid of your visitor counter and use Google Analytics. Your visitors don't care what visitor number they are, and you can get much better analytics for free without screwing your usability.
if (oldState == newState) return;
if (acSplit != oldAcSplit && bdSplit != oldBdSplit) return;
int tab = getSelectedTab();
int diff = newState - oldState;
int offset = Math.abs(diff) + ((newState + oldState == 4 && tab == 2) ? 1 : 0);
I love to bring up this piece of code, because it exemplifies why comments are necessary. Looking at the code, it's obvious that "all" that's happening here is some integers and booleans are acquiring new values. It may be clear that this is modeling a state machine. So you can get from the code either the low-level view (we are messing with some bits) or the high-level view (we are implementing a state machine) but neither of those is enough information for you to figure out why it is the way it is, why those integers are what they are, or even why this method was necessary in the first place.
In the codebase, this piece of code has much more commentary around it than the code actually takes up. Why not rewrite it in an easier, more readable way? Because I did that four times and never managed to get it right until I made a state transition diagram and coded that directly. As it turns out, there are problems where the correct solution is a simple finite automaton, and those are never intuitive or obvious, no matter how cleanly or clearly they are implemented. In order to modify the code, you have to know the states and transitions of the automaton, which probably aren't expressed by the source code directly.
Source code can only convey how something is to be done. It cannot by itself convey why it must be done or why this algorithm was chosen and not some other algorithm. The code can't make an argument, explain a hypothesis, show the history of the development of an idea. I can't count the number of times I've seen a weird line of code that made sense only because a comment was there to remind me of some edge case I wouldn't have remembered on my own. Yeah, I could have reconstructed it, but reading a sentence with a reminder is usually much faster than constructing a mental image of what's happening at run time and trying to think up what inputs are going to trip this line of code.
This should be obvious, since the language is only interested in formalizing whatever information it needs to be compiled or interpreted. Imperative expressions are just part of what you can express with your native language. So for everything else, we have comments.
I disagree, because I think there's more point to learning than increasing intelligence, and there's more to being human than being able to apply intelligence to business or technology. Education is also about producing well-rounded people. For example, people who know the difference between a social norm (closing the bathroom door), intelligence, and cultural knowledge (Plato, Proust, Swift, etc). We haven't "moved on" from the human condition. Reading Wilde makes you a better person, not a better programmer, trader, or businessman. Seeing college purely as exchanging money for employability in a particular field, of course it is a bad deal. But that's the difference between a degree and a trade certification. Or it was.
All Macs on first boot now ask if you want to restore from Time Machine. I feel like I can get to that from Snow Leopard's installer disk too, but wouldn't swear to it.
First I've heard of MidnightBSD. What other issues have you had with GNUstep and GNOME? I thought the main problem with GNUstep was needing obscure gcc features to compile Objective-C. Is there more to it than that?
but it's doomed because adding yet another layer of abstraction for users to learn is not the way CLI geeks like to work, and everyone else just wants pointy-clicky-shiny and would rather die of festering boils than try to remember the string of text to type in.
First of all, how exactly can an open source hobby project be "doomed"? Doomed to what, not receiving wide acclaim?
Secondly, it's a false dichotomy between users and you know it. What about all those people using LaunchBar and Quicksilver? They like typing commands and using a Mac, which is a combination you seem to think can't exist. LaunchBar's even commercial software! The truth is that there are lots of users who prefer the keyboard to the mouse but nevertheless find UNIX intimidating. There are also users who like UNIX but wish it were more graphical. Two of my closest friends are a designer and a small business owner, and they both have UNIX servers they have to occasionally do light administration on, and they would both much rather use this if they could. Logging in to a remote Linux box does not automatically open up Vim or Emacs for most people. Most of my compatriots would rather copy the file locally, edit it, and copy it back.
Opening the terminal does not make you an expert at it. There are plenty of people who agree that it is more productive yet still find it hard to use and don't have the time or patience to turn UNIX into their hobby. This program is a very interesting tool because it actually targets them, people who use UNIX without loving it or who simply haven't been corrupted into thinking that the only way is the UNIX way.
If you haven't yet, I hope you'll check out Plan 9 and see that even the authors of UNIX didn't see it with this much absurd reverence. There's no terminal in Plan 9, and the mouse plays a very big role in the interface, yet the very people who gave us shells, terminals, command line editing, "visual" editors and everything else you hold dear, did just fine without them and with having to actually click on things to get work done. The Plan 9 shell has no editing, no history, no curses interface. There's no vi clone, no pager. They were comfortable relying on the GUI to provide those features; they simply did not need all that stuff. It's quite an experience.
This seems to be completely the wrong crowd for this development (it is hugely upvoted on Reddit, though), but one reason this may be an improvement is simply that it can combine the speed of writing a command-line program with the visual appeal of a web or GUI application. Speaking personally, there are many times I write a command line program simply because I don't want to invest the time and effort in a GUI program and a web app just isn't appropriate for the task. With this system, I could just output HTML instead of text, and now I've got a nice looking semi-graphical app that's still quick to write and easy enough to use.
I agree that that would be cool, though I consider this fundamentally different. But I don't think we're going to see a useful PowerShell for UNIX simply because in UNIX the only thing you can rely on is files. There is no inherent object model underneath everything that you can tie everything together with. On Windows, particularly since reinventing everything with.NET, there is usually an object model underneath, so it makes sense to reimagine the shell from an OO perspective (not too OO though, or it would be Transcript in Smalltalk).
I think you have this all wrong. This is not a terminal emulator app, it is an attempt at creating a novel text-based user interface with a lot of the graphical niceties Mac OS X users are accustomed to. It preserves the REPL-style interaction method but replaces text output with HTML output, and replaces line-of-text input with token input.
The author is not on a mission to wean Unix-lovers like us from our Terminal.app, he's trying to make something like it for our friends who admire the power of Unix but aren't able to commit to it.
Graphics in the terminal as you describe is a fundamentally different thing from what's being attempted here. Yeah, we have Ncurses and we have svgalib, but what we do not have is a set of Unix fundamentals that return graphical output to the command line interface, interleaved with the text of the commands. To do so would probably be impossible; svgalib takes over the whole screen, for example, and with ncurses you are dealing with characters rather than pixels. Think of it more as WebKit interpreting command output as HTML. So while a fair amount of the coding effort so far has been in creating the server and desktop app, as time goes on much more effort is going to be spent on wrapping existing Unix utilities to have them return HTML this thing can use, or developing alternatives to the Unix standbys that are substantially different and more amenable to new users and this interface.
One capability the author talks about wanting is a way to highlight the command line arguments based on their relative safety or syntactic correctness. This will obviously require introducing a lot of additional information that just isn't there by itself, much like completion patterns for bash or zsh.
In short, I think you've completely misunderstood what's going on here, and that's why you're missing the point.
If you actually read the article, you would know that this is implemented in HTML on top of a small NodeJS HTTP server. There's nothing stopping the backend from being made into an SSL-authenticating web service, and then you can have TermKit shells on remote systems without the remote system having to run a GUI.
I think if you want VT-100 support in this program, you're not the target audience, or you're not seeing the possibilities.
I think you're missing out on PC-BSD, which is a more desktop-oriented FreeBSD. There's also DragonflyBSD which was developed to improve SMP support, again largely for desktop performance.
If you'd run CDE, you'd be in a better place to appreciate GNOME's usability on Solaris. I don't see what this has to do with thin clients either.
Gtk support on OS X has traditionally been kind of iffy. I haven't had luck running Haskell + Gtk on OS X. I am not aware of any apps that use it. It doesn't help that Qt supports OS X natively.
Ultimately, I think the question is whether or not the loss is worth the gain. I don't personally use GNOME but I also don't see the potential gain here as being worth the loss of community. It's not a great idea to abandon any segment of your userbase, because the rest of your userbase will get skittish. Not something you need with a combination of high-profile competition (Unity) and consistently eroding support. I don't think this is likely to go through, but if it does, I'd say you can expect GNOME to be dead within two or three years.
It may have helped that Google has an army of lawyers that vet everything prior to release to make sure they can legally handle it. But you're missing my point, which is that whenever a handful of programmers come up with what would be called a legal hack if it worked, they indubitably get laid a massive legal smackdown, and we all sit around acting surprised.
It doesn't require any contortions of logic to see that the Google services you mention above fall under fair use. It does require logical contortions to see how renting someone something but not giving it to them, instead giving them a different electronic representation thereof, would be the same thing—in a legal sense. This means: not as we conventionally understand things, not "in truth," not "in reality," not taking into account whatever dirty tricks this plaintiff engages in. In the law's idea of things like ownership, transferral, right, equity and equality.
It's like someone, somewhere once told us all that the government or the law exists to make things fair, and we really believed it, and act all indignant when it's used for its true purpose: violence.
Can you actually name a case in recent history in which some programmer managed to skirt a legal restriction by being clever, and actually got away with it? Because none come to mind for me.
The legal system does not work like we think it does. It's not about logic. It's not about unambiguity. It does not work like programming. Our proof is just not the way legal reasoning works.
If you do the math for full utilization of an EC2 instance, or any other cloud offering, you'll see you're paying about 10x what the same would cost with a dedicated VPS or managed host. You only pay for what you use, but their definition of utilization is designed to make it hard to estimate how much you actually will use (do you usually keep track of the quantity of GET and POST requests, as well as the bandwidth, for things you build?)
My problem with the cloud is much like my problem with health care reform. It wasn't health care reform at all, it was health insurance reform. The cloud isn't scalable computing or scalable networking, it's scalable billing.
This is not completely resolved, though you can now, I guess, selectively enable the networking feature. Nearly every blu-ray player comes with wifi or at least ethernet though, because the standard sort of demands it, and apparently they're permitted to upgrade the standard and distribute updates to existing blu-ray players, so there's this upgrade cycle you have to go through that isn't a part of owning DVDs.
The time sink is: learning J2EE, running J2EE, developing on J2EE, debugging on J2EE and deploying J2EE. If you don't agree, you obviously haven't ever tried: C#, PHP, Ruby, Python, Clojure, Smalltalk or Haskell, and you've never tried ASP MVC, Rails, Merb, Sinatra, Play, Seaside, CakePHP, Zend Framework, GWT, Cappuccino, SproutCore, Erlyweb, Yesod, Happstack, Snap, Zope 2, Grok or Compojure. The only thing J2EE is good for is being J2EE when an idiot with a fat wallet demands J2EE. For anything else, there's everything else.
There's a difference between enforcing the law and providing free programs to help existing offenders become compliant. The government is not required to provide software for you to do your taxes, why should they be required to provide free software to help you delete your illegal files? RIAA is more than happy to take the necessary measures to enforce the law through litigation. If you can't prove you own the CDs, what do you expect to happen? What do you think a judge is going to say? "Oh, he stole so much he couldn't remember what he bought? That's fine, just don't do it again."
How much does it cost for you to build a time machine to go back to 1995 and make every audio encoder digitally sign every file it compresses? I don't see how that could be so difficult.
His point is that they don't have to actually store the file in violation. So it doesn't necessarily have to even look like a violation in their records.
Note that I'm saying it doesn't have to, not that it will not, which remains to be seen. However, it would be a PR disaster for Apple if people wound up sued over using iCloud, so it seems unlikely to me.
There's a jump here: that just because anyone with a Facebook account can find this fact about you, this justifies anyone at all finding you on Facebook just because they're using Google.
I see two ways to support this notion. The first is that Google has a right to presume that you have your own Facebook account, or are willing to get one to view a search result. The second is that information that is available to anybody with an account on a site ought to be considered public. In other words, either there is something special about Facebook, or there is no difference between restricting something to a huge group that it is easy to join and not restricting it at all.
While I agree with the author that it could help expose Facebook's failure to protect users' privacy, I don't think I feel strongly enough about that to grant either form of the supposition that public in Facebook is equivalent to public. Facebook is not a public utility. I deleted my account, as can anyone else (provided you follow their rather arcane instructions). And I don't want Google to have some kind of "information imminent domain" right that makes it OK for them to anonymously spider sites that require login from everyone else. Google is also not a public utility.
The solution to Facebook sucking should not be granting unnecessary power to Google.
You should get rid of your visitor counter and use Google Analytics. Your visitors don't care what visitor number they are, and you can get much better analytics for free without screwing your usability.
It's not electronic-only. It's electronic additionally. They're still making DVDs for it. It's an OS after all...
I often run into this mentality, and I really don't understand it. What's this code do?
int oldState = (oldAcSplit ? 1 : 0) + (oldBdSplit ? 2 : 0);
int newState = ( acSplit ? 1 : 0) + ( bdSplit ? 2 : 0);
if (oldState == newState) return;
if (acSplit != oldAcSplit && bdSplit != oldBdSplit) return;
int tab = getSelectedTab();
int diff = newState - oldState;
int offset = Math.abs(diff) + ((newState + oldState == 4 && tab == 2) ? 1 : 0);
I love to bring up this piece of code, because it exemplifies why comments are necessary. Looking at the code, it's obvious that "all" that's happening here is some integers and booleans are acquiring new values. It may be clear that this is modeling a state machine. So you can get from the code either the low-level view (we are messing with some bits) or the high-level view (we are implementing a state machine) but neither of those is enough information for you to figure out why it is the way it is, why those integers are what they are, or even why this method was necessary in the first place.
In the codebase, this piece of code has much more commentary around it than the code actually takes up. Why not rewrite it in an easier, more readable way? Because I did that four times and never managed to get it right until I made a state transition diagram and coded that directly. As it turns out, there are problems where the correct solution is a simple finite automaton, and those are never intuitive or obvious, no matter how cleanly or clearly they are implemented. In order to modify the code, you have to know the states and transitions of the automaton, which probably aren't expressed by the source code directly.
Source code can only convey how something is to be done. It cannot by itself convey why it must be done or why this algorithm was chosen and not some other algorithm. The code can't make an argument, explain a hypothesis, show the history of the development of an idea. I can't count the number of times I've seen a weird line of code that made sense only because a comment was there to remind me of some edge case I wouldn't have remembered on my own. Yeah, I could have reconstructed it, but reading a sentence with a reminder is usually much faster than constructing a mental image of what's happening at run time and trying to think up what inputs are going to trip this line of code.
This should be obvious, since the language is only interested in formalizing whatever information it needs to be compiled or interpreted. Imperative expressions are just part of what you can express with your native language. So for everything else, we have comments.
I disagree, because I think there's more point to learning than increasing intelligence, and there's more to being human than being able to apply intelligence to business or technology. Education is also about producing well-rounded people. For example, people who know the difference between a social norm (closing the bathroom door), intelligence, and cultural knowledge (Plato, Proust, Swift, etc). We haven't "moved on" from the human condition. Reading Wilde makes you a better person, not a better programmer, trader, or businessman. Seeing college purely as exchanging money for employability in a particular field, of course it is a bad deal. But that's the difference between a degree and a trade certification. Or it was.
All Macs on first boot now ask if you want to restore from Time Machine. I feel like I can get to that from Snow Leopard's installer disk too, but wouldn't swear to it.
All the Macbook Pros since 2010 or 2009 have had access to the hard drive and instructions for replacing it in the included manual.
Great, now we have missionaries in science. Fight fire with fire?
First I've heard of MidnightBSD. What other issues have you had with GNUstep and GNOME? I thought the main problem with GNUstep was needing obscure gcc features to compile Objective-C. Is there more to it than that?
First of all, how exactly can an open source hobby project be "doomed"? Doomed to what, not receiving wide acclaim?
Secondly, it's a false dichotomy between users and you know it. What about all those people using LaunchBar and Quicksilver? They like typing commands and using a Mac, which is a combination you seem to think can't exist. LaunchBar's even commercial software! The truth is that there are lots of users who prefer the keyboard to the mouse but nevertheless find UNIX intimidating. There are also users who like UNIX but wish it were more graphical. Two of my closest friends are a designer and a small business owner, and they both have UNIX servers they have to occasionally do light administration on, and they would both much rather use this if they could. Logging in to a remote Linux box does not automatically open up Vim or Emacs for most people. Most of my compatriots would rather copy the file locally, edit it, and copy it back.
Opening the terminal does not make you an expert at it. There are plenty of people who agree that it is more productive yet still find it hard to use and don't have the time or patience to turn UNIX into their hobby. This program is a very interesting tool because it actually targets them, people who use UNIX without loving it or who simply haven't been corrupted into thinking that the only way is the UNIX way.
If you haven't yet, I hope you'll check out Plan 9 and see that even the authors of UNIX didn't see it with this much absurd reverence. There's no terminal in Plan 9, and the mouse plays a very big role in the interface, yet the very people who gave us shells, terminals, command line editing, "visual" editors and everything else you hold dear, did just fine without them and with having to actually click on things to get work done. The Plan 9 shell has no editing, no history, no curses interface. There's no vi clone, no pager. They were comfortable relying on the GUI to provide those features; they simply did not need all that stuff. It's quite an experience.
This seems to be completely the wrong crowd for this development (it is hugely upvoted on Reddit, though), but one reason this may be an improvement is simply that it can combine the speed of writing a command-line program with the visual appeal of a web or GUI application. Speaking personally, there are many times I write a command line program simply because I don't want to invest the time and effort in a GUI program and a web app just isn't appropriate for the task. With this system, I could just output HTML instead of text, and now I've got a nice looking semi-graphical app that's still quick to write and easy enough to use.
You should see it under Plan 9, where literally everything is a file, even things like windows, hardware, network connections, etc.
I agree that that would be cool, though I consider this fundamentally different. But I don't think we're going to see a useful PowerShell for UNIX simply because in UNIX the only thing you can rely on is files. There is no inherent object model underneath everything that you can tie everything together with. On Windows, particularly since reinventing everything with .NET, there is usually an object model underneath, so it makes sense to reimagine the shell from an OO perspective (not too OO though, or it would be Transcript in Smalltalk).
That's my understanding as well. Furthermore, we should be able to take it and run the backend on remote servers with differing OSes.
I think you have this all wrong. This is not a terminal emulator app, it is an attempt at creating a novel text-based user interface with a lot of the graphical niceties Mac OS X users are accustomed to. It preserves the REPL-style interaction method but replaces text output with HTML output, and replaces line-of-text input with token input.
The author is not on a mission to wean Unix-lovers like us from our Terminal.app, he's trying to make something like it for our friends who admire the power of Unix but aren't able to commit to it.
Graphics in the terminal as you describe is a fundamentally different thing from what's being attempted here. Yeah, we have Ncurses and we have svgalib, but what we do not have is a set of Unix fundamentals that return graphical output to the command line interface, interleaved with the text of the commands. To do so would probably be impossible; svgalib takes over the whole screen, for example, and with ncurses you are dealing with characters rather than pixels. Think of it more as WebKit interpreting command output as HTML. So while a fair amount of the coding effort so far has been in creating the server and desktop app, as time goes on much more effort is going to be spent on wrapping existing Unix utilities to have them return HTML this thing can use, or developing alternatives to the Unix standbys that are substantially different and more amenable to new users and this interface.
One capability the author talks about wanting is a way to highlight the command line arguments based on their relative safety or syntactic correctness. This will obviously require introducing a lot of additional information that just isn't there by itself, much like completion patterns for bash or zsh.
In short, I think you've completely misunderstood what's going on here, and that's why you're missing the point.
If you actually read the article, you would know that this is implemented in HTML on top of a small NodeJS HTTP server. There's nothing stopping the backend from being made into an SSL-authenticating web service, and then you can have TermKit shells on remote systems without the remote system having to run a GUI.
I think if you want VT-100 support in this program, you're not the target audience, or you're not seeing the possibilities.
I think you're missing out on PC-BSD, which is a more desktop-oriented FreeBSD. There's also DragonflyBSD which was developed to improve SMP support, again largely for desktop performance.
If you'd run CDE, you'd be in a better place to appreciate GNOME's usability on Solaris. I don't see what this has to do with thin clients either.
Gtk support on OS X has traditionally been kind of iffy. I haven't had luck running Haskell + Gtk on OS X. I am not aware of any apps that use it. It doesn't help that Qt supports OS X natively.
Ultimately, I think the question is whether or not the loss is worth the gain. I don't personally use GNOME but I also don't see the potential gain here as being worth the loss of community. It's not a great idea to abandon any segment of your userbase, because the rest of your userbase will get skittish. Not something you need with a combination of high-profile competition (Unity) and consistently eroding support. I don't think this is likely to go through, but if it does, I'd say you can expect GNOME to be dead within two or three years.
It may have helped that Google has an army of lawyers that vet everything prior to release to make sure they can legally handle it. But you're missing my point, which is that whenever a handful of programmers come up with what would be called a legal hack if it worked, they indubitably get laid a massive legal smackdown, and we all sit around acting surprised.
It doesn't require any contortions of logic to see that the Google services you mention above fall under fair use. It does require logical contortions to see how renting someone something but not giving it to them, instead giving them a different electronic representation thereof, would be the same thing—in a legal sense. This means: not as we conventionally understand things, not "in truth," not "in reality," not taking into account whatever dirty tricks this plaintiff engages in. In the law's idea of things like ownership, transferral, right, equity and equality.
It's like someone, somewhere once told us all that the government or the law exists to make things fair, and we really believed it, and act all indignant when it's used for its true purpose: violence.
Can you actually name a case in recent history in which some programmer managed to skirt a legal restriction by being clever, and actually got away with it? Because none come to mind for me.
The legal system does not work like we think it does. It's not about logic. It's not about unambiguity. It does not work like programming. Our proof is just not the way legal reasoning works.
If you do the math for full utilization of an EC2 instance, or any other cloud offering, you'll see you're paying about 10x what the same would cost with a dedicated VPS or managed host. You only pay for what you use, but their definition of utilization is designed to make it hard to estimate how much you actually will use (do you usually keep track of the quantity of GET and POST requests, as well as the bandwidth, for things you build?)
My problem with the cloud is much like my problem with health care reform. It wasn't health care reform at all, it was health insurance reform. The cloud isn't scalable computing or scalable networking, it's scalable billing.
This is not completely resolved, though you can now, I guess, selectively enable the networking feature. Nearly every blu-ray player comes with wifi or at least ethernet though, because the standard sort of demands it, and apparently they're permitted to upgrade the standard and distribute updates to existing blu-ray players, so there's this upgrade cycle you have to go through that isn't a part of owning DVDs.
The time sink is: learning J2EE, running J2EE, developing on J2EE, debugging on J2EE and deploying J2EE. If you don't agree, you obviously haven't ever tried: C#, PHP, Ruby, Python, Clojure, Smalltalk or Haskell, and you've never tried ASP MVC, Rails, Merb, Sinatra, Play, Seaside, CakePHP, Zend Framework, GWT, Cappuccino, SproutCore, Erlyweb, Yesod, Happstack, Snap, Zope 2, Grok or Compojure. The only thing J2EE is good for is being J2EE when an idiot with a fat wallet demands J2EE. For anything else, there's everything else.