Why are we limited to JS in browsers - would a bytecode standard help? - <AUTHOR> http://andrewducker.livejournal.com/2233017.html <comment><USER2> Before speculating too much about "a bytecode standard", etc., it would probably be helpful to understand virtual machines and instruction sets.

I know web programmers generally aren't big on assembly or writing virtual machines, but an instruction set (group of bytecodes) design and implementation predisposes a processor/VM to certain operations. A VM for an OO language is going to have bytecodes (and other infrastructure) for doing fast method lookup, because it will really hurt performance otherwise. A functional or logic language VM will probably have tail-call optimization, perhaps opcodes specific to pattern matching / unification, and a different style of garbage collector.

Compare the JVM to the Lua or Erlang virtual machines; think about the issues people run into when trying to port languages that aren't like Java to the JVM. Unless people are very deliberate about making a really general instruction set, a "bytecode standard" informed by Javascript could be similarly awkward for languages that aren't just incremental improvements on Javascript. Besides, you can't optimize for everything.

There are a LOT of details I'm glossing over (e.g. sandboxing/security concerns, RISC vs. CISC, the DOM), but I've been meaning to point this out since I read someone saying, "Why do people keep writing more VMs? Why don't we just use the JVM for everything and move on?" It's not that easy.

<comment><USER3> All true. But I think the potential benefits are real, and I don't necessarily think it's a bad thing if the JS VM was specialized for JS. Standardizing the byte-codes could allow a looser coupling between browsers and JS. It could also allow for people to play with JS optimizations and augmentations without having to touch the VM internals itself.

All of this makes me think that if I was a VM researcher, I'd seriously consider going in this direction. And not being a VM researcher makes me think maybe I should be one.

<comment><USER2> I agree with you. Typical web devs probably don't have enough context about virtual machine implementation to understand the trade-offs, though.

</comment></comment></comment><comment><USER4> My admittedly biased view: I spent two years of my life trying to make the JVM communicate gracefully with Javascript - there were plenty of us at Netscape who thought that bytecode was a better foundation for mobile code. But Sun made it very difficult, building their complete bloated software stack from scratch. They didn't _want_ Java to cooperate with anything else, let alone make it embeddable into another piece of software. They wrote their string handling code in an interpreted language rather than taint themselves with C! As far as I can tell, Sun viewed Netscape - Java's only significant customer at the time - as a mere vector for their Windows replacement fantasies. Anybody who actually tried to use Java would just have to suffer.

Meanwhile Brendan was doing the work of ten engineers and three customer support people, and paying attention to things that mattered to web authors, like mixing JS code into HTML, instant loading, integration with the rest of the browser, and working with other browser vendors to make JS an open standard.

So now JS is the x86 assembler of the web - not as pretty as it might be, but it gets the job done (GWT is the most hilarious case in point). It would be a classic case of worse is better except that Java only looked better from the bottom up. Meanwhile JS turned out to be pretty awesome. Good luck trying to displace it.

SWF was the other interesting bytecode contender, but I don't know much about the history there. Microsoft's x86 virtualization tech was also pretty cool but they couldn't make it stick alone.

<comment><USER5> x86 is a perfect comparative example. An architecture that is a patch on a patch on a patch (add several more layers here until you're tired) going back to the 8086 a kajillion years ago (a processor which was less sophisticated and powerful than an arduino). Intel tried to kill the architecture (replacing it with IA64) but AMD patched it yet again and the result was successful.

Nobody sane would design an architecture like x86 (or event x86-64) from the ground up today. Yet here we are.

<comment> Tuna-Fish I would just like to point out that IA64 wasn't really a significant step up. VLIW is a good idea for DSPs and GPUs and whatnot, but for the kind of dynamic, branchy code that we all know and love, IA-64 was quite probably the only somewhat modern CPU arch that was actually _worse_ than x86.

<comment><USER5> I'm not so sure about that. Modern IA64 compilers and systems are actually pretty damned decent. Though the fact that they are still only comparable to a monstrous, teetering pile of hacks and kludges (x86) is not much of a recommendation.

</comment></comment></comment></comment><comment><USER6> In all honesty... what's the difference?

Turing complete language ≈ Turing complete language. Just make something to compile your language of choice into JavaScript, or make a new one (CoffeeScript). Bytecode is just a little more dense, little faster executing, _far_ harder to investigate language than JavaScript, which the browser can compile for added speed anyway.

I prefer my language-of-the-web to be readable, thanks. Then I can find out wtf it's doing. And where you _really_ need speed, native client is just about your only option.

<comment><USER7> The difference is that Javascript is about the worst possible IL for a compiler to compile down to. Yeah you can recover some of the speed by spending man years on making Javascript execute somewhat fast.

As a bytecode you wouldn't use a bytecode that is targeted at handling Javascript constructs. You'd use a bytecode that, for example, supports machine integers (unlike Javascript). Something that allows you to allocate objects, rather than string indexed hash tables. Something that allows you to allocate an array of floats, rather than an array of boxed floats.

<comment><USER5> "Worst possible"? Sub-optimal perhaps, but Javascript is becoming very fast in the browser, perhaps it's not such a bad choice after all.

<comment><USER7> With enough effort you can put lipstick on a pig. But really, an IL that doesn't support integers? An IL where a member field access may involve looking up a string in a hash table instead of being a single machine instruction? Propose that as an IL to a compiler guy and they'll laugh at you. Javascript is an historical accident. Let's look at some alternatives if history was different:

\- Scheme: this would have been a much better choice, because it supports integers and has a compact object representation instead of representing everything with hash tables. Bad point: all objects are boxed (like in JS). Good point: tail calls are handy when compiling all kinds of control structures.

\- Java: As an IL to compile down to this would have been better than Javascript. Good points on top of Scheme: unboxed primitive types, static typing means fewer runtime checks. Bad point: lack of tail calls.

\- ML: excellent choice: has both unboxed primitives and tail calls.

I challenge you to find a language that would have been a worse choice than Javascript. It may turn out that by working really hard on smart runtimes and compilers you can get OKish performance out of Javascript in some cases, but that doesn't mean that it's a good choice for an intermediate language. A ML compiler that just translates to LLVM IL as simply as possible without doing any optimizations itself will easily beat the highly optimized Javascript engines we have today.

<comment><USER8> Just to note though: Javascript in fact doesn't require representing objects as hash tables. For example, the V8 javascript engine represents objects as instances of classes, more or less exactly how C++ would do it (the build the class definitions automatically in the background.)

You are right on integers though, and other types of memory block in general, they are trickier to fix in a javascript engine. Surely the best IL is LLVM IL though, since it was designed so everything can compile down to it.

<comment><USER2> > Just to note though: Javascript in fact doesn't require representing objects > as hash tables. For example, the V8 javascript engine represents objects as > instances of classes, more or less exactly how C++ would do it (the build > the class definitions automatically in the background.)

That sounds like what Self does, too. See the _excellent_ paper, "An Efficient Implementation of SELF" ([http://selflanguage.org/documentation/published/implementati...](http://selflanguage.org/documentation/published/implementation.html)).

The Self bibliography page (<http://selflanguage.org/documentation/published/index.html>) has a lot of other content applicable to dynamic languages in general, too.

<comment><USER9> Self and V8 are connected through Lars Bak. <http://en.wikipedia.org/wiki/Lars_Bak_(computer_programmer)>

<comment><USER2> He worked on Beta / Mjølner, too. Neat!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Google is already heading there with native client. They're changing the approach to serving up LLVM bytecode on the server, which is translated to x86 or ARM by the browser prior to execution. For future apps that require performance, it should work well and with Google's weight behind the tech I think it'll be widely adopted.

There's already a version of python that runs in native client, and pretty much anything could conceivably be ported.

<comment><AUTHOR> Oooh, LLVM bytecode. I hadn't thought of that, but it's a perfect choice!

I hope it does get picked up by other people.

<comment><USER11> <http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf>

^ Overview of the LLVM-based Portable Native Client (PNaCl) architecture.

</comment></comment></comment><comment><USER12> I really liked this comment (by khoth): "And once we have standardised bytecode, the next logical step would presumably be to improve performance by creating CPUs that can execute it directly. In 20 years we'll all be back where we started."

<comment><AUTHOR> I believe some work went on to produce a Java-running chip at one point. It proved better to compile down to whatever suited the chip best.

<comment><USER13> There have been several JVM (without the "V") created[1]. None of them really caught on other than the ARM Jazelle[2], which isn't really a JM, it is more of a JVM accelerator: it has support for direct execution of many of the JVM opcodes.

After investing _lots_ of time and money into creating a JM, the companies were chagrined to find a general purpose processor with a good JVM (especially with JIT) could run circles around a direct-execution processor.

[1] <http://en.wikipedia.org/wiki/Java_processor>

[2] <http://en.wikipedia.org/wiki/Jazelle>

<comment><USER14> And that makes an excellent case for why JavaScript should simply be the bytecode of the future. x86 is gaudy and unsuited for many tasks--but it's where most of the speed innovation happens, thus it's the best platform for compiling other languages too.

I'll propose an alternative, fix JavaScript by adding APIs like ByteArrays and shorts and a proper int to the language. Over time, JS could become an excellent IL. We can standardize on intermediate bytecode, but like all things in web adoption, it will probably be the path of least resistance that works. (Who would ever give HTML graphic, multimedia, and threading abilities?)

</comment></comment></comment></comment><comment><USER15> Am I missing something, or did we all _have_ a browser bytecode standard that everyone hopped on board with, and it turned out nobody really liked feeding browsers compiled programs after all?

<comment><USER16> It was never integrated into the DOM, though, was it? I am only aware of it being used in a separate, sandboxed area on the page, unable to interact with anything else except in a very limited way.

(Never mind the slow loading time etc)

<comment><USER17> You could integrate Java applets into the DOM. Now you have two problems. (Keep in mind that back when this was popular IE 4 was busy kicking the pants off of Netscape Navigator. Fancy programming against IE _4_?)

<comment><USER18>
      Fancy programming against IE 4

DHTML was born with IE4 and Netscape 4, and IE4 was fancier of the two.

</comment></comment></comment></comment><comment><USER19> I'm on Ecma TC39 and in touch with JS hackers working for all the major browser vendors. FWIW, as far as I can foresee there will be no standard JS bytecode. Commenters here touch on good reasons:

* divergent, evolving VMs can't agree (not all NIH, see third bullet);

* IPR concerns;

* lowering from source over-constrains future implementation, optimization, and language evolution paths;

* view-source still matters (less, but still).

A binary encoding of JS ASTs, _maybe_ (arithmetic coders can achieve good compression; see Ben Livshits' JSZap from MSR, and earlier work by Michael Franz and Christian Stork at UCI). But this too is just a gleam in my eye, not on TC39's radar.

Meanwhile, we are making JS a lot better as a target language, with things like ES5 strict mode, the ES-Harmony module system and lexical scope all the way up (no global object in scope; built on ES5 strict), and WebGL typed arrays (shipping in Firefox 4).

We have a Mozilla hacker, Alon Zakai, building an LLVM-based C++-to-JS compiler. Others are doing such things (along with good old SNES emulators and the like).

So being a good mid-to-high-level, memory-safe compiler target language is on TC39's radar. Not to the exclusion of other JS desiderata, and never in a way that compromises mass-market usability or buy-by-the-yard rapid-protoyping "scriptability". But one among several goals.

</comment><comment><USER20> Google nativeclient might be a start... <http://code.google.com/p/nativeclient/>

<comment><USER21> There was a session about it, this time in the Google Developer Day at Munich. Interesting stuff. Right now they're stressing on C/C++, but probably C# is up next.

<comment><AUTHOR> Well, Mono supports LLVM, so it sounds feasible.

<comment><USER22> Mono has already been made to work with PNaCl (for some experimental- prototype-y definition of "already been made to work").

</comment></comment></comment></comment><comment><USER23> Discussions of technical feasibility aside, getting a sufficiently large installed base to make this interesting is (as usual) the "fun" part; your plan for getting to critical mass against an available and "good enough" solution.

As for previous bytecode approaches to consider, there are the Lisp Machines, or the Burroughs B5000 Algol box, or the EFI byte code (EBC) interpreter and the EBC I/O drivers, or UCSD pCode, or all the gonzo things you could do with the VAX User Writable Control Store, the JITs underneath Java and Lua and other languages, or...

And HTTP is printable, which means you're working within character-encoding constraints or with escapements.

There are the not-inconsequential security requirements.

And then there's the question of how a provider might make money with this, if you're not undertaking this effort for free.

Have at...

<comment><USER24> Congratulations on being the only person in this thread with two feet on the ground. Interesting discussion, nonetheless. But purely academic.

<comment><USER25> Since Google is actually working on this, I would read their PNaCL paper before calling the discussion "purely academic":

<http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf>

Summary: Send LLVM bytecode to the browser, and enforce sandboxing by inspecting the compiled code.

</comment></comment></comment><comment><USER26> Whenever I hear "standardized bytecode", I think of Parrot:

<http://www.parrot.org/>

<comment><USER27> That was actually what was in my mind when I originally mentioned the idea to andrewducker!

</comment></comment><comment><USER28> It's an interesting theory, but ultimately irrelevant. The thing is that there are SO MANY people working right now to make JavaScript incredibly fast. It's not hard to imagine a future where JavaScript is the fastest reasonable way to write software -- simply because it's the language that has the most R&D going for it.

Did I say future? Oh, hello NodeJS.

I don't envision that we'll be writing JavaScript itself forever -- but rather a super-syntax on top of it that compiles down to JS. CoffeeScript is the first generation of this kind of programming language.

I do, however, believe that for the foreseeable future, JavaScript will become the lingua franca of day-to-day programming.

<comment><USER2> And yet, for all the resources being thrown at improving Javascript, LuaJIT is still significantly faster. Oh, and it was written by one person.

The design of Javascript itself limits performance in various ways, unfortunately. See this discussion between Mike Pall (of LuaJIT) and Brendan Eich: <http://lambda-the-ultimate.org/node/3851#comment-57671>.

</comment></comment><comment><USER29> Do you remember Internet Explorer with VBScript?

<comment><USER30> I was seriously trying to forget.

</comment></comment><comment><USER31> I'd take it even further and implement the various web standards on this VM. That way when HTML6 or CSS4 comes out you don't need to wait 4 years for everyone to upgrade their browser, you just download it automatically the first time it's used.

This is sort of taking Cappuccino/Objective-J's principle of "shipping the runtime" to the extreme.

</comment><comment><USER32> It would improve script parsing speed but perhaps hinder the evolution of internals of the interpreters. Of course engines could always retranslate this standard bytecode in another internal representation and jits.

</comment><comment><USER33> I might be missing something here, but this implicates a few things:

You won't be writing code in the browser anymore. Otherwise you'd have fragmentation where the user doesn't have the proper interpreter installed, and a never ending stream of "language downloads" which might be cool to devs but horribly impractical for end users.

Because we're not writing in the browser anymore, we'd be back to offline compilation and static code generation. I suppose it'd be possible to JIT the bytecode (assuming that current Javascript optimizers work on the IR; I don't know enough to qualify this any further). From my casual browsing of LtU, it seems that tracing JITs in particular may offer optimizations dificult to achieve with static bytecode compilation, particularly in identifying hot spots. But the more I think of it, that's a non-issue because you're still compiling to bytecode and JITing from there.

This feels very Java-ish to me. If you really want to script the browser in another language, compiling to Javascript (a'la GWT) would essentially do the same thing.

<comment><USER34> > You won't be writing code in the browser anymore

You could be. Impement a URL like <http://mydomain/scripts/MyScript.bytecode>. This is a page which compiles, say MyScript.rb into bytecode and delivers it back to the client. You get a new copy by saving a file on the server and hitting refresh, and there's only one interpreter to download.

<comment><USER33> That just moves the bytecode compilation to the server -- so you're back to my original point of generating the code statically. In fact it'd probably be worse, since there is no reason to compile MyScript.rb to bytecode more than once. It's like generating a dynamic page with Rails when all you really need is static, cacheable HTML.

</comment></comment></comment><comment><USER34> I'd be really interested in seeing this develop. Define a bytecode interpreter (JSVM?) and push bytecode into it. Performance may be god-awful, but you'd be free to use whatever language you fancy.

Parchment is an example of the approach, implementing the z-machine VM in javascript. <http://code.google.com/p/parchment/>

<comment><USER35> _Performance may be god-awful_

Why, after decades of JIT bytecode VMs, do we still have this misconception? Many of the widespread JVM implementations are faster than V8. LuaJIT and C# Mono are also VM implementations that JIT bytecode and are faster than V8! Is this a troll?

[http://shootout.alioth.debian.org/u32/which-programming- lang...](http://shootout.alioth.debian.org/u32/which-programming-languages- are-fastest.php)

<comment><USER34> As people have commented, I'm suggesting writing a javascript function which takes pre-compiled bytecode; like so;

        function interpret(bytecode) {
            // stack machine implementation goes here
        }

And called like so;

       var bytecode = load("http://my.domain.com/myscript.bytecode");
       interpret(bytecode);

I'm not suggesting that bytecode is inherently slow -- just that I could take a great stab at writing a slow bytecode interpreter in JavaScript. ;)

So under this scheme, you could do a server-side compilation of any language -- let's imagine Pascal as an example -- and deliver it back to the client as bytecode. Now you've broken the browser dependence on Javascript. At the cost of a VM written in JavaScript.

<comment><USER35> _I'm suggesting writing a javascript function which takes pre-compiled bytecode_

Sorry, I misunderstood.

 _Now you've broken the browser dependence on Javascript. At the cost of a VM written in JavaScript._

I keep looking at these two sentences again. On one hand I know what you mean. On the other hand, this doesn't make any sense because it contradicts itself. (Which is why I misunderstood the original comment, I think.)

</comment></comment></comment></comment><comment><USER36> Maybe browser makers could expose a few lower level constructs in JS to make efforts like CoffeeScript, Objective-J and GWT easier?

That could be a short term solution. Long term we have to hope that LLVM and NaCl pick up steam.

But many languages for the same tasks will create fragmentation. Right now there is a big pool of developers proficient in JS. They even use the same libraries! The libraries are where a lot of productivity gains come from. The web became an "easy" platform to develop for. With fragmentation that could be lost.

CoffeeScript is interoperable with JS, easy to pick up because it's mainly a cleanup, but Objective-J and GWT are too far out. GWT needs a reworked JQuery, called GQuery.

So there are these economic considerations that are probably more important than language preference.

<comment><USER37> Not sure what you mean by Objective-J being too far out. Objective-J is much closer and "interoperable" with JS than CoffeeScript because it is a strict superset of JavaScript (in other words, all JavaScript _is also_ Objective-J). Practically what this means is that any existing JS works alongside Objective-J with no changes whatsoever, the syntaxes do not "collide". The difference between ObjJ and JS are comparable to ECMAScript 2 and 5 (additions of new features and keywords)

<comment><USER38> Not to be combative, but I think what he means is this: Although it's perfectly easy to use JavaScript from Objective-J, the same is not true in reverse. ObjJ generates code that looks like this:

        objj_msgSend(objj_msgSend(CPIndexSet,"alloc"),
          "initWithIndexSet:",_selectedRowIndexes);

... where objj_msgSend is how the Objective-J "interpreter" does it's magic. If I wanted to use a library that was originally written in Objective-J, from JavaScript, I'd have a hell of a hard time calling it correctly, unless the library author took special care to make it JavaScript-compatible in the first place. The syntaxes may not collide, but the semantics certainly don't match up.

On the other hand, you'd never know that you were calling a CoffeeScript library from JS, unless you inspected the source, and vice-versa. In that sense, they're interoperable.

<comment><USER37> No not combative at all, what you say makes perfect sense. I suppose the confusion arose because he bundled objj with gwt, saying you'd need a totally different jquery, which is certainly not the case with objj.

</comment></comment></comment></comment><comment><USER39> It's not a bad idea.

In fact, why not take it a step further and make a stand-alone client that _only_ executes the byte code? It would be different from Java for two reasons:

(a) The bytecode format could be much simpler if it weren't tied to a particular language (no type system, no objects, maybe not even a garbage collector). If the bytecode was similar to a real CPU architecture, it would be possible to target it from LLVM.

(b) There would be no humongous standard library to install, because it could just be downloaded on demand. With almost all of the library living on the server side, application authors could avoid a lot of the usual compatibility nightmares with different client implementations each one with its own bugs and workarounds.

</comment><comment><USER40> I tried to make this point in this submission:

<http://news.ycombinator.com/item?id=1790311>

The fact that it also ranted about Javascript shifted the discussion though

<comment><USER41> I remembered that post when I saw this headline. I think from a philosophical viewpoint it's a good idea - though I've no idea what the implementation difficulties might be (could google have created V8 if we had a bytecode system?). But from a practical stance, what's the benefit? What would it achieve?

<comment><USER40> >But from a practical stance, what's the benefit? What would it achieve?

The reasons I outlined in my post were things like having a single form validation codebase, deployed both server side and client side. More ambitiously you could have the same codebase used for the server-side online portions of something like gmail and also retarget that to use for offline gmail. Basically the big divide between your server-side and client-side codebases would start to disappear.

Seems like Google's native client system is a great step in this direction. Soon enough it may be possible to target say Lua to LLVM bytecode and deploy that to a browser in a bundle of javascript. If the browser supports NaCi you execute the LLVM bytecode with the built-in VM, if not you have a fallback bytecode interpreter in Javascript. That way you get full coverage of browsers with only degradation of performance when NaCi isn't available. I'm not sure however how fast you could make the Javascript fallback. If it is very slow it may not be workable.

</comment></comment></comment><comment><USER42> imho an intermediate bytecode makes no sense, as silentbicycle explained.

3 alternatives:

1) make every browser vendor implement multiple runtimes

2) x-to-js translators

3) interpreters in implemented in javascript

ad 1) multiple runtimes: not a good idea, because of multiple reasons.

first, versioning hell. javascript is ~15 years old, and browser vendors are still not able to provide 100% compatibility. you'd have versioning hell, only worse. second, it would hurt javascript performance, because browser vendors would have to split ressources. third: which languages should be supported? you just couldn't please everyone, so there would be ongoing "why is language x supported but not y?" problems.

ad 2) translators: are in use now. see coffeescript, gwt and ghcjs, ...

pros:

\- almost native javascript speed

\- already possible

cons:

\- small translation overhead (depending on if it's JITted or precompiled)

\- not everything is possible. if the javascript runtime doesn't support tail call optimization, the translation won't have it either. certain magic just doesn't translate.

ad 3) interpreters implemented in js

afaik there are some, e.g. js brainfuck interpreters.

pros:

\- the sky's the limit

\- already possible

cons:

\- slow (adds an emulation layer).

that said, i'm against additional browser-provided runtimes except NACL. you could use javascript for your day to day work and NACL for your special needs. i'm not sure if NACL would be a complete stand-in for JS thought - would it be possible to communicate with the DOM (or at least JS)? if yes, there you have it - problem solved.

<comment><USER43> JS is just not a good language as a compiler target. If you hade an Bytcode with all the right low level types and features it would be easier to optimise for the VM implementers (mozilla, google ...), you could modify JS without changing the VMs, languages would not be blocked by the speed of JS, faster languages would be possible. It would be easier to make languages that are very diffrent from JS work in the browser.

Your solution work but a haskell interpreter in js will never have good performence but if you could make a GHC backend that comipiles to "web bytecode".

</comment></comment><comment><USER44> But you can run different languages inside a browser.

Activestate had Perl running inside browser: [http://docs.activestate.com/activeperl/5.8/Components/Window...](http://docs.activestate.com/activeperl/5.8/Components/Windows/PerlScript.html)

      <script language="PerlScript">
        $window->document->write('Hello world!');
      </script>

Also you can run VBScript. I have seen code that avoid javascript confirm() and tries to check first if it can use VBScripts msgbox function, just so it can provide 'yes'/'no' buttons. Aka:

      function confirmVB (text)
        confirmVB = msgbox ( Text , VBYesNo )
      end function

and then javascript

      function confirmYesNo(txtText)
      {
        if (window.vbSupported)
        {
      	return confirmVB(txtText);
        } else  {
      	return confirm(txtText + " (ok = yes, cancel = no)"   );
        }
      }

Cheers

</comment><comment><USER45> No, it wouldn't help at all: let me point to the overwhelming success of standards (XML, HTML, Javascript, CSS, Postscript) that are character-based.

Think of Javascript as a (human-readable) virtual machine layer itself, below which the implementation is free to do as it pleases as long as it meets the JS standard semantics.

</comment><comment><USER46> I took a whack at this 9 years ago. My code's at <http://wry.me/~darius/software/idel> and there were other, probably worthier, attempts around the same time and before, like Michael Franz's work with Oberon. Basically: make a low-level VM more or less like LLVM without the machine-dependent semantics and with a compact, easy-to-verify wire format. Apparently PNaCl is working on fixing those infelicities now, or at least the machine dependence.

(I had some fun but decided the obstacles to addoption were too great and we'd end up with x86 in the browser someday. So the NaCl announcement years later amused and gratified me.)

</comment><comment><USER47> Having a standard bytecode would make it much harder to steal code which is much needed as web and mobile applications shift towards using lots of JavaScript.

Currently it's way too easy to steal everything since the whole source is exposed. You can obfuscate JavaScript and CSS, but the main semantics will still be there and someone that's interested will still steal your code (this has happend twice to us, even if all of our JS is obfuscated using Google Closure...) The same thing could happen with bytecode, but their takeout would not be maintainable. Obfuscated JavaScript is still maintainable, since the structure and semantics are largely there.

<comment><USER15> Bytecode-compiled languages are dreadfully easy to decompile.

<comment><USER47> The point isn't that you can't decompile bytecode-languages, but that the decompiled bytecode is a lot harder to maintain than obfuscated JavaScript...

</comment></comment></comment><comment><USER48> Microsoft's silverlight plugin allows for embedding python and ruby in the browser: <http://www.silverlight.net/learn/dynamic-languages/>

<comment><USER49> and Javascript. It is very very fast with Javascript.

You can do what is discussed in this thread today by detecting Silverlight in the client and if it exists use it instead of Javascript source. DOM access, manipulation and everything else is just so much faster.

The Silverlight SDK is free, you can get it on Linux and OS X (Moonlight) and there are a lot of Silverlight VM's out there

</comment></comment><comment><USER50> Why use a virtual machine when you have a real machine? It takes some cleverness to do safely, but the AI lab are a lot clever, and they've found a way:

"Vx32 is a user-mode library that can be linked into arbitrary applications that wish to create secure, isolated execution environments in which to run untrusted extensions or plug-ins implemented as native x86 code."

<http://pdos.csail.mit.edu/~baford/vm/>

</comment><comment><USER51> JavaScript is so moldable, you could easily make a compiler that translates to JavaScript. You could even write a language and translate it in the browser, see CoffeeScript.

</comment><comment><USER52> If bytecode became the standard it would further obscure scripting code and make it tougher to read other people's code.

</comment><comment><USER53> Just translate it to javascript.

</comment><comment><USER51> Take a look at Coffee Script.

</comment><comment><USER54> I believe you are looking for <http://nodejs.org/>

<comment><USER55> (I didn't downvote you but) you answered the wrong parsing of OP's original question: It wasn't "why can't we use JS elsewhere?" but rather "Why can't we use other languages in the browser," a semi-tired plea from those who haven't learned to love JavaScript and/or don't realize that due to the countless number of browsers out there, JavaScript is going to be the only option for DOM scripting for years, at minimum.</comment></comment>


Instagram Threatened Removal of Verified Status for Posting Snapchat Content - <AUTHOR> https://beebom.com/instagram-reportedly-threatened-users-with-removal-of-verified-status-for-posting-snapchat-content/ <comment><USER2> Cribbed from a WSJ article which was discussed at [https://news.ycombinator.com/item?id=21048093](https://news.ycombinator.com/item?id=21048093).

</comment><comment><USER3> > _Links asking someone to add you on another service aren't supported on > Instagram_

That's some weasel-wording right there. "Not supported" makes it sound like this is a feature they'd need to code that they haven't gotten around to yet. It's not -- they needed to take the time to explicitly block something that would otherwise work by default.

Phrasing it as _" Links asking someone to add you on another service are not allowed on Instagram"_ would be more honest, but also make it obvious what they're doing. So instead, they go out of their way to phrase it as something out of their control rather than as a deliberate policy.

<comment><USER4> Isn't inviting folks to add you on another service how most of the scam / paid date etc folks operate? I used to get messages from random women asking me to add them on other services a fair bit.

<comment><USER3> Even assuming that's a valid reason to restrict a competitor, the phrasing is still deceptive.

If Instagram stands by their decision to block third-party links, then they should phrase it as, "we block third-party links", not "they're not currently supported."

</comment></comment></comment><comment><USER5> This "verified" nonsense is silly. Twitter knew who Assange was but refused to "verify" him.

They should change what they call verified to another label like "goodie two- shoes" instead. As it is is a complete misnomer. It's basically used to get users to behave a certain way and if they don't conform they don't get verified or if they are verified it gets revoked.

<comment><USER6> When will Twitter re-open verifying? It's been closed for 2 years...

<comment><USER7> Crummy Buzzfeed content drones with 5000 followers are getting verified.

Verification ticks are just a badge of being well connected, and approved. And having your tick removed is a way of saying that you have stepped out of line.

<comment><USER8> That's what worries me about verified. It's just a form of nepotism at the end of the day and they certainly prefer certain niches (Hollywood, Silicon Valley, the media industry, etc..) over others.

<comment><USER9> Also seems verified is fairly correlated with certain political ideologies - kind of feels like twitter is trying to direct conversation without taking responsibility for bias.

<comment><USER10> That sounds like the usual persecution complex of the anti establishment/alt right. If that where the case, Twitter would be very shitty at such job, since countless of them are verified. Notably including alex jones up to his ban.

<comment><USER9> Journalists of major publications and celebrities are pretty evenly verified. Maybe it's just the circles I follow, but I encounter a lot of random 'liberal centrist with a podcast who has written 2 op eds'-types that seem to be more famous on twitter than anywhere else.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Removing links to other platforms is anti-competitive full stop. Threatening de-verification due to links is even worse.

This is the behavior of monopolists. The FTC and existing anti-trust organizations would do well to return to their jobs and take a look at these practices broadly across the tech industry.

<comment><USER12> Isn't instagram participation voluntary and free of charge? Monopoly over what? Everyone is free to move to another platform or start his own.

<comment><USER13> > participation voluntary and free of charge

If you want distribution of your thoughts, you have to use the walled garden controlled by giants.

> Everyone is free to move to another platform or start his own.

The reality is that you can't. Not without billions of dollars of funding.

Social networks should be regulated. They can't own the platform and make moves to crush others by threatening to downgrade your voice and participation.

<comment><USER12> I distribute my thoughts using email. I have not hit it's scalability limits yet. I cry when I think that in some future I will have to be under some proprietary platform control to distribute my thoughts.

> The reality is that you can't.

The reality is that is was solved a while ago, the solution is rss and email.

Instagram instead offers popularity and nice photo filters and colored ticks on avatars. Which are nothing in common with distributing thoughts.

<comment><USER13> > The reality is that is was solved a while ago, the solution is rss and > email.

You are in a very small minority when compared to the average internet user. This is the same attitude that advocates for IRC and Jabber when modern alternatives have taken over due to user friendliness, network power, and corporate ownership/management.

It's not to say these platforms don't have problems (they do), or that a non- open model is preferable (it's certainly not ideal).

> Instagram instead offers popularity and nice photo filters and colored ticks > on avatars. Which are nothing in common with distributing thoughts.

We can't ignore that the Internet has moved on from our technical solutions since the rest of the world got online. If we want it to remain open, it's up to us to help reign things back in through legislation when we see such blatantly gross abuses such as this.

If you keep pointing to RSS as the solution while simultaneously discounting all of the moves that are being made by the big players, RSS will wither and die and you will be left with nothing.

Platform control. Regulatory capture. Impenetrable new "standards". DRM. Dropped support for HTTP, RSS, semantic HTML, ad blocking, video...

Just imagine what the Internet will look like in twenty years and tell me that doesn't worry you.

</comment></comment></comment></comment></comment><comment><USER14> What I think is the problem is the terminology. 'Verified' makes it sound like there is some identity checking going on. It is nonsense to say that because someone is posting on 2 platforms, they suddenly aren't who they say they are. If you use the term 'affiliate' or 'partner' it is a different story. If you are posting on 2 or more platforms, it is logical for all involved platforms to not feel like partners anymore.

<comment><USER15> Call me paranoid but it seems increasingly that Big Tech uses all their avenues to force conformity. The message is that if you don't do what we want, bad things start happening. It can happen anytime anywhere and you wont necessarily know why. It's about encouraging a helpless, submissive, fearful mentality.

Maybe they'll no longer show you as verified. Maybe your posts will be demoted a bit in the feed. Maybe you now longer show up when people search for you. Maybe your sub becomes quarantined for an obviously for an obviously false reason (facts don't matter). Maybe you see more captchas. Maybe pages start loading more slowly for you. Maybe for your subscribers. Maybe you wont be able to show ads. Maybe it's the comments that get revoked. Maybe your account gets frozen and all your funds stolen.

Most (all?) of those are actual things happening right now.

<comment><USER16> > it seems increasingly that Big Tech uses all their avenues to force > conformity.

because these big tech companies are all dependent on advertising revenue, and thus converge to advertiser friendly behaviour.

<comment><USER17> Nothing much to do with ads in this case. If Insta cost money to use, Insta would still not want people leaving for Snap.

<comment><USER18> Of course they wouldn't, but it's a question of who their customers are – hint: not their users (even the "verified" ones).

</comment></comment></comment></comment></comment><comment><USER19> Not that I agree with this practice, but I've heard from people who stream on twitch that if you are streaming on their platform, you cannot stream to you- tube, d-live or other platforms and keep the affiliate/partner status which allows viewers to subscribe and donate via twitch currency to you.

You may stream to multiple platforms at once, however you lose your ability to be verified on twitch by being an affiliate/partner.

I see more and more of the large platforms taking this route and removing the verified/special perks for being on that particular platform if you are not keeping your content exclusive to them, in an attempt to keep the largest market share/content creators.

In the end I think this will only drive the more independent creators to adopt smaller and more open platforms and the big platforms that are left will be an echo chamber more than ever.

<comment><USER20> They are afraid of other platforms, because they know their business will take a serious hit if there's ever serious competition. The cut they take off of subscriptions and donations is absolutely shady and unjustifiable.

Add to that the long list of twitch "anti-features" and they're on a good course to become to Quora of streaming sites. Can't wait for just lurking to become "members only".

Twitch would die in a heartbeat if they allowed multi-streaming (streaming to multiple platforms at the same time).

Their product is too easily replicated and most people don't care about the platform - they follow their favorite content creators.

</comment></comment><comment><USER21> Twitter started this whole thing. Originally, IIRC, "Verified" meant exactly that. You look at a twitter account of a Celebrity or CEO or poltician, and the blue check meant it was really them.

Now it means it's really them _and_ they haven't said or done anything that the wrong people find offensive. Comedians get de-verified (or kicked off) for offending people if they offend the wrong people. (While others who do equally horrible things -- like when Spike Lee tweeted the address of a completely innocent and uninvolved person asking people to harass and threaten them, he was not removed or de-verified [https://www.hollywoodreporter.com/thr- esq/spike-lees-defense...](https://www.hollywoodreporter.com/thr-esq/spike- lees-defense-tweet-lawsuit-656118) )

<comment><USER22> And twitter started this whole thing because they were getting complaints from celebs and being sued by Tony LaRussa for account impersonation.

I wonder if these networks even want people's humanity verified on each account, seems like it would kill growth numbers. When Facebook started, most accounts were unofficially verified to be humans, as it was only open to people who had a .edu email address, which were mostly verified and given out by universities to real people. Then they opened it up and boom Facebook grew to ridiculous numbers.

I'm waiting for one of the social networks to let anyone verify their humanity, Bumble does it, not sure why Twitter, FB, LinkedIn, and the others cant give this option. Maybe they don't want to?

<comment><USER22> TechCrunch article from 2009: [https://techcrunch.com/2009/06/06/facing- lawsuits-and-compla...](https://techcrunch.com/2009/06/06/facing-lawsuits-and- complaints-from-celebs-twitter-launches-verified-accounts/)

</comment></comment></comment><comment><USER23> This somewhat related but Instagram has started doing some shady shit, for starters if you browse without an account they now cover the page with a sign up splash.

The one that really grinds my gears is that I made an Instagram to follow some artists I really enjoyed browsing, and for whatever reason their algorithm flagged me, and so they deactivated my account. In order to reactivate my account they requested a picture of myself holding a paper with the ID code provided in the email (which I refused to do). When I tried asking why I was deactivated I was simply given a canned respond requesting that I give them a picture of myself with the code proving that I am indeed a real human being.

<comment><USER24> Was it a new account? If so, the same thing happened to me; I created an account on Sunday to follow some photographers and my account immediately got disabled - before I could even login for the first time!

<comment><USER23> It was! Same day I made the account, all I did was follow people, never posted myself.

</comment></comment></comment><comment><USER25> Every now and then there are these news, where platform owners "abuse" their power on the platform to do something in their favor. I remember an example where HN discussed about how "Amazon's choice" doesn't mean that it's a good product, it's likely just a product which generates a lot of revenue for amazon.

It should be of no surprise that plaform owners will behave in this way. I think the way forward should be protocols over platforms. ActivityPub over social networks. Matrix over instant messengers.

Protocols are empowering. In the earlier days of the web there were many different protocols for different things people wanted to do, such as SMTP, FTP, HTTP etc.

<comment><USER18> Yes! So much this!

You can choose your email provider, or your cell phone carrier, and no matter who you choose, you'll still be able to email and text/call others (regardless of who _they_ choose).

But you can't choose a new Facebook provider. There's no recourse if a given platform is behaving badly, and the network effect just reinforces their hold on users.

Open protocols free users to make choices about providers and foster competition based on the service provided instead of having to "choose" to go where the people already are.

</comment></comment><comment><USER26> Coming from a Facebook owned company is this really of surprise to anyone?

<comment><USER27> Next: you talked about WePay, so we burned all your Libra.

</comment></comment><comment><USER22> I've been waiting a long time for these platforms to let any of us human users verify our human identities. Not sure if they actually want to.

Who wants to help me build a platform with only verified (you are the human you say you are) users?

</comment><comment> ga-vu Not the first guy I hear saying this. Happened to a friend too. Probably not threatened... but "told"

</comment><comment><USER28> why would they not do it after they mic almost everything that snapchat comes out with?

</comment><comment><USER29> What is posting Snapchat?

<comment><USER30> The title got truncated due to character limit - "posting Snapchat content"

</comment></comment><comment><USER31> Ahh... Facebook again.

</comment><comment><USER32> LOL the title should just be something like, "when stupid gets even more stupid"

</comment><comment><USER33> One upon a time an evil file might be called 'vader' or 'skynet'. Now harry potter fans are senior enough to decide on project names. I feel old.

<comment><USER34> I think it's also that the "he who shall not be named" aspect here isn't shared by Vader or skynet

<comment><USER33> As Vader was a cover name for annikin. Iconic evil characters are all pretty similar. Jedi are essentially space wizards.</comment></comment></comment>


HN Philosophy: Does entropy exist on Tron's grid? - <AUTHOR>

<comment><USER2> Entropy is a measure of disorder. So yes it does. Any system containing information has entropy.

Or are you asking if randomness exists in Tron?</comment>


Ring reportedly gave employees full access to customers' live camera feeds - <AUTHOR> https://9to5google.com/2019/01/10/ring-camera-live-feed-access/ <comment><USER2> [https://news.ycombinator.com/item?id=18876114](https://news.ycombinator.com/item?id=18876114)</comment>


Ask HN: Small footprint vs. ambition - <AUTHOR> I have always liked the idea of keeping one's footprint small. Perhaps that happened because of how I was brought up or because of my introverted nature or because of the literature that I came across. This has helped me to have less baggage and be able to move just about anywhere, without even a slightest emotional disturbance, and that has served me well in my tech career.
However, I have been realizing that I haven't had any sort of ambitions for as long as I remember. I have always gone with the flow, without thinking or working too much for it. But I find this has started creating problems for me. Without a guiding star, I am getting less inclined, day by day, to make any sort of effort.
The issue I think here is that ambitions are essentially wants, a thing you want to achieve without a logical tie to your existence, and by training myself to keep my footprint low, I have essentially trained myself to have a few wants, if any, thereby killing any ambitions that might come from those wants. I am unable to find a reason out if this. I.e. if keeping footprint low is the way of life, then how can one have something to work for? <comment><USER2> Ambitions don't have to be about material wants. I'd say the best, longest lasting ones, aren't even. And there is meaningful work to be found related to anti-materialism. I can think of writing/setting up software to let old hardware shine again, work on software to protect privacy, decentralize the internet, ... these are just on the top of me head. It just doesn't pay so well, and even if you are willing to accept the financial downgrade, these jobs are not so common and might require more work and dedication to land a position. Much like it is for most people outside of tech :)

You don't even have to make a job out of it. You seem to have strong beliefs. Do something with those beliefs and find something you feel is easy and worth it to put your energy into. Not easy, but can be fulfilling.

<comment><AUTHOR> I have had hard time identifying non-materialistic ambitions. My mind has always been able to short circuit the ideas, similar to the ones you mentioned, as a way to make more money. Effectively turning them into greed, which is supposed to be bad. But I think I have been making wrong conclusions. As mentioned in other comments, developing a stronger feeling towards non-self pain points and retraining my mind would probably be the way to go.

Most of my beliefs are for self. Mostly because of the idea that each of us is a random instance, executing for optimizing random functions. Some are aware of the functions, and for some it is a black box. This breaks the boundaries between right and wrong etc in my mind and so on. But also diminishes the idea of exposing these beliefs and doing something with them seems meaningless.

<comment><USER3> Don't let yourself confined by what's "supposed to be". Trust your emotional state derive from what's good or bad from first principles (i.e. from experience).

That said - it's good to do an exercise and imagine it's 10 years later, you've created a company startup for the sole purpose of making one billion dollars, think about what you can do with the one billion dollars, what opportunities you've sacrificed, what you've risked.

How do you feel about it? Was it worth it? Would you do it again?

The answer might be different for everyone.

You can repeat for any other number of ambitious goals - getting married to a very good person; spending two decades raising children; moving to a new country; or even getting divorced; travelling around the world; becoming the best at an activity; become world famous for something, etc.

For any one goal - think, what kind of person tend to achieve that goal easily, then the price of achieving that goal is to become that kind of person. Do you still want to achieve goal? If I didn't want to become the kind of person who'd marry my partner, it means to me I didn't actually want to marry her to begin with. Personally, to achieve X, is equivalent to, to become the person who achieves X easily.

It helps me re-focus on what actions to take.

</comment></comment></comment><comment><USER4> I keep a small footprint. My ambitions mostly grow out of personal need and pain. I have the impression that people who don't have large pain points in their life frequently have no significant ambition.

But I will suggest that 7 billion people and growing constitute a threat to your welfare. I have an interest in promoting small footprint solutions, though I don't feel I am very effective at it. I will suggest that a blog or other project to share what you know can be part of the solution for a world constantly threatening to come apart at the seams from global warming, animal extinction, water shortages etc.

<comment><AUTHOR> I have come across a lot of folks in my life who have comfortable lives, by virtue of working hard for it or being born into it, and too have observed that they fall into a slump, such that a major shift to that lifestyle can bring them down to their knees. I am, frankly, scared of landing in a similar situation. I do try to keep myself sharp by reading/trying out things here and there, but since I don't apply them to a meaningful extent, I have hard time trusting these.

As far as sharing the stuff I know is concerned, I have held an opinion that I don't have any new knowledge. Most of what I know has been derived from works of others, and all of that is already available out there. So I have felt that duplicating that information just increases entropy without any meaningful gain to anyone. That is why I haven't made an effort in that direction.

I might sound like a bad human saying this, but I think I have been largely apathetic about the world. I do think about the worldly issues, usually going into a zone such that I am unable to sleep at night, but I don't think I have ever taken a step to contribute to it meaningfully. I will take up your suggestion and see if I can start putting my skills to use in that direction.

</comment></comment><comment><USER5> Over the next few decades we will face enormous challenges as a species, and there are lots of resources to inspire you what to dedicate your efforts towards. 80000hours.org is a good start; it has lots of links to other pages. Ambition is orthogonal to greed and vanity.

I do personally relate to your question. I catch myself thinking of myself as modest and content, when really I'm often just complacent. I have found that silence (i.e. literally turning off the music) has helped me become somewhat more alert to the unfulfilled parts of my life.

</comment><comment><USER6> I've been running into a similar conundrum lately with learning an instrument. You kind of need the instrument and associated equipment. Same goes for athletic equipment and sports. I think it's necessary to make the compromise for things that do enrich your life even if they make moving difficult or your footprint greater than desired.

Some interests such as learning a new language require remarkably little things. A few apps, netflix, some books (could be electronic) and people to converse with.

</comment><comment><USER7> That's odd. I love having a small footprint but am also very ambitious. It helps a lot because groupthink and chasing fame seems to gravitate towards mediocrity.

You can find your own path and go alone. It's very calming, like a hike up a hill or a motorcycle ride through the countryside. Modern tech makes it very easy to take your own path too.

</comment><comment><USER8> Discovering your "flow" might help [https://en.wikipedia.org/wiki/Flow_(psychology)](https://en.wikipedia.org/wiki/Flow_\(psychology\))</comment>


Ask HN: How to turn a mailing list into something more? - <AUTHOR>

I recently started a news summary / news curation service. It summarizes the daily news in 15 seconds, and sends out a newsletter everyday. I have almost 1,000 subscribers who read it regularly.<p>How can I turn this into more than a newsletter? I'm thinking having an App? Move the service online instead of in the email? Any ideas? <comment><USER2> Having tailor made emails and also have a tailor made dashboard to give relevant info to the user.

<comment><AUTHOR> Do you mean inside the emails that I send out? Or display that on the website.</comment></comment>


Where Are Chernobyl's Children? - <AUTHOR> https://medium.com/@polarrist/where-are-chernobyl-s-children-a-photojournalist-s-honest-project-in-the-age-of-disaster-tourism-4cd333ab80c7 <comment><USER2> I remember the day it was announced. We were sitting with my dad watching evening news.

The news was almost over and just in passing they quickly mentioned there was "a malfunction" at the Chernobyl power plant. They showed a quick picture of some smoke rising. And that's it. Nothing more. It was like they were announcing about how the local sports team won a medal or something.

My dad said, yeah this is not good.

We didn't live too close but we were a bit downwind. The only thing I remember then was that my mom's flowers on the balcony outside died. It was probably not related now that I think about it, but she believed it was. People didn't know what to believe. They obviously didn't trust the official channels.

There was a lot of fear mongering and people making up stories.

It got worse later when people from Chernobyl were sent to live in other cities. Unbelievably, they carried a stigma! People would shun them, as if those people were carrying a disease or were somehow responsible for it. I can't even imagine being uprooted from your home, irradiated with an unknown dose, sent to live in a new city starting with nothing, and then have your new neighbors and coworkers shun you as well.

But that's not all. At some point they called for volunteers. Basically people to help clear up the mess. They promised money and free apartments for those that went. Many went but, when they came back they didn't enjoy the apartments too much longer because they got cancer.

Anyway just a few personal anecdotes if anyone is interested.

<comment><USER3> > The only thing I remember then was that my mom's on the balcony outside > died.

Are you missing a word? I hope you are. Thanks for sharing your experiences.

<comment><USER2> Sorry, corrected, it was plants (flowers).

</comment></comment></comment><comment><USER4> I can see this being a scene in a film (from the article):

'I arrived the next morning to be greeted by two men, with cheap suits and attaché cases, looking like the East German Stasi. They were government officials. They asked, "So what do you want to do here?" I said openly, "I want to take photos here because I'm looking for victims from Chernobyl." Their answer, "None of these kids here are in any way connected with Chernobyl. You know that malformations can happen anywhere, none of this is connected to Chernobyl."

Even though it was still very early in the morning, I had a great thought — I had obviously already had enough coffee — and I responded, "Okay, if you give it to me in writing that not a single kid here is in any way connected to Chernobyl, I will pack up my bags and my cameras, and I'll leave." And then I said, "But of course, we will need to report in National Geographic that because none of the kids' diseases are related to Chernobyl, you're no longer interested in receiving funds from Chernobyl charities."

P: Wow. Power move.

G: You should have seen how fast they changed their minds. "Oh, there may be this child, and may be this one, and, well, the parents of this kid lived in Chernobyl." All of sudden the whole situation turned. So in that kind of encounter you learn that you cannot trust officials today any more than you could in the past. It's gotten better in Ukraine, but Belarus was pretty bad.'

</comment><comment><USER5> I'm also Chernobyl kid! :)

I was born in Romania in May of 1986 about 700km from the plant[1]. My mom tells me stories about how all the pregnant women in the area were encouraged to eat pre-packaged food (no fresh veggies, for example), and drink powdered milk.

Luckily, I was almost completely developed by the time of the disaster (born May 8, meltdown happened April 26), but I am very cognizant about some health problems that people affected by Chernobyl might have, notably thyroid cancer[2].

[1] [https://www.google.com/maps/dir/Chernobyl,+Kyivs'ka+oblast,+...](https://www.google.com/maps/dir/Chernobyl,+Kyivs'ka+oblast,+Ukraine/Gala%C8%9Bi,+firstname.lastname@example.com,26.6906644,7z/data=!3m1!4b1!4m13!4m12!1m5!1m1!1s0x472a8f00e898abcf:0x14bcceabdbfd5d2c!2m2!1d30.2218992!2d51.2763027!1m5!1m1!1s0x40b6dee589f2c4b5:0x53d7342f252d702b!2m2!1d28.0079945!2d45.4353208)

[2] [https://www.mskcc.org/blog/study-reveals-genetic-causes- thyr...](https://www.mskcc.org/blog/study-reveals-genetic-causes-thyroid- increase-after-chernobyl)

<comment><USER6> Did you get iodine supplements?

<comment><USER5> I'm not sure, but I don't think so. I'll need to ask my parents.

</comment></comment></comment><comment><USER7> If we learned anything from the polygon nuclear test site is that we should not ask where are the children but where are grand and grand grand children. [https://en.wikipedia.org/wiki/Semipalatinsk_Test_Site](https://en.wikipedia.org/wiki/Semipalatinsk_Test_Site)

Birth defects seem to only increase with every generation to the point where the 3rd and 4th generation are hitting a genetic roadblock as all the small genetic defects have reached a "boiling point".

Some local doctors actually proposed to assign a genetic passport to the residents of the area to let them know what's the chance of them being able to reproduce without defects. There have been quite a few documentaries about this VICE included it in a segment on their HBO show [https://youtu.be/YMnpnd0T4gE?t=802](https://youtu.be/YMnpnd0T4gE?t=802). _WARNNING!_ : Some of the images especially in the medical center are very disturbing to the point of looking more like a set of a scifi movie ala the thing than real life.

So the true ramifications of Chernobyl might not be visible for another 1 or 2 generations, on the good side the population which was exposed to the Chernobyl incident is much less isolated than various native populations exposed to nuclear test in Siberia, Kazakhstan and in the pacific so they have a much bigger (unexposed) genetic pool to have children with which might result in a smaller likelihood of enough genetic defects to accumulate to the point where they cannot actually produce sufficient children to sustain a population.

</comment><comment><USER8> I'm intrigued by the mention of farmers growing crops in contaminated areas. Presumably the soil has detectable levels of radioactive isotopes, but is there any evidence that this is taken up into the crops themselves? Same with the harvesting of fish or fungi in these zones... is there evidence that they contain harmful contaminants? If so, would they be medically significant?

The essay seems to imply that this stuff is irresponsible, but doesn't really delve into specifics.

Full disclosure: I've done a lot of construction work in the nuclear power industry, so I'm pretty familiar with radiation, contamination, and their effects. A lot of contamination events result in exposure that is statistically insignificant (e.g. eating a banana would result in more exposure), but there are certainly more harmful forms. My admittedly limited understanding is that a lot of the areas surrounding Chernobyl have detectable, but not really harmful levels of radiation.

I'm just a layman, so I'm hoping more informed folks can fill me in!

<comment><USER9> There was a documentary on either PBS or NPR in the last year or so specifically about harvesting plants and fungi in the disaster area. I can't find it now, but the overall idea was that it would be a really bad idea to eat meat, worse to eat the plants and grains, and just an overall terrible idea to eat the fungus. This: [https://en.wikipedia.org/wiki/Mushroom_hunting#Radiation](https://en.wikipedia.org/wiki/Mushroom_hunting#Radiation)

Is the only thing I could find regarding mushrooms specifically. I wish I could find that documentary. Essentially, mushrooms are really good at accumulating radioactive particles through their mycelium.

<comment><USER8> Wow, the uptake of caesium-137 in mushrooms was something I was not aware of. That's really interesting, as I thought it was something that mostly just bio- accumulated in higher-order predators. I might just be mixing it up with mercury though.

Thanks for the response!

</comment></comment></comment><comment><USER10> Ever since it became easier to get into the Chernobyl area, there has been an increase in people trying to dramatize it. I suggest watching this short video with Tom Scott, about his recent visit, where they try to inject a bit of reality into the situation: a lot of looted/stripped buildings that have stood abandoned for decades. It's impressive, but doesn't have a lot to do with radiation or the reactor.

[https://www.youtube.com/watch?v=BhYEkRjUWM8](https://www.youtube.com/watch?v=BhYEkRjUWM8)

There are certainly a lot of areas where you shouldn't linger for extended periods of time. The reactor accident (and how the situation was handled afterwords[1]) was absolutely terrible.

That said, it is important to remember that - even accounting for the Chernobyl disaster (and the utterly insignificant _radiological_ [3] disaster in Fukushima) - nuclear power is still the only viable option if we want to have energy in the future, as it is the _cleanest_. Everything else pollutes more and only a few technologies even come close to making enough power.

Unfortunately, the Hiroshima Syndrome[4] is epidemic, and the current wave of "Chernobyl disaster theatre" is only making these fears worse. We need to find better ways to educate people and counter the decades of misinformation and fear. The HN crowd like to "disrupt" things, so may I suggest finding ways to disrupt the common fears about radiation?

[1] My greatest respect and thanks to the people - the "liquidators" \- who had to be the "bio-robots" that cleaned up the worst areas when the mechanical robots _failed_ from the radiation. If you haven't seen it, I suggest watching this[2] footage of 3828 people that cleaned up one of the worst areas of the reactor's roof, <2 minutes at a time.

[2] [https://www.youtube.com/watch?v=FfDa8tR25dk](https://www.youtube.com/watch?v=FfDa8tR25dk)

[3] the tsunami disaster was _far_ worse, but isn't relevant to my point

[4] [http://www.hiroshimasyndrome.com/what-is-the-hiroshima- syndr...](http://www.hiroshimasyndrome.com/what-is-the-hiroshima- syndrome.html)

<comment><USER11> > The HN crowd like to "disrupt" things, so may I suggest finding ways to > disrupt the common fears about radiation?

Don't get your hopes up - I can't imagine how a tech startup could participate in nuclear power generation. Startups can however compete in decentralized energy production technologies such as wind and solar.

<comment><USER10> > Don't get your hopes up

I know, but it's worth asking anyway.

Note that I'm suggesting _education_ , not power generation. The generators can come later, but only after the radiophobia is addressed.

</comment></comment></comment><comment><USER12> here i'am !

Because of chernobyl I was born 2 months to early.

I had luck on the same day there where children born with 3 hands or other deformation.

<comment><USER13> Do you have a link to an article about the children with three hands? It's an unusual deformation in newborns, but I think it's not related to radiation.

Radiation is bad and is especially bad for small children and unborn children, but it can produce only certain types of deformations. The number of hands in a baby is fixed after the 4th week after fertilization. ( [https://en.wikipedia.org/wiki/Prenatal_development](https://en.wikipedia.org/wiki/Prenatal_development) )

I also found this article: [http://abcnews.go.com/Health/story?id=2021142](http://abcnews.go.com/Health/story?id=2021142)

> _Most cases of multiple limbs result from conjoined twins forming in > development. One child does not survive and becomes essentially absorbed > into the other, said Dr. Russell Jennings at the Children 's Hospital in > Boston._

<comment><USER12> no that's what i was told.

A little bit more about me: I was born in August 1986 in Grudziądz, Poland. I was 2 months to early.

I had to be revived 3 times after i was born. usually they tried only twice. I was told that by a Nurse who begged the Doctor to try it once more. I know all that because years later I thanked her with flowers. She and my mum told me some stories. They dont have a source or article about that. They are just stories.

there were more miscarriage then normal since April 1986. She told me that some children were horrible deformed and that she was happy for every child they could save.

</comment></comment></comment><comment><USER14> Photos of Chernobyl always remind me of _Stalker_ ([https://en.wikipedia.org/wiki/Stalker_(1979_film)](https://en.wikipedia.org/wiki/Stalker_\(1979_film\))), yet the philosophical introspective guide is light years away from the garish tourist guide pictured here with radioactive lenses.

<comment><USER2> Well of course in S.T.A.L.K.E.R. (the computer game) they had combined the two. The Zone there is obviously Chernobyl, it even includes the giant over the horizon (now defunct) radar installation and so on.

(Note: I never played, I was just told by others about).

</comment></comment><comment><USER15> Vastly more personal damage and hardship was caused by the forced removal of populations than the actual event itself. This happened both at Chernobyl and Fukushima.

The confirmed radiation related death's at Chernobyl was 13, the occurrence of cancers and other illnesses possibly related to radiation in the population is to close to the statistical noise floor to be significant.

The current popular narrative on nuclear energy is not doing us any good.

</comment><comment><USER16> For a perspective of what it's like for children who are currently living in a meltdown zone, see the contrast with this article: [http://www.japantimes.co.jp/news/2014/03/10/national/life- in...](http://www.japantimes.co.jp/news/2014/03/10/national/life-indoors- exacts-toll-on-koriyama-children/#.Vd9lLZcvZu4)

</comment><comment><USER17> I recommend _Plutopia_ by Kate Brown for those interested in relatively unknown irradiated communities comparable to Chernobyl.

</comment><comment><USER18> One of Chernobyl's children is currently heavyweight boxing champion of the world.

<comment><USER19> I'm sorry, but this sounds like street-level insult.

Brothers Klitchko and Valuev were all born in 70ties. Not even close to Chernobyl's children generation.

<comment><USER18> Why did you think this was meant as an insult?

<comment><USER19> You see, you've stepped onto the ground rich with history and connotations. Growing up I saw in newspapers photos of children with flippers instead of legs. I've heard kids being called "Chernobyl kid" on streets by other kids. "Chernobyl kid" as in insult meant "damaged kid".

More generally term "Chernobyl kid" means (or used to mean) something very specific: person who was affected by radiation in a way which caused mutations. For mutations to be caused, radiation exposure needs to happen during prenatal development. Just being displaced with your family to other region does not make you a Chernobyl kid. That's why I mentioned wrong generation.

We are talking about boxers who have exceptional physical characteristics. When you talk about Chernobyl in this context, things like antagonist "Rocky IV" pop into mind. Juiced on chems. Or a mutant.

Calling a world champion a mutant is an insult. He has made it to the top thanks to hard work, talent, and smart management.

<comment><USER18> I see. What I was intending with that comment was to point out that despite being a child who was exposed to radiation in Chernobyl, that child (children, Vitali was there too) went on to be one of the most physically accomplished humans currently alive.

</comment></comment></comment></comment></comment><comment><USER20> Where are they? In the scaremongering imagination of pop writers and lobbying scientists. Last time I checked there was a <3% leukaemia bump after 'the worst nuclear disaster in the world'.

<comment><USER21> The comparisons of Fukushima to Chernobyl really got my goat, personally. Despite the fact that fuel rods melted in both cases (thus both were "meltdowns"), there is an extraordinary difference between fuel rods overheating in a cooling pond and explosive breach of a critical reactor in a runaway condition. It's like classifying a campfire and the Hindenburg together because both are combustion - both can certainly burn you, but they're fundamentally dislike in intensity, scale, and kind.

Most of the really nasty stuff (high-level actinide waste) is highly radioactive _because_ it decays so quickly. After the reactor is shut down and the fuel rods are removed, all that stuff is gone, whereas breach of a _critical_ reactor results in the release of that stuff. The byproducts of a fuel fire is stuff like radioiodine and radiocaesium - it's not healthy by any means, if ingested it will elevate the risk of cancer over the long term, but it's not instadeath like actinide waste.

"What is expected to happen in Fukushima" is nothing like what happened to Chernobyl. A couple years later people are moving back, and it's perfectly safe to do so after some minimal decontamination efforts.

<comment><USER22> Not everyone is moving back though. I couldn't find out how long the Fukushima "difficult-to-return" inner exclusion zone is expected to be maintained, do you know? Apparently people who can't move back within 5 years will receive compensation based on the full pre-accident market value of their house.</comment></comment></comment>


Cloud Printing and Shipping Service Lob (YC S13) Raises $7M Series A - <AUTHOR> http://techcrunch.com/2014/09/08/lob-series-a/?ncid=twittersocialshare

<comment><USER3> Does Lob have a specific differentiator compared to other API-enabled print fulfillment houses? It seems to be a fairly well served market (at least in the UK) so I'm slightly surprised to see a fresh YC team on the case.

</comment><comment><USER4> Pricing for the UK seems kind of expensive.

Letter sending is often touted as being one of those things that's actually a lot more expensive than you think it is, and I think Lob are leveraging that common "wisdom". I don't really believe the Total Costs that are touted ($15.00 to send a letter), but it's interesting thinking how much this could therefore save.

I think there's also a huge potential here to partner with Mail Scanning Services. If I can charge you $1.60 to send a physical letter, and a mail scanning service can charge the same to receive said physical letter - <USER2> we're both in a position to cut out the middle man and essentially charge you $3.00 to send and receive an email.

That's a frighteningly efficient way of making money.

<comment><USER5> I'm not sure if they do this or not, I don't think they do, but your post made me consider something else.

When I, in the US, want to send a letter to Europe, or China, or wherever, do they print and mail it in the US or in those countries?

For certain types of mail, they could take the entire hassle (time + money) of international postage and just send the letter electronically to the destination country, where it would be printed and mailed locally.

<comment><USER6> I would assume as they expand internationally, they will send jobs to the "print shop" nearest the destination to minimize time and cost.

</comment></comment></comment><comment><USER7> Great service, have used them in the past for postcards and will integrate again in the future. Congrats!

<comment><USER8> Echo this, they went out of their way to come through for us in an emergency. Fantastic service.

<comment><USER9> Thanks for the note guys. Anything for our valuable customers.

</comment></comment></comment><comment><USER6> We've used Lob for various printing needs from postcards to stand up banners (excellent btw) for trade shows; and plan to continue using them as needs arise. The turnaround time has always been quick.

</comment><comment><USER10> We at Panorama are (yet another) happy Lob customer, so this is great news!

Congrats, guys, from the whole team here!</comment>


YC video interview tomorrow - <AUTHOR> Doing a YC video interview tomorrow, has anyone ever done these before? <comment><USER2> YC interviews are far better documented than I realized: [https://hn.algolia.com/?query=yc%20interview&sort=byPopulari...](https://hn.algolia.com/?query=yc%20interview&sort=byPopularity&prefix&page=0&dateRange=all&type=story)

Firsthand experiences: [http://initialized.com/last-minute-tips-for-yc- interviewees](http://initialized.com/last-minute-tips-for-yc-interviewees), [https://hackernoon.com/how-to-ace-your-yc- interview-5c078aea...](https://hackernoon.com/how-to-ace-your-yc- interview-5c078aea7908), [https://alchemist.svbtle.com/our-yc- interviews](https://alchemist.svbtle.com/our-yc-interviews)

Simulators/questions: [https://jamescun.github.io/iPG/](https://jamescun.github.io/iPG/), [http://proto.dheera.net/yc/](http://proto.dheera.net/yc/)

</comment><comment><USER3> Yah, I did one for S17, and they are the same as the in-person interview. This is usually a good sign coz it means they like you, but there's something in your application they need clarity on. Know your weaknesses, and be prepared to defend them with solid arguments. Good luck!

</comment><comment><USER4> Are you based outside of the US? It sounds like most of the pre-interviews have been with teams in other countries.</comment>


Ask HN: Made my PT freelancing business into LLC. How can I get clients by Tues? - <AUTHOR>

<comment><USER2> Try guru.com</comment>


Clojure's core.typed vs Haskell - <AUTHOR> http://adambard.com/blog/core-typed-vs-haskell/ <comment><USER2> A simple program is an interesting comparison, but it's kind odd to consider this to compare the whole typesystem. It's hard to understate that GHC has a /big/ typesystem and has had a significant amount of research done in it over the past 10 years and a a result there are a lot of very powerful non-trivial typing constructs. I think the real testament to the power of Haskell's typesystem is how well inference still works even in the presence of most of these non-trivial extensions.

<comment><USER3> Really, the post is about Clojure; these toy problems represent the breadth of my experience with Haskell, so I'm not really qualified to go into more depth. Certainly Haskell is said to have the most powerful type system going, and I don't see any (mainstream-ish) language displacing it any time soon.

Still, I think core.typed does pretty damn well for being a standalone library.

<comment><USER4> > Certainly Haskell is said to have the most powerful type system going,

Nah, Coq, Agda, Idris and any dependently typed language have Haskell beat -- their type systems are designed to be just as expressive as their value language. Haskell is certainly moving in this direction, especially with modern extensions. The issue is of course type inference breaks down in the face of these extensions, and Haskell is trying to maintain its powerful type inference as best it can. Certain combinations of extensions already force type annotations.

> Still, I think core.typed does pretty damn well for being a standalone > library.

This is true, and I think the comparison to Haskell actually hurts the greater point you're trying to make. Haskell has full static types at its disposal, and comparing them to the optional typing of Clojure will always leave something wanting -- why draw that comparison when competing with Haskell is not the intention of the library?

<comment><USER5> _Nah, Coq, Agda, Idris and any dependently typed language have Haskell beat -- their type systems are designed to be just as expressive as their value language._

That may be true, but it comes at a big cost: inference and decidability. Haskell's type system is designed to very carefully butt up against the limits of these features. Once you go full-spectrum dependent types, you lose all that.

<comment><USER4> Agda and Coq retain inference and decidability by sacrificing Turing completeness. Terminating programs must terminate provably, and non- terminating programs must make concrete progress on every iteration. I'm not familiar enough with Idris to say how it tackles this issue - I do know that it _is_ Turing complete.

So with that said, you're absolutely right.

<comment><USER6> Another language with a Turing complete type system is Shen [1] (previous life as Qi). Just wanted to put that out there as its a Lisp dialect that really pushes Lisp out there.

[1] [http://shenlanguage.org/](http://shenlanguage.org/)

<comment><USER7> When it comes to awesomeness to fame ratio, I can't think of a language with a higher one than Shen. It's odd how little people talk about it. I, unfortunately, suspect it has to do with the people leading it.

<comment><USER8> I've looked at Shen a few times and, honestly, I always get turned off by the syntax. There's not enough out there explaining why I should continue past that concern, and it seems to throw out what's nice about Lisp syntax in order to get halfway to Haskell's.

I'm sure I'll take a look at it again sometime, but I'd really love some kind of intro that helped me to understand why it was worth the time investment to get to know it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> If you really want it, you can get _safe_ dynamic typing in Haskell using the Data.Dynamic module. However, since you _don 't_ really want it, it's a library that isn't introduced in basic tutorials.

This gives you a pragmatic equivalent to no-check, but is almost never used in practice because it turns out to be unnecessary.

<comment><USER10> Also, GHC from version 7.6.1 supports a flag to defer type errors until run time[1]: -fdefer-type-errors. This is not support for dynamic types, but still gives even more flexibility in type-error handling.

[1] [http://ghc.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime](http://ghc.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime)

</comment></comment><comment><USER11> I'd be curious to see how Typed Racket compared, too.

<comment><USER12> There would be annotations in the same places as Typed Clojure, except :no- check would be replaced by type soundness-preserving runtime assertions. There would be no need for :no-check anyway; Typed Racket's base annotations are complete AFAIK.

<comment><USER13> It is a little clearer to me how this works with things like primitives, but how do you annotate a function that takes a map as input and returns a list? (defn my-keys [m] (keys m))

Edit: Just found Seqable. Looking into it now. This link helped me a lot. [https://github.com/clojure/core.typed/wiki/Types](https://github.com/clojure/core.typed/wiki/Types)

<comment><USER12> (ns my-ns (:require [clojure.core.typed :as t :refer [ann]]))

(ann my-keys (All [a] [(t/Map a Any) -> (t/Coll a)])

<comment><USER13> nice, thanks!

</comment></comment></comment></comment></comment><comment><USER14> > As seen at the top, it was necessary to annotate mod. It has the no-check > flag on it, which is basically how you tell core.typed to just take your > word on this one. That's something you can't do in Haskell, but I'm not sure > whether or not that's a good thing.

Isn't the reason why you need to do it because you're importing a non-typed symbol? Wouldn't the only situation where you'd need to do that in Haskell be at FFI?

(and a nitpick: `putStrLn $ show` can be replaced with a simple `print` call)

<comment><USER15> Of course you can do this in Haskell:

[http://www.haskell.org/ghc/docs/7.6.2/html/libraries/base/Un...](http://www.haskell.org/ghc/docs/7.6.2/html/libraries/base/Unsafe- Coerce.html#v:unsafeCoerce)

<comment><USER16> I'll save the value judgement for another time, but I'd like to point out an important difference:

As the word "unsafe" implies, these Haskell primitives forego type _safety_ in addition to type correctness. That means you can get segfaults and other undefined behavior at runtime. Such a type error on the JVM will simply produce an exception at runtime.

<comment><USER9> This is why we have Data.Dynamic which does _safe_ dynamic types.

It almost never comes up because it turns out to be virtually useless, but that's a story for another time.

<comment><USER16> > it turns out to be virtually useless

That's debatable, however Data.Dynamic is built on top of Data.Typeable, which provides a lower level runtime type safety facility. I think we can both agree Typable has lots of interesting uses.

<comment><USER8> Typeable is interesting in theory and generic traversals are a godsend, but usually I find that when I'm reaching for that particular hammer I should check twice.

<comment><USER16> I'll agree it's best to avoid fully open unions when you can, but some (super useful) things truly don't work that way. Check out [http://okmij.org/ftp/Computation/monads.html#ExtensibleDS](http://okmij.org/ftp/Computation/monads.html#ExtensibleDS) for a cool example.

<comment><USER8> I always think of Control.Exception as the poster child for open unions.

<comment><USER16> Perfect, since exceptions are a subset of effects! Check out [http://math.andrej.com/eff/](http://math.andrej.com/eff/) and its literature.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> > Integer is less useful as a type than hoped. AnyInteger seems to be more > permissive, and works more often. I'm sure there is a good reason for this.

This is with about 15 minutes of looking at core.typed. Isn't this because the type Interger is actually java.lang.Integer, but (type 1000) is java.lang.Long?

Also, AnyInteger isn't that permissive. It's defined as (U Integer Long clojure.lang.BigInt BigInteger Short Byte). The big difference would be that Haskell's Int is bounded so AnyInteger is more like Haskell's Integer.

<comment><USER3> That would be the reason, yeah. I had forgotten that Clojure tends to use Longs for everything.

</comment></comment><comment><USER18> The Haskell could use a list comprehension...

        divBy x y = y `mod` x /= 0
        divBy3or5 x = divBy 3 x || divBy 5 x
        euler1 n = sum [x | x <- [0..n], divBy3or5 x]

        main = print $ euler1 1000

Personally, I'd switch out lines 2 and 3 to:

        euler1 n = sum [x | x <- [0..n], divBy 3 x, divBy 5 x]

Compared with the Clojure (correct me if I'm wrong):

        (defn euler1 [n] (reduce + (filter (fn [x] (or (div-by 3 x) (div-by 5 x)))) (range n)))

Edit: Note - Clojure code doesn't fit into a HN one-liner.

<comment><USER3> You could shave off a precious few characters using the function reader syntax:

        (defn euler1 [n] (reduce + (filter #(or (div-by 3 %) (div-by 5 %)))) (range n)))

Or if you're into comprehensions:

        (defn euler1 [n] (reduce + (for [x (range n) :when (or (div-by 3 x) (div-by 5 x))] x)))

</comment></comment><comment><USER19> Apples vs vacuum cleaners

</comment><comment><USER20> Is this (at the end of problem 1)

        (defn div-by [x y] (== 0 ))(mod y x)

a typo or a Clojure feature?

</comment><comment><USER21> Not being familiar with core.typed: does it support parametric polymorphism? Can you dispatch based on types (e.g. typeclasses)?

<comment><USER22> Yes, Clojure has "protocols", which allow multiple dynamic dispatch on generic functions.

[http://clojure.org/protocols](http://clojure.org/protocols)

<comment><USER5> Right, but protocols are not based on core.typed's annotations. There is no way to dispatch on the return type of a function, for example.

<comment><USER16> > There is no way to dispatch on the return type of a function, for example.

A feature, in my opinion.

See [https://news.ycombinator.com/item?id=6459968](https://news.ycombinator.com/item?id=6459968)

<comment><USER5> _A feature, in my opinion._

Well, Clojure's a different language so it doesn't matter as much. If Clojure had enforced purity and pervasive laziness (a la Haskell) it'd be a real pain to use monads without polymorphic operators for them.

<comment><USER16> You're assuming that Haskell's monadic approach is the ultimate approach to managing effects (which include delayed evaluation). Personally, I prefer the model in Eff [1] and proven as an alternative to monad transformers (although, still a single-layer monad in Haskell) [2]. Eff's approach utilizes capabilities [3], called "effect instances", to restrict access to effects. Much nicer, in my opinion. Hence, I've been experimenting with the ideas in Clojure [4].

[1]: [http://math.andrej.com/eff/](http://math.andrej.com/eff/)

[2]: [http://lambda-the-ultimate.org/node/4786](http://lambda-the- ultimate.org/node/4786)

[3]: [http://erights.org/elib/capability/ode/ode- capabilities.html](http://erights.org/elib/capability/ode/ode- capabilities.html)

[4]: [https://github.com/brandonbloom/cleff](https://github.com/brandonbloom/cleff)

<comment><USER5> I don't know enough about the theory to argue either way. I just really like Haskell's monad libraries (as well as applicative functors and lenses). If you're able to build a library that's as general, flexible and powerful in Clojure I will be really excited!

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> What a waste of an article. 8 lines of code for haskell, 19 lines for clojure. The problem is easily solved in one line. I seriously don't care that's he comparing core.type, when you start trying to write langauges the same way, you lose the advantage that they provide.

1 line of python.

print sum(filter(lambda x: (x % 3 == 0) or (x % 5 == 0), range(1, 1000)))

clojure

(apply + (filter #(or (= 0(mod % 3)) (= 0(mod % 5))) (range 1 1000)))

<comment><USER24> In Haskell it could be sum $ filter (\x -> mod x 3 == 0 || mod x 5 == 0) [1..1000] but I don't think that detracts from the article. He said up front his solution was over-engineered. That's nice in this case, because it lets us see how the type annotations look for very small, simple functions so we can get an idea what they looked like. I know some Haskell and Clojure, but I'd never actually looked at core.typed. This was a nice, basic intro to it.

<comment><USER18> Even better, you can save 7 characters with:

        sum [x | x <- [1..1000], mod x 3 == 0, mod x 5 == 0]

But as you say, that wasn't the point of the article.

<comment><USER8> This version is easily the clearest yet.</comment></comment></comment></comment>


Overview of our startup industry - Daily Deals - <AUTHOR>

I want to write a post and overview about my start-up industry. Unfortunately it's not a pro post, as I'm far from being a good blogger and english is not my 1st language.
That is not a secret that group buying (daily deals, social e-commerce, Groupon) is one of the most popular web topic in 2010 and the biggest trend which is growing world wide. How many of you tried to build something in that area? I guess that's scary to jump to the car overload by passengers.
This is my personal view of how daily deals industry started and developing:
1)	Woot.com (2004) – I think this website is a 1st seed in group buying
2)	Groupon (2008)  brought group buying in new level by offering deals from services and local merchants. Groupon is the most cloned website in history of internet, more than 1000 clones over the world (Dec 2009 – May 2010). I wanted to make one too ))
3)	Daily deal aggregators (yipit, dealradar and etc). I would compare aggregators to price comparison websites.
4)	Specific daily deals websites (food and dining, fitness and workout, products). More services coming in that area for sure.
5)	Traditional stores start their daily deal section on their websites (target, compusa and etc)
6)	Some big players start their own daily deals services. Aol (with wow.com). Who next? Ebay? Amazon?
7)	Free daily deals – TapZilla.com gives out a limited amount of applications for iphone for free
8)	Groupon starts integration with  Ning and Ebay
9)	Groupon  offers a tool to merchant to run deals by the own
10)	 …
I was tempted to do daily deals website, but decided to jump to deals aggregator, that was a time when the most of daily deals websites did not have the affiliate platforms. We were forced to parsing/indexing their pages without having any affiliate with them. Now the most of them have affiliate with CJ or other platforms (some of them run own platform, which is not good idea). I left aggregator idea too.
We all are in the middle of the road of social e-com. My list will have more items and I hope that I will add one there too (hehehe) )))
Thanks for reading my post, appreciate that.
http://www.facebook.com/saviski <comment><USER2> Interesting study.

Why don't you share this on your own blog/site? You can refine and add links it as you go.

<comment><AUTHOR> Thanks. Sorry,I don't have my personal blog at the moment.</comment></comment>


Tron 2.0 – Creating a Visual Language of Scale - <AUTHOR> https://mapzen.com/blog/tron-v2-visual-scale/ <comment><AUTHOR> This article is best read with Crystal Method's "The Grid" from "TRON: Legacy Reconfigured" pumping in the background...</comment>