You could say that we should move to other programming "paradigms". However in my opinion, the reason we use imperative programs so such is because most of the tasks we want accomplished are inherently imperative in nature. Outside of intensive numerical work, most tasks people want done on a computer are done sequentially. The availability of multiple cores is not going to change the need for these tasks to be done in that way. A workable solution is using multiparadigm languages such as OCaml. This way you can program most of your sequential tasks inside imperative modules, yet avoid the race conditions and deadlocks by writing the difficult synchronization concerns in a more suitable functional language that connects the many imperative bits in a safe way. This implies the use of very abstract constructs such as monads and arrows (related to the concept of "inversion of control" in the object oriented world).
For the record, Microsoft has recently announced commercial support after its research F# language, based on OCaml, for the.Net platform. Maybe their onto something?
When an open, collaborative project faces a major division in the pursued goals, an option allowed by the open license is following both goals. Deletionists shouldn't strive to destroy any content provided by inclusionists, but these in turn shouldn't expect to have all their contributions regarded to the highest standards. Both positions have their merits, and the advantage of digital media is that it's possible to have the best of them, given a basic agreement to collaborate instead of fight.
The Journal really needs to keep Activities that create data and activities that just navigate through already existing data seperate, otherwise you just end up in a big mess.
There's really good usability insight in your comment right there. Have you posted it to the OLPC feedback forums?
There will always be offline applications and the need for them. There are so many situations where access to the Internet is not available.
True, but the gap between online an offline will blur: desktop apps that query online databases, and web kits that install through the web AJAX-like applications with local caches. The user will no longer be aware of the browser methods to persistently store content found online.
As for archiving visited pages, the best solutions I've found are through Firefox extensions. I've tried [[Google Notebook]] and [[ScribeFire]] (both take care of online storage and thus multi-PC synchronization), though I've heard wonders of [[Zotero]](1).
(1) I think we're not in Wikipedia anymore... you'll have to google them.
For me, the book that did it was The Non-Designer's Design Book, by Robin Williams. It provides explanations of the core concepts taught in graphic design courses: Contrast, Repetition, Alignment and Proximity, with lots of comparative examples before-and-after applying those basic rules. It also has a whole section about how using type fonts effectively.
She also has a "Non-designers web book", but it centers too much in the basics about web technology and has less deepness about the real payoff, the principles of good design.
it has to know *specifically* what makes that picture better. Why not use that knowledge to jump to the best picture (that it can define) from the first picture? Because the algorithm doesn't have that kind of knowledge. In AI-based search we don't know how to define absolute functions of quality, but we know how to define (several) relative dimensions of improvement. (Disclaimer - I do this for a living).
Intelligent search is based on iteratively improving one of those dimensions, just a little bit, one at a time. This goes on until we find a solution that is as good as we can get in all dimensions at once; but we simply don't know how to combine all dimensions to create a formula that maximizes all them, because their relative improvements interact with each other in complex, chaotic ways.
While not exactly what you ask for, you could give a try to The Little Schemer.
Although that book is tailored to the teaching of fundamental computing concepts, it does so in a very elegant, logical, one-step-at-a-time improvement of programs. Don't let the fact that it's LISP-based scare you: Lisp is the reason that this book can "teach people to be clever AND tasteful".
Social data aggregation will not make money for long. A startup that provides a successful aggregation of social networks will set up a new standard for sharing this kind of information, thus opening the data. And at the very moment that social data is open and subject to a standard, there will be no profit made in just hosting this data: there will be competing, interoperable services that offer this service for free (as in beer).
Being first to this standard will provide some momentum and brand recognition for the best social provider, but ultimately it will have to find some other revenue source to stay in business (just like happened to search in the late 90s).
Keeping DNA tidy may be crucial to some of the cell's most important functions. That's because copying DNA and reading out the information it contains are performed by other enzymes, called polymerases, which walk along DNA. "When [a polymerase] comes to a knotted area, it will be stuck," Belmonte says. It's known that ageing is due in part because of the accumulating errors in copying DNA. This article leaves one speculating whether this knotting could be one major source of those copy errors?
There are other books than reference ones, you know. Like, for example, novels.
If you read a book just for entertainment, there's no point in keeping it around once you know how it ends (unless it's really a classic that you want to keep for quoting passages, but that's not a high percentage of books for an average reader).
Show me a programmer who can also do graphic design (or vice-versa) and I'll say, "where did they find that guy/girl?" We've been reading The Non-Designer's Design Book:-P
Easy one: don't give your binaries to anybody, then you won't have to release your source code. Not joking, the GPL works that way.
OTOH, if you release your compiled code without the source, the authors of the GPL code you included COULD go after you, even if you "are one single person".
If they have included GPL code, they would also be infringing just for not showing the GPL text at the execution of the game. If that is the case, there would be no need to wait until a client asked for the source code.
The good thing about computers is that we can redefine what doing a task requires. In your 'playing an instrument' example, thanks to computers it only requires one finger (to press the 'play' key of your MP3). With a two hands interface, a damn whole lot of tasks that are clumsy with a mouse will feel natural again (zooming?).
Also, thanks that the computer remembers state, complex tasks may be decomposed into simpler ones, each one requiring just a simple interaction (again with a music example, that would be using a music tracker to compose a tune, instead of playing it real-time with an orchestra).
When we look at all these slick 'intelligent' interfaces that are newbie oriented, they all hinge on the computer figuring out what the user 'intends' to do. Yes, as so is the core of what usability is about. Though, note that a really usable system MUST let the user override the inferred 'intent' when it's wrong.
They work because they wrap up and automate the common cases, but in doing so they inherently limit the possible functionality. The common cases MUST be fully automated. For the system to be efficient for experts, it must also automate the uncommon cases; there's nothing in that that prevents including a language for expressing both types of automation in the same interface. So the functionality is not inherently limited - the system wrapped for common cases could also be expanded, given that the system is open.
They tend to make life much more difficult for any task that requires digging into what the computer is actually doing or preforming any task the UI developer did not consider important. That's true for the current family of 'usable' interfaces, but you really should give a read to those examples I've linked (Archy and PBE). They are designed to expose what the computer is actually doing, but to expose it in a way that you don't need to be a computer engineer to understand it.
For example, Archy is nearer to a CLI than to a file browser (except for the fact that it doesn't use "files" but a different metaphor, a long sequence of text documents). It has all the possibilites of a command line (invoking arbitrary commands, retrieving and filtering the output of previous executions...) but in a much more user friendly environment.
I think part of the problem in these various usability debates is that a good UI for learning and bringing in newbies is not the most effective solution once one has greater needs. True, but why not? Just because we don't know how to do it work, not because it is a bad idea.
That's why we need a breakthrough. A system both learnable for newbies and efficient for experts is the holy grial of user experience. It can't be done with current mainstream commercial toolkits (too based on the WIMP paradigm), but new technologies (like multitouch and gesture recognition) and new paradigms (like Programming By Example) could be the way to build such complex systems.
presents each window as it's own FULL SCREEN entity, without lost real-estate to window borders, taskbars, and other widgets. It's a Zen thing, you just wouldn't understand. Actually, the real breakthrough in user experience would be an interface allowing that kind of 'zen' without needing to be an expert user. The Humane Interface was a step in the direction of such an interface, but its current proof-of-concept implementation is unfortunately not enough developed to live to expectations.
For the record, Microsoft has recently announced commercial support after its research F# language, based on OCaml, for the
When an open, collaborative project faces a major division in the pursued goals, an option allowed by the open license is following both goals. Deletionists shouldn't strive to destroy any content provided by inclusionists, but these in turn shouldn't expect to have all their contributions regarded to the highest standards. Both positions have their merits, and the advantage of digital media is that it's possible to have the best of them, given a basic agreement to collaborate instead of fight.
There's really good usability insight in your comment right there. Have you posted it to the OLPC feedback forums?
Funny - I find myself reading that to the tune of BADGER BADGER
Well yes, as long as it's something that only affects to yourself.
There will always be offline applications and the need for them. There are so many situations where access to the Internet is not available.
True, but the gap between online an offline will blur: desktop apps that query online databases, and web kits that install through the web AJAX-like applications with local caches. The user will no longer be aware of the browser methods to persistently store content found online.
As for archiving visited pages, the best solutions I've found are through Firefox extensions. I've tried [[Google Notebook]] and [[ScribeFire]] (both take care of online storage and thus multi-PC synchronization), though I've heard wonders of [[Zotero]](1).
(1) I think we're not in Wikipedia anymore... you'll have to google them.
On a related note, I'd like to attract your attention to the statistical inverse correlation between global warming and the shrinking numbers of Pirates since the 1800s. You know this implies that either global warming kills pirates, or that pirates cause a descent in global temperature - and the lack of them leads to this raising.
Eduganda?
Isn't that a Linux distro?
For me, the book that did it was
The Non-Designer's Design Book, by Robin Williams. It provides explanations of the core concepts taught in graphic design courses: Contrast, Repetition, Alignment and Proximity, with lots of comparative examples before-and-after applying those basic rules. It also has a whole section about how using type fonts effectively.
She also has a "Non-designers web book", but it centers too much in the basics about web technology and has less deepness about the real payoff, the principles of good design.
So, what you're proposing is some kind of multiplayer interactive fiction?
it has to know *specifically* what makes that picture better. Why not use that knowledge to jump to the best picture (that it can define) from the first picture?
Because the algorithm doesn't have that kind of knowledge. In AI-based search we don't know how to define absolute functions of quality, but we know how to define (several) relative dimensions of improvement. (Disclaimer - I do this for a living).
Intelligent search is based on iteratively improving one of those dimensions, just a little bit, one at a time. This goes on until we find a solution that is as good as we can get in all dimensions at once; but we simply don't know how to combine all dimensions to create a formula that maximizes all them, because their relative improvements interact with each other in complex, chaotic ways.
While not exactly what you ask for, you could give a try to The Little Schemer.
Although that book is tailored to the teaching of fundamental computing concepts, it does so in a very elegant, logical, one-step-at-a-time improvement of programs. Don't let the fact that it's LISP-based scare you: Lisp is the reason that this book can "teach people to be clever AND tasteful".
Social data aggregation will not make money for long. A startup that provides a successful aggregation of social networks will set up a new standard for sharing this kind of information, thus opening the data. And at the very moment that social data is open and subject to a standard, there will be no profit made in just hosting this data: there will be competing, interoperable services that offer this service for free (as in beer).
Being first to this standard will provide some momentum and brand recognition for the best social provider, but ultimately it will have to find some other revenue source to stay in business (just like happened to search in the late 90s).
Thank you for the effort. Now you are in my friends-as-slashdot-defines-it list.
There are other books than reference ones, you know. Like, for example, novels.
If you read a book just for entertainment, there's no point in keeping it around once you know how it ends (unless it's really a classic that you want to keep for quoting passages, but that's not a high percentage of books for an average reader).
It's not that all opinions are equal, is that all people are entitled to have one. You can have opinions about other people's opinions, also.
Easy one: don't give your binaries to anybody, then you won't have to release your source code. Not joking, the GPL works that way.
OTOH, if you release your compiled code without the source, the authors of the GPL code you included COULD go after you, even if you "are one single person".
(This looks like IHBT, but anyway)...
If they have included GPL code, they would also be infringing just for not showing the GPL text at the execution of the game. If that is the case, there would be no need to wait until a client asked for the source code.
The good thing about computers is that we can redefine what doing a task requires. In your 'playing an instrument' example, thanks to computers it only requires one finger (to press the 'play' key of your MP3). With a two hands interface, a damn whole lot of tasks that are clumsy with a mouse will feel natural again (zooming?).
Also, thanks that the computer remembers state, complex tasks may be decomposed into simpler ones, each one requiring just a simple interaction (again with a music example, that would be using a music tracker to compose a tune, instead of playing it real-time with an orchestra).
For example, Archy is nearer to a CLI than to a file browser (except for the fact that it doesn't use "files" but a different metaphor, a long sequence of text documents). It has all the possibilites of a command line (invoking arbitrary commands, retrieving and filtering the output of previous executions...) but in a much more user friendly environment.
That's why we need a breakthrough. A system both learnable for newbies and efficient for experts is the holy grial of user experience. It can't be done with current mainstream commercial toolkits (too based on the WIMP paradigm), but new technologies (like multitouch and gesture recognition) and new paradigms (like Programming By Example) could be the way to build such complex systems.