345 karma · joined December 26, 2007
http://en.wikipedia.org/wiki/File:Maslow%27s_Hierarchy_of_Ne...
While this aggressive approach to parenting can be made to sound right on a certain dispassionate level, to some people it just feels intensely wrong in a way that's hard to explain. Why is that?
What happens is that children raised to heavily optimize "Esteem" have a hard time switching gears into "Self-actualization". It's no surprise that the "Chinese mother" disallows her child from starring in the school play. That would be a means of self-expression; it would throw a monkey wrench in the whole works.
I've found many times in life that in order to self-actualize further, I've had to give up things that others praised. I think that in quitting Google and joining a startup (despite her parents' likely disapproval), the author has taken a big step towards self-actualization.
I'm surprised you find this hard to understand. People throughout history have fought and died for self-rule.
Hell, anyone who's been a kid knows how much it sucks to be told what to do, especially when the person doing the telling thinks it's "what's best for you".
> What I'd like to know is how you can guarantee that all garbage is eventually collected in a system like this.
Me too. If you can't guarantee that, it seems that when you unmap a page of virtual memory, you'd have to make sure never to use that page again. You'd also have to keep around your table of "mappings from old pointers to new pointers" forever, just in case you encounter a lingering bad pointer and need to correct it.
From what I gathered, when they compact a page of memory, moving all the objects within it to different locations, they will set a marker on all pointers to be "unset". Then, while program execution is still going on, the GC thread will be busily going through the pointers and correcting them to their new locations as necessary, then setting the marker flag. If, during this period, the executing code tries to use an unmarked pointer, a "read barrier" is hit in the VM, and the GC code corrects that pointer ("self-heals"), sets the marker, then allows execution to continue.
Do I have this right? What about the initial unsetting of all these markers? It would seem to require going through all pointers before you want to compact a page, and I would suspect they're being more clever than that.
I've hit a roadblock in my attempt to install the proper Clojure SLIME environment in Emacs. I've got clojure-mode, SLIME, swank-clojure, and leiningen installed, and I get as far as the slime-repl showing up properly, but my Clojure forms seemingly get ignored by the swank-clojure process. It's frustrating. From my readings of various Google Groups, people often seem to have trouble getting this whole machinery up and running. While the developers have done their best to set up ways to install the whole shebang automatically, that tends to make it more difficult for those of us who like to download systems piece by piece and put it together ourselves.
For that reason, a new way to interact with Clojure excites me. However, I may not take the leap of installing this project immediately. The main thing I like about the SLIME environment is that you get the full power of your text editor even in the REPL, which is invaluable for playing around with complex forms. With this system, it seems that you can either evaluate expressions in Textmate (which is not a REPL and forces you to context-switch to another window) or connect to cake in a terminal (which doesn't give you the flexibility of a text editor).
Perhaps a special Textmate buffer that automatically pastes the output of the eval'd form after the cursor would give me what I want. I will clone the project repo and start looking into what I can do. Thanks for the work you've done.
It was a defensive press conference, by nature. It's not like he's announcing a new product or something. Do you expect, or even want Steve to summon fake enthusiasm on command?
Say what you want about the "reality distortion field", but Steve is a profoundly honest guy, in the sense that he won't convey any impression other than that which he really feels. I bet he couldn't give a Stevenote about a toaster no matter how hard he tried.
In the academic sense ("was it a design that influenced others?") I think the answer is yes. pg's essays about Arc and the language itself got a lot of people thinking about how to improve Lisp. Rich Hickey, creator of Clojure, was influenced to some extent by Arc.
In the practical sense ("is the community active and thriving?") I think the answer is no, so far. #arc on freenode is dead quiet and nearly empty, and there are only 20 new posts on arclanguage.org in the last 40 days. There's nothing wrong with that. It's just not "on fire", that's all. Not yet, anyway.
But it's only fair to give it time. pg said:
"Number one, expect change. Arc is still fluid and future releases are guaranteed to break all your code. It was mainly to aid the evolution of the language that we even released it."
So it's not surprising that an active, thriving community of library creators hasn't sprung up yet.
This is important. Darwin, on his journeys, was very strict on himself about noting down any information that seemed to contradict his theories, because he knew that the natural tendency of the brain is to turn a blind eye to any such inconvenient facts.
I don't think it's the obvious, well-understood fact that biological systems have massive, redundant parallelism, whereas our software systems do not.
I believe it in fact says something very specific and fairly non-intuitive: that biological systems have many slightly different copies of key routines, whereas our software systems as they are designed today do not.
"That’s why E. coli cannot afford generic components and has preserved an organization with highly specialized modules, said Gerstein, adding that over billions of years of evolution, such an organization has proven robust, protecting the organism from random damaging mutations."
For example, imagine instead of having one 'sort' function, you had different sort functions dispersed throughout every area of your code that performs sorting, and each one was very slightly optimized (through design or some unspecified evolutionary process) for the particular characteristics of the data being sorted at that program location.
Thus, 'sort' is no longer a single point of failure. If one of your sort routines has an exploitable buffer overflow, then it's probably the only one that does, which limits the potential damage to the system as a whole -- especially if you've designed your entire system this way.
Could it be better in some cases to copy and slightly modify a software component, than to simply reuse it?
What makes you think we can't design reliable software systems that way? In fact, I think it has already proven to be a remarkably good idea: http://erlang.org/
http://github.com/vishsingh/lisp-toronto/blob/80ea008e80976d...
http://img301.imageshack.us/my.php?image=addtobinarytreescre...
It is shown compared to the analogous code in C++ and Lisp.
My Factor version could probably be improved. In fact, I just now realized that I could have factored out the two final calls to <node> into a single call.
Having never played with Forth-like languages before, I'm finding writing even the simplest algorithms strains my mind -- in a good way, though. It's mind expanding in the same way Lisp was the first time.
I doubt that Factor is the next big thing, but I think that for smart people it's one of the most fascinating things around right now. Zed Shaw, for example, is a big fan:
I wonder if this forum is misnamed. Maybe it should be called "Maker News". Stuff that makers are interested in.