335 karma · joined October 14, 2012
With respect to not being able to imagine music though, I don't think the two are necessarily linked. I most definitely get earworms, and as a guitarist rely heavily on my "mind's ear".
EDIT: The problematic clause in question has now been removed.
Practically, though, if you want the multi-program side of this (which is kind of orthogonal to the 'multiple perspectives on how things are connected' side), then to make this kind of multi-window hypermedia system usable I think you need to have deep integration with the window manager. While Chrome OS tries to achieve this kind of integration by making the browser the OS, I propose that the best way forward here is to effectively make the OS the browser, as I discuss in the article. (Of course I’m not talking about the kernel when I say ‘OS’ here, but the desktop environment). At that point, I’d say the browser is different enough to the browsers of today that the description of ‘freeing the Web from the browser’ is still accurate.
Genuine question: what would you quantify “not by much” as here? In my experience, it's not uncommon to see 2x+ speedups from well-written software pipelined hand-optimised assembly in hot loops. (Especially so for in-order processors, like you might see in embedded applications or as a LITTLE core in your smartphone.)
C obviously isn't a good fit for a hardware language — it's designed for software! That doesn't mean that there doesn't exist similarly abstract ways of writing hardware though (that express the inherent parallelism, etc.). It is likely that these “higher level languages for hardware” would result in less efficient hardware solutions, but that's always a trade-off that is made through abstractions. Writing a program in properly scheduled assembly code is going to be a lot more efficient than writing the same program in C.
The difference with hardware in terms of language abstractions is not that it behaves differently to software. We could easily define a programming language that expresses parallelism in a way that would map nicely to hardware. The problem, from my perspective at least (please correct me if you think I'm wrong) is that hardware needs to be extremely efficient — particularly because it cannot be easily changed. As a result, hardware languages don't tend to be particularly abstract. But this doesn't mean that hardware languages couldn't be more abstract!
All abstractions “lie” in the sense that they present a perspective of the world that is slightly different to the reality — function calls “lie” about the operations that are really being performed, the ISA “lies” about the electronics of the CPU, and transistors “lie” about the underlying behaviour of the universe.
Growth was slow but steady, and the site now receives ~1.4M pageviews per month. The money to keep things up and running comes through banner ads - it's not a huge amount (have only started hitting just about $1000/mo in recent months, and don't know how long that'll last for), but it's still a nice revenue stream to have.
Protecting against code injection is actually a fair point though.
I run a site that provides counter information for League of Legends (http://www.championcounter.com/) and I doubt very much my users will benefit at all from me moving over to HTTPS.