The most likely reason I can think of is that it makes it easier to interface with the existing WebKit code, but this doesn't seem like a very strong reason to me.
424 karma · joined August 16, 2007
The most likely reason I can think of is that it makes it easier to interface with the existing WebKit code, but this doesn't seem like a very strong reason to me.
Some of the slowness seems to be the initial loading, because the responsiveness improves after the first visit. Since the background images seem to mostly be eye-candy, you might want to think about removing them. They also make your first visit to the site more confusing (in my opinion).
I also see some slowness in the hover and zooming, and that seems to stick around so I don't think it is a loading issue. You might want to reconsider the amount of animation that is done by the hovering; I already know where my mouse is, and some of the actions seem to simply highlight that.
I hope this helps, and thanks for putting your stuff up for us to play with.
This isn't actually true. You can still write imperative programs in a pure FP language. The most obvious way is to write your code in continuation passing style and pass the new state of the world to each continuation; taking the implicit state changes of an imperative language and making them explicit.
The real reason for using monads is that the scheme I just described is inhumanly complicated. Monads are a much more structured way of doing the same thing. Instead of writing these state passing CPS functions, you write functions that build them for you. A consequence of this is that monads perform much the same function as macros in Lisp; they are programs that build programs.
This discussion, however, is pure fluff. I equate it to the videos of pratfalls and cute animal pictures that the guidelines admonish against.
I was actually thinking the opposite. I come here for news and articles relating to technology start ups, and this thread shows how far off track hacker news has gotten.
I would think this type of construction was not safe because concrete needs some sort of reinforcement to make up for its low tensile strength. The wikipedia page on rebar (http://en.wikipedia.org/wiki/Rebar) seems to support my concerns, so my question is am I missing something?
Is it possible to make up for a lack of steel reinforcement using special concrete mixtures, or is it perhaps unnecessary for small scale construction?
It's amazing that someone whose only job is to know an industry inside and out can be so out of touch with its customers.
http://www.techeblog.com/index.php/tech-gadget/feature-stude...
"China was the largest economy for centuries because everyone had the same type of economy - subsistence - and so the country with the most people would be economically biggest. Then the Industrial Revolution sent the West on a more prosperous path. Now the world is returning to a common economy, this time technology- and information-based, so once again population triumphs."
The exuberance for Japan 20 years ago was a bubble, and as such it was based on a lot of irrational assumptions: The Japanese had better business models, more productive workers, better work culture, etc. However, the advocates for China's rise are just counting on one, objective indicator; they outnumber us.
The top-level defines do fit the description of "indefinite scope", since they can be accessed anywhere in the program (even before they are defined). I don't know of anyway to remove a top-level define without shadowing it with another top-level define, so it would seem that they also fit the definition of "dynamic extent".
Nested defines are very strange, so I think it is understandable that they don't quite fit in with either CLTL's definitions or with the classical definition of static scoping.
Now for your second example; nested define statements do not allocate a top-level memory location. Instead they allocate a local memory location. Consider the following example:
> (define foo 1)
> (let ((bar (lambda (n) (+ foo n))))
(define foo 2)
(bar 1))
2
> foo
1
> (let ((bar (lambda (n) (+ foo n))))
(set! foo 2)
(bar 1))
3
> foo
2
Here we see that the define and set! methods operated on two different memory locations. When a reference has no matching local declaration, it defaults to looking for a top-level declaration. These top-level declarations are resolved at run time, which is what makes them dynamically scoped.Almost all variables in Scheme are lexically scoped, the exceptions are variables created by a "(define ...)" statement. The reason for this (which is spelled out in "The Art of the Interpreter") is to support defining recursive functions.
So, for instance, the following should work in pretty much any Scheme REPL:
> (define foo 1)
> (define (bar n) (+ foo n))
> (bar 2)
3
> (define foo 2)
> (bar 2)
4
If "(define ...)" statements actually created lexical variables, then both calls to "bar" would return the same result.Personally, I've been pretty pleased with my OLPC XO, but that's mostly because I use it as an ebook reader all the time. If I just wanted a laptop, then I would have gone with the EeePC.
However, I notice that the two posts you point out are much more business related than technology related. Since the real fake steve is a business reporter, perhaps he shines when he's in his element and falls flat when he strays out of it.
Can we now accept that he only got people's attention using classic trolling techniques and go back to ignoring him?
A sign of the flaws in the author's argument is that C++ clearly offers just as much control over the hardware as C. However, an order of magnitude more OSes are written in C than C++. Anyone who's tried to write one in C++ knows why; trying to bend the tool chain to support bare-hardware is a daunting task.
The concept of a "starving artist" predates the rise of computers and transcends all media. The only difference between the music industry and painting, sculpting, writing, or any other form of art is that a myth of past profitability has been propagated in recent years. The (unchanged) reality is that artistic expression doesn't generate revenue streams except for the very few, lucky artists.
I don't think the author appreciates how valuable that world-wide, democratic exposure is. The artists may not receive any direct revenue from it, but it can greatly enhance real sources of revenue, like concerts and merchandising.
A simple book reader that just handled pdf files and was priced competitively to books (less than $100), would stand on it's own. However, being priced at >$400 means that these products have to solve many problems at once (availability, distribution, and hardware), and if they don't do all three well, then they will fail.