Unreal JavaScript - <AUTHOR> http://blog.bitops.com/blog/2013/05/01/unreal-javascript/

<comment><USER2> Slight nitpick, but this is _Unreal Engine 3_ , not Unreal, the 1998 PC FPS[1].

That game blew me away when I was younger—the graphics were truly stellar, better than Quake 2 and Half-Life, games released at the same time—and for a moment I thought someone had managed to port it to JavaScript.

I would pay good money to play it in my browser.

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

<comment><USER3> can you explain to me why would it be a better news ?

<comment><USER4> I was impressed that Unreal was running in the browser via Javascript. Unreal Engine 3 is a much more resource intensive engine so that being able to run in the browser is even more impressive.

<comment><USER3> oh ok I thought you were saying "damn it's not unreal 1, it's unreal 3".

</comment></comment></comment></comment><comment><USER5> I actually exclaimed "UNREAL!" when I launched this in Firefox Aurora. I was expecting Engine 1, but I see now it's Unreal Engine 3. WOW.

If that's not proof that asm.js is a cool concept, then I don't know what is.

I don't understand how they're making this so freaking fast; they've done some special work to get it running with WebGL.

> We've had success in running it in other browsers, but it's somewhat hit and > miss – it heavily depends on the quality of the WebGL implementation, memory > management, and JavaScript engine

Anyway, Firefox does a great job with it. I'm impressed.

</comment><comment><USER6> Just think of how far we got in recent years: C++ code compiled to asm.js, JITted and running in browser running on OS running in virtual machine running on OS running on a microcoded CPU -- and GLSL shaders compiled to ARB, running on microcoded GPU.

Next thing you know, antivirus software for web browsers (sic) will become the norm.

<comment><USER7> Why would web browsers need anti-virus software? It's not really a problem, since the web's APIs enforce a lot of sandboxing and hence security.

<comment><USER8> WebGL is pretty scary since it's only a thin wrapper around OpenGL. OpenGL drivers tend to run in the kernel, have direct access to the complete memory of the box and not be hardened from a security perspective. It's only a matter of time before someone figures out a way to own a box via WebGL by simply visiting a website. This is why Apple leaves WebGL disabled by default in Safari, and I think Microsoft is hesitant to add support in IE for the same reason.

<comment><USER9> I agree. There was a recent time - maybe a few months ago - where Linux with nvidia hardware and their binary driver blob would instantly panic the system when I visited a page in firefox that used webGL shaders.

</comment></comment></comment></comment><comment><USER10> Ok so first, I'll just say, this is cool. I'm pretty excited about asm.js in general.

I'm sort of skeptical when they say they ported "Unreal" though. What I see there is an Unreal map viewer. I don't see any physics or AI or sound going on. The thing is about doing a map viewer, pretty much all the work is going to the graphics card, so it really doesn't matter what language you use. I think I'll be more excited when I see a demo that actually plays like a full game.

<comment><USER11> If you look at the video you'll see they have full gameplay with bots. Presumably they still have some bugs to iron out or are working on how to present the whole thing to users as a playable game on the web.

<comment><USER12> I don't think there are any bugs, we showed that map with bots in a booth at GDC 2013 where people could play it. Worked fine.

</comment></comment></comment><comment><USER13> How are threads handled? The standard Unreal engine isn't single-threaded.

<comment><USER14> Emscripten uses web workers to compile multithreaded code, provided they don't use shared states (which isn't doable in JS).

<comment> iso8859-1 Do you know where I can find documentation for that?

</comment></comment></comment><comment><USER15> I could start it in nightly on linux but with low framerate. On windows I see this in the console (and it stops at "preparing javascript"):

        [15:16:42.533] TypeError: asm.js type error: Internal codegen failure (probably out of memory) @ http://www.unrealengine.com/html5/UDKGame-Browser-Shipping.js:9649
        [15:16:50.798] out of memory

<comment><USER7> How much RAM does your machine have? How much was used by other tabs/applications?

<comment><USER15> Very late reply, but I tried win7 x64 and x86 with 4GB. Taskmgr shows the ram usage jump from 900MB to 2.5GB after a fresh reboot.

I tried downloading the entire page (html,css,js) and increasing TOTAL_MEMORY (et al) in the js, but with the same result.

Nightly-23 from 07 May (firefox-20.1, same result). It did work on ubuntu- amd64 though.

</comment></comment></comment><comment><USER11> If you're per chance running on Linux/Intel/IvyBridge, it can be even faster than on Windows:

Details:

Windows 7 (latest Intel GPU drivers), Firefox 23 nightly

Ubuntu 13.04 with custom Mesa git (Mesa 9.1 also works, but a bit slower), Firefox 23 nightly

I had to set layers.acceleration.force-enabled variable to true in Firefox (in about:config) because it is blacklisted for some reason on Linux/Intel (probably some previously resolved bug).

The browser Window was maximized in 1920x1080, and game view was not full- screened.

Cpu is i5-3320M on Thinkpad X230

Windows: 40.5 FPS Linux: 43.6 FPS

</comment><comment><USER16> _with asm.js_

Did you mean _with_ emscripten _to_ asm.js

<comment><USER17> It should really be named as 'web bytecode' or 'web assembly'.

<comment><USER18> Should they? Both terms appear to not make much sense even in context, and also appear from a quick google search to have no provenance at all.

<comment><USER19> To be fair, the _idea_ of distributing executable bytecode to be run by some kind of VM in browsers has been around for almost as long as the web has (predating even Java), even if there never was a standard name for it.

<comment><USER14> Sure, but that's just not what's being used here.

</comment></comment></comment></comment></comment><comment><USER20> Where's the solution that enterprises can use to build their remaining desktop apps into the browser? People still write native Windows apps, for example, to get performance in large grids with filtering.

A solution is missing that fits between C++ and Javascript.

<comment><USER19> You could argue that Citrix and Terminal Services do a reasonable job of delivering existing desktop apps to remote users (even in a browser).

Now, of course, there are a lot of advantages to having things really working in a browser - less sensitivity to latency sometimes being a critical one. But there are a lot of enterprises using remote access to thick client applications, even some specialised SaaS vendors.

<comment><USER20> Ok, that's fine for legacy, but what should enterprise do about new apps? Continue to build desktop apps and deliver with Citrix?

<comment><USER19> Apart from some specialised scenarios (e.g. direct interfacing with directly attached devices) then web applications are clearly the way to go for newly written applications. However, I would be very reluctant to describe anything non-Web as "legacy" - enterprises will happily (and rightly) still buy desktop applications if they are the best tool for the job - and these need Citrix or Terminal Services.

</comment></comment></comment></comment><comment><USER21> It's impressive but runs at 19 FPS on my new desktop with a GTX 660 card. It's still slower than I've seen that demo running on a phone. People are doing amazing things with HTML5 and JavaScript but the performance is always behind a native application, even a Java application.

<comment><USER12> FPS really depends on which browser you are on.

Since you mentioned Java, note that in some cases JavaScript with asm.js can be faster, for example <http://j15r.com/blog/2013/04/25/Box2d_Revisited>

<comment> iso8859-1 If someone gave JBox2D the same amount of attention box2d.js got to win this benchmark, I suggest that the results would look different. Correct me if I'm wrong, but it seems like box2d.js was made and optimized just prior to this benchmark, while JBox2D is an old project that was never meant to win any benchmarks.

</comment></comment></comment><comment><USER22> Sounds uber cool, but don't work in Chrome. The tab just crashed...

Will it be much jobb to make this work in all browsers?

<comment><USER23> Well yes, as this is compiled for asm.js-capable browsers (i.e. Firefox for now), it will be so slow on anything else that it will just crash.

<comment><USER24> You can run it in non-asm.js browsers; the released version of Firefox can run it, for example. It doesn't crash, but it is slower. According to the FAQ on the game site [0], Chrome has a bug which is expected to be fixed soon.

[0] <http://www.unrealengine.com/html5_faq/>

</comment></comment></comment><comment><USER25> What happened to the original title "Unreal JavaScript"? The biggest focus of the article is emscripten, not asm.js.

</comment><comment><USER26> I downloaded latest Nightly for Windows but it still doesn't open. Tells me to download Nightly which I did. :(

<comment><USER27> works great in aurora for me (fps caps at 60...whoa)

</comment></comment><comment><USER28> Very cool. Running very smoothly for me.</comment>


Interpreting Go - <AUTHOR> http://notes.eatonphil.com/interpreting-go.html <comment><USER2> Interpreting Go is a good idea. In fact, a JIT for Go would be a very interesting idea as well. In a language that makes heavy use of virtual dispatch like Go does (via interfaces), you can often get a lot of mileage out of speculative devirtualization. With a JIT you can easily observe the concrete types that flow through each call site, allowing for optimizations you can't easily do with AOT compilation (without PGO, anyway). You can even do aggressive optimizations like observing that only one type that's currently loaded in the program conforms to an interface and devirtualize accordingly, knowing that you can undo that optimization if more code gets loaded later on that invalidates this assumption.

<comment><USER3> Dropping this here: [https://github.com/gijit/gi](https://github.com/gijit/gi)

<comment><AUTHOR> Woah! That is an awesome project. Surprised this is the first time hearing of it. Thanks.

<comment><USER3> There is also the [https://github.com/cosmos72/gomacro](https://github.com/cosmos72/gomacro) interpreter if you were unaware.

<comment><AUTHOR> I have been watching that one closely. :)

</comment></comment></comment></comment></comment><comment><USER4> I would like to call interpreted Go code from compiled Go code, say, like: run("dynamic.goi"). Would I be able to call back into the compiled code from the interpreted code? Can the two parts share variable state?

<comment><AUTHOR> Exposing an "FFI" is definitely a step along the way in any project like this, though I've never personally found it particularly straightforward (or fun). It does open up the floodgates for functionality though.

</comment></comment><comment><USER5> Could you use this to make a Go REPL?

<comment><AUTHOR> Like the sibling mentions, yaegi seems to do that today (though I haven't used it).

The method I wrote about doesn't seem particularly any more conducive to making a REPL than progressively building a valid Go program with each line and compiling/running that (since Go's compiler is very fast).

However, there may be some benefits to prototyping in an environment like this where you can ignore types for a bit.</comment></comment>


Comcast (and Charter) seeks advice on possible Time Warner Cable bid: Sources - <AUTHOR> http://www.cnbc.com/id/101220981

<comment><USER2> monopoly much?</comment>


The Global Economy Is Rebounding... But There's One Big Problem - <AUTHOR> https://www.bloomberg.com/news/articles/2017-06-13/synchronous-global-recovery-masks-a-deepening-asset-imbalance <comment><AUTHOR> The global market recovery is masking a deep imbalance, which is why nearly every major asset class is near its all-time high.

Bitcoin or another cryptocurrency could be the world's answer to a "safe haven" asset. The tipping point will probably be when the first country embraces Bitcoin for their own monetary system.</comment>


Show HN: Dotmesh – A git-like CLI for application states - <AUTHOR> https://dotmesh.com/blog/introducing-dotmesh/ <comment><USER3> It might be better to just call it version control for application states, rather than saying a "git-like CLI" for application states. When I hear "git- like CLI" I interpret that as "hard to use" and "confusing"

<comment><USER4> Interesting feedback, thanks. I agree that the git CLI is confusing, unfortunately it's the best thing we've got that a huge number of developers are familiar with for exploring a state tree with branches and commits.

If you're interested, we've described some important ways that dotmesh is _different_ to git here: [https://docs.dotmesh.com/faq/#how-does-dotmesh- differ-from-g...](https://docs.dotmesh.com/faq/#how-does-dotmesh-differ-from- git)

</comment></comment><comment><USER5> This is really exciting to see and something I feel has been missing for some time. I think if this is grown correctly it would be a great acquisition for Docker to make.

It always struck me that I should be able to "docker push" my data and share that with my team just as I do my apps. In fact, I had built a quick hack to do something similar called Dockershare ([https://github.com/ahnick/dockershare](https://github.com/ahnick/dockershare)). I realized through that effort that a custom docker volume plugin would be needed and that it was a much larger problem than what I had time to tackle.

I imagine that dotmesh must have grown out of what was being done with dvol? ([https://github.com/clusterhq/dvol](https://github.com/clusterhq/dvol)) In any case, kudos for getting this built. I'm excited to try it out.

<comment><USER6> Thanks for the feedback - "docker push <mydata>" is nice :-)

For the same reasons as you mention in your post, we've been hard at work with Kubernetes support - Persistent Volumes but with extra features!

</comment></comment><comment><USER7> If this is like git, does that mean that you can _merge_ two different branches of data?

For instance, if I have two runs of a test, that produce different outputs, can I merge the data back together at the end?

If not, then this is only capturing one aspect of git -- the archiving of snapshots of the state of the data.

<comment><USER4> How would you want merge to work?

<comment><USER8> Show the different rows or documents one besides the other and let the user choose which to put in the merged table. It would need to change foreign keys to match the id in case it needs to change. But dothub seems to work at the filesystem level so this seems impossible for it.

</comment></comment></comment><comment><USER9> It seems like a good idea in theory but i'm not so sure it'd work in many environments in practice. If i understand it correctly, you're storing all the state such as files but there is state that is tied to that specific machine (ie. machine fqdn, machine-specifc filepaths) and you wouldn't want to apply that state on another machine. I guess you could do some data wrangling and .stateignore that stuff but it would require quite the effort on a large application that spans many components and many teams.

On a very small app, i can see the utility of dotmesh.

<comment><USER4> Hey! Yes, it's hard to capture the state of VMs.

This is where the Docker and Kubernetes integration comes into play -- if your app is captured entirely in Kubernetes manifests, the only thing left to capture (apart from the declarative Kube manifests, which should already be in version control) is the state that exists in Kubernetes Persistent Volumes. Dotmesh provides a Kubernetes Persistent Volume driver which provides Dotmesh StorageClass PVs and a Dynamic Provisioner, meaning that you really can capture the entire state of your app with Dotmesh... as long as you're deploying it with Kubernetes.

Code and infrastructure are already under control thanks to version control and terraform, ansible etc -- this completes the picture.

Give it a go: [https://dotmesh.com/try-dotmesh/](https://dotmesh.com/try- dotmesh/) and please leave more feedback here or in our Slack! (linked to in the footer at the bottom of dotmesh.com)

</comment></comment><comment><USER10> I store all my application state directly in git: [https://github.com/ioquatix/relaxo](https://github.com/ioquatix/relaxo)

Makes rolling back mistakes easy.

<comment><USER4> Nice! (Non snarky question) does that scale?

<comment><USER10> That's a good question. Relaxo is a database designed around immutable, transactional structures where _convenience_ is more important than _scale_. Think of things like comments on a blog, items for sale in a small shop - [https://github.com/ioquatix/financier](https://github.com/ioquatix/financier) is an example of an actual project which is in production.

Some things which I personally find useful about Relaxo:

\- Easy to move data around, merge and fork data (it's just a git repository).

\- Easy to roll back or inspect changes. If you make a mistake, just reset HEAD.

\- Easy to backup (guaranteed consistency on disk).

\- Better grouping of changes by transactions, which have a description, date, and information about who committed it (can even tie to currently logged in user for a web app, for example).

In theory Relaxo could scale up. Using libgit2 as the backend, it wouldn't be hard to use redis as an object store for git. The git data structure on disk is really just a key-value store with some specific data structures.

The main issue with Relaxo is query performance and indexes. Simple queries like fetching a document is fast. Complex queries including subsets, aggregations, and joins require supporting indexes to work efficiently, and this is something that is hard to build into a pure document storage system. The naive solution is to load all the documents and filter them, which is actually fine until you get a large number of documents (e.g. 1,000+).

However, git does provide one useful guarantee - it will sort directory entries. With this in mind, it's possible to make radix-sorted indexes (e.g. /invoices/by_date/2017/07/). You can use this to do basic indexes, but it's still not as good as a traditional SQL database in this regard.

<comment><USER11> I have seen a growth of such "vcs-like" databases, but I think the preponderance remains SQL stores like MySQL/MSSQL/Postegres or NoSQL like Mongo/Cassandra/Redis/Couch/etc. For those - or anything that has its own model of storage or processing and, in the end, is backed by filesystem-type storage, dotmesh provides a really nice solution.

I haven't used Relaxo itself, but personally, I like the fact that independent groups are thinking of version control semantics for data. Tells me it is heading in a positive direction.

<comment><USER10> Relaxo actually grew out of Couch DB.

Relaxo used to be a couch query server ([https://github.com/ioquatix/relaxo- query-server](https://github.com/ioquatix/relaxo-query-server) \- not so useful any more) and ruby front end ([https://github.com/ioquatix/relaxo- model](https://github.com/ioquatix/relaxo-model) \- still useful). But I got frustrated with the direction of couchdb 2.x so I rewrote it to do everything in-process and use git as the document store. It organically grew from that.

Unless you are operating at scale, doing things in-process is vastly more convenient. Sending ruby code to the query server to perform map-reduce was a cumbersome process at best. It's easier just to write model code and have it work as expected.

Systems like Postgres a great when you have a single database and multiple front-end consumers though. You'd need to put a front-end on top of relaxo in order to gain the same benefits, but it would be pretty trivial to do so - just that its never been something that I've needed to implement. The API you'd actually want is one that interfaces directly with your Ruby model instances, rather than database tables and rows. I think there is room for improvement here - probably implementing a websocket API that exposes the raw git object model and then allowing consumers to work on top of that.

<comment><USER11> Pretty cool. Is there a write up on architecture and usage models? I'd like to see it.

I was a happy couch 1.x user, but moved away with 2.0. Nothing specific about it, just needs and timing.

<comment><USER10> Thanks for being so interested.

The architecture is super simple, I'd suggest that the first place to look is the source code.

There are really only two ways of accessing the underlying data store - <USER2> read-only dataset and a read/write changeset which can be committed.

It's purely a key-value storage at the core - a key being a path and a value being whatever you want.

On top of that you can build more complex things, e.g. [https://github.com/ioquatix/relaxo-model](https://github.com/ioquatix/relaxo- model) which provides relational object storage and basic indexes (e.g. has one, has many, etc)

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> This looks really cool! A few thoughts:

1\. The first thing I thought when I saw this is "How is this secure?". You're wanting to store the most sensitive information a business has - credentials + production DB. I took a look around the site + Google and couldn't find anything about security. Client side encryption of data seems like it would be good to make people comfortable with storing their data at dothub. I'm not sure if there is any use case for dothub having unencrypted data (at least not yet)?

2\. "Application states" is quite a vague term, when I saw that I thought it was referring to capturing the state of a running process. "A git-like CLI for application states" is not a very compelling pitch. As others have noted, for all but the most masochistic of users, "a git-like CLI" is a negative point.

The benefit you're offering is "Snapshot production data to be able to replay in development" and "Snapshot failed CI builds to debug later". I'd recommend putting those up-front and in bold. A more compelling tagline (to me) is "Dotmesh - version control and snapshots for your production data".

<comment><USER4> Thank you for the great feedback!

1\. We mention encryption in the docs FAQ [https://docs.dotmesh.com/faq/#what- do-you-encrypt](https://docs.dotmesh.com/faq/#what-do-you-encrypt) \-- where did you look for it? Maybe we can make it easier to find. Noted about this being a priority.

2\. Thanks for proposing the updated tagline! I'll run it past the team ;-) we'll certainly develop more messaging and use cases around production data as we develop the project beyond 0.1 :-)

<comment><USER12> > where did you look for it? Maybe we can make it easier to find. Noted about > this being a priority.

I searched on [https://dotmesh.com](https://dotmesh.com) for "security" and "encryption", searched Google for "site:dotmesh.com security", and tried going to [http://dotmesh.com/security](http://dotmesh.com/security), but got nothing for all three.

</comment></comment></comment><comment><USER13> Congrats Luke and team. I'm curious, what did you learn at ClusterHQ with Flocker that made you want to start dotmesh?

<comment><USER4> ClusterHQ was a fantastic learning experience. I'm proud of what we achieved and the many strong relationships that were built in the team.

Ultimately the reason that ClusterHQ failed, I think, was that we believed we had product-market fit before we really did, and we started scaling too soon.

When we started, it wasn't possible to connect storage to containers at all, and so we had to put a lot of work into making that possible. And by the time we'd got Flocker working reliably across AWS, GCE, OpenStack & a dozen or so storage vendors, we'd been commoditized by Kubernetes.

Our premature scaling then made it harder to adapt as fast as we needed to. Many lessons learned!

We're focusing on a rigorous approach to finding product-market fit, my colleague Alice has written more about this here: [https://dotmesh.com/blog/dotmesh- hypotheses/](https://dotmesh.com/blog/dotmesh-hypotheses/)

</comment></comment><comment><USER4> Try dotmesh here: [https://dotmesh.com/try-dotmesh/](https://dotmesh.com/try- dotmesh/)

Learn about architecture, use cases (tutorials) & lots more: [https://docs.dotmesh.com](https://docs.dotmesh.com)

</comment><comment><USER14> Looks useful for QA testing of distributed systems. I can also see a use case where I snapshot the state of one container from a node in a cluster then pull it onto the next node as it starts up before joining. It could maybe make things converge quicker in blockchain applications as well, where each new node needs to get a copy of the entire chain before it can do useful work?

</comment><comment><USER15> This sounds really cool way to manage the lifecycle of software. Will try it out. Though my first experience after trying the live hosted tutorial at [https://dotmesh.com/try-dotmesh/](https://dotmesh.com/try-dotmesh/)

"$ dm cluster init dm: command not found"

<comment><USER4> Did you run the curl command that's the first item in the tutorial?

<comment><USER15> No, I didn't, sorry. After dm installed and set up, it seems working good. Great work, thanks. I wasn't aware that it's required installation process in Katacoda, just followed the Deploying Dotmesh to Docker Step 1.

</comment></comment></comment><comment><USER16> Would this concept allow users to share subsets of data between each other? assuming they had their own nodes.

<comment><USER6> Thats the idea yes! you can run dotmesh on your own servers and install locally on each users machine to then push and pull just like git remotes. It's using copy-on-write so you are only pushing the difference. Another main use case is for CI to consume volumes, run tests then snapshot the results.

We have a hosted service if you don't want to run your own nodes ([https://dothub.com](https://dothub.com)) but the server and client are both open source. disclaimer: I work on the project

</comment></comment><comment><USER17> This is very interesting. Are there any tools provided for "DB diffs"? e.g. show exactly which rows are different between two snapshots?

It seems like dot* would have to know about the application logic to show useful diffs, but maybe it can be done generically at the DB level.

<comment><USER4> I love your thinking, Ivan!

We have an issue for this here: [https://github.com/dotmesh- io/dotmesh/issues/85](https://github.com/dotmesh-io/dotmesh/issues/85)

</comment></comment><comment><USER18> Awesome. I literally started writing a small tool for managing state yesterday, because we really do need smarter ways to move application datasets around.

<comment><USER4> Interesting! We should compare notes! Join our slack (in website footer) and we can chat? Or I'm @lmarsden on Twitter :-)

</comment></comment><comment><USER19> I read through. Still have no idea why I would use it.

</comment><comment><USER20> Maybe it's just me, but while I find the graphics informative on the landing page, I wonder if they could be made to be more easily understandable.

<comment><USER4> Hey, thanks for the feedback!

Does this help? [https://docs.dotmesh.com/concepts/architecture/](https://docs.dotmesh.com/concepts/architecture/)

<comment><USER11> Would you mind sharing more details about how they are confusing? Always happy to take feedback. Feel free to comment here or on the community Slack, although a GitHub issue may be the best place. Whatever works... and much appreciated.</comment></comment></comment>


Cyber Attack Forces Code Spaces Out Of Business - <AUTHOR> http://www.informationsecuritybuzz.com/cyber-attack-forces-code-spaces-business/

<comment><USER2> Right. But how many shops operate in a "Cloud environment", especially when they're offering "Cloud services"? What about S3, etc. What's their incidence response?

</comment><comment> user-name ouch. but when you hang your sh*t way out there, on systems you have no physical control over, how can you act like this is not a likely eventual outcome?</comment>


500-Year-Old Body of Man Wearing Thigh-High Boots Found in London Sewer Build - <AUTHOR> https://www.livescience.com/64239-thames-skeleton-with-boots-discovered.html <comment><USER2> Maybe someone with a more indepth understanding of genealogy can answer this question:

If you were to sequence this man's genome and add it to the 23 & Me database (or some similar service) would you be able to get any interesting results?

Is there an existing database of historical DNA sequences available for comparing against?

<comment><USER3> > __ _Is there an existing database of historical DNA sequences available for > comparing against?_ __

This is an interesting question. Have we attempted to document the DNA from anyone of historic consequence for whom we have DNA samples?

How many human remains of DNA samples are there in the Smithsonian, for example?

Can you sequence the DNA from mummies?

</comment></comment><comment><USER4> If you're gonna die...

<comment><USER5> ... gotta dress fly!

</comment></comment><comment><USER6> I assume the statute of limitations has passed for the OSHA suit here

<comment><USER7> Is OSHA called OSHA in the UK?

<comment><USER8> No it is called the HSE.</comment></comment></comment>


Why does 64-bit Windows need a separate "Program Files (x86)" folder? - <AUTHOR> http://superuser.com/questions/442246/why-does-64-bit-windows-need-a-separate-program-files-x86-folder/ <comment><AUTHOR> There are a number of different answers there, with varying levels of accuracy. It seems to me what it comes down to is 1) organization is good, and it just makes sense to separate fundamentally different types of programs into separate directories, and 2) (the main technical reason) that it will be relatively common for both 32 and 64-bit versions of the same program to be installed. And therefore:

> Installers aren't magic. They have to be written by programmers and are > applications (with possible bugs) like any other application out there. So > let's look at the situation an imaginary programmer would have to face with > and without the current system:

> 1 Program Files folder

> The developer maintains 2 installers. One for the 32bit and one for the > 64bit version of his application. The 32bit installer will write to > C:\Program Files\App\ and the 64bit installer will write to C:\Program > Files\App\sixtyfour\\.

> 2 Program Files folders

> The developer maintains 1 installer. The installer will always write to > %PROGRAMFILES% and depend on the operating system to expand the path > accordingly (you actually don't use environment variables for these cases, > you'd use SHGetKnownFolderPath with FOLDERID_ProgramFiles to retrieve the > correct path).

> Everything finds it's place automatically and the pattern is identical with > every application you install. [1]

Contrary to many of the answers, it doesn't seem to have anything to do with programs finding the correct DLL files, as the install location has no bearing there as far as I know.

[1] [http://superuser.com/a/442250/210589](http://superuser.com/a/442250/210589)</comment>


Batteriser is a $2.50 gadget that extends disposable battery life by 800 percent - <AUTHOR> http://www.pcworld.com/article/2928997/batteriser-is-a-250-gadget-that-extends-disposable-battery-life-by-800-percent.html

<comment><USER2> It's much more compact than existing 'Joule Thief' designs - [https://google.com/search?q=joule-thief](https://google.com/search?q=joule- thief) \- it probably extends the lifetime of a battery by 2-3 times.

</comment><comment><AUTHOR> To be clear, I don't think it works - I'm curious to see the discussion to see if my (electrical layman's) gut feeling is correct that this is at best a vast overstatement of the capabilities of a voltage booster.</comment>


Why is HN Suppressing all NSA related topics? - <AUTHOR>

This is not good. This information affects a large amount of HN users and is very relevant; new information is still coming out almost daily.
Here's some examples from only the past few days alone:
https://news.ycombinator.com/item?id=8011461
https://news.ycombinator.com/item?id=8010993
https://news.ycombinator.com/item?id=8010692
https://news.ycombinator.com/item?id=8009696
https://news.ycombinator.com/item?id=8008449
https://news.ycombinator.com/item?id=8008168
https://news.ycombinator.com/item?id=8008041
https://news.ycombinator.com/item?id=8007422
https://news.ycombinator.com/item?id=8007161
https://news.ycombinator.com/item?id=8006966
https://news.ycombinator.com/item?id=8003864
https://news.ycombinator.com/item?id=8003038
https://news.ycombinator.com/item?id=8003035
https://news.ycombinator.com/item?id=8000175
https://news.ycombinator.com/item?id=7993883
https://news.ycombinator.com/item?id=7993571
https://news.ycombinator.com/item?id=7989555
https://news.ycombinator.com/item?id=7988973
https://news.ycombinator.com/item?id=7988253 <comment><USER2> HN is not "Suppressing" all NSA-related topics.

Users are flagging these posts. The HN community is divided. Some people think that there are too many NSA stories; others, too few. On any issue where the community is divided, upvotes compete with flags, and stories rise and fall according to the tug of war.

The HN software adds a small default weight to NSA stories. The purpose of this is obviously not to suppress them. If we were trying to do that, it would be a large weight and not a small one. Instead, it's tuned so that NSA stories can still easily make the front page—and so they do. It's an attempt to strike a balance between the different segments of the community who strongly disagree with one another about how much NSA is the right amount of NSA.

The story last night about Muslim leaders was not much affected by the software. If users hadn't flagged it, it would certainly have stayed on the front page. In my view, users were right to flag it. I hope this site never sees another thread where a large class of fellow citizens are accused _en masse_ of being fifth columnists and rapists. If we do, I trust that users will flag it again.

Some of you feel that such stories are so important that the flamewars around them should just be allowed to burn. Our experience and observation suggest the contrary: they are bad—existentially bad—for the site. Like fire in general, they lead to more of the same. So the alternative to the current policy is conflagration. The best aspects of HN, in our view, would not survive this.

<comment><AUTHOR> Maybe I'm missing something... (I'm newerish here), but it seems to imply there are more HN users who _do_ want NSA coverage more often and more prominent, as evidenced by the need for any "weighing down" at all, no?

Why not allow it to be organic? If it's true that most are being flagged down, then that will be the same regardless of any added weight.

I can understand the want to avoid obsessive flame wars, but simply suppressing important articles isn't going to do that. I understand this weight has been in place for a year now - perhaps the weight should be removed as a trial, and see what happens...?

<comment><USER3> (I don't care if the "NSA penalty" is removed from HN).

If the site were _solely_ moderated by voting, it would be Reddit. "No cat pictures" is practically the founding charter of the site: it was started as "Startup News", specifically to be a place that was germane to startup founders that would not be overrun by flavor-of-the-moment content.

"Startup News" became "Hacker News", with a broader focus, but it didn't turn into "Everything News", which is why the site has guidelines.

Obviously, NSA content is trickier than cat pictures, because much of it (even I'll concede) is very relevant. However, the fifth or sixth game-of-telephone take on every NSA story isn't relevant. Neither, I'd say, are stories about the NSA that touch merely on the political implications of NSA surveillance.

This is one of the oldest arguments about moderation on the site. We had it over TSA stories (when I was one of the people voting those stories up!), and we had it (believe it or not) about Ron Paul. There's always a six-degrees-of- startup-relevance to be played with any current events story. If you can't make Justin Bieber's egging conviction relevant to startup founders, you're just not being creative enough.

<comment><USER4> Wasn't it set up to be "what reddit was at the start, when it was all about tech & startups?"

<comment><USER2> No, it was set up to be more or less "what pg finds interesting", and that is a lot more than tech and startups.

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

Despite "NSA" being penalized (along with some other high-volume topics, I believe), there are still regular NSA posts that make it to the front page and get plenty of discussion. For example:

\- [https://news.ycombinator.com/item?id=7983124](https://news.ycombinator.com/item?id=7983124) (6 days ago)

\- [https://news.ycombinator.com/item?id=7989730](https://news.ycombinator.com/item?id=7989730) (5 days ago)

\- [https://news.ycombinator.com/item?id=7991696](https://news.ycombinator.com/item?id=7991696) (4 days ago)

\- [https://news.ycombinator.com/item?id=7993472](https://news.ycombinator.com/item?id=7993472) (3 days ago)

\- [https://news.ycombinator.com/item?id=8008025](https://news.ycombinator.com/item?id=8008025) (yesterday)

Also note that the vast majority of posts on _any_ popular topic do not make it to the HN front page.

</comment><comment><USER3> HN isn't suppressing these stories; they're getting flagged off the site by users. (The mod has been at pains to point this out over and over again as NSA stories fall off the front page and people complain).

<comment><USER6> That's not entirely accurate, FWIW. It's pretty simple to prove that certain topics get penalized without direct user/mod action (or at least, used to-- presumably via a keyword filter): [http://www.righto.com/2013/11/how-hacker- news-ranking-really...](http://www.righto.com/2013/11/how-hacker-news-ranking- really-works.html) (and discussion here: [https://news.ycombinator.com/item?id=6799854](https://news.ycombinator.com/item?id=6799854))

I built a version of the front page that calculated penalties "live" and allowed the user to see what the front page would look like without penalties. It was interesting, but I haven't had time to update it for use with the new HN search API.

<comment><USER3> There is a small penalty, "the second smallest on the site", for NSA topics. But 'dang has been pointing out that it's flags that are knocking these stories down the rankings, not that small penalty; the point of that penalty is that it is supposed to be easy for important stories to overcome it.

The NSA penalty could not exist at all, and the stories we're talking about here still wouldn't have ranked.

<comment><USER6> Right, but that seems like a different statement than "HN isn't suppressing these stories"\--HN _is_ suppressing the stories, both as a community (via flags) and through its administrators (via software).

The "second smallest" penalty on the site has a pretty substantial impact, FWIW (I'm not complaining).

EDIT: I created this comment and grandparent purely in the context of this subthread, after reading 'tptacek's parent comment. In future I'll check the overall context first--it strikes me that my attempt to inject interesting commentary and correct what I viewed as a minor piece of misinformation about how HN works might actually be adding fuel to a fire that I'd rather not feed --I am grateful for the level of moderation that 'dang and the gang exert, and even more grateful for community members who know how to use the flag button and then actually use it in an appropriate fashion.

</comment></comment></comment></comment><comment><USER7> One of your links answers this very question.

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

Links with NSA in the title get penalized because of the massive number of stories submitted about the NSA. This is Hacker News, not NSA News. While news about the NSA is important, historically it has flooded the site and completely dominated the front page with mostly duplicate stories. The penalty was put in place to counter the effects of this.

<comment><AUTHOR> There are already systems in place to weed out duplicate posts/links.

The NSA news has "flooded the site and completely dominated the front page" because there is a flood of news.

<comment><USER7> I don't control HN, so you don't need to convince me. It's not uncommon, and the NSA isn't the only topic like this. Check that link that you and I both posted.

<comment><AUTHOR> I think the argument is the "penalty" applied to posts related to the NSA, is a little overbearing and is suppressing posts that shouldn't be (ie. unique posts with new information).

Such as:

AMA: G. Greenwald on the Muslim-American leaders spied on by NSA and FBI (reddit.com)

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

<comment><USER8> "Unique posts with new information" is not the standard of relevance on a startup news site. Lots of things that are interesting but not startup-related make it into the list, but it wouldn't be appropriate for the front page to be full of NSA stories even if there's a "flood of news". This isn't CNN.com.

</comment></comment></comment></comment></comment><comment><USER9> You are already greyed out, someone is keeping an eye on posts like this, clearly.

<comment><USER5> "Text" posts on HN are always displayed in gray. pg said this was to discourage making long text posts directly to HN: [https://news.ycombinator.com/item?id=468231](https://news.ycombinator.com/item?id=468231)

For example, the text in this post by pg is also gray: [https://news.ycombinator.com/item?id=7484304](https://news.ycombinator.com/item?id=7484304)

<comment><USER10> Hacker News is one of the best online communities i've come across so far.

But some of the passive-aggressive and condescending 'features' baked into to the forum to discourage participation on the premise that engagement === entropy are really getting kind of annoying.

He could have simply added a character limit, or a word limit, if he wanted text posts to remain brief. Or just told you as you posted to keep it simple. But nope - he chose instead to make every text post difficult to read as a form of operant conditioning, because the only way the plebs will learn is through pain.

<comment><USER3> The site has worked this way for many many years; you aren't arguing about something the moderators are doing so much as trying to litigate the basic functions of the site. That's unlikely to be productive.

<comment><USER10> Probably not, although the devs are currently working on some tweaks here and there, and so might consider adding "not making text posts illegible by default" to the list.

<comment><USER3> There's a reason for that too: text posts aren't meant to create privileged, sticky comments. You can see that here: the poster didn't just ask a question, but tried to answer it (proposed answer: "it's just wrong that these weren't on the front page, and here's evidence").

If the poster wanted most of that content to be prominent in the thread, they could have added a comment to their question.

<comment><USER10> But clearly the legibility penalty didn't help them to realize this subtle distinction before posting. Any number of alternatives (limiting the post length, auto-commenting after a certain length, limiting the number of links in a post, giving posters the chance to revise if a post is too long, reducing legibility as a factor of length, or just letting people downvote the posts, etc) might well have resulted in better behavior. But all the current solution seems to accomplish is penalizing everyone else.

<comment><USER3> What distinction _would_ prevent someone from abusing "Ask HN"? The poster penalized their own content, by hoisting what should have been a comment --- were this post appropriate for "Ask HN" at all, which it isn't --- into the text of their question.

Anyways: it's not worth the argument to keep pushing this thread. I just think it's interesting how many aspects of HN that annoy some users turn out to have an important role in how the community regulates itself. Note for instance how the site isn't flooded with bogus text submissions, the way sites with sticky comments get.</comment></comment></comment></comment></comment></comment></comment></comment>


Resubmission: Using GRAKN.AI, Python and Pandas to query and model movie data - <AUTHOR> https://blog.grakn.ai/grakn-pandas-celebrities-5854ad688a4f#.cvzwskcel <comment><USER2> Is grakn a graph database?

<comment><AUTHOR> It is built on top of Titan on Cassandra ut it's more than a graph database. We have a blog post in the works about that soon but take a look at [https://grakn.ai/pages/platform/index.html](https://grakn.ai/pages/platform/index.html) for more.</comment></comment>


For Twins, Nature (Finally) Trumps Nurture - <AUTHOR> http://theairspace.net/commentary/for-twins-nature-finally-trumps-nurture/

<comment><USER2> So, my kids will grow up to be what they will be, almost despite my parenting

I don't know whether to be relieved or shocked :-)

I still am unconvinced that 137 twins are a convincing Trial size when epidemiologists usually think in millions.</comment>


Ask HN: What are the coolest remakes of retro computing devices? - <AUTHOR> <comment><USER2> [http://monster6502.com/](http://monster6502.com/)</comment>


Modularity in the Design of Complex Engineering Systems (2006) [pdf] - <AUTHOR> http://www.people.hbs.edu/cbaldwin/DR2/baldwinclarkces.pdf

<comment><USER2> This has been in my reading list for a very long time! I'll print it tomorrow :)</comment>


Attacking multicore CPUs - <AUTHOR> http://www.theregister.co.uk/2007/09/14/system_call_sploits/

<comment><USER2> I was on the committee for Usenix WOOT, and this was one of my favorite submissions. But it has very little to do with concurrency or multicore CPUs.

Watson's paper points out that where there are indirections inside the kernel (for instance, filenames to vnodes), you have to be careful about TOCTTOU bugs. If you chase the same indirection twice, there is no guarantee you will arrive in the same place. This is a famous, hoary source of problems in userland.

Watson's results were that things like Systrace (which firewall processes off from the rest of the system) have lots of TOCTTOU issues because they try to enforce policy on things like filenames. Because of the way they're architected, as a "layer" over/under the actual system call handlers, the security check and the actual system call do two seperate lookups. Race condition.

This result doesn't depend on multicore; it happens on uniprocessor systems as well. TOCTTOU filesystem races in userland accounted for a good percentage of the 8lgm-era SunOS advisories.

</comment><comment><USER3> Turns out that the problem isn't concurrency _per se_ , but shared mutable memory that an attacking process can sneak in and rewrite before the kernel reads it - and any schoolchild knows that if someone can sneak in and scribble all over something, they will. As if all the other problems with mutable state weren't quite bad enough... :)

I wonder how the history of computer architecture would have been altered had someone discovered a memory technology where writing into empty cells was very easy, but altering them extremely difficult, back in 1953? Such a memory technology would have been perfectly utilised by functional programming techniques, but would have made traditional mutable state extremely expensive (not impossible, as monads demonstrate, but not primitive). What would be different today...?

</comment><comment><USER4> Thank god I don't use anti-virus systems or security policy enhancement frameworks. Somehow they seem to be the wrong approach anyway.</comment>


A Conversation with Sergey Brin - <AUTHOR> http://www.techcrunch.com/2009/10/07/a-conversation-with-sergey-brin/

<comment><USER2> Why I think Google is and will remain strong and innovative:

 _"One day Larry and Sergey bought what became Android, and I didn't even know about this. They said this is really interesting. I didn't think about that, but now think about the strategic opportunities that created"_

The fact that Larry and Sergey can still pursue what they consider 'interesting' with their resources WITHOUT giant bureaucracy getting in the way speaks volumes about the health of the company IMO.

<comment><USER3> I mean, they should be able to dodge bureaucracy; they run the company. I'm missing what's so amazing here.

<comment><USER4> They do not own the company; they run it at the pleasure of (yes) a bureaucracy.

<comment><USER5> I'm pretty sure one of the most notable things about Google is Larry and Sergey's ability to avoid this, going back all the way to when they raised VC. They split the funds between rival firms Kleiner Perkins Caufield & Byers and Sequoia Capital and kept control of the company for themselves.

</comment></comment></comment></comment><comment><USER6> This is hilarious:

Schmidt: let me, some of your assumptions about Chrome adoption are wrong. The adoption rate of Chrome is [very strong]. We are going to do a better job of getting that message out.

Schonfeld: Steve Ballmer calls it a rounding error, is it?

I don't respond to Steve Ballmer questions. Next question?

<comment><USER7> You'd think they'd act like grown-ups before the press, given media's tendency to blow things out of proportion. But nope, not Schmidt.

<comment><USER5> _You'd think they'd act like grown-ups before the press, given media's tendency to blow things out of proportion. But nope, not Schmidt._

The person acting like a child is not who you think it is.

</comment></comment></comment><comment><USER8> "Sergey: There is also the security aspect. In a recent hacker competition, Chrome was the only one to escape unscathed in terms of security vulnerabilities. And more stable."

When, oh when will people learn that touting the security of a product by how well it did in hacking competitions is not a measure of how secure it is?

<comment><USER9> There is no single measure of security. The hacking competition mentioned is a perfectly valid data point though.

</comment></comment><comment><USER10> Is it just me or does his bold formatting detract from rather than add to the interview? I found it hard to follow with the constant switch back and forth from bold to regular text.

<comment><USER11> I quickly switched from reading to skim-reading to trying to find a pattern in the boldness to giving up. I might've read it all if it used one font face consistently.

</comment></comment><comment><USER12> In front of the press:

 _Eric Schmidt: It seems like Sergey has jumped the gun. We should focus mostly on search, and some of the ideas Sergey has._

I could only imagine what goes on behind closed doors.

</comment><comment><USER7> Is it just me or does the entire interview seem very strained and uncomfortable? Schmidt seems to violently differ from Sergey and they both go compeltely mum when asked about their competitors.

<comment><USER13> To me it seemed like they avoided the celebrity cat fighting those questions about competitors would devolve into, "Jobs gets served by Brin and Schmidt" idiocy.</comment></comment>


John Siracusa breaks down the available formats for his OS X 10.8 Review - <AUTHOR> http://siracusa.tumblr.com/post/27978338524/about-my-mountain-lion-review

<comment><USER2> This isn't really his process, it's just the formats, costs, and a few details on the article.

<comment><AUTHOR> You're right. I've since changed it from "John Siracusa describes his process of writing the OS X 10.8 Review"

</comment></comment><comment><USER3> Pretty funny the price of the e-book on Amazon is the same as the price of an Ars Premier subscription for a month which includes the same e-book.

</comment><comment><USER4> I wonder if the kindle price falls into dan ariely relative price tactics.</comment>