Show HN: C#-to-JavaScript compiler powered by Microsoft Roslyn - <AUTHOR> http://duoco.de <comment><USER2> I would encourage anyone looking at a C# to javascript compiler to check out typescript first.

I've seen projects use a compiler similar to this, and while writing C# sounds great to developers who already know C#, the differences between the C# source and the generated JS make debugging and maintenance difficult.

In my experience typescript provides C# developers much of what they are looking for - type safety, familiar class definitions, etc - while still being very easy to debug.

<comment><USER3> IMHO the reason for such a compiler is sharing code between client and server. From that standpoint your advice is reasonable for C# programmers only if they are ready to abandon C# altogether and switch to node.js on server.

<comment><USER2> That's true - if you have some sort of business logic you want to run on both client and server, this or Script# could be very useful.

But if you're looking to write C# in the browser because you love C# and have heard JS is terrible (a BIG factor I've seen used when pushing tools like this), I'd look at typescript first.

</comment></comment></comment><comment><USER4> SharpKit has a 3+ year head-start selling and supporting their solution (available commercially and under GPL3). I have no doubt they have considered transitioning to Roslyn as well; it is a tough decision for all those who had already built a C# parser. (Note that those using Mono [Saltarelle for sure] will wind up stuck unless they follow along to Roslyn.)

The biggest part of these projects is the re-implementation of the .NET CLR in JavaScript (for example, Saltarelle began life using the Script# runtime with a few tweaks). The more production usage the runtime has seen, the more useful the translation tool becomes!

[http://sharpkit.net/](http://sharpkit.net/)

</comment><comment><USER5>
        // JavaScript code generated by DuoCode
        GetBestMove = function(board, player, winner)

That line will garbage the global scope..

<comment><USER6> The C# function is global, so the compiled Javascript function is global. Feels to me like the most correct compilation of the C# code.

(Consider: the C# code has no main function, so, if we hid the GetBestMove definition from the rest of the webpage, it would _never_ get called. The optimal Javascript compilation would be an empty string, and that's clearly not valuable.)

<comment><USER7> I'm confused. C# doesn't even support global functions. In your example, it's a static private member of the AI class. Why is it wrong to generate

        var AI = {
            GetBestMove: function(....) { ... },
            ...
        };

?

Another thing, I had someone tell me once that according to Erik Meijer (of LINQ and Rx fame), years ago, Microsoft tried a C#-to-JS compiler too. It worked, but they had good reasons to drop the project anyway. Did you ever hear about that, do you know Microsoft's reasons for doing TypeScript instead? Are they still valid?

<comment><USER8> The project was Volta from Microsoft Live Labs. It was a technology preview but appears to have been canceled. There is also Script# by Nikhil Kothari from the .NET Platform group.

</comment></comment></comment></comment><comment><USER9> I love this trend of building compilers for existing languages that target Javascript. Other 2 languages with fully functional Javascript compilers that are worth checking out:

\- Scala / Scala.js ([http://www.scala-js.org/](http://www.scala-js.org/)) and I'm actually using this one for a non-trivial app

\- Clojure / ClojureScript ([https://github.com/clojure/clojurescript](https://github.com/clojure/clojurescript)) with some companies using it in production

Both are using Google's Closure compiler to do tree shaking minification and are emitting source maps for the compiled code, so the size of the compiled artifacts is manageable in spite of the huge standard libraries they come with and debugging works well. Normally if you want tree shaking with Google Closure, you have to write code specific for Google Closure, however these compilers are doing that for you.

What you get in comparison with Javascript are saner languages that aren't just a prettified Javascript - completely different type system, awesome standard libraries, packages, saner semantics overall; you get a sane dependency management and build process, by means of their build tools (SBT and Leiningen respectively); you get libraries that are cross-compiled for the JVM and Javascript, so you can do code sharing between the server and the browser and you can use mostly the same tools, like IDEs. For example it's a great experience to use IntelliJ IDEA for targeting the browser with Scala - you get code completion, refactoring, the works.

And yes, the compiled size of the final artifact is a source of worry, but in practice I found to not be an issue and what's awesome is that in the long run it actually saves bandwidth for heavy apps. With Javascript many people tend to avoid using third-party libraries, because every imported library adds to the download size, however with tree shaking you're paying only for what you use. As I mentioned, being a Scala developer I picked up Scala.js and it's completely awesome, in spite of the project being young. Unfortunately these heavier alternatives to Javascript haven't picked up popularity - for some reason people preferred putting lipstick on Javascript and pretend that it's a new language.

I'm happy that compilers for C# are happening as well. My only gripe is that in true .NET fashion I'm not seeing a link to the source, which makes me think that this won't be open-source. Which is a pity.

<comment><USER10> If you use all features of scala you get at least 16mb pure js boilerplate. Even with dead code elimination you cant get below 100kb with 10 lines of scala. Im not sure if i would call that manageable. Your app might explode into megabytes at one point.

With es6 around the corner and the possibilities those features will provide, i would still bet on pure js. Those precompilers will benefit a great deal too. Symbols and Proxies alone will remove a lot of the hoops they have to go through now.

<comment><USER9> It's technically impossible to use all of Scala's features and if you do, you'd pay the same price with equivalent Javascript libraries.

I don't get this argument on the size of a hello world, given that JQuery 1.11 is over 270 KB and most people are just doing simple DOM selection with it, yet they don't complain their hello world comes with 270 KB of stuff they'll never use. Factor in React, Bootstrap, Angular.js or what have you and you can easily reach 1 MB of stuff that's never used for a couple of lines of code.

The app doesn't explode in MB, unless those MB are really needed - which is the fundamental difference between how these work and regular Javascript development. And given that there are some companies using these in production for non-trivial stuff and that nobody has ever reported that, I'm thinking that it doesn't happen.

My current app is currently clocking at 300 KB btw, but I am using the collections from the standard library, I am using a library for reactive streams built by myself, I am using React and I do have some code in it. And personally I find it OK.

<comment><USER11> In theory, jQuery can be brought in by reference from Google Hosted Libraries or cdnjs or whatnot, cached for a long time, and reused in any other website that uses the same external host and version. You can't say the same about your tree-shaken thingy... However, I'm not experienced enough to say how well that works in practice.

<comment><USER9> It really doesn't work out well, especially where it matters - on mobile phones with poor connectivity. Why do you think alternatives like Zepto.js exist?

</comment></comment></comment></comment></comment><comment><USER12> In gwt, reflection isn't supported because it makes it hard for the compiler to do dead code elimination.

Supporting reflection might make it difficult to reduce the compile size of the javascript code in the future.

Or does c# reflection work differently from java?

Looks great by the way.

<comment><USER13> C# / .Net will have the same issue, but when they developed native compilation for windows phone apps they added a concept of a runtime definition file that lets you control how much needs to be retained for reflection: [http://msdn.microsoft.com/en- us/library/dn600639%28v=vs.110%...](http://msdn.microsoft.com/en- us/library/dn600639%28v=vs.110%29.aspx)

The native compilation technology is moving over to normal .Net and I would imagine the runtime definition file could be used for javascript transpiling tree-shaking as well.

<comment><USER12> Thanks on first glance that looks like a much better solution than gwts' generators.

<comment><USER14> My implementation in GWT lets you control how much is retained by using annotations to control the retention level. It even gives you the option to defer loading reflection until a future code split, such that you only download the extra bytes for reflection support when you will actually need it. See above for link.

</comment></comment></comment></comment><comment><USER15> JavaScript became this "immediate language" that we compile other languages to. Could we instead get rid of it by making PROPER immediate language for the browser?

<comment><USER16> Unfortunately most of the people have been inside the barn long enough to stop noticing the smell, if you know what I mean.

</comment></comment><comment><USER17> If you like the feeling of working with something like C# it is also worth looking into Dart: [https://www.dartlang.org/](https://www.dartlang.org/)

        * Runs on the client and on the server
        * async/await
        * Well designed stdlib
        * Powerful intellisense support
        * Stream and Future based APIs

</comment><comment><USER18> Can these compilers really generate "readable and maintainable Javascript" and at the same time generate performant JS? I think this is one of the reasons why languages like Dart and Clojurescript chose the opposite (not generate readable JS).

</comment><comment><USER19> Well done. I like it but I'm not sure what my use case would be. I mean, if I wanted a cross compile language upgrade how do you decide between something like this and ES6?

Also, if there any language left that doesn't convert to JS?

<comment><USER20> A quick googling shows that people are still having some problems with fortran to javascript, as there's a bit of a dance between toolchains that needs done there. However, the best bet for if you wanna keep people from turning your code to javascript seems to be PL/I. Finding even less there for tools to convert it to javascript.

</comment></comment><comment><USER21> I am a huge fan of Saltarelle [1], which has the save level of support as this project. The only thing it seems to be lacking is proper source mapping abilities, which is currently in a dev branch. It also has many libraries already built, like JQuery or AngularJS. However, full support from Microsoft makes it much more realistic to bring in to a production environment. As a C# developer, this will be something to keep an eye on.

Edit: After reading more, this does not seem to be a Microsoft project.

[1] [http://www.saltarelle-compiler.com](http://www.saltarelle-compiler.com)

</comment><comment><USER18> So is this a Microsoft project? they don't directly say it, but they try to make it sound as it is:

"DuoCode is an alternative compiler, powered by Microsoft® Roslyn, and integrated in Visual Studio."

<comment><USER22> Roslyn[1] is open source, so nothing that is being listed there implies Microsoft is behind this project.

[1] - [https://github.com/dotnet/roslyn](https://github.com/dotnet/roslyn)

<comment><USER18> for me, the key in that sentence is "integrated in Visual Studio", implying it comes or will come bundled with Visual Studio, English is not my first language so maybe I'm misinterpreting this.

<comment><USER22> It just means that it will likely come as a Visual Studio add-on which doesn't require any official support from Microsoft. [1]

[1] - [https://visualstudiogallery.msdn.microsoft.com/](https://visualstudiogallery.msdn.microsoft.com/)

</comment></comment></comment></comment><comment><USER23> Script# has existed for years and heavily used inside Microsoft. Even with that, it was not adopted as a tool for programming JavaScript in Visual Studio. If you need to code JavaScript but not in JavaScript as it exists today, TypeScript is what you should look at.

Please stop these C# to JavaScript compilers. If one needs to program in JavaScript, let them learn and understand JavaScript.

<comment><USER16> Yes! The whole compilation madness must stop. Machine code is good enough for everyone. And if you still need to code in a high-level language, assembly is what you should look at.

</comment></comment><comment><USER24> There is also Script# [1] which unfortunately seems to be no longer maintained. Even the domain of the homepage expired at the end of 2014. I used it for a couple of toy projects and it worked pretty well.

[1] [https://github.com/nikhilk/scriptsharp](https://github.com/nikhilk/scriptsharp)

</comment><comment><USER25> This isn't new. Microsoft had an unofficial project for a while called Script# (script sharp) that did the same thing. I think they rightly decided it was a better idea to support JavaScript directly and come up with a new language designed to target JS from the start (typescript)

</comment><comment><USER26> IMHO, Transpilers will likely be the future of web development, with javascript evolving into an intermediate language which other languages are compiled to. Projects like this or gopherjs are a taste of what's to come.

<comment><USER27> As long as we're doing predictions, here's mine:

All the cool kids will finally stop trying to push everything to the browser, move some of that back to the server, and become completely content with what Javascript has to offer.

<comment><USER14> Why spend cycles doing work on the shared resource (the server), when you can leverage the (hopefully) millions of CPUs used by clients?

Smart clients reduce server load, and allow increased scale; why pay to make your server turn models into HTML when you can just send the model to the client and let it deal with it however it wishes.

For us at Appian, we use the same models and APIs for web, android and IOS; by having a smart client, the server only has to care about the shared model and executing requested instructions; it doesn't care how the client renders the result, nor should it.

</comment></comment></comment><comment><USER28> I don't know how good this is, but I got to know from someone that Microsoft uses a similar thing for their internal uses and their version had a very poor debugging.

</comment><comment><USER29> Can C# classes compiled in this way be exposed to JS, so the main program can be in JS with libraries compiled from C#? Or is it assumed that the main program is in C#?

</comment><comment><USER30> Hmm.. Wonder if this could breathe life into a Silverlight application that needs a way forward..

</comment><comment><USER31> I'm curious how this handles the very common case of passing functions as parameters in JavaScript. I know it's possible in C# but it's much more difficult to do. JavaScript is a much more functional language than C# and the design patterns are quite different.

<comment><USER32> C#:

        Func<string> blah = () => "im a function";

JavaScript:

        var blah = function(){ return "im a function"};

Not only is it not harder, it's more terse in C#.

<comment><USER33> That can be made even simpler in C#:

var blah = () => "im a function";

<comment><USER34> In ECMAScript 6:

        var blah = () => "im a function";

[http://is.gd/D42hDi](http://is.gd/D42hDi)

:)

<comment><USER35> Wow. I love it when good syntax sugar is inherited by languages.

<comment><USER34> Yep, I've popped 6to5 in our gulp build process (it also handles JSX which is bleedin' fantastic), and my team and I are absolutely loving it.

The fact that, for instance, you can use ES6 modules, and it will be converted to whichever module loading system you're actually using (AMD or Browserify, for instance), means that our code is actually more portable now (our React/Flux/browseify app may well have to be integrated into a project that uses backbone/AMD soon, so that's no longer a headache.

</comment></comment></comment></comment></comment></comment><comment><USER36> Cool to see the open-sourcing of Microsoft code already being put to use.

</comment><comment><USER37> I don't find writing JavaScript to be that hard. I don't get all of these compilers like this one, CoffeeScript, and TypeScript. Are people really that lazy that they can't spend the couple days it takes to learn the syntax and gotchas of JavaScript?

<comment><USER38> I'm working with a singlepage webapp that consists of ~1.5MLOC serverside(+other) and an additional ~100KLOC of javascript (not including libraries).

Refactoring and maintaining consistency are the two big problems we have with Javascript. It's easy enough to write javascript that works and does what we need it to do. The challenges come in when you start having separate components that need to interoperate.

eshint/jshint etc take you only so far (preventing you from dumping things into the global scope, avoiding typos). AMD etc can take you a bit further with async loading, and give a better [more consistent] pattern for exporting things than saying to devs "just put your stuff in an IIFE". FB Flow looks helpful, but it's trying to solve a difficult problem, and unfortunately doesn't work so well with our code thanks to ONE bad decision made a long time ago to rely on declaration hoisting ("unreachable code" :( ).

Anyways, knowing that your code isn't going to work before you start spinning up the application saves a lot of time.

Knowing that you can rename a method/function and have no undefined errors come out of it is great. Being able to look up usages of a method across the entire codebase is also useful. Eventually if Microsoft decide to spend resources on it, TypeScript might get CodeLens (which is on its own all manner of cool+useful).

Having class syntax means that you don't need to worry about external consumers accessing properties that they shouldn't be (+gets rid of silly conventions like underscore private members/methods).

JS is a great language, and it's powerful, but when you're writing large quantities of stuff, sometimes you need structure. Particularly when it's a large team and there are people of wildly varying experience, ranging from near-zero JS experience to people who have used it for a decade or more.

<comment><USER37> Unit tests fix the changing methods issue as well as making sure it will run when you run it. Types don't save you from that anymore then JSLint would as both can have logic errors.

Browserify can help with breaking your code down into smaller reusable modules for the client side and node you want to make your modules as small as possible? From the sounds of it you fell into the one big huge application that does everything problem instead of breaking it up. The same issues would have happen if you would have done that in any other language.

Varying experience doesn't mean you can give them TypeScript or CoffeeScript and not mess something up. You should still put code reviews and training in place though I do agree JavaScript lets you shoot yourself in the foot much easier.

You can hide variables through closures and sorry not a fan of getters and setters, I feel they are a anti-pattern ([http://www.yegor256.com/2014/09/16/getters-and-setters- are-e...](http://www.yegor256.com/2014/09/16/getters-and-setters-are- evil.html)).

The one thing that would be nice would be knowing where your code is called. Though if you are using NPM and Browserify then that can be easier as well. I agree though that the tools are not as nice as Visual Studios find callers and the intellisense isn't that good ether but I am willing to trade them for the flexibility of not having to declare types and the simplicity of not having to work around types with generics, interfaces, and casting.

So I think there is structure in Javascript you just have to learn the best ways of implementing it. Yes Javascript makes it a little easier to shoot yourself in the foot but you can still do it with CoffeeScript, TypeScript, or even in C# and Java, we learn from our mistakes. I fell to be successful in Javascript you really need to keep it small and re-factor often but that really is the same in all languages.

<comment><USER38> Each of your points is valid.

We have unit tests (fewer on the client than server though), CI that runs integration tests, automated UI tests and other stuff - but that's all much slower than "VS tells me that my code's broken so I should fix it before starting to debug". We'll catch bugs with TS or JS, it's just how long it takes to catch them that's the issue.

Modules aren't so much an issue for us (we don't have a big ball of mud IMO), it's how these modules talk to one another. This is not a problem that we experience in our serverside code because we have powerful tools (in terms of the IDE) that largely stop us from doing dumb things. We refactor a lot, and historically doing this in js has been a massive pain (ie there are no GOOD automated tools for refactoring that I'm aware of). If you use C# and move a method, you expect everything to keep working, but you don't have that same expectation when refactoring javascript. If your app is structured correctly, you do get that with TypeScript.

Same with reviews and training - we have both, but our team isn't big enough to have people dedicated to each area. We mostly hire C# devs, for better or worse, and want them to be as productive per hour as possible. Having it harder to shoot yourself in the foot means fewer feet shot over time, regardless of the team and their skillset.

Getters/setters was an unclear use of term "properties" on my behalf (which actually referred mostly exclusively to methods). Regardless of my personal opinions on getter/setter methods/closures etc, we have established patterns that will take a while to change. The problem is there, and so tooling that helps reduce what breaks when we make changes is a big plus. We don't have a robust message bus in the application, so there's a lot of crosstalk (that's a refactoring area).

And, overall, TS is a superset of javascript so you can always just write JS if that's what you've gotta do.

I guess that my overall point is that javascript is a great language (well, it's ok), but that tools like TypeScript just make things "better" for the average developer working on a large-scale system. JS is an organically grown language, and it shows in a number of places. You can do some super-cool things with it, sure, but for a lot of uses it's a worthwhile tradeoff to write something in a slightly-more-strongly-typed way.

We're about 10% new code, 90% refactoring and updating (though that's a guess, I haven't looked at the stats lately). For us, JS is more painful to maintain than C#. From what we've seen, TypeScript will give us significant benefits on that 90%.

<comment><USER37> All awesome points, I'll have to take a second look at TypeScript. Thanks for the points back.</comment></comment></comment></comment></comment>


Show HN: My first iPhone application.  - <AUTHOR> http://itunes.apple.com/ca/app/history-today/id464451134?mt=8

<comment><USER2> A bit of design advice:

\- Remove your logo from the header. Your users already pressed the icon on their homescreen to launch your app - they're not confused about what app they're looking at.

\- Settle for fewer textures. You have two distinct wood textures that clash, and paper scrolls on top of that. You can distinguish yourself without resorting to a custom background for everything. All the texture obscures the things users can interact with (the refresh button, the scrolls, etc).

\- Make the text bigger/make the contrast stronger. Take a look at any app you read a lot in - the font is generally significantly bigger, and on a more distinct background. You're trying to make it look "old" - try old parchment. That's a much more reasonable than a wood floor for reading text.</comment>


Symbian Foundation web sites to shut down, closing open source project - <AUTHOR> http://developer.symbian.org/wiki/Symbian_Foundation_web_sites_to_shut_down

<comment><USER2> For an insight into what happens to Symbian now, here are the short notes from the Symbian Foundation's last meeting:

[http://developer.symbian.org/wiki/2010-11-24_All_councils_wr...](http://developer.symbian.org/wiki/2010-11-24_All_councils_wrap- up_call)

After Dec 17, the Symbian Foundation retains only a skeleton crew tasked with shutting down operations.

\--

Nokia's representative made the following points about their plans for Symbian going forward:

\- The Symbian platform remains business critical to Nokia and their estimate of selling >50m S^3-based devices still holds

\- Nokia plan to develop the Symbian platform further

\- Nokia are looking at an alternate open and direct model for making the platform available to the community in future. The aim is that the model "will be no less open, free and flexible" than today's

</comment><comment><USER3> Why are they doing distro via DVD's? That's kind of insane, why not just put a symbian account on github, upload each project, and let what ever community there is take over from there.

<comment><USER4> Nokia is a Big Company, and while there are people there who really get open source, as an organization I've never got that impression about them.

<comment><USER5> Well they didn't do that much software before. But just look at QT -- they're managing open source project and they're doing it very well. Also they opened it more. Now think what would happen if Oracle were to buy Trolltech.

<comment> Tuna-Fish As far as I know, Qt is entirely being managed by the people who used to run it before -- Nokia just bought them, gave them some new priorities (main target is now smartphones), told them they don't have to make a profit anymore and set them loose.

The major changes that happened at Qt (namely the LGPL release and dropping copyright assignment) are a direct result of getting paid by Nokia to make software instead of selling it.

</comment></comment></comment></comment><comment><USER6> I worked on some of those sites. Good riddance.</comment>


Show HN: Gotham - <AUTHOR> http://gotham-nyc.co/

<comment><USER2> I want to enjoy this but I really find the switching between scrolling and clicking an area that was at times, obstructed by other visuals made it tough to do so.

That might be my lazy Sunday brain talking..

<comment><AUTHOR> It works best in chrome or safari 6

</comment></comment><comment><USER3> Cool concept, but it's seriously annoying. Either make the user always scroll, or always click.</comment>


Amazon Announces $2B Fund to Invest in Climate Tech Companies - <AUTHOR> https://press.aboutamazon.com/news-releases/news-release-details/amazon-announces-2-billion-climate-pledge-fund-invest-companies <comment><USER2> Suppose the investments turn out to be wildly successful. They turn $2b into $200b. They could still fail at the goal of slowing global warming.

The accounting value of an equity, especially a growth stage company, is never the same as its economic value. When in history has accounting (like a price) measured something real / believable about the environment?

One way to look at this is what is the environmental impact of Tesla? Amazon would have love to have invested in Tesla. That would have made this fund. Anyone would. But just because their accounting values goes up so and so, doesn't mean that's a measurement of their environmental impact.

My point is, equities are ill suited incentives for even economic profits, let alone environmental "profits."

<comment><USER3> > My point is, equities are ill suited incentives for even economic profits, > let alone environmental "profits."

What is your alternative proposal?

It's not like Amazon's $2B investment in climate tech is mutually exclusive with government initiatives or other climate research. It's another angle to approach the problem, using the tools they have at their disposal. I don't understand the desire to assume the most cynical takes on this initiative.

<comment><USER4> They could pay taxes and we could, as a nation, decide how best to coordinate efforts to fight climate change.

<comment><USER3> > They could pay taxes

It's false to claim that Amazon doesn't pay their taxes. Amazon pays taxes on profits according to the tax law, just like every other company. Amazon employees pay taxes on their paychecks, just like every other company's employees. Amazon's customers pay taxes on their purchases, just like customers of every other company's customers. Amazon generates a lot of tax revenue.

> and we could, as a nation, decide how best to coordinate efforts to fight > climate change

Like I said: Amazon's climate change actions are not mutually exclusive with government initiatives to combat climate change.

It's a false dichotomy, not to mention specious argument, to suggest that Amazon's $2B investment in climate change is somehow preventing the government from also investing in climate change intitiatives.

</comment></comment></comment></comment><comment> 1-6 How about them delivery trucks and waste cardboard boxes? Those data centers can also generate a lot of emissions. Amazon is throwing spare change at a massing problem they're involved in.

<comment><USER5> But you've gotta admit they're like 10 times better than the alternative.

I mean, their whole operation is optimized up the wazoo. Imagine the time saved, the carbon emissions saved when folks don't have to drive to and back to get their stuff.

I'm kind of hooked on this grocery delivery stuff too now, so much time and headache and gas saved.

<comment><USER6> > But you've gotta admit they're like 10 times better than the alternative.

Not if the alternative is bikeable and walkable cities with decent public transport, though.

<comment><USER7> OK. Let's say a magic wand is waved, and all of us Americans have bikeable and walkable cities with excellent public transportation. Let's say this happens literally overnight.

How do you expect this would change Amazon's logistics and how favorable they are for consumers? For my part, at the very least, I'm still likely to get a lot of things delivered. Local stores are very rarely cheaper for anything non-immediate and delivery takes much less of my time than going to a store and back.

At a guess, Amazon's still better than this alternative for many scenarios. Maybe not ten times better, but still better.

<comment><USER8> Perhaps, we should wave this magic wand to make you order less stuff? No tech can save us unless we start to consume less. Also, we should care less about optimising our time which we are likely to waste anyway on netflix and co.

<comment><USER7> I'm a very strange person in many ways. I personally prefer to be able to make my own choices about how I waste away my free time - Netflix, books, biking, walks, prayer, meditation, yoga, etc. Trading that in for spending more time to get my groceries (or toiletries, or dry goods, or similar) does not sound like an attractive choice to me.

I understand that this is an unusual personality trait. Still, I'm reluctant to give it up.

<comment><USER8> I don't think this is about "attractive choices". Either our lifestyles (and those who will live after us) are sustainable or not. If they are not, we should consider changing our behaviour.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> > Amazon announced it's on a path to run on 100% renewable energy by 2025, > five years ahead of schedule.

A possible silver lining of market domination is the ability to tackle issues like climate change without falling behind competitors who aren't making those harder choices. Unless this is all PR and Amazon is actively burning down their namesake or something?

<comment><USER10> In some cases, Amazon uses e.g. subsidied wind energy for new data centers. However, this means the renewable energy is not going to neighboring homes, which are instead still using non-renewables.

<comment><USER11> I think Google is not just being renewable energy, but also building new solar/wind farms to "offset" their use so this is not the case.

Maybe Amazon is doing something similar?

<comment><USER12> >Maybe Amazon is doing something similar?

Yep!

[https://sustainability.aboutamazon.com/environment/sustainab...](https://sustainability.aboutamazon.com/environment/sustainable- operations/renewable-energy)

Disclaimer: Amazon employee, not speaking on behalf of the company, just posting a link to something I am aware of.

</comment></comment></comment></comment><comment><USER13> Great to see checks getting written for climate projects again! For anyone who may be interested, there's a supportive climate focused community and interesting climate projects over at [https://collective.energy](https://collective.energy) (founder here)

</comment><comment><USER14> "If humanity wishes to preserve a planet similar to that on which civilization developed and to which life on Earth is adapted,... CO2 will need to be reduced ...to at most 350 ppm, but likely less than that - Hansen et al.(2008)" [1]

Neutral is not enough. So I hope they will be plowing large amounts of the fund into negative-emissions technologies. Either that or make large swathes of the planet into a disco ball.

[1] Young People's Burden: Requirement of Negative CO2 Emissions. [https://arxiv.org/ftp/arxiv/papers/1609/1609.05878.pdf](https://arxiv.org/ftp/arxiv/papers/1609/1609.05878.pdf)

<comment><USER15> Proactively attempting to change the planet to fit our presumed desires seems even more irresponsible than trying to simply negate our effect on the planet. And realistically, the planet was more like an iceball than it is today for a vast majority of the timeline of homo sapiens.

<comment><USER16> We've already started geo-engineering, just not intentionally.

<comment><USER15> Yes, and I said that intentional geoengineering may be worse than intentional. Especially when it is geoengineering beyond the scope of "make it seem like we don't exist"

</comment></comment></comment></comment><comment><USER17> Even if you view it cynically this is a smart plan. It's good PR, and they've got a better foot in the door for when those climate tech companies start getting a bunch more customers. And one way or another they're likely to start getting more customers, whether it's proactive or reactive.

</comment><comment><USER18> We need to go carbon negative. Microsoft announced a $1B commitment to go carbon negative by 2030. This sets the course for the rise of air mining technologies.

Interview with Microsoft CEO Satya Nadella: [https://www.youtube.com/watch?v=LeQxTI-s48A](https://www.youtube.com/watch?v=LeQxTI-s48A)

Carbon Removal Weekly Update on the Microsoft announcement: [https://www.youtube.com/watch?v=J429u4RxkI0&t=21s](https://www.youtube.com/watch?v=J429u4RxkI0&t=21s)

</comment><comment><USER19> Anyone have pointers to interesting companies in the climate tech space? Or tips for finding them?

<comment><USER20> A group of us built the open source website [https://climatescape.org](https://climatescape.org) for exactly this purpose. You can browse by sector and technology.

<comment><USER19> Super helpful, thanks!

</comment></comment></comment><comment><USER21> This whole industry needs a rebrand. Excess carbon pollute my neighborhood parks and community. The majority of the world's ecosystems are getting less diverse as a result of excess carbon. We're literally watching a great extinction event in real time.

</comment><comment><USER22> Yes, it's possible to be a capitalist and an environmentalist.

</comment><comment><USER23> This won't work. We need real regulation that penalizes polluters so much that it's no longer profitable to destroy the planet. We need social and cultural changes so that it's no longer hip and cool to fly around on jet planes and cars. This is mostly a political issue, not an issue of private industries in search of profits.

<comment><USER24> I could not disagree more. The second that renewable energy is a more economic and reliable way to consume energy it will easily become the default because there will be no reason not to. Private companies that could develop/build/scale such technologies and deploy them who seek profit are a viable method because the profit motive can deploy capital to that effect.

Government research and regulations could help speed the development of these technologies and hasten their tipping point through adjusting the cost. This is certainly not just a political issue and culture most often follows the past of least resistance. Telling people to stop consuming energy is a more quixotic endeavor than developing more economic renewables

<comment><USER25> " The second that renewable energy is a more economic and reliable way to consume energy it will easily become the default because there will be no reason not to."

You ignore the realpolitik of climate change. FYI certain fossil fuel producing states invest heavily to disrupt the transition to renewables.

Ask yourself why the Green Climate Fund, probably the most important fund of its type, is based is based in the arse-end or nowhere.

<comment><USER26> Certain ones do, sure. But not all, or even most. The vast majority of countries do not produce fossil fuels, so they all have an interest in reducing dependence on oil.

I know nothing about the GCF or the geography of Korea, but ~2 hours from Seoul doesn't really seem like the "arse-end of nowhere"?</comment></comment></comment></comment>


Reverse-engineering censorship in China [pdf] - <AUTHOR> http://gking.harvard.edu/files/gking/files/experiment_0.pdf

<comment><USER2> <tldr> _We conducted the first large-scale experimental study of censorship by creating accounts on numerous social media sites, randomly submitting different texts, and observing from a worldwide network of computers which texts were censored and which were not. We also supplemented interviews with confidential sources by creating our own social media site, contracting with Chinese firms to install the same censoring technologies as existing sites, and—with their software, documentation, and even customer support—reverse- engineering how it all works. Our results offer rigorous support for the recent hypothesis that criticisms of the state, its leaders, and their policies are published, whereas posts about real-world events with collective action potential are censored._ </tldr>

In other words, much like the west. A recent quote I think puts this in to context...

 _The preconditions of revolution exist in the UK, and most western countries. The number of active pre-conditions is quite stunning, from elite isolation to concentrated wealth to inadequate socialisation and education, to concentrated land holdings to loss of authority to repression of new technologies especially in relation to energy, to the atrophy of the public sector and spread of corruption, to media dishonesty, to mass unemployment of young men and on and on and on. [...] Preconditions are not the same as precipitants. We are waiting for our Tunisian fruit seller. The public will endure great repression, especially when most media outlets and schools are actively aiding the repressive meme of 'you are helpless, this is the order of things.' When we have a scandal so powerful that it cannot be ignored by the average Briton or American, we will have a revolution that overturns the corrupt political systems in both countries, and perhaps puts many banks out of business. Vaclav Havel calls this 'The Power of the Powerless.' One spark, one massive fire._ \- Robert David Steele, ex-Marine, ex-CIA, Open Source Intelligence Expert in _The Guardian_ , 2014-06-19

<comment><USER3> Very informative comment. Thank you!

Can you provide a link to the article in question? I've done a bit of Googling but am hitting false positives.

<comment><USER2> [http://www.theguardian.com/environment/earth- insight/2014/ju...](http://www.theguardian.com/environment/earth- insight/2014/jun/19/open-source-revolution-conquer-one-percent-cia-spy)

The quote is part of my fortune replacement @ [https://github.com/globalcitizen/taoup](https://github.com/globalcitizen/taoup)</comment></comment></comment>


Lightest vim config, have fun - <AUTHOR> https://github.com/mrytsr/light-vimrc <comment><USER2> "Lightest vim config, have fun" _deconstructing it_.

\- Autocommands are not assigned to one or more self-clearing group.

\- Everything here assumes Linux and bash; this is utterly stupid.

\- Lines 26-28 demonstrate a dramatic lack of understanding for something meant to be used by others.

\- Recursive mappings used instead of non-recursive ones for no reason.

\- WTF with line 34?

\- Line 36-48 are almost certainly there for reasons very specific to the author. They are useless for others.

\- Mixed short and full option names.

\- Line 69 may work for the author but it may not work for others.

\- Line 75 is useless.

\- Line 83 may work for the author but it may not work for others.

\- Lines 96-182… Oh nice! Crappy useless plugins _AND_ a plugin manager! The very definition of "light".

</comment><comment><USER3> If it meets the guidelines, this might make a good 'Show HN'. Show HN guidelines: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

</comment><comment><USER4> Please define "light".

Just a reminder, the _lightest_ config is no config.</comment>


Things You Think Aren't Sexist, But Really Are - <AUTHOR> http://www.ruthburr.com/things-you-think-arent-sexist/

<comment><USER3> I'll give a nice subtle example of sexism that I committed.

Back in the 1990's I helped teach a AI Systems course. It had a fair few female students - probably more than average for that sort of course actually now that I think about it.

Part of the work I did was helping in the practical labs. I thought I was doing a pretty good job - until one of the smarter students took me aside and pointed out a rather dumb unconscious behaviour of mine.

I was systematically helping the women more.

The men I'd help when they asked, or when they'd obviously hit a wall and were making no progress. With the women I'd step in almost as soon as they hit a problem. Anybody who has done teaching will tell you that students progress by solving their own problems - not by having the teacher step in and solve 'em for them. I was hurting those students progress by stepping in too early. I was stopping them learning.

I'd love to say that I immediately saw this as a problem... but I didn't. Because - y'know - despite the 70's being my first decade I was a pretty right on guy! I wouldn't be doing sexist things! Uh uh. Not me.

Fortunately some vague remnant of intelligence kicked in after about 20m of muttering (backed up by some personal memories of the problems that being helped too much can cause) and I accepted that I had fucked up and started fixing that behaviour. And thanked the student who had pointed it out. To be honest it's still something I watch myself for when teaching today. A chunk of my social and cultural programming is still trying to tell me that women need to be helped more.

And that - to some extent anyway - is the problem I see with some folk when the sexism topic comes up.

These days the majority of people I encounter don't think men are superior to women, or that women are incapable of being in technical fields, etc. Compared to 20 or 30 years back the incidence of "women in the home" or "women don't do computers" folk I encounter is very small.

The problem is with the folk like me ;-) The folk who think behaviour X can't be sexist - because they're not a sexist! Because the behaviour is almost - <USER2> even entirely - unconscious and shaped by the previous N decades of culture and society.

Things do change - but oh so slowly.... and those habits can be a complete sod to break.

</comment><comment><USER4> As a normal male I find it perplexing how anyone could find the majority of these things appropriate.

I can't speak for women, but it seems a little extreme to assert that women should be shielded from innuendo in case it reduces the males into a pack of sexually charged morons.

<comment><USER5> I'm a guy. That all offends me, too. The difference is that as a male I'm not so likely to have trolls from all over the web threaten me (with violence, no less) for saying it's inappropriate. There's the "a little extreme" for you and that's why everyone might seem like they're overreacting. They're not.

<comment><USER4> Certainly - the comments on the original article are eye-opening to say the least. Having never been to a tech conference I haven't experienced the type of atmosphere.

To restate my comment with that in mind; I don't think banning innuendo will solve any problems. Perhaps it might improve the atmosphere, but it won't fix the underlying attitude problems placed in the spotlight for the last week.

<comment><USER6> Innuendo is a really really hard one, because a lot of women appreciate a dirty joke as much as men do. I wish the solution could be "let's go ahead and all be grown-ups about it" but that doesn't seem to be working. So instead I'll say "let's think about the things we say and whether or not we're contributing to a sexually-charged environment at work events." Again, context matters: go ahead and make innuendoes among your pals in your own time, Lord knows I will.

<comment><USER7> As I've mentioned before, culture matters too. I've mentioned before that in France, sexual tension at the workplace is pretty commonplace in big cities. It's kind of a way of enjoying oneself at work among colleagues. It's typically viewed as harassment, though in some cases it can become so in France as well. Also, imagine the 70s when, at least young unmarried, people were a lot less preoccupied by what previous generations found sexually acceptable and not. Lots of people were more into romping off (of course this was before the wide spread of diseases) --it helped that in the late 60s easy contraception became available.

So, I think a lot of how sexual innuendo and repartee and double entendres is received is dependent on society and mores. I'm not saying contemporary America should emulate any other society, just saying it's not necessarily a given that our way of understanding this is the one way to view this.

Here's a different example. For some people male circumcision is seen as the right way and even extol health benefits --to others it's tantamount to mutilation and undue suffering such that some locales have considered banning the practice.

</comment></comment></comment></comment></comment><comment><USER8> It upsets me that we are only able to share sanitized parts of ourselves depending on the situation. I realize that it is a necessity to tone down our ancillary personality traits when among strangers and acquaintances, but setting arbitrary rules and guidelines about expected social behavior seems to be killing a fly with jackhammer -- neither effective nor practical.

I also sympathize with those that feel alienated in environments that _should_ be welcoming to people of all demographics. I would not personally partake in any of the things this person speaks of (with the exception of sexual innuendo and only if I was in known company). The parenthetical may seem hypocritical, but it's part of my personality. For better or for worse, toilet humor is something I find funny. Blame it on my upbringing or my public education, but it's a part of who I am. I cannot turn that off, no matter what the setting is.

Ultimately, if someone is making you uncomfortable or crossing any sort of personal boundaries you've set, it's your responsibility to let that person know. If they ignore and persist, it warrants elevation to a higher authority. We must remember that human interaction is _human_ interaction. There are too many variables involved to write a guide book.

All of that being said, I appreciate posts like Ruth's. Anything that helps me expand my own world view is invaluable and praised as a great asset. If the debacle at PyCon has taught me anything, it was that we all need to sit down and listen to each other.

<comment><USER6> I think the parenthetical actually is your most important point. All of the behaviors I've described are perfectly acceptable among known company, but unfortunately not everyone has that fine awareness. I also find sex jokes and toilet humor funny, but not in an environment that's already a sexual harassment minefield to me. I could take a step back and say "don't make innuendoes to people you don't know very well because it's rude" and that would also be true.

I agree that we should let people know when they transgress our boundaries, but putting the onus on women to constantly call people out on their behavior (which we should all do more, even though it's really hard and uncomfortable and scary to do) removes men's agency to also help with the problem - something I sincerely believe many men would like to do. I think approaching how we interact with a bit more thought and awareness of the unintentional impressions we may give off will go a long way for all of us, as humans, to interact better.

<comment><USER8> You've certainly given me some food for thought. I had not considered that it could potentially be a full time job informing those around you that they are being crude and/or disrespectful.

It also seems that we are agreement on everything except the agency of men. While I would personally call someone out if they were being overtly sexist or disrespectful to _anyone_ , I cannot expect others to do so. For some people, the thought of calling someone out in public is a terrifying proposition. Which, as I typed that, I realized that this was exactly your point as to why the onus should not be put solely on women. It seems that I have won and lost an argument with myself.

<comment><USER6> My point about the agency of men is more: I know so many men to whom I've pointed out things like the huge gray area presented by compliments, who were glad to have their awareness raised. Not saying men should be policing other people, just being more deliberate about their own language and actions. So, for that matter, should women.

</comment></comment></comment></comment><comment><USER9> _> Rule of thumb: if I think we're on hugging terms, I'll go in for the hug. Otherwise please don't touch me._

Looks like you're sexist too!

You should check your double standards at the door if you want to be taken seriously.

<comment><USER10> > You should check your double standards at the door if you want to be taken > seriously.

You say that as though male-male, female-female, male-female, and female-male interactions are all identical; they're not. I really don't think that she's saying she's going to indiscriminately grope people based on "whether or not she feels they're on hugging terms".

As far as a double-standard goes, it's a fact of (Western) life that a man going around offering unwanted hugs to women is seen as significantly creepier than a woman who offers an unwanted hug.

You're more than welcome to try to change that! Next time you receive an unwanted hug from a woman at a tech conference, make as much of a fuss as you want about it. Report it to the conference organizers.

<comment><USER6> Thanks tonyarkles, and to clarify: I'm not saying that it's OK for me to indiscriminately go around hugging people, either. I'm saying that in general the only people I hug are people that I know well enough to know that a hug will be OK from both sides.

<comment><USER11> That's not remotely what you were conveying in your original piece, despite whatever intentions you may have. Go read your original words about offering a hug vs what you just wrote as the parent of my comment -- they're just plain not the same.

That fine-grain material, your incorrect use of the word "sexist"/"sexism" and your stated desire to create a COMPLETELY de-sexualized environment in places that have thousands of people (PyCon this year had a larger population than the town in which I grew up) just makes this stuff really hard to read.

We're missing out on REAL sexism by people complaining about getting hit on and hugs and shit. It's depressing.

</comment></comment></comment></comment><comment><USER12> > Again, context matters: you're not just hanging out at a bar drinking with > your buddies, chatting up the attractive woman sitting next to you. You're > at an industry function, talking to women who are your industry peers. > They're simply not there to be hit on – even in ways that might not be > creepy in another setting.

Wait a second. Is the bar reserved by the conference organizers for the exclusive use of conference attendees? Or is this just the regular bar at the conference hotel, open to not only conference attendees, but attendees of other concurrent events there, and open to individual hotel guests there as not part of an event, and open to anyone who cares to wander in off the street?

If the latter, then I can't agree with some blanket rule against asking someone about considering a romantic relationship. Quite a lot of people, of all sexes, genders, and orientations, want romantic partners who are their peers, but must exclude the possibility of such partnerships with their co- workers because of the problems that can cause in their work place. Many such people (of all sexes, genders, and orientations) congregate at parties and bars at conferences because those are one of the few occasions to meet peers in a social situation that allows seeking romantic partnerships.

Use common sense. People who are at the bar because they have switched from "conference" mode to "social" mode and are looking to meet new people for social purposes should be distinguishable from people who are at the bar because they wanted to find a place that they could drink while they continued discussing the subject of the conference. The former should not ask the latter for dates. When in doubt, play it safe and don't ask.

</comment><comment><USER13> I agree with everything she wrote.

But please stop with the "Dude" this and "Dude" that.

<comment><USER6> The reason I use "Dude" is an abbreviation for "Type of Dude to Whom This Post is Addressed," as I say in the beginning of the piece - i.e. assuming you're already one of the good guys.

<comment><USER14> That's fucking bullshit and you know it. You did it to be cute, dismissive and to satisfy your passive aggressiveness. Dude.

<comment><AUTHOR> Dude. Y U SO grumpy?

<comment><USER14> Oh, did I sound grumpy? I was totally going for sweet and agreeable, but I guess I chose the wrong words.

</comment></comment></comment></comment></comment><comment><USER15> At most of these conferences many of the attendees DO go out to the local bars after the conference hours are over for the day. I assume at that point "normal" bar behaviour is OK?

<comment><USER16> I would have to say in the majority of cases the answer is still no. Let's face it, when a group of people head out to the bars after conference hours there is plenty of networking going on. People form business relationships and friendships that continue after the conference. A female shouldn't have to choose to tolerate unwanted sexual advances simply to participate in these bonding experiences.

<comment><USER6> Thanks match, and I agree. You're still not just out at a bar with buddies, you're there with people you've met at a professional event and the professional context should still apply. I think match says it well:

>when a group of people head out to the bars after conference hours there is plenty of networking going on. People form business relationships and friendships that continue after the conference. A female shouldn't have to choose to tolerate unwanted sexual advances simply to participate in these bonding experiences.

</comment></comment></comment><comment><USER17> I imagine this is going to be controversial:

> _Listen, guys. You have to stop trying to pick up women at conferences. You > just have to stop doing it. Again, context matters: you're not just hanging > out at a bar drinking with your buddies, chatting up the attractive woman > sitting next to you. You're at an industry function, talking to women who > are your industry peers. They're simply not there to be hit on – even in > ways that might not be creepy in another setting_

I think the problem here is that hitting on someone is _sexual_ , not _sexist_. However, in an environment where the gender balance is so skewed, what is _sexual_ almost unavoidably leads to a _sexist_ atmosphere.

To put it another way, the problems of being hit on apply to gay men. It is not inextricably linked to male-over-female dynamic.

So I agree with the overall intent of the OP here. I think many reasonable guys would be defensive about acting like normal sexual creatures...however, it is important to not vilify sex, but to point out how it can lead to unintended consequences in this kind of environment.

So rather than saying that the "pickup game" is sexist, I would just say that it is inappropriate at an event where the participants are ostensibly there for professional reasons, no matter if you're male, female, gay or straight

<comment><USER18> I think you've made an important distinction here. An action is sexist if it is a material discrimination against a person because of their gender. However, there are emergent patterns in environments with large gender- asymmetries which cause one gender to have a very different experience than the other.

One man making an advance on a woman might be okay, but several making the same advance on the same day is going to become very uncomfortable. Do we call this sexist? No individual is making any action to cause discrimination, there are simply environmental factors that create an imbalance.

I think a lot of the issues surrounding women in tech are emergent from this asymmetry, and not strictly "sexism" as I have defined it above.

<comment><USER6> Hi guys, a lot of people have made the point that the behaviors that I'm calling out are not so much "sexist" as they are inappropriate, sexual and in general skewed toward women. I agree, "sexist" may not capture all of the shades of meaning I address in the post. Inappropriate captures it better. I'll jump in and update the post to say as much later today. Really appreciate your thoughtful responses.

</comment></comment></comment><comment><USER19> > not that that stops some men from gaily trampling over that line

Women don't step over the line? This is sexism.

<comment><USER6> That's true, women do, but not having been on the receiving end it's harder for me to speak on that, and it's not what the post is about. I think that we can discuss the behaviors of one group of people without the implied assumption that they're the only ones who behave in that way or that every other group is inherently blameless.

<comment><USER10> It frustrates me to no end that people can't sit and talk about "things men do that make women uncomfortable" without diverging off into talking about double standards, fairness, etc.

In the 5 years that I hung around the university, I can remember exactly once when a woman made an unwanted advance towards me. I told her that I wasn't interested, she looked a little hurt and backed off, and things were fine. In no way did I feel threatened.

Looking at it from the other side, I know I definitely made more than one woman uncomfortable with unwanted advances (I was pretty awkward back then and didn't even know what I was doing). And I definitely observed (and sometimes stopped) very obviously uncomfortable situations where male classmates were being wildly inappropriate and either oblivious to that or just not caring.

So yes, there's the possibility that there could be negative female-male interactions at conferences, but _that's not the discussion_ we're having. And it's not really a problem that is facing our industry to anywhere near the same scale as "men doing things that make women feel uncomfortable".

Thanks Ruth for having the patience to throw your hat in the ring. Hopefully, eventually, people will get it :)

</comment></comment></comment><comment><USER20> i wonder how often things like "the pick up" happen in other industries as well. I would imagine women just see it in practice more often in the tech industry simply because of ratios. When you're the only woman there you're more likely to get hit on 500 times than if there were 500 women there. I also wonder if it's less acceptable in tech industries because you have bright women who would rather be respected because of their minds than their bodies, and are willing to say something about it. Not to mention, how often does the whole "boss having affair with secretary" happen? The problem is systemic everywhere. I just have a feeling it's more pronounced in tech because the same women see the problem over and over, versus a lot seeing it here and there.

<comment><USER5> Most of us here are probably geeks. We're geeks who work closely, collaboratively with other geeks. But we're not hired for our social skills. I think that probably makes a lot of human relation problems more pronounced in tech. Unintentionally making someone uncomfortable is probably just one of the symptoms.And no, I have no data to back that up; just anecdotes and conjecture.

</comment></comment><comment><USER21> Since the author accepts that these things are not sexist, but rather inappropriate - can the title be updated? Or why not call them racist, evil, etc?

</comment><comment><USER22> > But you, Type of Dude to Whom This Post is Addressed, would never do > something like that.

"We really tie the room together..."

</comment><comment><USER23> Great post and right on the money.</comment>


Show HN: Run puppeteer within an electron app - <AUTHOR> https://github.com/TrevorSundberg/puppeteer-in-electron <comment><AUTHOR> This version isn't any different than the normal puppeteer you use with Chromium. However, doing a quick search I found these two methods which you may be able to use to automate uploads: [https://github.com/puppeteer/puppeteer/blob/master/docs/api....](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class- filechooser) [https://github.com/puppeteer/puppeteer/blob/master/docs/api....](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#elementhandleuploadfilefilepaths)

</comment><comment><USER2> Can I use this to automate file upload?

Puppeteer doesn't support automatic file upload (or drag and drop).

I currently hack the c++ version chrome browser and trigger file uploading with c++. Can this be done with this Electron version?</comment>


TAPIR: A new high-performance, transactional key-value store - <AUTHOR> https://github.com/UWSysLab/tapir <comment><USER2> Great to see fresh ideas! One thing I don't like in the presentation is that tapir is presented as doing better than what is out there without stating the conditions. First off there's quite a bit of hand-waving when it comes to leadership bottlenecks -- please assume that sane sharding is occurring. I'm not entirely sure transactions spanning partitions is something unique to say paxos. The abort rate vs. contention seem off. looking at the paper all the nodes are in a single datacenter. I would love to see these numbers where tapir is spread across larger geographical regions. My suspicion is that at higher latency will negatively impact the abort rate more so than with a strong leader. What about poor clock synchronization conditions? What about testing with a variety of client latencies? Since the client is effectively acting as a leader in tapir, the client is, in some ways, contending with other clients and the abort rate may be correlated to client latency. I don't think high-latency clients observe this same correlation than with a strong leader. I wish more of the compromises were presented.

<comment><AUTHOR> The leader bottleneck will continue to exist even if there great sharding because the leaders simply process more messages than the replicas, so TAPIR will allow each shard to support more throughput.

The paper has an evaluation for multi-data-center replication in Figure 12. We assume that the clients are web servers, so they are always close to one of the replicas, but not all of them. The result we found is basically that TAPIR performs better in the multi-data center case except when the leader is in the same data center as the client. So it depends on whether you can always guarantee that the leader is in the same data center as the client.

The abort rate continues to essentially track the latency needed for commit. So, TAPIR reduces the abort rate compared to OCC because it reduces the commit latency. At very high contention, locking is likely to make slightly more progress, but no systems with strong consistency will be able to provide high performance. If you are interested in some other ways to optimize for the high contention case, take a look at our work on Claret: [http://homes.cs.washington.edu/~bholt/projects/claret.html](http://homes.cs.washington.edu/~bholt/projects/claret.html)

We also tested with high clock skew. The paper notes, "with a clock skew of 50 ms, we saw less than 1% TAPIR retries." Since the clients can use the retry timestamps to sync their clocks, it only adds an extra round-trip, so it still leaves TAPIR with the same latency as a conventional system, even in cases of extremely high clock skew.

</comment></comment><comment><USER3> The key insight: "... existing transactional storage systems waste work and performance by incorporating a distributed transaction protocol and a replication protocol that both enforce strong consistency. Instead, we show that it is possible to provide distributed transactions with better performance and the same transaction and consistency model using replication with no consistency."

The full paper is here: [http://delivery.acm.org/10.1145/2820000/2815404/p263-zhang.p...](http://delivery.acm.org/10.1145/2820000/2815404/p263-zhang.pdf)

<comment><USER4> Interesting. Can you elaborate on this? I am not sure what "inconsistent replication" means.

<comment><USER5> It means that operations don't get executed in the same order on every replica. If the systems state depends on the ordering of operations, then each replica might be in a different state for the same set of operations.

"Consistent replication" would be using a protocol like Paxos to have the replicas decide on a single order of operations.

<comment><USER6> Huh... isn't that required for being "transactional"? I should probably read the paper...

<comment><AUTHOR> No, that was our key insight. Basically, you can think of it as, using something like Paxos requires all replicas to run the same code. So every replica checks for transaction conflicts. However, you actually only need one replica to detect a conflict, so there is no reason for every replica to run the same checks -- this is wasted work. Instead, we just make sure that each conflict is checked by at least _one replica_.

The other interesting conclusion is that there are other workloads like this. For example, it is possible to build a reliable and better performing lock server in this way as well (and there is an implementation in the github repo). So, you'd get something similar to Chubby, but where the latency to the server is only a single round-trip in the common case.

</comment></comment></comment></comment></comment><comment><USER7> I found this video a couple links in, the speaker I think is Irene Zhang, listed for many of the commits on that repo: [https://www.youtube.com/watch?v=yE3eMxYJDiE](https://www.youtube.com/watch?v=yE3eMxYJDiE)

<comment><USER8> And also the poster of this item, presumably.

</comment></comment><comment><USER9> "enabling TAPIR to provide the same transaction model and consistency guarantees as existing systems, like Spanner, with better latency and throughput."

Oh, hell yeah! Now that's great stuff. Can't wait to see the next step done by this or another team: building an alternative to the F1 RDBMS that Google built on Spanner. Would give CochroachDB some competition.

<comment><USER10> I'm the author of GoshawkDB.

I've just been watching the talk on this at [https://www.youtube.com/watch?v=yE3eMxYJDiE](https://www.youtube.com/watch?v=yE3eMxYJDiE). GoshawkDB has a very similar design wrt the messaging and replication design. In fact, in some places, it appears that GoshawkDB's design is a little simpler.

There are obviously many differences too: for example GoshawkDB runs transactions on the client, GoshawkDB uses Paxos Synod instead of 2PC, and GoshawkDB clients only connect to one server so there are 2 extra hops, but that's a constant so from a scaling pov, it should behave the same.

One of the biggest differences is GoshawkDB uses Vector Clocks (that can grow and shrink) rather than loosely synchronized clocks.

This TAPIR work does look great - I had no idea that it was ongoing. I'll read through the paper too, but it's great that GoshawkDB has so many design ideas in common.

<comment><USER9> Very interesting. I went to search for your stuff only to find I had this bookmark:

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

So, I knew it was interesting and possibly great work but didn't have any time to look at it. I'll move it up the backlog a bit. Maybe at least give the papers and stuff a good skimming tonight. :)

Note: Parallel, ongoing, similar work going unnoticed is a huge problem in both IT and INFOSEC. I have a meme here about how we constantly reinvent the same solutions, make the same mistakes, or move at a slower pace due to lack of connections with similar work. I keep proposing something that's like a free and open combo of ACM or IEEE with members who are academics, FOSS coders, pro's... people that _contribute_ at least in writing. Stash papers, code, and forums there. So, odds of serendipity increase. Thoughts?

<comment><USER10> Heh, definitely! I could ramble for hours about how there are so many disincentives to share anything until launch - the whole industry really isn't set up to actually make progress. However, multiple independent co-invention of stuff is still valuable from a validation point of view. The worst bits I see are when something from 20 years ago gets reinvented. I have emailed Irene just to see if there's anything or anyway to collaborate.

<comment><USER9> Great! It's awesome to see you taking the initiative! Might be an exception in the making.

Im about to leave for work but quick question. What I want to see is an open equivalent of Google's F1 RDBMS: the best one. Does yours already provide its attributes, is it more like Spanner jnstead, or what? Aside from CochroachDB, where is OSS on a F1 competitor?

<comment><USER10> So GoshawkDB doesn't have an SQL engine currently, so in that way it's probably not comparable with F1. GoshawkDB stores and accesses an object graph. Hopefully the howtos on the website will help people get into the mindset.

I'm not sure if it's worth trying to compare anything to Spanner or F1 because unless I'm mistaken, no one outside of Google can use F1 or Spanner - they're not released. So who knows what the performance of these things actually is? There's no way to verify the claims made in any Google paper.

<comment><USER9> "So GoshawkDB doesn't have an SQL engine currently, so in that way it's probably not comparable with F1. GoshawkDB stores and accesses an object graph. Hopefully the howtos on the website will help people get into the mindset."

Gotcha.

"I'm not sure if it's worth trying to compare anything to Spanner or F1 because unless I'm mistaken, no one outside of Google can use F1 or Spanner - they're not released. So who knows what the performance of these things actually is? There's no way to verify the claims made in any Google paper."

I think it's worthwhile for these reasons:

1\. They describe it in enough detail in their papers for comparisons or maybe clones to be made.

2\. That's led to competitors or open-source clones of tech before. Remember map reduce?

3\. They've deployed it operationally.

4\. Since when can Google not handle a backend tech it claims to be able to do? I thought their rep was solid on that stuff.

So, Google already as a strongly-consistent, scalable, multi-datacenter RDBMS with NoSQL-like performance. If good on enough workloads, that's the best thing I've heard in that category since NonStop SQL. The GPS thing, while brilliant hack, might be hard for adoption. An improvement area CochroachDB people are already targeting. A full clone or competitor could rock DB world as a great alternative to Oracle clusters or NonStop for mission-critical workloads where some delays were tolerable.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Thank you for publishing the code for your paper. It's an excellent contribution by itself, and should help people understand and evaluate the ideas. Are you going to publish the TLA+ specification as well?

</comment><comment><USER12> Reminds me of Hyperdex which has consistent replication through value dependent chaining but only enforces ordering of commits when needed.

</comment><comment><USER13> You claim it's high-performance, and you provide no benchmarks.

How does it compare with Redis, Aerospike, Tarantool, Couchbase/MemBase, Memacached, VoltDB, LevelDB, Kyoto Cabinet, Riak, Cassandra, RocksDB, LMDB, Neo4j, HBase, ArangoDB, Voldemont, FoundationDB?

<comment><AUTHOR> Figure 14 in the paper gives comparisons with MongoDB, Redis and Cassandra using YCSB. The git repo has the YCSB bindings for TAPIR, so you can run TAPIR against any of the other systems that also have YCSB bindings.

<comment><USER13> Thanks. If it really outperforms Cassandra, it's pretty impressive.

<comment><USER14> I don't think there's any claims that it did. The paper and the talk both made it clear that Cassandra outperformed it. I think MongoDB is the only one it beat. But I think the point is that it's able to perform well while being consistent, not that it's faster than "weakly consistent" storage systems like Cassandra.</comment></comment></comment></comment>


How My Book Launch Went - <AUTHOR> http://journal.stuffwithstuff.com/2014/11/20/how-my-book-launch-went/ <comment><USER2> Small publisher of how-to books here. Congratulations on the launch -- you really hit one out of the park! I like approach that you took to producing this title, which clearly is a labor of love.

Looking at the data you shared, the 8,000-strong email list clearly made a major impact on the launch. How long did it take to go from 0 to 8k, and what sort of signup form or CTA did you use?

One other question: How have direct sales been on Smashwords? I don't use Smashwords (until recently, they required the title page to give special credit to Smashwords, which rubbed me the wrong way) but since they removed that requirement I have been thinking of adding it as a standalone channel for _In 30 Minutes_ guides. I distribute directly through Amazon, Createspace, Lightning Source, iTunes/iBooks, B&N, Kobo, and a few other obscure sites (txtr and Libiro). PDFs are sold through Gumroad.

One suggestion I have for HNers who have read the book is to leave honest reviews wherever you bought it -- this can really help the long tail of sales. Amazon marks reader reviews from customers with "Verified Purchase," which gives those comments more weight in the eyes of prospective customers.

<comment><AUTHOR> > Looking at the data you shared, the 8,000-strong email list clearly made a > major impact on the launch.

Yeah, I think so, though I'm not savvy with analytics enough to tell where readers are actually coming from.

> How long did it take to go from 0 to 8k,

I added the mailing list blurb to the site around 2013-08. Over the next eight months, I wrote ten chapters where each one got the site a bump of traffic and drew a bunch of sign-ups.

> and what sort of signup form or CTA did you use?

I don't know what a CTA is, but I used mailchimp and tweaked the sign-up form myself. It's a little different now that the book is done, but you can see what it used to look like here:

[https://web.archive.org/web/20141018101559/http://gameprogra...](https://web.archive.org/web/20141018101559/http://gameprogrammingpatterns.com/)

> One other question: How have direct sales been on Smashwords?

OK, but not great. While I totally get people who don't like walled gardens and just want to buy a _file_ , the reality seems to be that most shoppers go through managed eBook stores like Kindle, iBooks, etc.

I mainly used Smashwords because they seemed like an easier path to get the book into iBooks and a bunch of smaller marketplaces I couldn't be bothered to manage manually.

> PDFs are sold through Gumroad.

Huh. In my brief research for where to sell the PDF, that didn't turn up. I'm using payhip, which seems nice so far.

> One suggestion I have for HNers who have read the book is to leave honest > reviews wherever you bought it -- this can really help the long tail of > sales.

YES YES YES. Buying one copy is nice. Writing a review is like buying N copies.

</comment></comment><comment><USER3> I bought this book and I'm thoroughly enjoying it and learning quite a bit (caveat: I am not a game programmer specifically but I wanted to learn more about the patterns and strategies in game design so I don't have much of a frame of comparison but I still find the book very well written and informative).

<comment><AUTHOR> > caveat: I am not a game programmer specifically but I wanted to learn more > about the patterns and strategies in game design

No-so-secret secret: Most of the patterns in the book are equally useful outside of games too. I just (1) thought game examples were a lot more fun to write and read about and (2) thought game developers wouldn't take it as seriously unless it was directly targeted towards them.

</comment></comment><comment><USER4> I, like quite a few others around here it seems, read the web version when it was posted to HN a while back. It was so good that I actually ditched my daily cycle commute for a couple of weeks so I had the chance read little snatches on the train.

For those that haven't read it, have a look - I'm sure you'll be hooked. The content (in terms of the patterns) is really nice and very clearly explained. Beyond that though, the style and humour is absolutely spot on. It doesn't feel like a technical read - it's more like an adventure.

I'm going to buy a copy out of support, and honestly, I'll probably read it again.

<comment><AUTHOR> Wow, thank you for this!

</comment></comment><comment><USER5> I bought the book and I have to say I really like it. It's very nicely written. Hopefully I'll be able to post some game on HN myself in a few months, using this book.

<comment><AUTHOR> Thank you!

</comment></comment><comment><USER6> Another great writeup - I'm only one data point, but I've been waiting to ask someone for a copy for Christmas, so you might hopefully see another spike around then.

<comment><AUTHOR> Yeah, I was wondering if Christmas would give me a bump. I did try hard to get the book done before the end of this year just in case.

<comment><USER7> One marketing tip I've learned:

Now that you've launched, you should no longer approach marketing as a singular or continual event. I think this is a mistake many startups make. Do campaigns. Think of a multi-pronged approach (coupons, promotions, blog posts, etc) each towards a singular splashy event. Then keep repeating this a few times on a 2 month basis, or how ever long you can invest.

You can see Patio11 does this with his business and holidays are a big part of his (original) business.

You can also combine this with business dev/partnerships as well. Do you know events that are coming up? Work together with them to help cross-promote. Do a special landing page and coupon for attendees. Maybe do a talk.

This creates a repeatable process to boost sales, where you can refine your techniques and measure your time vs ROI for a particular campaign. Then you can compare which campaigns worked the best.

It's also much more fun than simply A/B testing headlines.

</comment></comment></comment><comment><USER8> I love your book, I got it when you it was up for free. That being said, I mostly consult the webpage version. Thanks so much for creating this. I feel guilty now.

<comment><AUTHOR> > That being said, I mostly consult the webpage version.

That's absolutely, totally fine. Buying a copy is something to opt into for people who specifically want those formats or want to reward me for writing, not an obligation you karmically incur for reading the web site.

I get real personal value just by having readers and having felt like I reached a broader audience and made more of a human connection. Cash is nice too, but it's not the only incentive.

</comment></comment><comment><USER9> As the founder of a "game engine startup", I found this post extremely useful. I'll be purchasing your book if only to support your marketing research.

<comment><AUTHOR> Awesome, thanks!

</comment></comment><comment><USER10> Congrats on the great launch Bob! Somehow I missed the entire thing, so I am buying the book now :)

<comment><AUTHOR> \o/

</comment></comment><comment><USER11> "design patterns are spoonfeed material for brainless programmers incapable of independent thought, who will be resolved to producing code as mediocre as the design patterns they use to create it." \- christer ericson

hah, congrats bob, awesome to see your book released. how random running into this on hacker news, been almost a decade. glad your enjoying google! will never forget the days of ZOD!!

<comment><AUTHOR> "A new version of ZOD has been released and is ready for you to kneel before it."

(For those confused, I was the lead on the level editor for Superman Returns: The Videogame. We named it ZOD, naturally.)

</comment></comment><comment><USER12> [http://gameprogrammingpatterns.com/contents.html](http://gameprogrammingpatterns.com/contents.html)

</comment><comment><USER13> I am curious about your experience. Would you name any games that you worked on?

<comment><AUTHOR> I worked at EA Tiburon for eight years. I worked directly on Madden PC 2002, Superman Returns: The Videogame, and Henry Hatsworth in the Puzzling Adventure. I also (like most of the studio) got sucked into Madden X360 2006, the first third-generation (X360/PS3) version of Madden and also helped out on Madden 2008.

Much of my remaining time was spent on internal tools and tech. I worked on our UI authoring tool for a while, then on some Flash rendering stuff and other random shenanigans.

Hatsworth was, by far, the most fun project I was on. If you're curious, I wrote a document about the level editor I created for it here:

[http://imgur.com/a/PIFUk](http://imgur.com/a/PIFUk)

(It's funny looking at it now and realizing how much the formatting of that document looks like the book!)

<comment><USER13> Thank you very much for answering and for sharing the document. I am currently working on my first platformer so I am eager to read everything I can find about making good platformers.

</comment></comment></comment><comment><USER14> What did you have used to make the content on your ebook readable online? CMS?

<comment><USER5> I think the content was initially written for the site using Markdown and later converted into a book. The author mentions in the book somewhere that it was written with Markdown.

<comment><AUTHOR> Exactly right. I slapped together a little crude Python script that converts the markdown to HTML and wraps it in some boilerplate HTML.

[https://github.com/munificent/game-programming- patterns/blob...](https://github.com/munificent/game-programming- patterns/blob/master/script/format.py)

</comment></comment></comment><comment><USER15> why give away the web version?

<comment><AUTHOR> Why not? Hosting is cheap and my goal isn't to maximize revenue, it's to maximize personal gratification. I get the latter from free readers as well as paid ones.

Maybe the free version cannibalizes sales, but I'm certain the book is much higher profile and reached a much larger number of potential customers because I gave (and continue to give) the web version away for free.

<comment><USER16> I would argue that providing the book content for free as a website will sell more books vs only having the for-sale version.

Especially with a niche like this, until you're an established author that people will just buy because it was written by you, people will require some sort of evidence that you know what you're talking about. Is the book worth it? Reviews are good. Better? being able to skim or read the book before buying.

Due to how temporary websites are - I think the physical copies and the ebooks are a sound purchase for people that will want to be refer to this book at some point in the future.

</comment></comment></comment><comment><USER17> bookmarking for checking out later this evening.

</comment><comment><USER18> No offense but every comment in this thread reads like a shill.</comment>


GoVPN – simple secure free software virtual private network daemon - <AUTHOR> http://www.cypherpunks.ru/govpn/

<comment><USER2> In case you're looking to build your own and rely on existing software, we built an easy way to create a VPN and deploy it to digital ocean or rackspace, in a single click.

Check it out here: [https://www.tinfoilsecurity.com/vpn/new](https://www.tinfoilsecurity.com/vpn/new)

<comment><USER3> Man that page looks fraudulent. Doesn't even mention what kind of "VPN" is used other than it is supposedly "open". So, what client can I use? Which devices or operating systems does it support? Not even the FAQ addresses any of it.

And with all that one is expected to trust ones key to that site? (the way the page is setup I guess the target audience can not even be expected to know what a "key" is, or why they would even need to trust that site even if they did use it)

At the very bottom, in the fine-print, there is a link to a blog post. Great. Start with that! Move the whole page to the bottom of the blog post. "But that will hurt adoptability". GREAT! No one in the in their right mind should be "securing their internets with some cloud thing that some dude recommended" in under 30 seconds anyway.

This is only encouraging people being gullible which is kind of ironic since the aim seems to be to help people not trusting public wifi.

<comment><USER2> So, in a different world, you'd be right. In this case, we originally built this for Sochi so journalists could use a VPN. Journalists are not going to have any idea how to build a box, ssh in, run a script, etc. We later changed the copy to be related to DEF CON, to keep it current, but yeah.

</comment></comment></comment><comment><USER4> People looking to set up their own VPN server are missing the point. Your run- off-the-mill hoster is not any more trustworthy than a run-off-the-mill VPN provider so you aren't gaining anything security-wise. In fact you are losing (slightly) by having your traffic exiting the tunnel stick out where with a shared IP extra effort (potentially non-trivial) would be required to tell your traffic apart from that of other users. A subscription with a reputable VPN provider costs less or as much as a VPS with a reputable VPS provider, so you aren't gaining anything cost-wise either.

If you do it for the skillz, sure, but otherwise it's completely pointless.

Edit: Just to make it clear, that wasn't directed at the project here, but at some of the comments in this and other VPN-related threads. Another VPN protocol and implementation is always cool. (although Windows users need love too)

<comment><USER5> You've got some good points there, bu not everyone is a freedom fighter or overly concerned about their privacy up to that level. Some people just don't want to be snooped on by your casual script kiddie while on public wifi.

<comment><USER6> That or having your web browsing data mined by your home ISP.

</comment></comment></comment><comment><USER7> Not much point in serving .sig's and your PGP key if its over HTTP. Unless you're already in someone's WOT, there's nothing to verify against. At least if you use HTTPS we can somewhat trust that we're being displayed the key you think we should be displayed.

<comment><USER8> > Unless you're already in someone's WOT, there's nothing to verify against.

Somebody's been trying to fix that with [https://keybase.io/](https://keybase.io/)

<comment><USER9> If anyone is interested, I have 3 keybase invites to hand out. Contact is in my profile.

edit: None left, sorry!

<comment><USER10> I have 7 invites. contact is also on my profile.

edit: they are all gone.

<comment><USER11> I have 5 invites, contact in my profile.

Edit: invite count update

<comment><USER12> I've got 15 more if jnthn's run out :)

<comment><USER13> I also have a pile of invites.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The blog cypherpunks.ru written in Russian contains a lot of spelling and grammar errors, as well as typos, which to me indicates the quality of the content in general.

<comment><USER15> Documentation and code are two different things.

<comment><USER16> Indeed they are but I'm not sure how the refutes what snitko said.

</comment></comment></comment><comment><USER17> I do not _care_ what language this is written in, and no user should care either. Stop this.

</comment><comment><USER16> Why use this and not, say, OpenVPN?

<comment><USER18> Presumably simplicity? OpenVPN is fairly complex and does a great job, but its power is clearly exposed to users, who may not need most of it.

<comment><USER16> Good point. How can we be sure this is secure enough to use? OpenVPN is widely used, so the thought is any issue with it would be more likely to be found.

</comment></comment></comment><comment><USER19> Anyone knows the best current way to install a VPN on Ubuntu?

I've tried several times, it's way more difficult than I thought, and when I've some success, performance is, at best, disappointing. And that's using 1GB/s dedicated server.

<comment><USER20> sudo apt-get install network-manager-vpnc network-manager-pptp network- manager-openvpn # for cisco vpn, microsoft or openvpn

Configure from the panel. I use ThreatSpike labs. Too easy.

</comment></comment><comment><USER21> I haven't personally used it, but I've heard nothing but good things about SoftEther:

[https://www.softether.org/](https://www.softether.org/)

It supports SSL VPN to boot.

<comment><USER22> It scares me a bit that it has 4.15 times the codebase size of OpenVPN, but was only released 2 years ago.

I already think of OpenVPN as not being simple enough.

</comment></comment><comment><USER23> For what uses should I prefer this over plain old OpenVPN?

<comment><USER18> Presumably 'I want a VPN, I don't need 90% of what OpenVPN offers, and I don't want to spend a huge amount of time figuring out how to OpenVPN quickly and easily.'

<comment><USER23> OpenVPN is just an apt-get install away, and the defaults would suit you fine in if you don't have any special needs. You do need to configure what IP nets you want to tunnel (unless you use it in bridging mode), but that's it.

</comment></comment></comment><comment><USER24> it's strange to use UDP as only protocol. For most web activity TCP is better (and UDP is not suitable at all).

</comment><comment><USER25> SourceForge?! how about hosting a zip on geocities? :-)

<comment><USER26> As an occasional open source producer, I really can't stand when people piss and moan about _somebody else 's_ charitable software contributions.

<comment><USER27> Though he didn't complain about the software itself, he complained about the way it's hosted. Different concerns. And in today's world, SourceForge is liked less than GitHub from what I've noticed.

<comment><USER28> Sourceforge has inserted adware into projects' downloads in the past. It's also a ghost town and I wonder what sort of resources (if any) they have working on the site to keep it secure. This is a big concern when the software they're hosting is as security-sensitive as a VPN package.

<comment><USER29> Adding adware to gzipped and signed source code would be a bit hard. That's the onl;y thing the authors serve from sourceforge.net.

<comment><USER30> I think he's referring to this: [http://sourceforge.net/blog/today-we-offer- devshare-beta-a-s...](http://sourceforge.net/blog/today-we-offer-devshare- beta-a-sustainable-way-to-fund-open-source-software/)

Their Senior Director of Business Development, Roberto Galoppini, said this in the comments to the link above:

"Developers opt in and are compensated, they are in control both of the installer behavior and of what sort of secondary offerings will be presented to their user base. Moreover they are not asked to integrate their application with a third parties' piece of code, and maintaining a bundled and unbundled version is trivial for them.

End-users are provided with a transparent installer behavior, all programs are malware-free and honestly described. All uninstall procedures are extensively tested, both for open source applications and third parties' offerings."

<comment><USER31> > Senior Director of Business Development

Ah, "professional management"… the beginning of the end of any good company.</comment></comment></comment></comment></comment></comment></comment>


Explorable Visual Analytics: Visualize, Understand Large Complex Datasets - <AUTHOR> http://www.cs.cmu.edu/news/web-tool-helps-people-visualize-make-sense-large-complex-datasets <comment><USER2> Not anything to do with this CMU effort, but I've been working on a tool for visualization/exploration of large time-series data sets (where time-series are identified by a set of key/value pairs). I wasn't going to tell anyone for another week or so (want to do a blog post, screen-cast, fix some bugs first..) but it seems appropriate to mention it here.

[http://www.datavstime.com/](http://www.datavstime.com/)

By default, it connects to a simulation data source which has limited functionality. If you have a prometheus database, you should point it at that (note: I never see your data - it remains local to your browser).

It's still rough around the edges, quite buggy and there is lots of optimization work to do, but it's getting useful I think.

<comment><USER3> Damn. This is rad.

</comment></comment><comment><USER4> Interactive demonstration: [http://eva.cmucreatelab.org/](http://eva.cmucreatelab.org/)

</comment><comment><USER5> For further mappings of big multidimensional datasets (datacubes) to heatmaps: [http://vis.stanford.edu/projects/immens/](http://vis.stanford.edu/projects/immens/) , [http://www.nanocubes.net/](http://www.nanocubes.net/), and [http://www.mapd.com/](http://www.mapd.com/) . I'm not as familiar with the GIS space, but suspect a bunch there too.</comment>


In App updates in Android - <AUTHOR> https://blogs.halodoc.io/in-app-update-on-android-at-halodoc/ <comment><USER2> Nice post, gives clear insights and strategy on how we can adopt in-app app update.</comment>