WebAssembly support now shipping in all major browsers - <AUTHOR> https://blog.mozilla.org/blog/2017/11/13/webassembly-in-browsers/ <comment><USER3> A good occasion to watch Gary Bernhardt's talk "The Birth & Death of JavaScript" [0] again, where he talks about the precursor of WebAssembly: asm.js and the future implication it "could" have in the future in a really humorous way. A few years old but still relevant.

You want Gimp for Windows running in Firefox for Linux running in Chrome for Mac? Yeah sure.

[0] [https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

<comment><USER4> There's another reason why I want JavaScript in the browser to die:

We haven't had a new browser engine written from scratch since KHTML. Firefox is a descendant of Netscape, Chrome (and Safari) is a descendant of WebKit which is itself a descendant of KHTML, Edge is closed source, but I'm almost sure there's some old IE code in there.

Why?

It's simply too expensive to create a fast (and compatible) JS engine.

If WebAssembly takes off, I hope that one we'll have more than three browser engines around.

<comment><USER5> WebAssembly has nothing to do with JavaScript. When people make this association it is clear they are painfully unaware of what each (or both) technologies are.

WebAssembly is a replacement for Flash, Silverlight, and Java Applets.

<comment><USER6> and js. eventually!

<comment><USER5> JS is a language and not a bytecode media. Perhaps chocolate will replace cars and airplanes. I love me some chocolate.

<comment><USER7> I am extremely unclear on whatever point you're trying to make, here, because it really does seem to come from a place of ignorance on WASM and JS. It makes no sense.

It seems like you're claiming, in a really roundabout way, that WASM will never have DOM access, even though it's planned[1]. There are even VDOMs[2] for WASM already. Future WASM implementations that include DOM access _can absolutely, and for many folks will, replace Javascript._

[1]: [https://github.com/WebAssembly/design/blob/master/FAQ.md](https://github.com/WebAssembly/design/blob/master/FAQ.md)

[2]: [https://github.com/mbasso/asm-dom](https://github.com/mbasso/asm-dom)

<comment><USER5> > It seems like you're claiming, in a really roundabout way, that WASM will > never have DOM access

I am not going to say _never_. It does not now and will not for the foreseeable future though. I know DOM interop is a popular request, but nobody has started working on it and it isn't a priority.

Part of the problem in implementing DOM access to a unrestricted bytecode format is security. Nobody wants to relax security so that people who are JavaScript challenged can feel less insecure.

<comment><USER8> Which of the security concerns browser Javascript deals with do you think are intrinsic to the language, as opposed to the bindings the browser provides the language? If the security issues are in the bindings (ie: when and how I'll allow you to originate a request with credentials in it), those concerns are "portable" between languages.

<comment><USER5> It isn't due to the language but to context of known APIs provided to the language that can only be executed a certain way by the language.

How would a browser know to restrict a web server compiled into bytecode specifically to violate same origin? The browser only knowns to restrict this from JavaScript because such capabilities are allowed only from APIs the browser provides to JavaScript.

<comment><USER8> I really don't understand your example. Are you proposing a web server running _inside the browser_ as a WebAssembly program, and the browser attempting to enforce same origin policy against that server? That doesn't make much sense.

<comment><USER5> Yep, it doesn't make sense and that is the problem. There is no reason why you couldn't write a web server in WASM that runs in an island inside the browser to bypass the browser's security model.

<comment><USER8> This does not make any sense, sorry.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Unfortunately SIMD is still not supported on any browsers and with the move away from SIMD.js it looks like this might take a while.

We've been working on porting over our fairly large barcode scanner library to WebAssembly. While the performance is close to what we have on other platforms ( [http://websdk.scandit.com](http://websdk.scandit.com) ), the major bottleneck for now is not being able to use optimized code relying on SIMD (and not having an existing C fallback as all other platforms we target have SIMD support)

<comment><USER10> > Unfortunately SIMD is still not supported on any browsers

Is SIMD portable though? Will it run good on mobile devices? And what about other non-Intel architectures in general?

<comment><USER11> Yes. Phones have SIMD. Hell, the cheapo MIPS in my router has SIMD. You use the portable simd instructions and they get compiled to native simd instructions for your platform. Just like any other part of webassembly.

</comment></comment></comment><comment><USER12> If you're looking for an introduction to WebAssembly my "WebAssembly 101: a developer's first steps" post had some success here: [https://blog.openbloc.fr/webassembly-first- steps/](https://blog.openbloc.fr/webassembly-first-steps/)

HN discussion: [https://news.ycombinator.com/item?id=14495893](https://news.ycombinator.com/item?id=14495893)

The awesome-wasm list is also a good start: [https://github.com/mbasso/awesome-wasm](https://github.com/mbasso/awesome- wasm)

</comment><comment><USER13> For people wondering about features like SIMD and GC support, here is a good status page: [http://webassembly.org/docs/future- features/](http://webassembly.org/docs/future-features/)

<comment><USER14> Specifically for GC, all that page does is to refer to a GitHub issue that is invisible to anyone but WASM contributors :-(

<comment><USER15> Invisible? You mean locked? [https://github.com/WebAssembly/design/issues/1079](https://github.com/WebAssembly/design/issues/1079)

I'm not a collaborator on the WebAssembly Org, but I can still see that issue just fine.

<comment><USER14> Yes, I see that there is an issue there, but the discussion is invisible. Hidden. Locked.

<comment><USER15> > invisible. Hidden

It's not. It's just that there are no other posts on that issue. GitHub does not have a way to make an issue visible to the public but hide all discussion on it.

> Locked

That's not the same thing. Locked just means you can't add your own comments, not that you can't see comments from other users.

<comment><USER14> Ah ok, thanks. That there is no discussion is even more disappointing.

</comment></comment></comment></comment></comment></comment><comment><USER16> The math site they linked to in the examples of sites powered by WebAssembly is awesome: [http://mathstud.io/](http://mathstud.io/)

I almost wish I was a student again so I could relearn math for the first time with all of these great tools...

<comment><USER17> Wow, that is really cool actually. Impressive performance on my OG Pixel XL too.

</comment></comment><comment><USER18> I'm not as excited for this as I used to be. In most user applications JavaScript is good enough or better. If it wasn't then we wouldn't be taking the browser to make desktop applications. Recently I decided to make a desktop app and asked around about the different UI libraries. The answer I keep getting is "just use electron and JavaScript". Why? Because love it or hate it the Dom is fantastic and simple for making UIs that are interactive and reliable. And you can't beat JavaScript for manipulating the Dom.

The only benefit I can think of that benefits is specialized software like games or scientific analysis/simulation. But for what most users want, JavaScript is fast enough. The example I keep hearing is "imagine gimp in the browser" but it's already possible to make a gimp like application in the browser using things like canvas and the file api.

So by the time webassembly is ready for the prime and has needed features like memory management and Dom access, will it even by worth it beyond a few specific applications?

<comment><USER19> > will it even by worth it beyond a few specific applications?

I'm sure if you sampled all developers the number that would say Javascript is their favorite programming language would be in a substantial minority. So if it makes it easier for developers to write client side code in their preferred language its worth it.

That being said, I'm worried a bit. Javascript being awful has traditionally kept developers doing as much runtime work as possible server side. In the last 5 years the rapid growth of JS libraries, client side frameworks, and recently ES6 have all reduced the pain points and correlated to a dramatic rise in client side code being loaded on users computers with corresponding huge page size bloat.

<comment><USER20> > I'm sure if you sampled all developers the number that would say Javascript > is their favorite programming language would be in a substantial minority.

I wouldn't be so sure of that.

<comment><USER21> Agreed, it'd likely be one of the largest shares

</comment></comment></comment></comment><comment><USER22> Can anybody ELI5? The documentation is pretty fluffy.

Does WebAssembly actually open up any new API hooks? I get that its a clever way of transpiling existing programs to JavasScript, but surely we could do that already?

Whats new avenues of development is WebAssembly expected to open up? Is the whole point just to enable an easy way to compile games made on other platforms (Unity) to the web?

<comment><USER23> WASM is used to run native code in the Web browser without going through JavaScript. With it, it should be possible to run code at near-native performance in the browser.

WASM is an intermediate representation which is output by your compiler (of your favorite language) and consumed by the browser's compiler to emit native code.

WASM is a bit similar to LLVM IR, but it's architecture independent.

Compare this to, say, LLVM and Clang. Clang (the C compiler front end) will read C code and emit LLVM IR. LLVM (the compiler backend) will read LLVM IR and emit assembly code for your CPU. With WASM, the developer will run the "front end" and distribute the WASM code over HTTP and the web browser will run the backend and turn WASM into native assembly code.

> I get that its a clever way of transpiling existing programs to JavasScript, > but surely we could do that already?

No, WASM code is not JavaScript at any point. ASM.js is a predecessor to WASM that was a compiler-friendly variant of JavaScript that can be compiled to native code.

<comment><USER24> But is this how it is implemented by actual browsers? if memory serves v8 is pretty much reusing most of JS VM for WASM?

<comment><USER23> Yes, the browsers do share parts of their JavaScript execution engine with WASM. Which makes sense because WASM still needs to interact with JS. That doesn't mean it can't be fast or start quickly (or at least quicker than asm.js).

From the developer's point of view that doesn't matter. You're delivering WASM and not C or JS code over to the clients.

</comment></comment></comment></comment><comment><USER25> WebAssembly is not worth the effort unless it finally is supported by the LINK tag. Seriously, using JS to load a JS alternative is ridiculous.

<comment><USER26> I can't agree more...but I believe the issue is that WASM sold a lie. Right now if you read between the lines it is argued that WASM is there just to help JS do more not to replace it.

<comment><USER27> > WASM sold a lie

What? The original WebAssembly announcement[1], which can be viewed as the manifesto for how WASM was envisioned, it clearly says "once browsers support the WebAssembly syntax natively, JS and wasm can diverge". Eich's goal with WebAssembly is _not_ replacing JS, it's providing a better compilation target for other languages. WebAssembly is a replacement for asm.js, not JavaScript. No one is selling a lie here.

[1]: [https://brendaneich.com/2015/06/from-asm-js-to- webassembly/](https://brendaneich.com/2015/06/from-asm-js-to-webassembly/)

</comment></comment></comment><comment><USER28> Aside: how is WebAssembly's binary form currently shipped? In a demo I saw yesterday it was written out inline as a Uint8Array of integers between 0-255. Even with gzip enabled this can't be very efficient.

For completely unrelated reasons, I was already thinking of adapting (my fork of) the LZ-string library[0] to directly compress/decompress typed arrays to "websafe" UTF16 strings, similar to the already existing `compressToUTF16` functionality in LZ-string. Essentially, the strings would represent LZ- compressed bitstreams, using 15 bits per string character.

Could this be useful for reducing the size of WASM binary when encoded in plain JavaScript? (the minified library would probably be around 1kb after gzip)

[0] [https://github.com/JobLeonard/lz-string/tree/array- lookup](https://github.com/JobLeonard/lz-string/tree/array-lookup)

[1] [http://pieroxy.net/blog/pages/lz- string/index.html#inline_me...](http://pieroxy.net/blog/pages/lz- string/index.html#inline_menu_6)

<comment><USER29> wasm files are already a binary format, an explicit Uint8Array should only only necessary if you want to inline the wasm directly with the JS that instantiates it.

<comment><USER28> Right, I thought it was odd; I remember reading that part of the big benefit of WASM was more compact, faster-to-parse source code. Going all the way up to text form and back down to binary data is at odds with that.

> _an explicit Uint8Array should only only necessary if you want to inline the > wasm directly with the JS that instantiates it._

Are there any realistic scenarios where this is the more sensible option?

Anyway, I should have searched MDN first, the relevant bit of documentation is pretty clear:

        fetch('simple.wasm').then(response =>
          response.arrayBuffer()
        ).then(bytes =>
          WebAssembly.instantiate(bytes, importObject)
        ).then(results => {
          results.instance.exports.exported_func();
        });

[https://developer.mozilla.org/en- US/docs/WebAssembly/Loading...](https://developer.mozilla.org/en- US/docs/WebAssembly/Loading_and_running#Using_Fetch)

<comment><USER29> I suppose you could avoid having the extra request roundtrip by inlining a uint8array (or a base64 encoded string or something), and it also lets you have wasm and it's associated JS be put together which would automatically avoid cache/version mismatch without any extra work, but I would be surprised if that makes sense in any normal scenario.

</comment></comment></comment></comment><comment><USER30> For those in the know, what doors is web assembly expected to open? Better cross platform platforms via a browser wrap? Will new types of browser applications be possible that aren't now in JS only world? What are they?

<comment><USER31> Expect every language out there to have a WebAssembly implementation, including Flash.

<comment><USER32> Until wasm supports proper tail calls, only the ones with uninteresting control structures.

<comment><USER33> Couldn't the compiler take care of optimizing those when necessary? After all I don't know of any "real" assembly with tail call support...

<comment><USER34> Most assembly languages have a "jump" instruction, though -- wasm supports only structured control flow.

<comment><USER31> It has _br_ and _loop_ , good enough.

<comment><USER35> I don't think it's sufficient for full-fledged generalized tail call elimination. You can certainly optimize a self-recursive call down to a loop, but consider a case where a function accepts another function as a pointer, and invokes that pointer in a tail call position, for example (i.e. anything written in continuation-passing style).

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> Do any mobile browsers support it yet? The article is unclear.

<comment><USER37> Safari does on iOS 11:

[https://webkit.org/blog/7956/new-webkit-features-in- safari-1...](https://webkit.org/blog/7956/new-webkit-features-in-safari-11/)

[https://developer.apple.com/library/content/releasenotes/Gen...](https://developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Safari_11_0/Safari_11_0.html)

<comment><USER38> But does a WebView?

I recently discovered that while Safari supports WebRTC, a "WebView" or a safari view that is added to the home screen does not.

<comment><USER39> WKWebView and SFSafariViewController both support Web Assembly in iOS 11.

</comment></comment></comment></comment><comment><USER26> Without DOM it's not really that exciting.

<comment><USER40> There is a lot of processing that doesn't inherently need the DOM, and there's also server-side stuff as well. I think you'd be surprised!

<comment><USER26> Yeah, but WASM was supposed to democratise the web development not to do just server-side stuff. Without DOM and Web APIs you can't do much Web related.

<comment><USER41> > not to do just server-side stuff

He didn't say anything about 'only server side stuff'. There is plenty that has already been demonstrated with webasm - video editing and filtering, audio editing and filtering, advanced computer graphics, direct porting of games, etc.

<comment><USER26> >> There is plenty that has already been demonstrated with webasm - <USER2> editing and filtering, audio editing and filtering, advanced computer graphics, direct porting of games, etc.

Even for that it doesn't work without some js. The promise was that you can use your favorite language for web development and that's not the case. WASM is now more about the integration with JS.

<comment><USER41> The point also isn't that you don't need any javascript. It seems like people really aren't getting that webasm enables new things to be possible. Using javascript to bridge to certain APIs really hasn't been a problem. WebGL already works well, even with pure javascript. Between JIT compiling and bulk transfer functions, there aren't actually that many calls happening per frame.

> The promise was that you can use your favorite language for web development

I can see where you are confused. The promise was never about using your favorite language for web development. It was about being able to compile languages to a synthetic ISA that will run at near native speeds.

> WASM is now more about the integration with JS.

It was never about getting away from javascript, it was always about being able to run software at near native CPU speeds in the browser.

</comment></comment></comment></comment></comment></comment><comment><USER42> How do I compile/target stuff for WebAssembly and integrate it with "usual web" (I need to use some advanced math & WebGL real-time that is too slow in JS)? Is there any good tutorial? Thanks!

<comment><USER40> Currently, the best supported languages are C, C++, and Rust. Languages that have runtimes require their runtimes to also be compiled in, and so are much heavier weight.

For C and C++, you have emscripten. For Rust, we have an emscripten-based toolchain that works today, but have a PR open for using LLVM's built-in wasm backend.

For emscripten: [https://kripken.github.io/emscripten- site/docs/#](https://kripken.github.io/emscripten-site/docs/#)

For Rust: [https://hackernoon.com/compiling-rust-to-webassembly- guide-4...](https://hackernoon.com/compiling-rust-to-webassembly- guide-411066a69fde) (slightly older but still should work afaik) And the new backend [https://github.com/rust- lang/rust/pull/45905](https://github.com/rust-lang/rust/pull/45905)

</comment></comment><comment><USER43> All the excitement around wasm seems quite puzzling to me. Yes, I understand that you can program in whatever language you love but what new language are you hoping would be supported? C? C++? Fortran?

As far as I am concerned, all the languages I care about already have compilers that target JS.

<comment><USER44> Rust is the big one for me, personally.

The idea of being to write in one language for embedded software, system software, cli tools, web applications, distributed applications, and now the web client?

That's a very enticing idea. It might finally be the realization of what Java failed to accomplish ( _technically_ it did, but never gained a lot of traction on the client b/c it was too slow at the time).

</comment></comment><comment><USER45> "...all major browsers"

Is Internet Explorer not a major browser anymore? I'm talking relevant as in _your webpage needs to work fine in Internet Explorer_.

For example, my company still has Internet Explorer configured as default browser as Edge is not compatible with some internal pages.

<comment><USER46> IE is not a major browser anymore

[http://gs.statcounter.com/](http://gs.statcounter.com/)

Look at your Google Analytics, it's really not that important anymore.

<comment><USER47> In corporate env it is.

<comment><USER48> Either the computers in these mysterious corporate environments are exposed to the internet, in which case they'd be reflected in these public stats collected by them visiting public websites from IE, or they aren't, in which case they don't matter in the slightest because they're not going to visit webpages using WebAssembly.

<comment><USER49> IE can account for a fraction of total _traffic_ , but it still can affect large percentage of _users_. The same person can use several devices (work, home, mobile) to browse the web at different times. I can't recount how many times I saw some page at work only to send myself the link to read it later. I'm not forced to use IE anywhere, but if I were, loosing that initial visit would also lower the number of visits from other browsers.

</comment></comment></comment></comment></comment><comment><USER50> Ok, now we need GC and DOM interop. Because reinventing layouts is pain.

<comment><USER51> In order to port other languages (Haskell, Go, Python) to target WASM, we definitely need the possibility of writing a GC in WASM. But to build an efficient GC, we need multithreading and synchronization/memory barrier primitives.

<comment><USER52> Multi threading brings in all kinds of security issues

<comment><USER53> What kinds of security issues? I really can't think of any besides some issues with too many threads spawned (that can be trivially blocked).

<comment><USER54> Could be a new source of undefined behavior and memory exploits, if threaded code is allowed to access collections that allocate memory without taking all the locks they should?

<comment><USER53> Inside the VM, yes. But not a security threat for the host.

The VM should be sandboxing the pages from each other, so those are potential security threats against targets on the same pages only. Not something to be too concerned about.

<comment><USER54> Help me understand: What's the difference between that and process separation?

</comment></comment></comment></comment></comment></comment></comment><comment><USER55> Can't wait for a port of Angular2+ to C#.

</comment><comment><USER42> Soon we will all have JDK, .NET runtime and WAsm runtime running on our machines.

</comment><comment><USER56> Based on the unbridled capabilities, I can't wait for a way to block WASM. Does noscript do this yet?

<comment><USER40> What "unbridled capabilities" are you referring to?

</comment></comment><comment><USER57> Any news on access to DOM progress?

<comment><USER40> I commented elsewhere in the thread about the latest proposal.

</comment></comment><comment><USER58> Who wants to write a faster CryptoNight miner in wasm?

</comment><comment><USER59> did they improve external stacktrace support? the last time I checked debugging was imposible due to bad stacktraces.

<comment><USER40> My understanding is that the current debugging tools can show you the text format of wasm, but showing the original code you compiled to wasm doesn't work quite yet. It's under discussion.

</comment></comment><comment><USER60> Nice advertisement

</comment><comment><USER61> Great. We will soon have an entire JVM running inside each browser's tab, just to run an animated slider. Maybe even more than one. Plus a .NET VM, several Python and Ruby interpreters, and so on.

Because webmasters will keep loading ready-made plugins from CDNs, exactly like they are doing now, except that the new generation of web software will carry their own interpreter or runtime with them, because the developer wanted to use Python or whatever.

The web is getting better by the day.

<comment><USER62> I'd like to interject for a moment here, and pitch my idea about what I call the "Web 4.0". It's basically a binary equivalent of HTML, without the many inconveniences of HTML for content providers.

Web 4.0 pages are obfuscated WebAssembly payloads, that draw their contents via WebGL. This way, adblocking becomes impossible, as the actual content and ads are within the same opaque WebGL framebuffer. Stealing copyrighted text is also made significantly harder, beause the Web 4.0 platform leaves it up to the publisher to enable glyph selection and copying. You have concerns about accessibility? Web 4.0 is 100% accessible thanks WebAudio based realtime speech synthesis!

<comment><USER63> it'll also be harder to learn how things work... i wonder how much we've learned from reverse engineering the easy to read inline script tags... I definitely remember teaching myself JavaScript by reading blizzard.com's late 90s markup... figuring out that mouse over effect with onmouseover and onmouseout... works in ie4... but whats that strange bug in netscape 4..

<comment><USER64> You can't really do that today anymore though

</comment></comment></comment></comment><comment><USER65> Can't wait for DOM interop and get away from JS on frontend. Seriously JS should not be the lingua franca of the web :)

<comment><USER66> >> Seriously JS should not be the lingua franca of the web

But neither should this. Really, keep your code off my computer as much as possible.

<comment><USER67> I think it's darkly humorous that I have to install browser plugins to stop sites from mining monero in my browser. It's like websites are those creepy spider things in the Matrix, except instead of sticking humans in pods to harvest their biochemical energy, they're just running up our home electricity bills by maxing our CPUs.

<comment><USER68> What plugins do you recommend for this?

<comment><USER61> uBlock Origin with the default choice of lists plus "Fanboy's Annoyance" makes the web 100s of times faster.

It's now a default install on every browser of every computer I touch. Even on Firefox on Android, which works really well btw.

</comment></comment></comment></comment></comment><comment><USER69> I want to see a WASM+react framework where the application state/logic is fully in WASM and merely the rendering is done by react.

<comment><USER70> I would want the inverse of that, where the application logic is in some high- level language, and the rendering is done in WASM, i.e. react-dom and the diffing parts of react are in WASM.

</comment></comment><comment><USER31> Great, time to port SWF to WebAssembly.

</comment><comment><USER71> Java applets 2.0, we are back to square one, yet again.

People don't learn. The web dev community have just managed to force browsermakers to unify web development on browser side JS, and throw Java applets, activex, and action script to the bucket, just to have a kind of JVM being made a part of the web standard, and forced upon us yet again.

<comment><USER72> There are some clear and defining differences between Java applets and webassembly. The core problems with Java were that the security sucked, and that applets were non-native and didn't use the dom. I doubt there is any desire in web developers to overuse canvasses and do layout in wasm, and the security model should hopefully be as successful as JS's has been over the years.

<comment><USER71> > The core problems with Java were that the security sucked

The core problem with Java applets was that they were Java applets

An option to keep the source of the web app closed will fragment the web dev community yet again.

<comment><USER73> I don't think there is a single web site with human readable javascript on the web anymore.

With all the bundlers and minifiers manglers etc, delivered js is already as closed as a wasm binary would be.

<comment><USER74> > I don't think there is a single web site with human readable javascript on > the web anymore.

Meaningless hyperbole - there are plenty. You're posting on one right now.

<comment><USER73> Sorry, I forgot Hacker News, the representative of modern web development practices.

<comment><USER74> Ok fair enough.

Hacker News and at least every Wordpress site. So that covers a significant portion of the existing web.</comment></comment></comment></comment></comment></comment></comment>


GNU's advanced distro and transactional package manager - <AUTHOR> http://www.gnu.org/software/guix/ <comment><USER2> They took a lot of inspiration from NixOS[1], which many people successfully use and it isn't in beta (not meant to badmouth GuixSD of their efforts, just wanted to put it out there)

[1] [https://nixos.org/](https://nixos.org/)

<comment><USER3> They implemented the Nix model in Guile, so inspiration is selling it short. Although Guix have arguably passed Nix in terms of features already, with a much better command-line tool, a linter, importers for several external package registries and grafting[0] which is a real pain point in Nix.

I think part of the reason they are now cruising past Nix (despite 1/10th of the users) is that it's written in a proper programming language, and not a home-made language that relies heavily on bash.

That said, I'm really happy with NixOS after two years, and would not consider going back to any "conventional" distro for my own workstation. Coming from a Gentoo background, there is nothing like screwing up your system and simply booting into the previous generation :)

Having the _entire_ system configuration in one place that can be version controlled is a big plus too. You can create a live CD, VM, container etc from the very same code.

Nix and Guix can also be used standalone (think Homebrew or Gentoo Prefix), and can be very handy shell tools. E.g. `guix environment foo`[1] will drop you to an ephemeral shell environment with all build dependencies of package foo available.

0: [https://www.gnu.org/software/guix/manual/html_node/Security-...](https://www.gnu.org/software/guix/manual/html_node/Security- Updates.html)

1: [https://www.gnu.org/software/guix/manual/html_node/Invoking-...](https://www.gnu.org/software/guix/manual/html_node/Invoking- guix-environment.html)

<comment> vertex-four One upside (or downside, depending on your PoV) of Nix is that unfree packages exist (though disabled by default) in the standard repo. Want the actual useful graphics drivers for gaming? Steam? Both easy to install.

<comment><USER4> I love the idea of using a real language, a real _LISP_ , instead of that Nix- contraoption, but currently having access to FSF-approved free software only is a complete deal-killer for me on my laptop. I still need some unfree software, and I don't care about software patents (ref for instance MP3 and H264 decoding).

If Guix gets to the point where every concern except that surpasses NixOS, we might see a close-to-upstream Guix-fork or third party repo (like MELPA and MARMALADE for Emacs) being established to address that.

Or at least so we can hope.

<comment><USER5> Package repositories are just Scheme modules. Guix supports loading of additional package repositories via the GUIX_PACKAGE_PATH environment variable.

The fact that Guix won't distribute packages for non-free software does not mean that it restricts you in using Guix to manage such software packages.

</comment></comment></comment></comment></comment><comment><USER6> Can someone comment on how things like kernels, kernel modules, and bootloaders work in Guix? It seems like these sorts of things wouldn't be possible to handle in a purely functional manner since, for example, you can only install one bootloader to a disk, and you can only boot into one kernel.

<comment><USER4> Disclaimer: I haven't ever used Guix, but I've used NixOS which builds on the same roots.

Typically your total system-configuration can be divided into a few distinct parts: bootloader and filesystem-partitions, kernel and software.

These features are to some extent dependent on each other, but not in any way which breaks dependency management or causes conflict, and thus can mostly be treated distinctly.

Basically you configure A bootloader, not several. The configuration is about which one that is and where you put it. Depending on if you use UEFI or not, this is either 100% tied to the filesystem layout, or just 99%.

Then the rest of the tooling just uses that info to populate the boot menu. In functional terms, a bootloader should have no side-effects on the system booted, so as long it boots the system, you should be fine.

The kernel doesn't really care about what bootloader you use as, as long as it boots it with the correct parameters. You can have several kernel- configurations in parallell which are accessible from the same bootloader- menu, but as you say, you cannot be booted into several versions at the same time.

That's not really a real-world problem though, because software very rarely depend on a specific kernel-version, they just depend on having _a_ kernel. If a package depends on specific kernel modules, it's free to add these as dependencies, which will be resolved.

This means you can have a 100% functionally constructed system on top of a few config-files, with minimal chance of crafting a configuration which is internally incompatible. If it is, the tooling will tell you, and your system build will fail.

You can also have several mututally incompatible configurations within the same filesystem and boot between or chroot into these. It's an incredibly powerful concept.

The only reason I'm not running NixOS today on my laptop is that I need 100% end-user finish with regard to a "just works" desktop, and I'm not willing to build that myself, one package at a time, with the limited spare-time I have.

So I appreciate and respect both NixOS and GUIX and the work being invested in them, but for now I run Fedora :)

</comment></comment><comment><USER7> I'm sorry for being so naive but when they say "GNU Operating System" do they mean HURD or is this a GNU/Linux distro?

<comment><AUTHOR> "As of version 0.10.0, the Guix System Distribution can be installed on an i686 or x86_64 machine. It uses the Linux-Libre kernel and the GNU Shepherd init system. Alternately, its package manager, GNU Guix, can be installed as an additional package manager on top of an installed Linux-based system."

[http://www.gnu.org/software/guix/download/](http://www.gnu.org/software/guix/download/)

<comment><USER8> So, in other words, it has all the disorganized chaos of Linux, but lacks the user-friendliness because your wifi, graphics, and sound cards won't work.

Might as well run BSD: Your peripherals still won't work but at least the system underneath is still more coherent.

<comment><USER9> FreeBSD runs every single driver on my laptop. And most common stuff has OSS drivers implemented for it, and Linux Libre has them.

<comment><USER8> Is the performance good? Last time I ran BSD on my thinktop, I got 2 hours of battery life and the system ran 10 degrees hotter than debian.</comment></comment></comment></comment></comment>


Feedback about my site - <AUTHOR> http://flocksy.com/

<comment><AUTHOR> I have launched a site recently and would love feedback on the usability, content and design - or anything else. It is a freelancing and project management platform geared towards web developers and designers.

<comment><USER2> You really need to do a "Show HN" submission to let people know that you want feedback on your project or startup. The "Show HN" submissions get listed under the "show" link in the top menu and the rules for doing a "Show HN" submissions are here:

[https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

If we're lucky, the mods will notice and change the title of this post for you.

<comment><AUTHOR> Thanks for the tip!</comment></comment></comment>


50 Years of Computer Architecture: From Mainframe CPU to DNN TPU and Open RISC-V - <AUTHOR> https://site.ieee.org/scv-sscs/files/2018/05/IEEE-Talk.pptx <comment><AUTHOR> Talk : [https://www.youtube.com/watch?v=HnniEPtNs-4](https://www.youtube.com/watch?v=HnniEPtNs-4)</comment>


GNU Founder Richard Stallman Resigns from MIT, Free Software Foundation - saint-loup https://www.engadget.com/2019/09/17/rms-fsf-mit-epstein/ <comment><AUTHOR> In case of doubt, here's the announcement on fsf.org: [https://www.fsf.org/news/richard-m-stallman- resigns](https://www.fsf.org/news/richard-m-stallman-resigns)

Vice published info about this earlier [1], including the actual email chain [2]

[1] [https://www.vice.com/en_us/article/9ke3ke/famed-computer- sci...](https://www.vice.com/en_us/article/9ke3ke/famed-computer-scientist- richard-stallman-described-epstein-victims-as-entirely-willing)

[2] [https://assets.documentcloud.org/documents/6405929/091320191...](https://assets.documentcloud.org/documents/6405929/09132019142056-0001.pdf)

</comment><comment><USER2> To be honest I don't know what attitude should I hold towards this news. On the one hand Richard's initial words didn't sound proper in that context, on the other hand as mentioned in the report this is a dangerous precedence that is against my belief of absolute freedom, which also reminds me of those protests against Linus Torvalds.

The whole thing only makes me recall good 'n' old 80s when everything is simple.

<comment><USER3> Friend, the only reason things seemed simple in the 80s is because the people on the receiving end of the "absolute freedom" stick, regardless of whether or not the people swinging it were aware of their swings, didn't have means to be heard by hundreds of thousands of people easily.

For computing specifically, you can add in that you basically had to be an economically privileged person who was likely on the spectrum to get really into it -- in an era where ASD and related disorders were not as well understood or diagnosed. You can also add it just being a smaller community.

Both RMS and linus had years and years of people expressing that they were acting in a problematic ways. Linus owned up to it eventually, even though there are arguments to be made for the utility of brashness.

RMS is mostly getting stuck in hyperfocused linguistic semantics, and probably doesn't really get how to not do that. Whether or not people making such a screech about this particular instance is appropriate is it's own question, but to me it is very much a "throwing up of hands" for a lot of people involved with the FSF.

<comment><USER2> Yeah the Internet changed everything. I just hope Linus could stick to his style without being stuck in these things, but if that really becomes the case I would seriously consider retiring from my job on kernel.

<comment><USER3> I am, no lie, quite concerned about the future of linux without someone really willing to be very stern (even cuss up a storm sometimes) about issues like pushing patches that break userspace or just quite bad code in general once linus is gone.

I'm fine with people telling him to stop being super harsh on the semi-reg, but there are actually gates that need kept in kernelland and one of the jobs of a gatekeeper is to tell people "no", sternly sometimes, and with explanation sometimes.</comment></comment></comment></comment>


Ask HN: Getting better user engagement - <AUTHOR>

Our startup launched our app last Friday and as a promo we gave away $5 in credits to everyone. We have had a good response of people downloading and signing up with the app, but only a few people have actually taken advantage of the deal.
Any suggestions on getting a better response from our users?
For reference our app is https://itunes.apple.com/us/app/flippo-student-powered-delivery/id836031729?ls=1&mt=8 and is currently open to Pitt and CMU students. <comment><USER2> You'd get farther if you asked those users for feedback. _Why_ didn't they use their credit? You may find out that they all had the same concern or issue, and it'll be an obvious fix.

</comment><comment><USER3> how do they pay? could not want to put payment info in.

<comment><AUTHOR> we use balanced payments, and advertise that fact inside the app. from our analytics it doesnt look like people are being stopped by that fact.</comment></comment>


Online mapping for beginners A free online course - <AUTHOR> http://blog.cartodb.com/post/66372286509/online-mapping-for-beginners-a-free-online-course

<comment><AUTHOR> There is some more info here:

[http://cartodb.com/academy](http://cartodb.com/academy)

</comment><comment><USER2> Actually what datasets will you guys be working with? Anything fun?

<comment><USER3> Propose your favourite datasets!

</comment></comment><comment><USER4> December is like Next month... but I have already signed up!

<comment><USER5> Thanks! It'll be here before you know it :)

</comment></comment><comment><USER5> Nearly 500 signups already and it isn't even noon! :)

</comment><comment><USER3> What you will be going through?

<comment><USER5> I haven't put it all together yet, but I have given a number of workshops so will draw a lot of material from things I done in the past. I will probably cover the basics of mapping online, creating your first points map, styling points, creating multiple layer maps, and maybe a bit of temporal mapping. Nothing final yet!

</comment></comment><comment><USER6> Will definitely attend!

</comment><comment><USER2> Guys this is amazing.</comment>


Why people collect art - <AUTHOR> https://aeon.co/essays/what-drives-art-collectors-to-buy-and-display-their-finds <comment><USER2> I think a lot of the same can be said about 'art' in general, be that 'art' in a traditional sense, or be that music, books, films, etc... Some people just seem to have a predilection towards 'art' more than others.

I spend a lot of time finding new and interesting records. I get massive amounts of enjoyment from finding and listening to smaller bands and music that just never makes it to the mainstream. I have friends who have no interest in music other than the radio in the background. I have friends who listen to a lot of music, but only what is in the charts. I can suggest 'this amazing band' to a friend, but the chance of them listening, much less enjoying it is pretty remote.

Similarly, I bought a lot of 'art' when I was younger. I bought it because I loved it, I got pleasure from it, enjoyed seeing it hanging, enjoyed talking to people about it. Many of my friends who decorated houses hung 'art' without any reason - it was just there, or filled a space, seemed like appropriate colour for the place, like paint on a wall. Or often then didn't hang art at all - instead they put up photos they've taken, or mirrors.

I guess what I'm saying; I think it's really just another example (fairly literally, in this case) of 'different strokes for different folks'. I buy art, you buy racing bikes. We're all different. And isn't the world so much of a better place for it?!

</comment><comment><USER3> After topping out on prestige, land, wealth and power. What else is left? But to amass a treasure horde of the rarest artefacts and masterpieces the world has ever known.

Longform profiles of superstar dealers such as Larry Gagosian or David Zwirner provide more insight into the psychology of those who catch the art collecting "bug". And how it can morph into irrational idee fixe territory. Such as Getty's obsession with the Roman Emperor Hadrian.

The Art-World Insider Who Went Too Far

[https://www.newyorker.com/magazine/2016/02/08/the-bouvier- af...](https://www.newyorker.com/magazine/2016/02/08/the-bouvier-affair)

And of course, you don't need to be a millionaire to start building your own collection. Just a keen eye, good taste, and love for making deals ;)

How To Start Collecting Art In Your 20s

[https://www.artsy.net/article/artsy-editorial-start- collecti...](https://www.artsy.net/article/artsy-editorial-start-collecting- art-20s)

The latest innovation and natural evolution of digital art collecting is potentially the blockchain and distributed ledgers.

The Blockchain Art Market Is Here

[https://www.artnome.com/news/2017/12/22/the-blockchain- art-m...](https://www.artnome.com/news/2017/12/22/the-blockchain-art-market- is-here)

<comment><USER4> "How to collect art in your 20's" -> get a loan

Was hoping for creative ways to identify rare pieces for cheap.

</comment></comment><comment><USER5> Expensive art?

1\. Money laundering

2\. Hedge against inflation

3\. Many idiots become rich. Total boring and uninteresting people. They think having a (minor) sketch from Renoir on their wall makes them interesting or special (it doesn't).

Source? Personal observation.

<comment><USER6> I always wondered if the art galleries in my high tax country were used for money laundering.

It seems pretty obvious: Individual A buys a piece of art for, lets says $10,000. A couple of years goes by, and the individual puts it up for sale at an art gallery. Individual B's company buys the painting for $100,000 - Voila, $90,000 laundered completely legally as private sale of art isn't taxed.

All that is required is a small group of friends with companies they control. Why the art gallery - to make it seem more legit that they are facilitating the sale.

<comment><USER7> certainly seems plausible to me. do you think there's a reason they do this with art more than cars, homes, watches, jewelry? portability?

<comment><USER8> Because cars, homes, watches and jewerly don't jump in price as highly as art pieces do. You can't buy some shitty car and sell it for 1 million a few years later. As for selling antique cars and Ferraris and such, those are already expensive to begin with and the margins are low.

But you can artificially inflate some BS artist's work.

</comment></comment></comment></comment><comment><USER9> I have a small art collection of small pieces of art by local artists. I generally get them at open studio events or local art fairs. I don't have a lot of wall space.

The ones not on the wall I rotate displaying on a little stand that sits beside the door when I leave.

I enjoy them and they seem to lift my mood.

<comment><USER10> +1 for this, my art collecting is basically the same, mostly prints and paintings from local artists in the sub-$500 range. I enjoy them like most other entertainment: as a portal into another reality. And if they become worth something to someone else in the future and I decide I don't want them? Bonus.

</comment></comment><comment><USER11> If you're interested in this, I highly recommend the book The $12 Million Stuffed Shark: The Curious Economics Of Contemporary Art. As the promo blurb says, it's a Freakonomics-style look the art world, covering artists, deals, collectors, and auction houses. A ton of insight into how all the psychology of it fits together.

[https://www.amazon.com/Million-Stuffed-Shark-Economics- Conte...](https://www.amazon.com/Million-Stuffed-Shark-Economics-Contemporary- ebook/dp/B0077QZ208/)

<comment><USER12> Ha, I was just going to post this as well. I can't recommend this book enough, it's really an eye opening discussion of how value is created in the contemporary art market.

If you wonder why some artwork that seemingly required little skill is worth millions or why someone would pay for an all white painting, this is the book for you.

</comment></comment><comment><USER13> A recent scandal in France taught us that art collection is also a great way to hide bribes. If you want to receive say one million from a Saudi gentleman, just put one of your 100 k painting for sale and one anonymous buyer will discover a taste in that artist and buy it for 1.1M. then brag about your flair.

<comment><USER14> You can do that with anything. A recent famous case in my country involved a shady real estate mogul who bought a $40 million piece of real estate and then turned around and sold it to a russian oligarch for $100 million. Was it a bribe? Who can say?

<comment><USER15> Why don't you just say Donald Trump?

Two reasons why it wasn't bribery: First, it wasn't just bought and then sold - the property was bought, renovated by Trump, and then sold 4 years later. Secondly, the Russian that bought it subdivided the lot and is set to make a few tens of millions off of selling each subdivision: [https://www.bizjournals.com/southflorida/news/2017/10/06/rus...](https://www.bizjournals.com/southflorida/news/2017/10/06/russian- billionaire-makes-37m-selling-palm-beach.html)

<comment><USER16> I feel like US Presidents shouldn't be allowed to participate in _any_ large scale commercial enterprise while in office. Whether it's innocent or not is largely besides the point, the potential for conflict of interest is huge and there's no way to ensure their financial incentives align with those of the American people. Furthermore, there is a long tradition that previous Presidents have placed their assets into a blind trust, a tradition that Trump clearly disregards. Sure, you could argue it's not a bribe, but it's very shady.

<comment><USER15> This sale happened 10 years ago so this didn't happen in office.

Was Russia planting the seed in 2008 to have a puppers in the white house? Yeah, I don't think so.

<comment><USER16> I don't see why it matters when it took place. I'm curious, don't you think he may have an incentive to benefit his russian business partners, both for past and future deals they may make, at the expense of the American people? Why wouldn't he choose to benefit his russian business partners, at your expense, if he has an opportunity to do so? The incentive is clearly there.

<comment><USER15> Because bribery usually happens when people are in power. I've never heard of preemptive bribes, where hopefully the bribee will run for office 10 years later.

You know what, this just isn't worth it. You calling them "business partners" shows me what I need to know. No reasonable person would call the counter party in a transaction a "business partner". You realize that Trump has done thousands of deals with people of all sorts of nationalities right? Do you expect them to all get favored treatment, or just Russians? Is that how good business people operate? "We did a transaction once, therefore I will favor you and give you free consideration for no other reason"

<comment><USER16> > Is that how good business people operate? "We did a transaction once, > therefore I will favor you and give you free consideration for no other > reason"

Suppose a person works in real estate their entire life, and then runs for political office but still maintains their real estate business. Is it not reasonable to assume, absent evidence to the contrary, that they have incentives to benefit the real estate industry and in particular their own business, over that of others? Why would they stop acting in a way that maximizes their own personal profit?

Would we not assume the same for really any professional background? If Mark Zuckerburg runs for President and wins, would we not assume that he would favor policies that benefit Facebook to the detriment of their competitors, simply because he has a strong financial incentive to do so? Indeed, would you be comfortable with a President Zuckerberg who remained in complete control of Facebook while in office?

Why then is it weird to be concerned that Trump has not distanced himself from his business interests? Trump has done thousands of deals, but those deals only benefited him and his counter parties. Those deals were not done for the benefit of the American public at large. That's fine for Trump the private citizen, but not Trump the President. I reasonably expect that all dealings that a President has while in office are _exclusively_ on behalf of and for the benefit of the American people. If he were a banker, or wall street financier of any other type, wouldn't the same conflict of interest exist? Do you really not think this is a cause for concern?

The default assumption should be that a person is prone to corruption. That is the safe assumption for anyone granted power, and is the assumption of the founding fathers who wrote the Constitution. We should not give the benefit of the doubt to any leader. That is far too dangerous and runs contrary to the spirit of Democracy. If you want to believe a leader is a saint above reproach that is the realm of Authoritarianism, not Democracy.

<comment><USER15> What does this have to do with a real estate sale 10 years ago?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> In some cases art can be classed as business equipment, and sold without any capital gains tax.

[https://www.rossmartin.co.uk/private-client-a-estate- plannin...](https://www.rossmartin.co.uk/private-client-a-estate- planning/capital-gains-tax/1074-painting-is-plant-for-capital-gains-tax)

</comment><comment><USER18> See also this Planet Money episode that came out this week [https://www.npr.org/sections/money/2018/02/09/584555705/epis...](https://www.npr.org/sections/money/2018/02/09/584555705/episode-823-planet- monet)

</comment><comment><USER19> Back when online auctions were a new thing I got me a 1932 second printing (traditionally the first printing was cheap paper and pasted on walls while later runs were for subscription clubs and whatnot) French advertising poster for something stupid like $79 off yahoo auctions.

Sometimes a deal is just too good to pass up.

</comment><comment><USER20> A lot of them do as a form of stock/investment. But I think there is a prestig factor in there somewhere

</comment><comment><USER21> To avoid taxes ?

<comment><USER22> From the article: "Another popular explanation for collecting – financial gain – cannot explain why collectors go to such lengths."</comment></comment>


Ask HN: Negotiating equity. Is 10% enough? - <AUTHOR>

I plan on quitting my engineering job to join a 2 person startup. Currently the startup doesnt make product - it generates $100,000 per year in software consulting and is growing at a rate of 15%. Eventually we hope to package and ship products from our consulting ventures.I will be quitting a 9 to 5 to work days/nights/weekends (basically full time, all the time), loosing dental/health insurance and 401k benefits.
Since I do not expect to get paid more than $33K per year, I need to figure out what equity compensation is reasonable. How should I go about figuring out what equity to negotiate?
I could estimate stock value using price to earnings, 10% equity for year one would then correspond to an additional $10,000 if my shares were to be bought out.Is this how I should go about thinking about this? <comment><USER2> You seem to think you're the first employee. If you're not making market and going home at 5/6 PM, you should be the third co-founder.

</comment><comment><USER3> Visit this page (nothing special, just the first search result for "software engineer salary"):

[http://www.payscale.com/research/US/Job=Software_Engineer_/_...](http://www.payscale.com/research/US/Job=Software_Engineer_/_Developer_/_Programmer/Salary)

And ask yourself this question: If these two people can't make more than $50k per year per capita in software consulting, in this market, in their product's alleged _target_ market - and they can't figure out how to grow that number more than 15% per year, via simple recipes that are _orders_ of magnitude less risky than developing and shipping a product - why on earth are you quitting a job to partner with them?

Look for partners who can find a market worth finding. In the meantime, don't give up your day job, no matter how much equity you're offered.

<comment><USER4> Not to mention that they're making $50k a head working "days/nights/weekends" - a bit extreme!

For comparison, doing software consulting at only $50/hour, you can make $50k working just 19 hours a week...

</comment></comment><comment><USER5> joel spolsky answered a similar question on quora here, [http://answers.onstartups.com/questions/6949/forming-a- new-s...](http://answers.onstartups.com/questions/6949/forming-a-new-software- startup-how-do-i-allocate-ownership-fairly/23326#23326)

<comment><USER6> Awesome response from Spolsky but that's _not_ Quora. You can tell because it has users and content :)

<comment><USER5> ya ur right... whoops. def my bad there. still, hope it helped :)

</comment></comment></comment><comment><AUTHOR> [http://answers.onstartups.com/questions/6949/forming-a- new-s...](http://answers.onstartups.com/questions/6949/forming-a-new-software- startup-how-do-i-allocate-ownership-fairly/23326#23326)

According to this I would count as the first employee as the company has existed for a year and is making money. Thereby ascribing 10% to me, their first layer of employees. However as this layer grows my value may gets diluted. Moreover it assumes that I am getting paid market wage. As part designer, part developer and part project manager - im not sure what that number is but lets say its at least what im getting paid now $70K per year.

Since I am not getting paid market wage I feel like it should be reasonable to ask for sufficient equity compensation. This is one of the main reasons join a startup right? Not the pay but the  potential  reward.

All this being said, its a young company the founders are my friends and I feel strongly that the company has potential and that I have a strong opportunity to grow.

</comment><comment><USER6> Why do you think you'd only get paid $33k? If that's the case, that's suggesting the compensation and ownership is:

      Co-Founder: $33k Salary, 45% Equity
      Co-Founder: $33k Salary, 45% Equity
             You: $33k Salary, 10% Equity

I'm hoping the problem is self-evident.</comment>


Alan Kay on Lisp and Fexprs - <AUTHOR> http://kazimirmajorinc.blogspot.com/2010/02/alan-kay-on-fexprs.html <comment><USER2> As a counterpoint, if you take something hard and profound, and make a turd out of it, people that avoided the hard problem will probably beat you.

(GNU Guile maintainer speaking. No, we don't have fexprs any more. Yes, we are finally getting back to the level of other Schemes.)

</comment><comment><USER3> There is an _excellent_ reason not to base your language on fexprs: their equational theory is trivial (<http://www.ccs.neu.edu/home/wand/pubs.html#Wand98>). See <http://lambda-the- ultimate.org/node/3640> for more discussion and a modern approach (<http://web.cs.wpi.edu/~jshutt/kernel.html>) to retaining the appeal of fexprs while avoiding this drawback.

<comment><USER4> I've already voted it up, and don't want to violate social conventions here, but consider this comment another vote for the LtU thread mentioned above. A fantastic and educational argument by people who know what they're talking about. If you're interested in these sorts of details it's good reading, no matter what side of the argument you happen to be on.

</comment></comment><comment><USER5> "take the hardest and most profound thing you need to do, make it great, an then build every easier thing out of it."

Indeed.

</comment><comment><USER6> Oddly enough I cited that exact quote a few weeks ago on the arc forum: <http://arclanguage.org/item?id=11185>

</comment><comment><USER7> Interesting...

Fexprs appear to be runtime-only first-class macros.

<comment><USER8> They look to me like lazy functions (eg. in Haskell), but no one else has mentioned the term laziness, so I must be mistaken in some respect.

<comment><USER9> There's a similarity in that neither fexprs nor lazy functions evaluate their arguments up front, but lazy functions will _eventually_ , if they run and access that argument at all, get an evaluated version of it. Fexprs can get the actual raw unevaluated argument and poke at it, so if you call (foo (+ 1 2)), _foo_ gets the syntax-tree (+ 1 2) if it's an fexpr, while if it's a function, lazy or otherwise, it will only ever see the value 3.

<comment><USER10> ...so, basically it gives the same ease of understanding program flow that lazy evaluation offers, but without the distracting complexity of referential transparency? Okay, then.

<comment><USER7> _[...] but without the distracting complexity of referential transparency?_

How could referential transparency possibly be distracting or complex?

<comment><USER10> In exactly the same way that lazy evaluation makes program flow easy to follow.

Or perhaps in the same way that the internet makes sarcasm easily recognized, I suppose...

<comment><USER7> Aha!

So the value of your words depended on evaluating them in a sarcastic context. This lack of referential transparency made it difficult to reason about them at compile-time.</comment></comment></comment></comment></comment></comment></comment>


Rosetta: ESA's 'sleeping beauty' wakes up from deep space hibernation - <AUTHOR> http://www.esa.int/Our_Activities/Space_Science/Rosetta/ESA_s_sleeping_beauty_wakes_up_from_deep_space_hibernation <comment><AUTHOR> > _Operating on solar energy alone, Rosetta was placed into a deep space > slumber in June 2011 as it cruised out to a distance of nearly 800 million > km from the warmth of the Sun, beyond the orbit of Jupiter._

Boggles my mind what a group of engineers can do. Make you wonder if our industry's mind share being wasted on web apps and consumer gadgets because of the profit incentive associated? Just seems like an unbelievable symphony of fields all playing in concert, let alone having it all work as expected in _production_! Probably the most stunning example of this was Curiosity's Landing on Mars (the tethered landing blew me away!) [1].

[1] [http://www.nasa.gov/mission_pages/msl/news/edl20120809.html](http://www.nasa.gov/mission_pages/msl/news/edl20120809.html)

<comment><USER3> Edit: I can see this is getting downvoted. If you have time, I would really appreciate a response to go with the downvote. This is my heartfelt belief, and if I'm wrong I would really like to be able to learn something.

> Make you wonder if our industry's mind share being wasted on web apps and > consumer gadgets because of the profit incentive associated?

I find this sentiment strange. To me, your kind of excitement, which seems to be pure joy over incredible engineering feats, seems nihilistic. There are serious terrestrial problems happening right now. Massive environmental destruction, humanitarian disasters. Even in relatively stable places like the Bay Area I know many people who are teetering on personal disaster. These are extremely complex problems and engineers have extraordinarily powerful skills to help solve them.

I understand why people are captivated by things like comets and why they'd want to attempt these extraordinary feats. It's exciting and fun and there are few joys that can match doing something that's never been done before.

For that reason I don't begrudge anyone who chooses that kind of work. Earth's crises are incredibly depressing and there's largely no glory in helping a few people stay out of homelessness, or helping a kid get through college. It's risky, demoralizing work.

But I don't really understand why a mission like this would be considered a noble pursuit. Fun, sure. But not especially noble. Yes, basic space science has some value to society in the long term. But we have a MASSIVE backlog of basic science that is being unused. We have journals chock full of solutions to problems that are going unimplemented.

Even something as simple as logistic regression, which has been around for 70 years, is vastly underused. People get excited about bayesian models and neural networks and all this great research, but there's still a massive backlog of problems that could be solved with a simple regression or an ANOVA. There are no basic questions to solve, just the work of obtaining and cleaning data, doing the analysis, and packaging it in a tool that people can actually use.

You seem to wonder why more people don't take on extremely difficult challenges on the edge of possibility. But I wonder why more people don't use existing technical tools to solve the massive backlog of problems that are being ignored.

<comment><USER4> Downvoted you for asking people to explain their downvotes, which I consider a dark pattern.

<comment><USER5> Talking about the general pattern, not this case in particular:

I disagree. A downvote is a signal, "fewer comments like this one please". Sometimes it's obvious what that means, but sometimes it's not. In that case it's perfectly reasonable to ask, what was it about my comment that you disliked? A feedback signal is only useful if understood, and sometimes to be understood it needs clarifying.

</comment></comment></comment></comment><comment><USER6> Shameless proxy brag:

I volunteer for the Long Now Foundation. [1] One of their amazing efforts is the Rosetta Project [2], a set of parallel texts and linguistic resources so that future civilizations will be able to decode anything written today.

The ESA put one of the Rosetta Project disks on the space probe [3], so a bunch of information about our languages is now way the hell out there. You can think of it as very long term backup. [4] I'm really happy for the Long Now folks today.

As an aside, I strongly recommend their series of talks. It's one of my favorite nerd events in SF, and members can stream them live. The old talks are also available via podcast.

[1] [http://longnow.org/](http://longnow.org/) [2] [http://rosettaproject.org/](http://rosettaproject.org/) [3] [http://blog.longnow.org/02013/12/16/wake-up- rosetta/](http://blog.longnow.org/02013/12/16/wake-up-rosetta/) [4] [http://blog.longnow.org/02008/08/20/very-long-term- backup/](http://blog.longnow.org/02008/08/20/very-long-term-backup/)

<comment> grey-area Such an amazing project. I was really keen to order one of the disks as part of what would ensure their survival would be ubiquity, and it would be a lovely artefact to own, but it seems they gave up on mass production. Do you know I'd they have any plans to reproduce them or has that been shelved indefinitely? Perhaps if I wait 10,000 years :)

Wonderful to think of the disk out there on a comet though, forever circling the sun.

<comment><USER6> That's a great question; I want one of them too. I'll try to remember to ask somebody tonight at their talks. But last I heard, the barrier was finding a reasonably priced way to do it. I don't think they've given up, though; a year or so ago somebody showed me prototypes in a few different materials.

<comment> grey-area I'd love to know when they do manage to produce them for say $1000 rather than $10000 - they should have a waiting list so that they can inform people who're interested if they ever do manage to produce them.

<comment><USER6> Ok! It looks like you discovered the thing I found out last night: You get one if you become a lifetime member, at $10k.

They are definitely looking for ways to bring down the cost. I'll suggest to them that they start a waiting list. In the meantime, I'd suggest you follow the Long Now blog or the Rosetta Project blog. You can be sure that they will mention a 10x drop in cost on both of those.

</comment></comment></comment></comment></comment><comment><USER7> I couldn't believe that wasn't at the top of the frontpage already. It's an amazing feat of engineering!

Unfortunately it seems the previous submission didn't get a lot of love for some reason: [https://news.ycombinator.com/item?id=7091027](https://news.ycombinator.com/item?id=7091027)

Come on people, if something is hacker news worthy it has to be this!

<comment><USER8> I'm with you. They sent it - a decade ago - into space, chucked it further and further three (four?) times in a row, then shut it down and told it to drop a line in three years but to work out where it was first, and it did so within a one-hour margin of error.

I am impressed.

<comment><USER9> In all fairness, it was not completely shut down. The main computer and some heating was left active. I do not think that time keeping was biggest worry.

That being said, a hundred other things could have gone wrong and mission control would have had no idea that something happened. Meteorite impacts, misalignment of the solar panels, software bugs, radiation damage and a faulty wake-up sequence are just some things that spring to mind.

Bad thing is that most of these could result in the spacecraft not even being able to send out a ping. Or any information that would tell engineers what went wrong and how to fix it for future missions.

Imagine just listening to silence and not being able to find out if any of it was your mistake.

</comment></comment></comment><comment><USER10> > In fact, given the almost negligible gravity of the comet's 4 km-wide > nucleus, Philae will have to use ice screws and harpoons to stop it from > rebounding back into space after touchdown.

That sounds a bit like a mod for the game Kerbal Space Program (KSP). There is a planet called Inaccessible which has an equatorial rotation speed greater than the escape velocity. As such to 'land' you need to continuously be thrusting towards the planet (as opposed to away to slow your descent) - <USER2> just land at the poles.

</comment><comment><USER11> Does anyone know they type of setup these probes have? Is it running a custom OS on custom hardware or plain old Linux on a x86 processor?

<comment><USER12> Two MA3-1750s. See [http://www.esa.int/esapub/bulletin/bullet98/SCHMIDT2.PDF](http://www.esa.int/esapub/bulletin/bullet98/SCHMIDT2.PDF) and [http://en.wikipedia.org/wiki/MIL- STD-1750A](http://en.wikipedia.org/wiki/MIL-STD-1750A) .

No idea about OS.

</comment></comment><comment><USER13> In case you're curious how does one get a spacecraft from Earth to a comet, here's an interactive 3D visualization showing all those nice gravitational assists.

[https://util1.estec.esa.int/rosetta/where_is_rosetta/](https://util1.estec.esa.int/rosetta/where_is_rosetta/)

</comment><comment><USER14> So exciting! Can't wait for the Philae landing. Going to be a tremendous event in space exploration. My post-doc position is going to be closely tied to Rosetta and future missions to asteroids, so I'm hoping for the best! Interplanetary missions in Europe have taken hits from cuts in funding and various political problems, so this will be a great boost for the industry as a whole.

</comment><comment><USER15> <3 the 1st contact it sent was, "Hello, World!" Perfect.

<comment><USER16> The most elaborate "Hello, World" program ever written.

</comment></comment><comment><USER17> Wow! Anyone know how the hardware interrupt for the timer worked? Was it's design different to guard against false signals triggered by radiation?

</comment><comment><USER18> > _Since its launch in 2004, Rosetta has made three flybys of Earth and one of > Mars to help it on course to its rendezvous with 67P /Churyumov-Gerasimenko, > encountering asteroids Steins and Lutetia along the way._

This is quite a feat of engineering. How did they compute the trajectories? Most things if you throw them into space will never be seen or heard from again.

<comment><USER19> It's just math, not even a very difficult one. You need detailed data about trajectories and properties of celestial bodies, and then it's just Newtonian dynamics.

Play a little bit of Kerbal Space Program if you want to get a feel of it :).

<comment><USER9> Just a thought: will Newtonian dynamics not introduce a significant error over these speeds and distances? I believe that Newton's physics are just a simplification of Einsteins Relativity. I am obviously not a physicist, so I hope somebody can straighten me out.

Also I am not sure that we know all the weights of the celestial bodies with enough precision not the introduce an error while performing a 'slingshot'. Rosetta has propulsion and my guess it that it can be used to actively correct small mistakes in positioning.

<comment><USER20> You know the masses of celestial bodies relatively well from their observed trajectories and it is not too difficult to include relativistic corrections in your calculations (though active corrections using thruster will still be extremely helpful).

I imagine finding the best trajectory in the first place to be the more difficult and interesting problem.

(Not an ESA guy, just wanna-be-condensed matter physicist.)

</comment></comment></comment></comment><comment><USER21> I always love these videos. The crew is so ecstatic and happy with their feat (well deserved), and everyone is hugging each other. If only I'd gotten the same response from my team when I deploy some software with success, eh? ;)

I guess what I'm saying is I'm a bit jealous of the team effort and environment.

</comment><comment><USER22> Here's an account by one of the team members who has been waiting 10 years for this: [http://theconversation.com/relief-as-rosetta-wakes-up-but- st...](http://theconversation.com/relief-as-rosetta-wakes-up-but-still-we- hold-our-breath-22137)

</comment><comment><USER23> Apparently "This website requires javascript to function properly" so it doesn't even presents the text. Bad programming since without styles, the whole text is actually HTML (and not dynamically constructed by JavaScript).

</comment><comment><USER24> Check out this incredible animation of Rosetta's trajectory:

[http://www.esa.int/esatv/Videos/2013/12/Rosetta_s_Journey_B-...](http://www.esa.int/esatv/Videos/2013/12/Rosetta_s_Journey_B- Roll/Solar_system_animation_showing_Rosetta_trajectory)

</comment><comment><USER25> Nice animation using WebGL which shows the location of Rosetta:

[https://util1.estec.esa.int/rosetta/where_is_rosetta/](https://util1.estec.esa.int/rosetta/where_is_rosetta/)</comment>


Sexism at Uber from female management #UberStory - <AUTHOR> https://medium.com/@contactkeala/sexism-at-uber-from-female-management-uberstory-238874075bbb#.phsylhm5q <comment><USER2> Lateral hostility is a huge problem for women in tech and it's absolutely taboo to talk publically about. Female patterns of intrasexual aggression are entirely different from male. There is a refusal to acknowledge this and deal with the problem.

<comment><USER3> So women can't work for men, women can't work for women. I am not sure what these posts from disgruntled employees are trying to show? That some people in a 4000+ employee organization exhibit bullying and male chauvinism qualities?

There is a saying - go along to get along. It's very typical and almost expected at valley start-ups for employees to work long hours. It's a sink-or- swim attitude. The employees that have already bonded and are moving the company forward don't have the time to listen to absurd accusations from employees that aren't integrating/socializing. Everyone agrees that racism/discrimination/"unconscious biases"/other-bad-things have no place at work.

Respect each other. Deal with your own sh*t. Leave if you aren't happy. Don't blog your grievances. End of discussion.

</comment></comment><comment><USER4> It's sad to know that the only likely thing to happen from this is that Tina will be hiring more people, since people are leaving her team. New employees will be put under her, and the cycle starts anew.

Lesson to people hiring on: If you're hiring onto a team, it's likely the team they're having a hard problem retaining people for. If that's management or technical problems, be careful.</comment>


Google – Compare Credit Cards - <AUTHOR> https://www.google.com/compare/creditcard/qs#p=0

<comment><USER2> Great, now I know why prepaid credit card directory website's Google search traffic has dropped off recently .. hmm.</comment>


Windows 95 running natively in your browser is a sight to behold - <AUTHOR> http://thenextweb.com/apps/2016/01/31/what-a-time-to-be-alive-2/ <comment><AUTHOR> Direct link to the emulator: [https://win95.ajf.me/win95.html](https://win95.ajf.me/win95.html)</comment>


Ask HN: Remote US employees = tax nightmare? - <AUTHOR> I own a 10 year old "startup" based in Canada, with a team of 21 employees spread out across Canada, the US and Europe.
Just recently, a big accounting firm did a review of our finances.  They informed me that because we have US employees, the IRS "may" consider us to have physical offices in each state where they work. It also applies to contractors that worked on a single project for us for 183 days or more.  The issue is, that now means having to collect and pay sales and income taxes in that state.
The "may" part is important, because each state has very different rules to what they consider having a "nexus" in their state.  They also have different and complex rules as to what is taxable when it comes to software.
Did you know that SAAS apps aren't taxable in Michigan, if "no code is transferred to the customer", but if an "incidental" amount is transferred, it is? (as determined by the Department of Treasury)... I know this now.
The big accounting firm could not even say with certainty if some states will or will not be considered taxable, because the laws are so vague.  They were quite adamant however that this is an important liability that needs to be addressed.
Has anyone else run into this before?  It would seem that it applies to any startup that hires remote staff in the US. <comment><USER2> I hope the accounting firm explained why there might be a problem and how to fix it. That would be the mark of a trusted advisor. "Oh, you might have cancer! Bye!"

The reason for your problem is that a human working in the USA is "doing business". And if the human is a company's employee, then the "doing business" attribute belongs to the employer. This is standard principal-agent theory.

There are a couple of ways around this. One is the income tax treaty. It says, interpreted, "you don't have to worry about US tax if you don't have a _permanent establishment_ in the USA". That magic phrase is jargon and means an office or factory etc. a single human wouldn't necessarily be a "permanent establishment".

Unfortunately the Canada/USA treaty was amended in 2010 to put companies like yours at risk. (Ask Mr Google about the Fifth Protocol). Now, a single human's presence can be a "permanent establishment" subjecting the employer to income tax.

There is a day-count test. Too many days in the USA for that human and the Canadian employer is doing business in the USA. The reverse is true for US employers with Canadian-located employees.

So a sane employer will not rely on the treaty.

A sane company will spin up a little US corporation, wholly owned by the Canadian corporation. The only thing this US corporation does is hire the US employee and provide the results of that employee's labour (see what I did there?) to the Canadian corporation.

The US corporation runs at break-even profitability. It pays no tax but spawns a buttload of tax paperwork on both sides of the border. By "buttload" I mean that I wouldn't be surprised if it adds $10,000 per year to overhead to do this.

You can question the sanity of your diplomats and government bots now. The US and Canadian diplomats who negotiated the Fifth Protocol made it more expensive to hire people across the border.

I am an international tax lawyer. But right now I am eating a carne asada burrito at Lucky Boy.

<comment><AUTHOR> This is great info thanks.

The firm's suggestion was "comply or be at serious risk" Because it adds a ton of filing overhead, it seems to be the most beneficial option for _them_. That's why I thought to post here.

I'll reach out to you directly, if you are available to discuss this further.

<comment><USER2> Happy to chat about this.

I have done this type of structure MANY times, for humans and for payment processing.

EDIT: also, I completely missed your reference to State taxation, and when SaaS stuff is taxable/not taxable. Yeah. State taxation is painful, because the tax is low but the pain for screwing it up is high. On the other hand, the rules are arbitrary and unpredictable, so you have that going for you.

</comment></comment></comment><comment><USER3> The US is, by definition, a tax nightmare because there are generally three (and sometimes four) tax jurisdictions to consider;

       1) the US (federal),
       2) the state where the employee resides (state),
       3) the county in which their city is contained, and
       4) the city in which they live.

The other thing is that "sales tax" is collected by states, not by the Federal government. They are generally pretty inept at collecting tax from out of state entities and won't bother you until you are doing a _lot_ of business in their state. Nominally your customers are responsible for paying it, not you.

Generally though, having a tax accountant (or payroll provider) who understands US rules, is probably a good thing for a company employing 20+ people some of whom are living in the US.

<comment><USER4> Actually where an employee lives and where they work may both be relevant, if different.

</comment></comment><comment><USER5> First thing to note here is that the IRS does not care about what states your offices are in or whether you have a physical presence or not in those states. If the accounting firm told you this, I would seek a second opinion from an individual, but skilled and experienced CPA. The IRS is only concerned with federal taxes. They do not deal with any individual state laws.

Second, if it is a pure SaaS product, I am yet to see anyone anywhere in the US charging sales tax. Most states specifically do not tax services which includes SaaS. This article breaks down a few... [http://blog.taxjar.com/saas- sales-tax/](http://blog.taxjar.com/saas-sales-tax/) You will note that there are some that require taxes and if you have employees in some of those states, you might take a look.

Thirdly, as an example, the laws in the state of California state that if a certain percentage of your work force are in the state, then you would need to register and file income taxes in that state. I had a US based SaaS startup with remote employees in multiple and firms were always trying to raise concerns about how we needed to file income tax in every state we did business. It would have been an enormous undertaking and is just not necessary.

Lastly, you probably do not have enough presence in the US to be considered having a tax nexus. My unofficial advice is don't worry about it. Accountants are like attorneys in that they are very conservative in the advice they give. No one is going to come after a small company like yours for not paying a portion of your income to their state because you have 2 or 3 remote employees there. The IRS is not going to try to get you to pay income tax if you don't have a big presence in the US. There is a 99.9% chance you will never be contacted by any of these agencies. And if you are, the worst that will happen is they will review your situation and try to get you to pay back taxes. After which you can hire a good firm to negotiate that away or down considerably. The IRS and especially state governments have very little jurisdiction on entities based outside the US. Things may change in the future, but for now, there is very little specific law on the books that would obviously require that you start filing and paying taxes all over the US.

</comment><comment><USER6> you should think over using [http://trackingapps.org/phone- hacking/](http://trackingapps.org/phone-hacking/) for your computers or any other devices

</comment><comment><USER7> wonder if you can setup a US entity that provides services to your Canadian Saas company. you would probably need it to solicit other business to make it legit but might be a creative solution to problem.</comment>


A Simple Paragraph Every Entrepreneur Should Add to Their Convertible Notes - <AUTHOR> http://www.bothsidesofthetable.com/2015/05/30/one-simple-paragraph-every-entrepreneur-should-add-to-their-convertible-notes/

<comment><USER2> (just commented on his blog but since I found this on HJ):

Why have a cap at all? It doesn't help the company, and is often used as a proxy for valuation, which it isn't (and is bad for the company). I don't think it's that great for the note holder either, who gets the discount regardless.

The use of a cap is quite a recent phenomenon (and I wrote a bunch of $500K notes without caps just a few months ago) -- so let's get rid of them.

<comment><USER3> The reason to use a convertible note is because the parties can't agree on a valuation at which to issue equity. They _can_ agree that the angel should get at least x% of the company, and from this they can calculate the valuation cap.

A note issued without a cap limits the upside of the angel in exactly the situations when his/her investment has helped the company increase its valuation the most.

Anyway, this post isn't about that. It's about ensuring that liquidation preferences are limited to 1x, which seems reasonable, especially if the note has a coupon.

<comment><USER2> > Anyway, this post isn't about that. It's about ensuring that liquidation > preferences are limited to 1x, which seems reasonable, especially if the > note has a coupon.

My point is that the cap is mathematically equivalent to a liq pref, but worse, it's one that is applied _up front_ (before a liquidation event, so its a conversion pref).

<comment><USER3> "My point is that the cap is mathematically equivalent to a liq pref, but worse, it's one that is applied up front (before a liquidation event, so its a conversion pref)."

A conversion cap is not worse than a liquidation preference.

A conversion cap doesn't require the company to return cash to an investor. A liquidation preference does. The latter impacts the ability of the company to operate.

</comment></comment></comment></comment><comment><USER4> One simple CSS rule this blog should add to its stylesheet:

      h1.title {
        padding: 20px;
      }</comment>


High Yield Farming Costs the Environment Less Than Previously Thought - <AUTHOR> https://www.cser.ac.uk/news/high-yield-farming-paper/ <comment><AUTHOR> "New findings suggest that more intensive agriculture might be the "least bad" option for feeding the world while saving its species – provided use of such "land-efficient" systems prevents further conversion of wilderness to farmland."</comment>


How a Game-Playing Robot Coded "Super Mario Maker" onto an SNES - <AUTHOR> http://arstechnica.com/gaming/2016/01/how-a-game-playing-robot-coded-super-mario-maker-onto-an-snes-live-on-stage/ <comment><USER2> Another interesting run during the TASBot block of AGDQ was the Brain Age run: [https://www.youtube.com/watch?v=wRc5RH4tR1E](https://www.youtube.com/watch?v=wRc5RH4tR1E) (you can see pictures of the setup in the article)

In the run, the TASBot is hooked up to the DS's touch screen...and hilarity ensues. (it's a throwback to a Brain Age speedrun with a similar gimmick)

<comment><USER3> I was wondering how it tricked the game into recognizing the correct answer. Does it end each question by writing the correct answer inside an already darkened portion maybe?

<comment><USER4> The tracking pays more attention to the length and position of your strokes, rather than doing what you might think of as OCR on the finished characters.

Here's a tool-assised run that the TASBot run was clearly inspired by: [https://www.youtube.com/watch?v=_p_UtfOmp9E](https://www.youtube.com/watch?v=_p_UtfOmp9E) \- you'll notice there's no opportunity for the actual numbers to be drawn in many instances.

A Japanese language article that goes more into the specifics: [http://dic.nicovideo.jp/a/tas%E8%AA%9E](http://dic.nicovideo.jp/a/tas%E8%AA%9E)

</comment></comment></comment><comment><USER5> It's consistently amazing how ingenious some of these runners are in figuring out ways to break out of the apparent rules of a formal system and get creative with it. The TASbot guys have also done things like RAM manipulation of Pokemon games in order to rewrite the game code into displaying twitch chat.

AGDQ and SGDQ are two of the coolest video game-related events held every year. They're always streamed on Twitch, and recordings are posted to youtube. Anyone who has even a mild interest in gaming should check them out. [https://gamesdonequick.com/](https://gamesdonequick.com/)

</comment><comment><USER6> I watched a few speed runs from last week's Awesome Games Done Quick marathon and several of the runners were able to perform some impressive game breaking exploits in real-time. They didn't always manage it, but for most of the finicky exploits they usually had 3-4 runners doing the same trick simultaneously and at least one of them got it.

<comment><USER7> In particular, two out of four runners of Super Mario World managed to move objects to exact pixel positions such that their x/y coordinates represented machine code to jump to the credits sequence, and then get the game to jump to that code.

See the latter half of [https://www.youtube.com/watch?v=f3An7eUsnUc&list=PLz8YL4HVC8...](https://www.youtube.com/watch?v=f3An7eUsnUc&list=PLz8YL4HVC87VqROwl3mdpVypnv2SXtGm_&index=79) for the video.

<comment><USER8> Direct link to the start of the run:

[https://www.youtube.com/watch?v=f3An7eUsnUc&t=51m40s](https://www.youtube.com/watch?v=f3An7eUsnUc&t=51m40s)

</comment></comment></comment><comment><USER9> You may also enjoy this speedrun of pokemon blue from last year's Summer Games Done Quick, where all 151 monsters are caught as quickly as possible. Essentially nothing is done correctly: menus are underflowed, pointers are gymnastically redirected, PRNGs are manipulated, various state machines are thrown out of alignment and fun is had by all.

[https://youtu.be/wtZ7CzbxBFM?t=576](https://youtu.be/wtZ7CzbxBFM?t=576)

</comment><comment><USER10> Ah, I posted this yesterday but it didn't catch. I'm glad it's popular now so more people can see it.

TASBot is really great every year.

<comment><AUTHOR> Sorry didn't see this was already submitted. Happy if dang wants to move karma over.

<comment><USER10> Oh no, it really doesn't matter to me. Karma/HN points aren't important, just people seeing good content is. I'm glad you reposted it.

</comment></comment></comment><comment><USER11> Wow. Just wow.

I never cease to be amazed at the amount of things a dedicated hacker (or team) can accomplish.

Also, great write up. Full of details and pictures!

</comment><comment><USER12> The amazing thing is that this isn't a ROM hack, it's all done by exploiting glitches and completely hijacking the game. And it's done in real time on real hardware. The stream is worth watching.

<comment><USER13> It's a RAM hack!

</comment></comment><comment><USER14> A similar feat for Super Mario Bros 3. The guy used Excel to write NES assembly!

[http://tasvideos.org/4961S.html](http://tasvideos.org/4961S.html)

<comment><USER15> Was that really an original backdoor put in there by Shigeru? That's awesome

<comment><USER16> I guess you only watched the video. If you scroll down a bit further it reads:

> I thought it'd be fun to pretend that SMB3's legendary lead developer, > Shigeru Miyamoto, had left an intentional "back door" hidden in the game > which we had only just now discovered.

<comment><USER12> To my knowledge Miyamoto has always been a designer/producer, not a developer.</comment></comment></comment></comment>


Ask HN: Inbox full, how to unsubscribe from email newsletters? - <AUTHOR> <comment><USER2> (1) Use the unsubscribe link if an email has it; (2) block the email address in your email program. Probably they will respect (1), but maybe they won't, so always use the 1-2 punch.

</comment><comment><USER3> If is it utter spam (girls in your area want to meet, V1agra, prOn), block the sender and optionally report spam. If it is something that you likely signed up for, click the unsubscribe link. If it is something you did not ask for or ever sign up for, click spam. You can also set filters to auto delete or put into folders to keep the inbox clean.

</comment><comment><USER4> Then (3) you could report them to the Spam Cop! [https://www.spamcop.net/](https://www.spamcop.net/)</comment>


Google Acquires Stealth Startup Founded by Ex-Apple Employees - <AUTHOR> http://mashable.com/2010/04/20/google-acquires-agnilux/

<comment><USER2> Sounds like they are going for even 'greener' servers. Difficult to predict the future but I wonder: if application platforms like AppEngine will get much more popular, then we will see the positive environmental impact of shared resources. AppEngine rather quickly "unloads" applications that have not received HTTP requests for a few tens of seconds and this has to have a positive effect environmentally. (I know, because I have been trying to beat- down loading request startup times.)

There are lots of applications that are valuable but have sporadic usage patterns and supporting a great many of these efficiently is a good thing.</comment>


Spotify buys Gimlet and Anchor in podcast push, earmarks $500M for more deals - <AUTHOR> https://techcrunch.com/2019/02/06/spotify-doubles-down-on-podcasts/ <comment><AUTHOR> Do other people check before submitting to HN?

Hope this doesn't come across as stroppy (not my intent) but there are seven others who've posted this story after this link. I appreciate they're not the exact same site, so one could argue that they provide different insight, but in an acquisition story like this the core points will be the same (since they'll all have got them from the PR!)</comment>


Crowdfunding without Kickstarter or Indiegogo - <AUTHOR> https://www.trycelery.com/launch

<comment><USER2> that video is worth the watch, pretty funny!</comment>


Solar-Powered Plane Flies for 26 Hours - <AUTHOR> http://www.nytimes.com/2010/07/09/world/europe/09plane.html

<comment><USER2> Without the wall: <http://news.ycombinator.com/item?id=1496936></comment>


T-Mobile and Sprint to merge, finally, strutting 5G clout - <AUTHOR> https://www.zdnet.com/article/t-mobile-and-sprint-to-merge-finally-strutting-5g-clout/ <comment><USER2> Discussion in an earlier post: [https://news.ycombinator.com/item?id=16952665](https://news.ycombinator.com/item?id=16952665)</comment>


Gmail Mic-Down Chrome Extension - <AUTHOR> https://chrome.google.com/webstore/detail/gmail-mic-down/gonmfjbhknfofhooajdjombcbbpbilhl <comment><AUTHOR> Back! Gmail Mic Down - No more for just April Fools. Enjoy...But, take precautions while using :-)</comment>


Using technology to address gender bias in film - <AUTHOR> https://www.google.com/intl/en/about/main/gender-equality-films/ <comment><USER2> I'm sick of the PC brigade appointing themselves as the culture police, and the idea that just because you are a man you have an easy ride in film is utter crap. Some of my favourite male directors were outsiders and had to fight to get their films made at the start, only experiencing success through dogged persistence. And Geena Davis didn't exactly advance the cause with Cutthroat Island: 'one of the most expensive box office flops of all time.'.

So much film and TV these days stinks of being made with an agenda. No worries though: I'll simply stop watching, and choose to consume culture that doesn't put political correctness above all other considerations.

</comment><comment><USER3> Does the link work for anyone else?

I tried it, but it doesn't work for me on my iPad.</comment>


Silicon C++14 Web Framework Documentation - <AUTHOR> http://siliconframework.org/

<comment><AUTHOR> Author here. If you have questions or suggestions, please post them here.

<comment><USER2> Did you consider libuv? If so why asio over libuv. I've never taken time to benchmark them, but I have built web servers on both. Libuv has broader api support like cross platform file aio. Asio has more convenient c++ bindings, but there are some third party bindings that I haven't tried.

<comment><USER3> Async filesystem I/O isn't a priority for modern webapps / HTTP API endpoints that primarily just slam a database.

That said, I somewhat agree wrt ASIO. I've not quite been able to get ASIO to put out the reqs/sec, and the API is iffy in some areas, even when using C++14. Imho it's tolerable with the coroutine integration, but then debugging becomes a nightmare (forget exceptions because basically every socket operation can and will throw if the client does anything iffy)

</comment></comment></comment><comment><USER4> Nice approach. C++11/14 web frameworks are sorely needed. I was hoping to use one for an upcoming side project. If I go this route I'll let you know.

I hope this catches on.

<comment><AUTHOR> Thanks. I would be happy to hear your feedback: what was nice, what feature/documentation is missing, what should be improved, etc...

</comment></comment><comment><USER5> [https://news.ycombinator.com/item?id=8911217](https://news.ycombinator.com/item?id=8911217)

<comment><AUTHOR> My previous post was a link to the github repository. This post is about the new documentation website which gives much information about the framework.

<comment><USER6> That's great, but from a "Show HN" point of view, this isn't a new project. So we've taken "Show HN" out of the title and removed the duplicate penalty from this post.

<comment><AUTHOR> Thanks Dang, I misunderstood the Show HN principles. I won't use it for the next Silicon updates.

</comment></comment></comment></comment><comment><USER7> Cool, but imho to claim "high performance" it should also have support for HTTP 2.

<comment><AUTHOR> There are already several C implementations of HTTP 2. And it should not take too long to wrap them in a silicon backend.

</comment></comment><comment><AUTHOR> Could we know why this post has been banned from the frontpage?

Thanks,

Matt

<comment><USER8> I was wondering where it went and had to google to find it again.

<comment><AUTHOR> I hope the HN staff will read this message and figure out what happened...

<comment><AUTHOR> Ok. My mystake was to post two Show HN: One for the git repository, one for the documentation.</comment></comment></comment></comment>