GlobalSign is experiencing OCSP issues causing certificate errors in Chrome - <AUTHOR> https://twitter.com/GSSystemAlerts/status/786508531159760896 <comment><AUTHOR> Currently Chrome reports "This certificate has been revoked" for any certificate signed by GlobalSign or AlphaSSL.</comment>


The spread of true and false news online - <AUTHOR> http://science.sciencemag.org/content/359/6380/1146.full <comment><USER2> > It took the truth about six times as long as falsehood to reach 1500 people > and 20 times as long as falsehood to reach a cascade depth of 10. As the > truth never diffused beyond a depth of 10, we saw that falsehood reached a > depth of 19 nearly 10 times faster than the truth reached a depth of 10

The study attributes most of that force multiplier to novelty and surprise, where falsehood will always have an advantage; important things that actually happen are often not surprising. Maybe people who wrap truth in clickbaity headlines are actually heroes, trying to even out the playing field... I never really thought of it that way before.

<comment><USER3> Here's an antidote:

[https://www.theknifemedia.com/](https://www.theknifemedia.com/)

<comment><USER4> Pseudo-objectivity with pretty analytics that just happens to have a glaring selection bias and where everything is neatly explained by self-appointed analytical experts. In other words, just like existing media but with catchier design.

<comment><USER3> _Pseudo-objectivity_

They are at least directly addressing the mechanism of emotive language discussed in _Manufacturing Consent_. It looks to me, like they're doing a much better than average job at that.

 _glaring selection bias_

Pretty much a part of the human condition. At least they're trying.

</comment></comment></comment></comment><comment><USER5> This study is suspect because it does not reference propaganda history or research. It does not even use the word. Also the mechanism of defining truth is suspect: it is always possible to find several sources that agree on something and several others that disagree. There seems not much emphasis on primary sources.

Please research the history of propaganda in the United States for yourself. See articles on Edward Bernays and documentaries like The Century of the Self. Research terms like "the fourth estate".

</comment><comment><USER6> Nothing has changed over the centuries but the mechanisms by which propaganda is spread. The term "fake news" is itself propaganda, playing to people's innate sense that they are not, in fact, irrational and emotional beings, and are somehow better than the "morons" who fall for false stories.

The sad truth is that even the smartest of us are, in some degree, intellectually lazy and hold at least one false belief. The only thing that has increased over the last decades is the average westerner's desire to force those beliefs upon their fellow citizens.

<comment><USER7> "increased over the last decades is the average westerner's desire to force those beliefs upon their fellow citizens"

What makes you think this? Galileo was hung for what he said.

"Another approach is to follow that word, heresy. In every period of history, there seem to have been labels that got applied to statements to shoot them down before anyone had a chance to ask if they were true or not. "Blasphemy", "sacrilege", and "heresy" were such labels for a good part of western history, as in more recent times "indecent", "improper", and "unamerican" have been. By now these labels have lost their sting. They always do. By now they're mostly used ironically. But in their time, they had real force."

[http://www.paulgraham.com/say.html](http://www.paulgraham.com/say.html)

<comment><USER8> >Galileo was hung for what he said.

I get the point of what you are saying (that times in the past have had very extreme responses to people stating things that were accurate but unpopular), but Galileo was not hung or even executed. He was placed under house arrest (the trouble he got into was also more about stepping on the Church's domain of interpreting Scripture rather than astronomical facts, but that's a tangential popular misconception).

</comment></comment></comment><comment><USER9> "Falsehood flies, and the Truth comes limping after it" - Jonathan Swift, 1710

"...a lie can run around the world before the truth has got its boots on" - Terry Pratchett, 2000

<comment><USER10> the pratchett quote actually dates to much earlier. it's been attributed to churchill and twain. I used the Swift quote in my writeup of this study, though!

[https://quoteinvestigator.com/2014/07/13/truth/](https://quoteinvestigator.com/2014/07/13/truth/)

<comment><USER9> Yeah I know - I read the same quoteinvestigator article. I just liked the comparison between Swift and Pratchett.

</comment></comment></comment><comment><USER11> It's so easy to put anything on the internet and anyone could do that. I think most of the times is that people responsible for posting for bigger audience just don't bother to check the source and publish news based on Joe Blogs tweet or post.

The truth is there are not many good journalists who cares and it's more about making clicks rather than produce rich content.

Don't think there is anything we can do about false news. Just learn how to live with it.

<comment><USER12> Media literacy is incredibly difficult.

It is difficult because _independent thought_ is too demanding. Marketers, propagandists, and yes, even hard-core journalists all rely on this. The fake news phenomenon has always existed, but it is amplified by the ease of manufactured outrage. Instant and global spread of (mis)information makes containment practically impossible.

If you can spot good satire, you are probably more likely to be able to spot bogus news items too. But spotting satire is damn hard - and a really good satire is nearly indistinguishable from well done legitimate reporting and/or story telling.

</comment></comment><comment><USER13> Based on this study's conclusions it seems that the ability to easily retweet (or re-share on facebook) combined with social networks surfacing our engagement (e.g. JD liked this post) to our first degree network is really at the root of all of this.

I wonder how/if rumors used to spread on Twitter before retweet was a first party feature.

</comment><comment><USER14> While not surprising that hyperbole and bombastic claims would fare better than run of the mill news stories or opinions, seems strange to consider all tweets as news stories. Also, their cited sources of truth are overtly biased with respect to politics.

<comment><USER15> "We classified news as true or false using information from six independent fact-checking organizations that exhibited 95 to 98% agreement on the classifications."

>> What cited sources of truth are overtly biased?

<comment><USER9> Bias = 'I disagree'

</comment></comment></comment><comment><USER16> Great discussion on the subject of fake news:

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

</comment><comment><USER17> At some point will the online populace be inoculated from "new surprising info" that isn't verified?

ie, distrust all news until there's corroboration?

<comment><USER18> No. Humans tend to be emotional beings who rationalize whatever preserves their ego and confirms preexisting biases, and the opinions of friends and peers matters more to most people than fact checking by independent, objective sources.

</comment></comment><comment><USER19> tl;dr False news is usually more interesting because it doesn't have to be true and so it spreads faster</comment>


Show HN: How I landed an interview almost every time I applied (as a developer) - <AUTHOR> https://devhypercharged.com/how-to-land-an-interview-almost-every-time-as-a-programmer/ <comment><USER2> This is not a valid Show HN. Please read the rules: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

</comment><comment><USER3> This seems pretty clickbaity to me. There's very little content and no specific personal experiences discussed. What types of companies did you have better luck with? How many employees does a "startup/medium-size company" have?

This site also has articles entitled "The Must Know 7 Traps That Make Your Software Useless" and "Make Money with programming. Your Advanced Guide", so I'm not sure how high to set the bar.

The entire article can really be summed up as "Email the founders and get a recommendation."

</comment><comment><USER4> Pretty accurate, only thing I would say is that I feel reaching out to a recruiter or a dev solely for a reccomendation is fine if you're polite and not overly blunt about it.

<comment><USER5> Can you help me understand what this means? Like "Hey, do you think I'd be a good fit for XYZ?"

<comment><USER4> Basically yeah

"Hey there, I saw your company was hiring and I wanted to reach out about X role. Feel free to reach back out if you feel there might be a good fit or if you have time to talk more about roles at Y."</comment></comment></comment>


Rust Traits Deep Dive, Part 2 - <AUTHOR> https://newrustacean.com/show_notes/e024/index.html <comment><USER2> The text, with examples, is here.[1] Read that, skip the audio.

About operators, he writes "So, to grab one of those earlier examples: when you write a + b, that's equivalent to calling a.add(b) or b.add(a) or even Add::add(a, b). The operator is special syntactical sugar for the trait." But _which one_ of those?

This matters, because it leads to mixed-mode semantics trouble. Who determines the output type of "a + b"? "a"? "b"? Both? Are there implicit type conversions? This is where C++ gets into strange interactions between type converters and generic selection. C++ resolves this with a rule that, when there are multiple possible instantiations, the selected one must be one notch "better" than the alternatives.

Python gets into mixed-mode trouble with numpy arrays vs. built-in lists. In Python, "[2,4] * 2" is [2,4,2,4], while "array(2,4) * 2" is [4,8].

It's a classic problem in language design. If there are no implicit conversions, users complain about having to write "1.0" instead of "1", or worse, having to write "1.0L". If there are too many implicit conversions, you get unexpected semantics. Basically, conversions are there for numbers. Then somebody decides to generalize them. That sometimes ends badly.

There's nothing here about what Rust does about conversions, but that may be covered in one of the other many parts of this series.

The good news is that the Rust programming book is finally coming out in just 6 more days. So there's something better to read than this.

[1] [https://newrustacean.com/show_notes/e024/struct.script](https://newrustacean.com/show_notes/e024/struct.script)

<comment><USER3> > Who determines the output type of "a + b"? "a"? "b"? Both? Are there > implicit type conversions?

The Add trait is defined in `std::ops::Add` as:

        pub trait Add<RHS = Self> {
            type Output;
            fn add(self, rhs: RHS) -> Self::Output;
        }

(You can find the documentation on <[https://doc.rust- lang.org/1.26.2/std/ops/trait.Add.html>](https://doc.rust- lang.org/1.26.2/std/ops/trait.Add.html>))

Both the type of the `self` parameter and the concrete type of `RHS` determines which trait impl matches. For example: `2 + 2` chooses the `impl Add<i32> for i32 { type Output = i32; ... }` implementation (literal integers are of type `i32`). Something like `2 + &2` would choose `impl<'a> Add<&'a i32> for i32`.

> There's nothing here about what Rust does about conversions, but that may be > covered in one of the other many parts of this series.

With operators, there are no implicit conversions involved, AFAIK. So all Rust can do is try and infer the type you want. For literal numbers, it can do so in a limited fashion. As seen above, if you write `let x = 42;` the type is inferred as `i32`. If you write `foo(666)` with `fn foo(x: u64)`, the literal 666 is inferred to be meant as `666u64`.

> The good news is that the Rust programming book is finally coming out in > just 6 more days. So there's something better to read than this.

You can already read it here: [https://doc.rust-lang.org/book/second- edition/index.html](https://doc.rust-lang.org/book/second-edition/index.html) :)

<comment><USER4> > if you write `let x = 42;` the type is inferred as `i32`.

It can be influenced by the x's usage.

        let x = 42;
        let y = x/2 + 21u32;

x is u32 here.

<comment><USER5> Interesting... I'm a newbie at Rust, and expected y to be a float, because of the division.

But it turns out

        let x = 11;
        let y = 11/2;

==> y = 5 Given how type safety is important to Rust, I expected this to panic rather than do an automatic cast.

<comment><USER6> There is no type safety issue, and there is no cast. Div on integral types is explicitly implementing as an integer/truncating division: [https://doc.rust- lang.org/src/core/ops/arith.rs.html#436-452](https://doc.rust- lang.org/src/core/ops/arith.rs.html#436-452)

There would be no type-safety issue or cast if it were implemented as a real division either, incidentally.

There is room to argue Div should not have been implemented at all on integral types (as in Haskell where integer division is a separate operation entirely), but that's a completely different issue.

</comment></comment></comment></comment></comment><comment><USER7> I've just started working with Rust, coming from a python/java/web background. Some of the constraints are a bit mind-bending, and the ecosystem is very immature; but compared to C/C++, it's a dream.

It only needs a few things to achieve world domination, imho: a good crossplatform GUI toolkit, and a trivial way to interface with higher-level languages like Python.

<comment><USER8> What is it that you want from Python? Presumably automated memory management - but if you have GC pauses anywhere in your stack then you can presumably afford to have them everywhere in your stack. Would a language like OCaml (or my own favourite, Scala) give you everything you need: Rust-like safety but Python-like expressiveness?

<comment><USER7> It's just that the Python ecosystem is so much bigger, there are much more productive libraries for dealing with things that are not performance- critical. With python you get stuff like QT, nice configuration parsing (rust has one lib and pretty immature too) and so on, available with zero effort. Python is now so huge that only a handful of other communities has anything comparable (Java, PHP, JS and maybe Perl, basically; I would add C# but there you usually have to pay for stuff).

<comment><USER8> Yeah, availability of libraries is important. That's one thing Scala was quite clever about bootstrapping: there are native-Scala libraries for a lot of things these days, but if you need to do something rarer you can very easily call into a Java library.

</comment></comment></comment></comment><comment><USER9> In this example:

        fn collect<B: FromIterator<Self::Item>>(self) -> B where Self:Sized;

I thought this was universal, not existential like the podcast claims. It would be existential if you instead wrote:

        fn collect(self) -> impl FromIterator<Self::Item> where Self:Sized;

The latter is what got added in 1.26, whereas the former was already available before that.

And really, you wouldn't want to use the latter in this case because the user wants to choose the type that's being generated (this is not a case where you want the callee to choose the type). So the second signature wouldn't make a whole lot of sense even if this API had been stabilized post-1.26.

<comment><AUTHOR> I may have gotten that wrong! Had a lot of things in flight for this episode and the universal/existential discussion was a late addition from before I split it into this and the upcoming episode focused on object safety, dynamic- vs.-static dispatch, and `impl Trait`.</comment></comment>


U.S. Air Force general drank too much, fraternized with foreign women in Moscow - <AUTHOR> http://www.washingtonpost.com/world/national-security/report-us-air-force-general-drank-too-much-fraternized-with-foreign-women-in-moscow/2013/12/19/7f3cdba0-68ed-11e3-a0b9-249bbb34602c_story.html

<comment><AUTHOR> My favorite bit from this article:

"A tobacco store lady talking about physics in the wee hours of the morning doesn't make a whole lot of sense to me," [General Carey] said in an interview with Air Force investigators, according to the report. "You need to watch out for that because that's just like our training says, you know, people are trolling for information."

 __ __*

Nuclear disarmament never sounded like a better idea.</comment>


Remotely triggerable buffer overflow in OpenSMTPD - <AUTHOR> http://www.openwall.com/lists/oss-security/2015/10/04/2 <comment><USER2> Security is hard, even for people who know what they are doing.</comment>


Introduction to Isopath - <AUTHOR> https://incoherency.co.uk/blog/stories/isopath-intro.html <comment><USER2> Nice game. A killer feature (as with any board game) would be asynchronous play, meaning you could start a bunch of games with different people and finish them at a later date, and be notified when it's your turn. It's being implemented in very few games these days.

</comment><comment><USER3> I've managed to get the random AI into a state where it only had one possible move, and this ended up freezing my browser.

<comment><AUTHOR> Sorry about that, I'd not come across such a situation while testing it.

It poses a gameplay question as well: if you put your opponent in a position where there are no legal moves, have you won or is the game drawn? I believe in chess for example the game would be considered drawn rather than won.

<comment><USER3> The random AI probably should give up if it's unable to find a move after some time. Maybe if you don't see a move you can make, you can offer to draw, and your opponent gets to try and make a move for you. If the opponent can't find a move for you either, they have to concede and draw.

</comment></comment></comment><comment><USER4> looks cool, but is a xxx domain the best place to host it?

<comment><USER5> +1 to the above, as my work corporate firewall blanket blocks .xxx domains, and as an avid chess player and go fan I'd quite like to give this game a go. Obviously it can wait til I get home but it might suck for people who click through and get their names flagged by IT as having accessed a XXX domain.

<comment><AUTHOR> In a pinch you can download the code from [https://github.com/jes/isopath](https://github.com/jes/isopath) and load up public/index.html -- websockets won't work but everything else will.

<comment><USER5> I'm going to give it a go when I get home - my concern was more for anyone who absentmindedly clicks through to a .xxx at work and gets flagged.</comment></comment></comment></comment>


Unforeseen dangers of ignition interlock devices - <AUTHOR> https://www.nytimes.com/2019/12/23/business/drunk-driving-interlock-crash.html <comment><USER2> The idea of rolling retests is absolutely insane and the failure mode for it (flashing lights + horn blaring) is also stupid and puts unreasonable amount of pressure on the driver to avoid that, with predictable results.

This could've been implemented safely, by simply limiting the speed of the vehicle to a lower speed when possible (ie don't suddenly cut power to the vehicle at high speed on the highway, but if you're already driving slowly, limiting the speed to 20% below that would most likely be safe enough) so there's less pressure on the driver to _immediately_ deal with it at the expense of _actual_ safety.

I feel bad for that driver convicted of manslaughter. He was essentially framed by the state by being forced to drive a defective & unsafe vehicle.</comment>


Former FBI general counsel who fought Apple has now 'rethought' encryption - <AUTHOR> https://9to5mac.com/2019/10/24/fbi-general-counsel/ <comment><USER2> Baker's article is an interesting restatement of his position.

Highly-secure backdoors are discussed here:

[https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3425957](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3425957)</comment>


GitHub availability this week - <AUTHOR> https://github.com/blog/1261-github-availability-this-week <comment><USER2> I know that they have to be apologetic like this, but the simple fact is that GitHub's uptime is fantastic.

I run <http://CircleCi.com>, and so we have upwards of 10,000 interactions with GitHub per day, whether API calls, clones, pulls, webhooks, etc. A seriously seriously small number of them fail. They know what they're doing, and they do a great job.

</comment><comment><USER3> I'd like to welcome the github ops/dbas to the club of people who've learned the hard way that automated database failover usually causes more downtime than it prevents.

Here's sortof the seminal post on the matter in the mysql community: [http://www.xaprb.com/blog/2009/08/30/failure-scenarios- and-s...](http://www.xaprb.com/blog/2009/08/30/failure-scenarios-and- solutions-in-master-master-replication/)

Though it turns into an MMM pile-on the tool doesn't matter so much as the scenarios. Automated failover is simply unlikely to make things better, and likely to make things worse, in most scenarios.

<comment><USER4> Automated database failover is absolutely mandatory for HA environments (as in, there is no way to run a 5 9s system without it) but, poorly done, results in actually reducing your uptime (which is a separate concept from HA).

I've been in a couple of environment in which developers have successfully rolled out automated database failover, and, my takeaway, is that's it usually not worth the cost - and with very, very few exceptions, most organizations can take the downtime of several minutes to do manual failover.

In general, when rolling out these operational environment, they are only ready when you've found, and demonstrated 10-12 failure cases, and come up with workarounds.

In other words - if you can't demonstrate how your environment will fail, then it's not ready for an HA deployment.

<comment><USER5> Every HA deployment I've done, the HA manager inevitably had issues to begin with. It takes time, patience, and a few late nights.

<comment><USER4> With the possible exception of life safety systems, credit card processing, stock exchanges, and other "High $ per second applications" - I just don't see getting HA right on transactional databases as worth the effort. Properly rehearsed, a good Ops/DBA (and, in the right environment) NOC team can execute a decent failover in just a few minutes - and there aren't that many environments (with the exceptions listed above) - that can't take two or three 5 minute outages a year.

The alternative is your HA manager decides to act wacky on you, and your database downtime is extended.

For some reason - this rarely (almost never, in my practical experience) is a problem with HA systems in networking. With just a modicum of planning, HA Routers, Switches, and Load Balancers Just Seem to Work (tm).

Likewise, HA Storage arrays are bullet proof to the point at which a lot of reasonably conservative companies are comfortable picking up a single array/frame.

But HA transactional databases - still don't seem to be there.

</comment></comment></comment></comment><comment><USER6> Here are the makings of a bad week (Monday of all things)

\- MySQL schema migration causes high load, automated HA solution causes cascading database failure

\- MySQL cluster becomes out of sync

\- HA solution segfaults

\- Redis and MySQL become out of sync

\- Incorrect users have access to private repositories!

Cleanup and recovery takes time, all I can say is, _I'm glad it was not me who had that mess to clean up_. I'm sure they are still working on it too!

This brings to mind some my bad days.. OOM killer decides your Sybase database is using too much memory. Hardware error on DRBD master causes silent data corruption (this took a lot of recovery time on TBs of data). I've been bitten by the MySQL master/slave become out of sync. That is a bad place to be in.. do you copy your master database to the slaves.. that takes a long time even of a fast network.

<comment><USER7> This kind of thing is one of the main reasons I prefer to do app development instead of backend work now. I don't get calls at 3am any more.

</comment></comment><comment><USER8> The lack of any negative response on this thread is a testament both to the thoroughness of the post-mortem, and the outstanding quality of GitHub in general.

In GitHub we trust. I can't imagine putting my code anywhere else right now.

<comment><USER9> I like github too but please remember that things come and go. Some time ago it was SourceForge that was hot.

<comment><USER10> ... but never as well loved.

</comment></comment></comment><comment><USER11> The part of this post that really blew my mind:

      We host our status site on Heroku to ensure its availability
      during an outage. However, during our downtime on Tuesday
      our status site experienced some availability issues.

      As traffic to the status site began to ramp up, we increased
      the number of dynos running from 8 to 64 and finally 90.
      This had a negative effect since we were running an old
      development database addon (shared database). The number of
      dynos maxed out the available connections to the database
      causing additional processes to crash.

Ninety dynos for a status page? What was going on there?

<comment><USER12> Anyone tested S3's static page hosting under heavy load? I would think you could just update the static file as a result of some events fired by your internal monitoring process.

<comment><USER13> We use S3 behind 1 second max-age cloudfront to serve The Verge liveblog. It's been nothing but rock solid. We essentially create a static site and push up JSON blobs. See here:

[http://product.voxmedia.com/post/25113965826/introducing- syl...](http://product.voxmedia.com/post/25113965826/introducing-syllabus-vox- medias-s3-powered-liveblog)

<comment><USER14> This is really interesting -- thanks for sharing. It seems to me that you could probably have nginx running on a regular box and then CloudFront as a caching CDN to avoid the S3 update delay.

<comment><USER13> Probably could figure that out, yeah. But we didn't want to take any chances given how important it was to get our live blog situation under control.

[edit]

Which is to say, we wanted a rock solid network and to essentially be a drop in a bucket of traffic, even at the insane burst that The Verge live blog gets.

</comment></comment></comment></comment></comment><comment><USER15> Well, I have to say... replication related issues like this are why I/we are now using a Galera backed DB cluster. No need to worry about which server is active/passive. You can technically have them all live all the time. In our case we have two live and one failover that only gets accessed by backup scripts and some maintenance tasks.

Once we got the kinks worked out it has been performing amazingly! Wonder if GitHub looked into this kind of a setup before selecting the cluster they did.

<comment><USER16> any details on the kinks you worked out?

<comment><USER15> Sure. Maybe I should do a writeup for it on my blog at some point in the near future :).

The two main issues we encountered both had to do with search for products/categories on our sites. The first was that Galera/WSREP doesn't support MyISAM replication (It has beta support, but I wouldn't trust it). This meant that we had to transition our fulltext data to something else. The something else in this case was Solr which has been a much better solution anyway (fulltext based search was legacy anyway so this I can kind of count as a win).

The second issue and the one that was causing random OOM crashes was partly due to a bug, partly due to the way the developer responsible for the search changes implemented things. The bug part is that galera doesn't specifically differentiate between a normal table and a temp table. When you have very very small/fast temporary tables that are created and truncated before the creation of the table is replicated across the cluster it can leave some of these tables open in memory (memory leak whoo!). We were able to fix for this and have been happy ever since.

If there's any interest I can do a larger writeup about actual implementation of the cluster, caveats and the like.

<comment><USER17> Consider this an expression of extreme interest on my part.

<comment><USER18> +1

</comment></comment></comment></comment></comment><comment><USER16> If Github hasn't gotten their custom HA solution right, will you?

Digging into their fix, they disabled automatic failover -- so all DB failures will now require manual intervention. While addressing this particular (erroneous) failover condition, it does raise minimum down time for true failures. Also, their mysql replicant's misconfiguration upon switching masters is also tied to their (stopgap) approach to preventing the hot failover. So, the second problem was due to a mis-use/misunderstanding of maintenance-mode.

How is it possible that the slave could be pointed at the wrong master and have nobody notice for a day? What is the checklist to confirm that failover has occurred correctly?

There is also lesson to be learned in the fact that their status page had scaling issues due to db connection limits. Static files are the most dependable!

<comment><USER19> "There is also lesson to be learned in the fact that their status page had scaling issues due to db connection limits. Static files are the most dependable!"

Seriously, why would a status page need to query a db?

<comment><USER18> I assume that the status server is not actively checking every Github server/service whenever someone pings it. It probably polls the servers every X seconds. The best place to store that type of data is in a DB.

Where else would you put it?

<comment><USER16> > It probably polls the servers every X seconds.

And then you could write out a new static file, just once, and send it to your edge server of choice.

</comment></comment></comment></comment><comment><USER20> "As traffic to the status site began to ramp up, we increased the number of dynos running from 8 to 64 and finally 90."

Wait, why isn't there some caching layer? eg. Generate a static page or use Varnish.

This part makes no sense at all.

At most you're then firing up another 5 dynos (or none) to handle the traffic. 90 is ridiculous.

</comment><comment><USER21> _"16 of these repositories were private, and for seven minutes from 8:19 AM to 8:26 AM PDT on Tuesday, Sept 11th, were accessible to people outside of the repository's list of collaborators or team members"_

ouch!

<comment><USER22> One of those repos was mine. :( Fortunately it was a fresh Rails app without anything important. However, it does make me rethink the security of storing my code on github.

<comment><USER10> I store proprietary code on github, but I would never recommend storing actual _secrets_ (like keys or passwords).

</comment></comment></comment><comment><USER23> This was the awesome kind of explanation about what went wrong and what was learned that I wish everyone would do.

</comment><comment><USER24> Update strategy of master first is interesting. I've always seen the other way with update standby, flip to standby, verify, update original master. Auto inc db keys once again cause horribleness. Nothing new there I suppose. And as mentioned the multi dyno + DB read status page is craaaazy. Why oh why isnt this a couple static objects. Automagically generate and push if you want. Give 'em a 60 second TTL and call it a day. Put them behind a different CDN & DNS then the rest of your site for bonus points.

</comment><comment><USER25> I would love to know more about this two pass migration strategy.

<comment><USER26> We use <https://github.com/soundcloud/large-hadron-migrator/>

</comment></comment><comment><USER27> Interesting to read about github using MySQL instead of Postgres. Anyone know why? I am just curious because of all the MySQL bashing I hear in the echo chamber.

<comment><USER28> Mostly because of legacy reasons, at this point.

<comment><USER29> Do you have a source for this information?

<comment><USER28> I have the source code, yes :)

</comment></comment></comment></comment><comment><USER9> Genuine question: github is built upon git, which is a rock solid system for storing dataand in these reports we read that github relies a lot on MySQL, so... Did the github guys ponder using git as their data store? Just an example, in git one can add comments on commits, would it be possible to use it for the github comment function? Or maybe it is?

<comment><USER30> Generally, Git will be way too slow for that. Git is typically our bottleneck, since you're dealing with so much overhead and disk access to perform functions.

Databases are best for, well, performing relational queries. In the case of commenting on a commit, if you store them only in the repository it becomes non-trivial to ask "show me all of the comments by this user" unless you have an intermediary cache layer (in which case you're back where you started).

<comment><USER9> Thanks for answering. Tell me if I'm wrong but MySQL would be behind a caching layer anyway, so the choice would be between cached git or cached git + mysql.

In git, logging commits on a file from an author is also a kind of join, and it is surprisingly fast, so using git as a data store is a weird idea that I cannot take out of my head.

</comment></comment></comment><comment><USER31> para que sirve esta pagina soy nuevo</comment>


QAnon Key Figure Revealed as Financial InfoSec Analyst from New Jersey - <AUTHOR> https://www.logically.ai/articles/qanon-key-figure-man-from-new-jersey <comment><USER2> So... it's a guy that made a website and has developed it into a small, presumably profitable, income stream.

I don't really see this as news. It's just doxxing in my eyes, and that's a bad thing.

I'd be happy to hear other opinions on it.

<comment><USER3> Do you think it's strange that the website owner of a site dedicated to "exposing pedophiles" hosts chan style boards that regularly have child porn posted en-masse to the site?

Or that this site is associated with a domain "lolis.xyz", referring to "lolita" or underage porn?

<comment><USER2> Logically, yeah, that might represent a good reason to shine a light on the guy - but I don't see the article mentioning those domains other than their inclusion in a graphic. Are they actually active? Lolis.xyz doesn't load for me.

Those domains alone I would consider "smoke", but in and of themselves aren't necessarily nefarious. I own a variety of domains that I absolutely don't agree with, but purchased to either resell or keep out of the hands of people who wanted them - political in my case, but still.</comment></comment></comment>


Open APIs and Open Standards - Twitter like a protocol - <AUTHOR> http://www.avc.com/a_vc/2009/12/open-apis-and-open-standards.html

<comment><USER2> As I was wandering beside the GFW the other day, I was thinking of more or less the same thing. Why don't we build something like twitter-on-dns. DNS is the largest distributed key-value open database in the world, we can tweet to our own domain's TXT records and NOTIFY the followers.</comment>


Numenta Compares HTM Tech to Other Machine Learning Methods in New Paper - <AUTHOR> http://www.businesswire.com/news/home/20161114006095/en/Numenta-Brings-Brain-Theory-Machine-Learning%C2%A0Compares-HTM <comment><USER2> What is exactly state of the art in sequence learning. ELM and ESN are so limited. I hope there's something much better available.</comment>


Maciej Fijalkowski's view on PyPy's future - <AUTHOR> http://lostinjit.blogspot.com/2011/12/personal-view-on-pypys-future.html

<comment><USER2> PyPy will likely be complete enough to use by the end of 2012, if not sooner. By that I mean most of the major libraries will work with it and people will ask themselves "why wouldn't I want a massive speedup?". The one reason why they might not is memory usage: it can be 10 times as much. That's significant in quite a few applications.

As it's beyond my ken I would like to know from someone capable of answering if this is going to be a constant constraint, stemming from the design of the project, or if memory usage is likely to go down at some point.

<comment><USER3> I believe the memory usage has been adressed lately (either last release, or shortly after). There was an article about it on HN, which i can't find atm. Do you mean some specific use cases?

<comment><USER2> <http://news.ycombinator.com/item?id=3349429>

If you search for my username in that thread I asked for someone to run the code from the story on a similar dataset with PyPy. Twice as fast but x10 memory usage. But as I said elsewhere a bit of searching suggests it won't be a showstopper.

<comment><USER4> Be careful extrapolating from such small examples, where the memory usage is dominated by fixed overhead. Running Django or something similar is more likely to give a real world result, and even then, a bunch of tests is far better.

3mb vs 30mb might be par for the course for smaller programs, but either is negligible.

</comment></comment></comment></comment><comment><USER5> In my opinion, they could get more contributors if they simplified the rather byzantine build process for pypy. It's especially annoying for developers attempting to port to other platforms.

(No incremental build, it takes roughly three hours on a high-end nehalem workstation, and if it fails for any reason, you get to start all over again!)

</comment><comment><USER6> What should we make of the failure of PyPy's users to fund Maciej's work? The value of PyPy seems much, much greater than one engineer's salary.

<comment><USER2> I find it puzzling as well. Google heavily uses python, as do a number of other web companies. Further, Ubuntu and Redhat have it as a system administration language. It's almost the default language for O'Reilly books that aren't language specific. Given all that you'd think there'd be a few more corporate contributions now that a x5 speedup has already been proven and it seems to be just a matter of polishing it up.

A bit of searching and it seems the memory problems I raised in my other comment aren't so drastic after all. Theoretically it can use less memory in many operations and the current blowouts are not as high as I thought (I was going from one benchmark a HNer, brianh, was kind enough to run for me[1]).

[1]<http://news.ycombinator.com/item?id=3357160>

<comment><USER7> > I find it puzzling as well. Google heavily uses python, as do a number of > other web companies.

Especially after Google invested engineers on Unladen Swallow, which fizzled out. I've read that Google likes to max out their servers to the point where OOM is not unlikely, so PyPy memory usage might not be worth the runtime performance gains.

<comment><USER8> More likely, google requires compatibility with its set of C extensions. At least when unladen swallow was announced, this was one of the major requirement. I would expect the problem to be similar in most large corporate environments.

</comment></comment></comment></comment><comment><USER9> This might be a contrary view, but Cython has been ready for production for quite a while while PyPy has still been getting its boots on:

<http://cython.org/>

It actually works right out of the box. You can download it and get real world examples to work in five minutes. It works with C++. It works with numpy.

<http://wiki.cython.org/WrappingCPlusPlus>

<http://wiki.cython.org/tutorials/numpy>

It's the real deal: ridiculously easy to use as a drop-in replacement for slow functions. It works on problems that are not toys. It allows you to use high performance C and C++ libraries, it's used in a large and well maintained project (sage), and development was at least partially funded by Google.

With all due respect to Maciej for his work, PyPy has been in the works for many years now, and projects like that don't tend to ship -- or to meet expectations if they actually do ship.

<comment><USER10> I think you are being unfair. PyPy is something you can use on your code without modifying your code. That's a big thing. And by big I mean huge. Paying someone $70/hour to modify code is expensive. Switching "python" executable with "pypy" is a lot cheaper than profiling code then re-writing it in Cython. Yeah you might still end up having to do that but who knows, you might not have to or you might even be running faster than C (yes in theory jit compiler could do that).

</comment></comment><comment><USER11> I've tried Pypy to speed up a background worker that create collages of 300-500 images, this is my experience:

\- The JIT optimization doesn't survive between different runs of the script. Since I run a different script for every collage, I haven't see a noticeable speedup.

\- The script also download the 300-500 images from facebook with curl, this module is not supported yet by pypy

\- Since the most of the time is spent on images resize (PIL.resize) which is in C, the JIT can't do many optimizations.

</comment><comment><USER12> It's similiar to how clang tries to be a gcc replacement. I think clang got started in ~2008 and now you can build most of the open source projects with it. But still some packages use GNU extensions or they depend on some gcc-only features.

I think the reason it works for clang is because they're really trying hard to be drop-in compatible with gcc. I remember reporting some minor thing like: command line flag -- in gcc generated a warning, but it didn't return an error code on exit and it did in clang, so they've changed it, because it caused crashes some project builds.

Not sure how pypy handles the compatibility now, because I couldn't compile it yet, tried like 4 times already and it always crashes randomly or it gets out of memory or something.

</comment><comment><USER13> I don't think speed is a big enough pain point for the python community at large to justify the pain of moving from cpython.

PyPy needs to use their great implementation stack to develop their own killer feature. Like for instance a small and fast python for embedded scripting or compiling normal python program to a small and optimized native executable.

<comment><USER14> So far just faster python have been a killer feature for some people :) True, it does not fit anyone, but hey, nothing does.</comment></comment>


Node Streams: How do they work? - <AUTHOR> http://maxogden.com/node-streams <comment><USER2> Streams are nice but in my experience there aren't many modules that let you use them. Most networking protocol modules will only let you specify a hostname and port to connect to, and not pass a stream to use. That's fine for the common case, but maybe I want to do something fun like send data encrypted with ssl, which is encoded using base 64, then stuffed in a dns query, then tunnelled over socks, via a unix pipe (and receive the reply via a completely different stack). It wouldn't be hard to chain streams together to achieve that, but then I'd have to rewrite modules to actually use it.

Even nodes own http module only does standard tcp. If it supported arbitrary streams then it'd be much more flexible, and we wouldn't need to do things like use a separate module to support https.

The same with the server part of these modules. They normally only let you specify a tcp port to listen to. Ideally there should be some sort of "stream server" interface that automatically sets up the stream chain and emits a connection event. The module could then listen for that event and use the corresponding stream for transferring the data. That way the module would be completely independent of the underlying protocol.

<comment><USER3> LuaSocket's ltn12 module might interest you:

<http://w3.impa.br/~diego/software/luasocket/ltn12.html>

</comment></comment><comment><USER4> Reminds me much of channels in Go: <http://golang.org/doc/effective_go.html#channels>

Are Node streams pure, generic JavaScript? Do they rely much on Node internals or outside libs?

I ask because I experimented with "porting" Go channels to generic JavaScript in <http://www.johntantalo.com/blog/go-flavored-javascript/>

<comment><USER5> they are pure js, though streams in node emit Buffer objects which can be mostly emulated using html5 Int32Arrays

<comment><USER4> Had to look that up,

> A Buffer is similar to an array of integers but corresponds to a raw memory > allocation outside the V8 heap. > <http://nodejs.org/docs/v0.3.1/api/buffers.html>

Are streams limited to binary buffers, or may they also emit JavaScript objects or primitives? Binary may be great for low-level I/O streams, but I'd expect more nuanced events for high-level streams.

<comment><USER5> You can emit anything but it just so happens that 99% of the streams used in node core are Buffers for performance reasons (Buffers are allocated outside of V8's heap). An example of emitting objects is in here [https://github.com/maxogden/dominode/blob/master/example.htm...](https://github.com/maxogden/dominode/blob/master/example.html)

</comment></comment></comment></comment><comment><USER6> Using Node has helped me think more in terms of streams because the APIs afford such thinking. PHP has streams but I never thought to use them, and I haven't really seen it done.

Node Streams really help performance in my application where I am proxying API calls from the browser to the Dropbox API. It's much faster to stream the response from Dropbox through to the client rather than request, wait for entire response, then send.

</comment><comment><USER7> I've had trouble wrapping my head around how to use one stream to filter data. I'd like to be able to write to a stream and read from it to get the filtered data but the api only seems to lend itself to using two streams (think stdin and stdout).

</comment><comment><USER8> magnets.</comment>


Ask HN: VC's, do you actually read every cold pitch email? - <AUTHOR> We all know that the best way to get connected to a VC is through a trusted mutual acquaintance, but of course not everybody has the network. So to the VC's on here: do you actually read every cold pitch email and, if so, how much time on average would you say you dedicate to every email? <comment><USER2> Im not a VC, however I reached out to many of them (spammed) sometime ago. 2 partners from credible VC firms responded - so it is not that they dont read. So, really depends on what is being sent.

</comment><comment><USER3> Having tracked opens on these my experience is almost all click thru, a large portion responds. Just keep it short and clear and they'll take a look.</comment>


Is understanding category theory necessary for deeply understanding Haskell? - <AUTHOR>

When I look up answers for things such as "What is a free monad", I see a lot of fleeting references to category theory in the answers.
With everyday imperative languages like C#, it feels that deeper understanding is linked to understanding what the compiler, CLR etc. are doing to your code.
With Haskell it seems like maths is the key the deeper understanding.
Is that an accurate assessment?
Would learning category theory help make learning about the mechanics of these data / execution structures a lot easier? <comment><USER2> The short answer: I would argue, yes.

The long answer - read this blog! Declarative languages and category theory go largely hand in hand.

[http://bartoszmilewski.com/](http://bartoszmilewski.com/)</comment>


Ask HN: Can i be a javasvcipt developer and find NLP work? - <AUTHOR> I am not a native english speaker , apologies if I am not clear enough. I am a self taught javascript and C developer . I would like to move to NLP . There are some popular nodejs libraries for NLP like natural, but all the jobs advertised seem to ask for Python or R. So , from a purely commercial point of view, does it make sense for me to invest time in nodejs libraries like natural ? Or would I be better off picking up a new language , (python or R)? Which language would you suggest and why ? Thanks. <comment><USER2> Languages are easy to learn. Domains are hard.

If you can understand the concepts behind NLP then attaching those concepts to whatever abstractions the language you're using to to do your work should be easy enough.

Languages are just tools. Knowing how to use a circular saw isn't going to help you build a house if you don't understand how to build a proper frame.</comment>


Pagedown - A JavaScript Markdown converter and editor - <AUTHOR> http://code.google.com/p/pagedown/ <comment><USER2> This is the parser that stackoverflow uses for Markdown parsing.

BTW: Google won't let me (my IP being from Iran) to access that repository, so maybe someone can make a clone of it on Github.

<comment><USER3> Sure, here you go: <https://github.com/troelskn/pagedown>

<comment><USER2> Thanks

</comment></comment></comment><comment><USER4> Here is the actual demo which I wish was easier to find!

<http://pagedown.googlecode.com/hg/demo/browser/demo.html>

<comment><USER4> Also, I should add, that this project is actually better than the WMD version of StackOverflows Markdown for the pure reason (as I've already identified), you can have multiple textareas on the same page which support the Markdown editor. (I struggled and gave up trying to get the SO editor to do that, it just wasn't possible from the current version).</comment></comment>


Gabe Newell: next-gen game engines will be ten times harder [to write] - <AUTHOR> http://www.pcgamer.com/2010/09/13/gabe-newell-next-gen-game-engines-will-be-ten-times-harder/

<comment><USER2> The line that stood out to me most:

 _The amount of difference between a good programmer and a great programmer is going to get wider, in terms of the amount of value that you can create._</comment>


The Economic News from the Census Bureau Is Good - <AUTHOR> https://www.realclearmarkets.com/articles/2019/10/10/the_economic_news_from_the_census_bureau_is_very_good_103941.html <comment><USER2> Ok, for once this actually _is_ good news. I would like to know why the Gini coefficient methodology changed, though.</comment>


Show HN: Garie – Open Source Web Performance Monitoring - <AUTHOR> https://garie.io/ <comment><USER2> Project looks great, have yet to try it out but it's more or less exactly what I have had an itch to build for the last couple of weeks after having an unsatsifactory experience trying to automate lighthouse across a bunch of sites.

What's next on your roadmap? Where/how can enthusiastic devs best contribute?

<comment><AUTHOR> Hey!

Thanks, hopefully you find it useful.

I have a list of items and features I want to add on a trello board, I will add them as issues onto the Github repo with a roadmap this week.

If you're interested in helping out that would be great if you start/follow the project that might help with any updates.

</comment></comment><comment><USER3> I've yet to try it out, but I definitely like what I see. It appears to be very thorough and well thought out. How would you compare garie to sitespeed? Webpagetest?

Again, awesome work! Following and will dig into the project this week for sure.</comment>


Ask HN: next step - <AUTHOR>

Hi, I'm a quant and developed a model to trade markets based on social media mining. So far I have tested it using options ( long only)in order to reduce risk ( just in case...) Results are " remarkable" to say the least. Now my question : where to take it from here? App? Funding? Any suggestions pls mail to email@example.com <comment><USER2> My 2 cents:

1\. Find a customer which you think this product is made for, if you can. Pitch them your model. Get feedback, iterate on the model.

2\. Develop an MVP. Search tech talent on oDesk, Elance or your personal network - get something out. Keep that customer in the loop.

3\. After that, try to get that customer using it. Iterate again.

4\. Market it. Get more customers. Raise $$$. Build a team.

<comment><AUTHOR> thanks yakshay, sounds easy but I guess step 1 will be most difficult</comment></comment>


Sort Faster with FPGAs - <AUTHOR> http://hackaday.com/2016/01/20/a-linear-time-sorting-algorithm-for-fpgas/ <comment><USER2> I wonder how quickly routing resources will cause the fan-out time to hurt the speed of sort as well.

Also fun is Radix Sort. If you can guarantee a fixed size key(say 32bits) a Radix Sort will do O(kN) where k is usually 1-4 based on your cache line size. Destroys any other sort due to linear data reads by almost an order of magnitude in some cases. I've used on on some previous gigs to sort thousands of quads front-to-back in record time on some older ARM chips.

<comment><USER3> _O(kN)_

If this is trolling you're doing a very good job.

<comment><USER2> Not particularly.

I'll probably get downvoted but I'm not a huge fan of Big-O notation(hence the k). It's very hand-wavey about the things that have a significant impact on performance(like cache misses).

Great from the ivory tower of academia but down in the real world we like things that run fast :).

<comment><USER3> I agree with you and I meant it as a genuine complement.

<comment><USER2> Thanks, I'll have to re-train my complement detector :).

I enjoy breaking out Radix because it's one of those thing's that's _so_ unintuitive when you come at it from a traditional CS perspective. AFAIK the only book I'm aware of that approaches data structures with a consideration for this type of performance is Real-Time Collision Detection(which is basically datastructures for 3D spatial domains).

</comment></comment></comment></comment></comment><comment><USER4> A better solution which only uses local connections between adjacent cells is Odd-Even Transposition Sort.

When the cells are arranged in a 2D grid, Shearsort sorts all the values in snake-like order in O(sqrt(n) log(n)). A slightly more complicated algorithm based on Shearsort is that of Schnorr and Shamir, which runs in O(sqrt(n)).

</comment><comment><USER5> There's a far better way to do this, which essentially decomposes into an insertion sort. Details here: [https://github.com/theocean154/dau/tree/master/sort](https://github.com/theocean154/dau/tree/master/sort)

<comment><USER6> Yeah I was thinking the same thing, just compare all the registers to the value of the next item @posedge_clk and use that bit to tell the registers whether or not they need to shift their value into the next register. It replaces the `memmove()` (the abstract concept) with a single cycle shift

<comment><USER5> The benefit of my way is that you get pipelining (which lets you maintain O(1) throughput without having a fill/flush cycle), as well as better scaling (due to said pipelining) and better energy usage due to smaller fanout.

</comment></comment></comment><comment><USER7> O(N) is not particularly insightful for fixed/limited values of N. This would be more interesting if the author reported sorts/s with the FPGA vs. software. Because obviously, as N grows, the FPGA only performs the full sort in "one cycle" if you are willing to lower the cycle time more and more (until the FPGA blows up).

<comment><USER8> Yes, it's really an insertion sort where the insert step is done in parallel hardware. That's cool for small N but it's really still an O(N^2) algorithm.

</comment></comment><comment><USER9> > each sorting step is fast, bubbling down to N identical and _independent > questions asked in parallel_ at every clock cycle.

> The first empty cell could take the new data since it's empty, but since 4 > just got kicked out from the cell above, this empty cell gets the 4 instead

These are incompatible. The result in cell 3 is dependent on the result of cell 2 (and so on up the chain of cells).

Therefore, the steps have to run in order, making this O(n) just for adding one item to the set.

The end goal might still be possible, but I don't see how this can work.

<comment><USER10> I initially thought this as well, but reading the code showed me it's actually O(1) to add each item to the set.

Each cell computes in parallel (new_data < cell_data) & (cell_state == OCCUPIED). If this is true, then the cell will be pushed down, either be the new data or by the data from the cell above. Each cell can also grab this value from the cell above. If the cell above's value is true, then the cell grabs the value from the cell above. If the value in the cell above is false, then the cell grabs the data being inserted. This is O(1) because there's no cascading value shift. I personally found this pretty clever, and I'm looking forward to implementing some of these bounded size hardware sorts on GPU.

<comment><USER9> > Each cell can also grab this value from the cell above

Therein lies the problem I see. Grabbing this value from the above cell implies that this value has already been calculated- but it hasn't, as these cells run in parallel. The results of a cell in a single round of calculations is not accessible to the other cells during the same round.

In short- how does a cell know whether its new value is the value being inserted or the value being pushed down _without knowing the result of the cell above it_?

And having asked that, I can actually think of one answer: it can calculate whether it's neighbor will be pushing or not independently. So each cell is _really_ doing the calculation of "given these two numbers (my cell's value and the above cell's), where does this new number fit in sorted order with them- before, between, or after".

</comment></comment></comment><comment><USER11> Here's an old but great reference on the subject: [http://www.ccrc.wustl.edu/~roger/papers/cg09.pdf](http://www.ccrc.wustl.edu/~roger/papers/cg09.pdf)

I used to teach digital design, sorting was one of the first topics for FPGA's :)

</comment><comment><USER12> A much more faster sorting algorithm implementation for hardware is sorting networks[1]. This can be implemented with just comparators and wires. Thus, there's no clock involved since it is a combinational circuit. It's quite simple circuit than can be built from bottom to top with logic gates. Knuth's TAOCP has a good explanation. Additionally, there are lots of information on the internet.

\---

[https://en.wikipedia.org/wiki/Sorting_network](https://en.wikipedia.org/wiki/Sorting_network)

</comment><comment><USER13> We'll see a lot of FPGA use in the coming years. Consider this: newest FPGAs have 1TB/s (that's a terabyte per second, not terabit) memory bandwidth and 1KB-wide memory bus. Short of developing your own silicon (which takes years and tons of money), you simply can't get this kind of throughput with anything else. That's basically why Intel bought Altera.

<comment><USER14> HBM and HMC are already in the process of bringing most of those advantages to GPUs and probably some CPUs. Last year's high-end GPUs introduced HBM with a 4kb (0.5kB) wide memory bus with 0.5TB/s bandwidth. The only reason they didn't have more memory bandwidth was because they didn't need it and the die area was better put to use for compute resources. FPGAs may be the only general-purpose chips so far to actually ship that kind of memory bus, but they aren't the only ones that _can_.

<comment><USER13> GPUs aren't custom logic. They come with significant and fundamental programming model limitations. So I don't see much of a functional overlap FPGAs and GPUs. In particular, GPUs suck mightily at anything that involves branching. They're also not ideal for things like SDN, crypto, search retrieval/ranking, realtime DSP, and so on.

<comment><USER14> My point was that memory bandwidth won't sell anybody on FPGAs if they didn't already have strong reasons to be considering FPGAs.

</comment></comment></comment></comment><comment><USER15> I built a test chip for a class project in college that did sorting in linear time, without all the routing issues of this algorithm.

<comment><USER16> Care to share some details? It sounds interesting.

<comment><USER17> Perhaps implement a sorting network? [https://en.wikipedia.org/wiki/Sorting_network](https://en.wikipedia.org/wiki/Sorting_network)

</comment></comment></comment><comment><USER18> The article referenced in the comments is very cool:

[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.83....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.83.5786&rep=rep1&type=pdf)

It seems related to certain pipeline bypass structures.

</comment><comment><USER19> I have the pleasure of working with Josh, and first heard him talk about this in a car ride to get lunch. :) Very cool stuff, and very excited to see the things he builds in the future.

</comment><comment><USER5> rearranged my repo, here is the scalable, pipelined way of doing this, it ends up being an insertion sort with the benefit of small fanout (for lower energy), better scalability (faster due to lower fanout and shorter critical path with pipelining), and maintains O(1) throughput (no fill/drain cycle).

[https://github.com/theocean154/dau/blob/master/docs/part_sor...](https://github.com/theocean154/dau/blob/master/docs/part_sort_block_diagram.pdf)

<comment><USER5> more explanation is in the paper in the comments below, this is just a simple way of visualizing how it works

</comment></comment><comment><USER20> Trades time for parallelism.

This isn't going to scale to large data sets...</comment>


Ask PG: When is the application for startup school 2012 going to open? - <AUTHOR>

<comment><USER2> Within a couple of days.

<comment><AUTHOR> FYI, I had a follow up question, but ended up deciding it was best to email you personally, I hope my email finds you well. Thanks again for everything!</comment></comment>


US charges Chinese ex-IBM worker with espionage - <AUTHOR> http://www.bbc.com/news/business-36535577 <comment><USER2> Hahahaha :)</comment>


Show HN: Covid-19 Live Data API - <AUTHOR> https://github.com/adhambadr/corona-api <comment><USER2> Bearing in mind the "confirmed" number is fairly meaningless as most people with virus in most countries are not being tested</comment>


How Google Sold Its Engineers on Management - <AUTHOR> http://hbr.org/2013/12/how-google-sold-its-engineers-on-management/ar/1 <comment><USER2> > "At first," he says, "the numbers were not encouraging. Even the low-scoring > managers were doing pretty well. How could we find evidence that better > management mattered when all managers seemed so similar?" The solution came > from applying sophisticated multivariate statistical techniques, which > showed that even "the smallest incremental increases in manager quality were > quite powerful."

As someone without a strong statistical background, this really sounds like "we got data that didn't agree with the point we were trying to make, so we tried a bunch of different ways to look at it until we found the one that matched our hypothesis".

Can someone explain to my why my reaction is wrong? I'm sure it probably is.

<comment><USER3> What does "I'm sure it probably is" even mean?

<comment><USER4> Bayesian credible interval's min value is greater than 50%

</comment></comment></comment><comment><USER5> I keep reading these Google stories that appear flawless examples of exceptional thinking and execution. But heck, at some point, the stories just wash over without effect. Do they have no problem employees? Management feudal battles? Studies and organizational change movements that produce nothing appreciative?

I understand that Google is basically a giant marketing company ran by engineers who own the web, so I get the fact that there's a lot of creative spin that goes with anything you're going to see published on the web about them. But hell, it sure would be interesting to poke around behind the scenes and see how things really work.

I'm not saying that to disparage this article or work, it's actually quite impressive. I simply wanted to point out that at some point, a company that does no evil and always is inventing things along the lines of time machines and faster-than-light travel every month starts to be a bit much for a reader to consume. Surely with 40K+ employees and that much money there is some other story here.

<comment><USER6> There was a story about Google and sex at the workplace, recently. So we are seeing both positive and negative articles about Google. While Google would like to portray itself as something akin to what Toyota was, naysayers would try to do the opposite.

<comment><USER7> This is the article on that topic:

[http://www.slate.com/blogs/business_insider/2013/09/20/sex_a...](http://www.slate.com/blogs/business_insider/2013/09/20/sex_and_politics_at_google_it_s_a_game_of_thrones_in_mountain_view.html)

<comment><USER8> Notice the mention of Vic Gundotra.

<comment><USER9> Mention of his EQ surprised me. He's not exactly what I'd call a high EQ kind of a guy.

Cookie-licking -- now that I totally get.

</comment></comment></comment></comment></comment><comment><USER10> "And as the company grew, the founders soon realized that managers contributed in many other, important ways—for instance, by communicating strategy, helping employees prioritize projects, facilitating collaboration, supporting career development, and ensuring that processes and systems aligned with company goals"

That's right, but this describes a "support" function. If they were truly filling the roles in the quotes, managers would not be "bosses", but simply "colleagues". A better term than manager would be "facilitator". I don't think anyone would argue that "facilitators" are useless. What engineers tend to disagree with is the notion of "managers" as "bosses", with significantly higher salaries, etc..

<comment><USER11> Managers at Google generally are much more like "facilitators" than "bosses".

<comment><USER12> Facilitators who (on the average) make a lot more money than and have the ability to review/reward/promote/fire etc the people they 'facilitate'. That makes them "bosses" in my book. What distinguishes real 'facilitators' from bosses is that they don't have any power over the people they facilitate.

How are the Google bosses 'more like facilitators' if the power equations are unchanged?

<comment><USER11> Does this mean that because I don't care about getting promoted or fired, my manager is not actually my boss? Does it mean that I don't actually (and have never actually) _have_ a "boss"?

(This is a serious question - I think that there is a solid argument that your boss has no power over you if you don't actually care about having a job. But I'm not sure that the majority of HN - most of whom believe you need to have sold a startup to reach that point - would agree with me.)

<comment><USER12> well that dodges the point made. If you don't care about what your boss thinks or whether you have a boss or not, you don't have to work at Google where the bosses are "more like facilitators" .

This is like saying "If I am not afraid of torture or starvation and don't fear death, what does it matter if I am in a concentration camp? They have no (real) power over me". This is technically true, but somewhat unimportant in a discussion over whether concentration camps and torture are evil or not, and whether "Arbeit macht frei" is a genuine slogan or hypocrisy.

The point made is that "bosses are facilitators" is a bunch of HRSpeak and has no real meaning, even at Google.At best it is a vague ideal layered over real differences in power and compensation.

Which is fine of course, thats just the way the world is structured these days. In the olden days, I suppose the feudal lords said the same things to the peasants, "we are just here to do the nasty things that you don't want to do. Please ignore our castles and silks and focus on working your fields, we are just facilitating your efforts. We are all the Children of God after all" ;-)

What really makes somebody a boss is that they have power to affect your career and otherwise exert power over you (and a genuine facilitator doesn't -they have to persuade you to act a certain way). You may have a temperament to not care about the effects of such power being exerted over you (you may be indifferent to being promoted or fired for e.g) but then you can be just as happy at any BigCo,and don't have to bother with Google HR blather about 'bosses being facilitators' etc.

That said (and I don't want to drag this too long, so signing off with this response), your attitude is a healthy one to adopt, as long as you have(or are working towards acquiring) the chops to always have choices of jobs etc. I am sure Peter Norvig, Guido Van Rossum etc don't spend bandwidth worrying about the points they score in some arbitrary HR metric. Having or acquiring real power (or choices, which is often the same thing) is always a good strategy.

</comment></comment></comment></comment></comment><comment><USER13> My summary of what Google did:

1\. Ask what makes a good manager (the behaviors) 2\. Correlate this with an outcome (turnover). 3\. Move the needle on other managers. 4\. See result.

This is a decent enough model, but you're working on the predicate that #1 is actually building a comprehensive model.

These things may be important, but the chance of them being confounded with other variables is high. For example, you'll find that people that floss are healthier. Getting people to floss, however, isn't the solution. It's that people that care enough to floss embody numerous healthy behaviors (and future/intended behaviors).

This is not to detract from what was done, but an exercise like this needs multiple loops to normalize. I'd be interested to compare this approach with just rolling out sound management training that is based on the last 10-20 years of literature.

</comment><comment><USER14> We've seen a lot of articles on Google about the product side. This is the first I've seen in a while on their internal management. This is important for them to nail to avoid becoming the next IBM or Microsoft. (Both did well in their own ways, but Google aspires to be neither.)

Are there any GOOG alums who would like to comment on the article?

My impression is that data driven HR is a good start, but that it can leave outliers. I have heard anecdotal stories that things are generally well run, but you have to please a lot of people to be promoted as a result of the 360 degree feedback loop and general flat structure. Again purely anecdotally I've heard that there is a lot of email communication required of management, but this is true of most large tech firms. (Oracle, IBM and HP to name a few)

As an outsider my impression is that it's a great place to hire engineers from because they're learned the right things. The salespeople aren't as reliably solid, as they may not have needed to be scrappy.

</comment><comment><USER15> The study contains "examples and descriptions of best practices...details [that] make overarching principles, such as "empowers the team and does not micromanage," more concrete..."

Their "concrete" example is given by an employee who says, "Early on in my role, [my manager] asked me to pull together a cross-functional team to develop a goal-setting process."

I can't think of anything more illustrative of why engineers to be dismissive of management than strings of abstract buzzwords that conveys little information, such as "Pull together a cross-functional team to develop a goal- setting process."

That's where I stopped reading.

<comment><USER16> Every profession has jargon. I'd translate that into plain english as "stick a product manager and a designer in the same room with a couple of engineers and make sure that priorities are clearly managed at all times (as opposed to trying to enforce rigid deadlines from above).

</comment></comment><comment><USER17> 'Project Oxygen colead Neal Patel recalls, "We knew the team had to be careful. Google has high standards of proof, even for what, at other places, might be considered obvious truths. Simple correlations weren't going to be enough. So we actually ended up trying to prove the opposite case—that managers don't matter. Luckily, we failed."'

This almost made me laugh out loud. So, what he's saying is, 'We knew we could not prove managers matter, so we went ahead and tried to prove managers don't matter, knowing we would fail."

</comment><comment><USER18> I'm sure there's more detailed data for this in Google's implementation of this but largely this reads to me that this program is more of a way of HR showing management how effective or ineffective they are. I didn't see a part where there was large scale opposition to management by engineers and then a reversal of that thought, proven with data.

</comment><comment><USER19> ... a lot of googledygook

</comment><comment><USER20> nice</comment>


Strange Stories of Extraordinary Brains–and What We Can Learn from Them - <AUTHOR> https://www.wsj.com/articles/strange-stories-of-extraordinary-brainsand-what-we-can-learn-from-them-1530286669 <comment><AUTHOR> For fans of the BBC Sherlock series:

''' Studies by Eleanor Maguire at University College London and her colleagues helped demonstrate that the brain prefers to store memories as images in an orderly location. They did this by comparing the brain activity of world memory champions with a control group, while they memorized lists of items.

Results showed the only difference was that the champions preferentially used parts of the brain responsible for navigation and spatial awareness during the tasks. It turned out that they had better memories purely because they were placing items they needed to remember as images around a "mind palace." '''</comment>


RCE Vuln in FingerTec Biometric Access Control Devices - <AUTHOR> https://digital-panther.com/2016/01/fingertec-rce <comment><USER2> Didn't expect to find this posted here! I did the writeup, so if anyone has any questions I'd be glad to answer them.

<comment><USER3> The website appears to be down.</comment></comment>


A Russian Family Was Isolated for 40 Years, Unaware of WWII (2013) - <AUTHOR> http://www.smithsonianmag.com/history/for-40-years-this-russian-family-was-cut-off-from-all-human-contact-unaware-of-world-war-ii-7354256/?no-ist <comment><USER2> I remember my uncle telling me about them when I was growing up in the 90s. He was an officer responsible for the environmental impact assessment of the Baikonur rocket launches and visited Lykovs a couple of times. They lived really close to the area where Proton rocket boosters are supposed to fall down. Couple of years ago I found out that V. Peskov even mentioned my uncle in his 'Lost in the Taiga' book about the Lykov family.

</comment><comment><USER3> Primitive Technology is really interesting. This guy is super good at it : [https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA](https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA)

He's trying to get iron smelted right now, but that's really hard. It seems the problem the Lykovs ran into was that their metal items rusted after a while and they couldn't repair them. It's really hard to live without pots, and knives.

<comment><USER4> The best part about that guy is the total absence of spoken language.

But, then, the source of the iron is also pretty incredible:

      Then I collected orange iron bacteria from
      the creek (iron oxide), mixed it with charcoal
      powder (carbon to reduce oxide to metal) and
      wood ash (flux to lower the melting point) and
      formed it into a cylindrical brick. I filled
      the furnace with charcoal, put the ore brick in
      and commenced firing. The ore brick melted and
      produced slag with tiny, 1mm sized specs of iron
      through it. My intent was not so much to make
      iron but to show that the furnace can reach a
      fairly high temperature using this blower.

<comment><USER5> Bog iron [0] production was the predominant way of smelting iron before technology advanced to the point of being able to smelt iron ores. Iron Production in the Viking Age [1] has a really nice description and pictures of the process. This kind of smelting can be done with a small bloomery [2] and the resulted tiny iron specs result is called sponge iron. I wish Dwarf Fortress would implement this chain for environs that lack proper iron ores :)

[0] [https://en.wikipedia.org/wiki/Bog_iron](https://en.wikipedia.org/wiki/Bog_iron)

[1] [http://www.hurstwic.org/history/articles/manufacturing/text/...](http://www.hurstwic.org/history/articles/manufacturing/text/bog_iron.htm)

[2] [https://en.wikipedia.org/wiki/Bloomery](https://en.wikipedia.org/wiki/Bloomery)

<comment><USER6> If you can work a forteress without both coal derivatives AND metallic ores deposits, you're a better dorf than I am.

<comment><USER7> There are smelting bugs in the game where melting down certain items produces more metal than it takes to make them.

That and hatch covers (building destroyers can't destroy on different z-axis) makes it really hard to lose in Fun ways. Most of my fortresses die from FPS death.

</comment></comment></comment></comment></comment><comment><USER8> Another interesting place, though not nearly as isolated, is Lukomir, Bosnia. It was remote enough during the Yugoslavian war that the war never really made it up there (though there was little reason to probably).

You have to drive an hour and a half from Sarajevo to a small village. From there, Lukomir is another six miles up into the hills at ~2,500 meters elevation. You can now drive up there, but I strongly recommend hiking: you will feel like the IceMan walking around Europe 5,000 years ago, at least I did.

The people there live very simple lives, as you can imagine: shepherding livestock during the day in the surrounding hills, mostly sheep, for instance.

On top of this is the fact that the village is on the edge of a canyon, so has spectacular views from a cliff next to it.

If you're ever in Sarajevo you should check Lukomir out!

<comment><USER9> If you want remote experiences in Europe, check out Apuseni or Maramures in Romania. Entire remote regions with people mostly living like hundreds of years ago.

Apuseni: [http://szelmob.com/viatori/images/Blog/transylvania/Apuseni-...](http://szelmob.com/viatori/images/Blog/transylvania/Apuseni- Mountains/green-everywhere---apuseni-mountains.jpg)

Maramures: [http://romaniatourism.com/images/maramures/maramures- barsana...](http://romaniatourism.com/images/maramures/maramures-barsana- romania.jpg)

<comment><USER10> When I was little I remember thinking everyone in Europe lived like that for some reason.

<comment><USER11> And sometimes it feels like that is exactly what the tourist office wants.

</comment></comment></comment></comment><comment><USER12> Vice did a fun piece on this family a few years back that - on location - captures the environment they survived in ->

[https://m.youtube.com/watch?v=tt2AYafET68](https://m.youtube.com/watch?v=tt2AYafET68)

<comment><USER13> Thanks for sharing. Just watched it very interesting.

It was nostalgic seeing the old prayer book in Slavonic, with pages almost brown from being leafed through and used daily. I remembered by grandfather's books, they used to be like that. He tried to teach me some Slavonic, remember at least knowing the alphabet enough to read the words.

Then I like how Agafia explains what it is like to listen to the news about the outside world. The man who came to live next "door" (their relationship seems ...complicated) has a radio, and they listen to it sometimes. She mentions the impression she gets about the outside world from it, just terrible things: people killing each other, mining accidents, terrorist acts. It is as if aliens captured some of our broadcasts and tried to infer what we are like. Not that we are doing stellar job, but the news would make it seem like we are failing even more.

The other interesting comment was from the park ranger how wilderness cleanses people. Nobody is out that far stealing or committing crimes. That far out people are happy to see each other, help each other, hunters in their cabins leave food, matches and firewood.

Had to laugh of course, at her using the mangled test missile crashed nearby to scare the bears away, by hitting it with a stick. It is hard to fathom a more complete mix of Russian stereotypes in one single image: feisty old woman with a stick, wearing a head scarf, bears, soviet military artifact, and Siberia.

<comment><USER13> (can't edit post so I'll reply to it instead)

It looks like Yerofei the man next door has died last year and so Agafia is all alone again.

[http://siberiantimes.com/other/others/news/n0230-friend- to-r...](http://siberiantimes.com/other/others/news/n0230-friend-to-reclusive- hermit-dies-leaving-old-believer-all-alone-again-in-taiga/)

<comment><USER14> The article claims "Over the years Yerofey Sedov looked out for 71-year-old Agafya", but it fails to mention that Agafia did not find him helpful and that he did a 'sinful act' and blackmailed her. [https://youtu.be/tt2AYafET68?t=1141](https://youtu.be/tt2AYafET68?t=1141)

</comment></comment></comment></comment><comment><USER15> Earlier discussion on the same article on HN, few years back: [https://news.ycombinator.com/item?id=5134023](https://news.ycombinator.com/item?id=5134023)

Edit: On HN, you occasionally see _can 't forget_ articles, every once in a while. This is one of those..

<comment><USER16> On "Can't forget articles"

I really wish there was a curated Hacker News archive.

I encounter so many new things which are exciting, thought provoking and amazing stuff on HN.

Or if they would extend HN with a Categories section.

<comment><USER17> You now have the "favorites" function, with which you can publicly mark articles.

Perhaps a rank of the most favorite articles would do that.

<comment><USER18> That's basically the "best" list with variable time scales (e.g., month, year, all time, etc. instead of just week).

</comment></comment></comment></comment><comment><USER19> I remember reading this a while back on HN, for those interested in the discussion, here's the link: [https://news.ycombinator.com/item?id=10125523](https://news.ycombinator.com/item?id=10125523)

</comment><comment><USER20> If anyone is interested, the Lykovs were part of a group of 'Old Believers' (староверы) a sect of the Russian orthodox church. The primary reason many people who shared their faith fled major cities was because of Communist religious purges (an attempt to solve the problem of 'Religion is the opium of the people')

[https://en.wikipedia.org/wiki/Old_Believers](https://en.wikipedia.org/wiki/Old_Believers)

<comment><USER21> Yep and in an irony of history, they, not the Metropolitan of Moscow, were actually being better at adhering to tradition.

<comment><USER22> What tradition do they hold to that has any relevance to Orthodox Christianity? It's not as if the MP (Moscow Patriarchate) is particularly modern - apart from not forcing their lay adherents to abandon modern technology. There are still hermits and monks in the canonical Orthodox Churches - on Mt. Athos, at Valaam, Mt. Sinai, etc... Canonical Orthodox churches still reject most of the shit that the Anglicans and Catholics have accepted. But they cross themselves with 3 fingers instead of 2...

</comment></comment></comment><comment><USER23> A fascinating story from 2013.

There was an interesting short follow up from the Siberian Times a year after the Smithsonian piece - the last surviving member was seeking help, or maybe just tiring of isolation, in her 70s.

[http://www.businessinsider.com/agafya-lykova-asks-for- help-2...](http://www.businessinsider.com/agafya-lykova-asks-for- help-2014-1?IR=T)

<comment><USER24>
      "I am all alone, my years are big, my health is bad, I keep
      getting ill," Agafia said in the letter cited by the
      newspaper. "There is a lump on my right breast, and my strength
      is going. There is a need for a person, a helper, assuming
      there are kind people in the world, as the world has always had
      kind people."

      The thought of the elderly Agafia facing such a harsh winter is
      tough. But not all locals are sympathetic -- she has been
      offered a winter home in a local village before, the Siberian
      Times reports, but has refused it.

      "She is being a little cunning," Vladimir Pavlovsky, editor of
      the local paper Krasnoyarskiy Rabochiy, told the Siberian
      Times. "She has no hunger. She wants to attract more
      attention. She has enough cereals, bags of them lie on her
      porch, and everywhere. And she has enough potatoes."

That editor sounds a bit heartless. She's clearly gone about as far as anyone can be expected to go, living virtually her whole life in isolation, and now she's 70 years old and is having a hard time taking surviving in one of the harshest environments on earth.

After a while, your body starts to break down, and some cereal and potatoes aren't going to cut it. She needs things like firewood and water. Even simply cooking will eventually be impossible to do when one gets old enough, especially under those primitive conditions.

Besides, she's probably lonely. Many elderly people suffer from depression and take their own lives because of their isolation. How hard can it be to have some sympathy for that?

<comment><USER25> He probably has less sympathy since "she has been offered a winter home in a local village before (...) but has refused it."

I can understand how much it pains her to leave her home, but seems a bit much to ask some unrelated person to leave theirs to live with her.

</comment></comment></comment><comment><USER26> Isolated, but not as isolated as:

[https://en.wikipedia.org/wiki/Sentinelese_people](https://en.wikipedia.org/wiki/Sentinelese_people)

[https://en.wikipedia.org/wiki/North_Sentinel_Island](https://en.wikipedia.org/wiki/North_Sentinel_Island)

Forget being unaware of WWII. Try being unaware of what a car or phone or airplane or office building is, let alone the idea of a "world war".

Look how primitive they behave.

[https://imgur.com/gallery/tWY1o](https://imgur.com/gallery/tWY1o)

Imagine taking one of these tribesman on a tour through Times Square NYC.

<comment><USER27> They do not seem unaware of modern technology, from the info on these links. They seem like they reject it.

</comment></comment><comment><USER28> Highly recommend Happy People: A Year in the Taiga [http://www.imdb.com/title/tt1683876/](http://www.imdb.com/title/tt1683876/)

</comment><comment><USER29> Another article about this family said they died of kidney failure not because of their harsh diet, but because of the reintroduction of salt [citation needed]. Similar but not as unavoidable. Then again they craved salt but it's plausible their body couldn't handle it.

</comment><comment><USER30> The three siblings are believed to have died from pneumonia.

Yerafei expresses doubt, saying "how could they get infected from us if they never took anything? For a long time, they didn't take our water, our food. If anything, Agafia should have gotten sick. Why? Well, I once grabbed her and kissed her."

Kissing facilitates the exchange of microbiota[0] and that exchange can strengthen the immune system. Might be that kiss saved her life.

[0 - Shaping the oral microbiota through intimate kissing]([https://microbiomejournal.biomedcentral.com/articles/10.1186...](https://microbiomejournal.biomedcentral.com/articles/10.1186/2049-2618-2-4))

</comment><comment><USER31> This reminds me to the Hun village in the Swiss Alps:

[https://en.wikipedia.org/wiki/Anniviers](https://en.wikipedia.org/wiki/Anniviers) or [http://archive.worldhistoria.com/the-hunnic-swiss-valley- val...](http://archive.worldhistoria.com/the-hunnic-swiss-valley- val-d%E2%80%99anniviers-origin-hun-or-hungarian_topic7796.html)

Because the difficult landscape, these villages were isolated and kept the culture and some of the language. Funny to see the motifs on my mom's table cloths or the ornaments on my far relatives' main gatein Transylvania are exactly the same.

</comment><comment><USER32> Previous discussion, almost exactly 1 year ago:

[https://news.ycombinator.com/item?id=10125523#10126308](https://news.ycombinator.com/item?id=10125523#10126308)

<comment><USER33> > almost exactly

 _Approximately_

</comment></comment><comment><USER34> Some photos from 2013: [http://shpilenok.livejournal.com/193005.html](http://shpilenok.livejournal.com/193005.html)

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

</comment><comment><USER36> Great story. It somehow makes me think of the honored forest people from "Nausicaa of the Valley of Wind".

</comment><comment><USER37> Well, they teach us in schools about that family, so this is kinda common knowledge in russia

</comment><comment><USER38> Karp seems chill af

</comment><comment><USER39> Found them gave them pneumonia and killed them.

<comment><USER40> Only one died of pneumonia. Not clear if it was caused by contact with modern people.

<comment><USER41> It doesn't even need to be contact with "modern" people, just with people.

</comment></comment></comment><comment><USER42> Your Beliefs Doesn't Make You A Better Person; Your Behavior Does;</comment>


Good Vibes Are Contagious - <AUTHOR> https://www.outsideonline.com/2391572/send-good-vibes <comment><USER2> I'm going to point to this article next time someone argues with me about covering their mouth when they smile.

</comment><comment><USER3> :)

<comment><USER4> ( ͡° ͜ʖ ͡°)</comment></comment>


Bowline - A Ruby GUI Desktop Framework - <AUTHOR> http://leadthinking.com/191-bowline-a-ruby-gui-framework

<comment><USER2> This is cool and all, but I'm really wondering to myself if it is really necessary?

Every AIR app I've run across (Flash or HTML based) has always ended up in the trash can. Either it's too slow, too obtuse, inconsistent user experience from the rest of my OS, etc. I find even the much flaunted Balsamiq to be inexcusably slow, so slow in fact I still prefer booting up XP in a VM and using Axure (which is better software anyways, but that's another topic for another day).

And I really wonder if these guys think they can do what Sun, Microsoft and - to a lesser extent - Adobe, have failed to do: build a cross platform UI toolkit without the aforementioned deficits. And then the filesystem abstractions and socket abstractions and the list goes on and on.

And, really, coding native isn't that hard on either platforms (I don't know much about Linux desktop dev, but I know plenty about Windows and just enough to shoot my mouth off with OSX). And it's not likely you're building anything of any serious complexity with AIR, Titanium, etc. anyways. I can almost guarantee you that I could build their example twitter client in Cocoa in roughly the same time and with roughly the same LoC metrics. I'm not saying that because I have a big penis, I'm just wondering what the true value of these cross platform tools are when they only deliver on a small percentage of what my particular OS has to offer.

It almost feels like you are sacrificing usability for a developer's laziness. For example, I built this in ~10 hours: <http://videos.massify.com/prototype/shave.demo.mov> \- including the custom UI widget to visually create a video clip.

Anyways, cool work, nice demo, good luck!

<comment><USER3> _I could build their example twitter client in Cocoa in roughly the same time and with roughly the same LoC metrics. I'm not saying that because I have a big penis, I'm just wondering what the true value of these cross platform tools are..._

Well... you just said it. Cross. Platform. Sure, you could write it in Cocoa. But then you'd have to write it again on GTK+. And again on whatever the Windows kit is called (I don't know).

If you're lucky enough to be familiar coding for all three platforms, that's great for you. The last question remains: Do you want to be maintaining three separate codebases for the same product?

<comment><USER4> _If you're lucky enough to be familiar coding for all three platforms, that's great for you. The last question remains: Do you want to be maintaining three separate codebases for the same product?_

The question isn't what you want, but what your market wants, and whether you can afford to deliver it.

</comment></comment></comment><comment><USER5> This is what I come to HN for.

Awesome, well done. Don't listen to all the folks here so quick to rain on everybody's parade. I get a huge kick out of seeing people build things like this, and seeing them start and develop over time.

It's beautiful and I love it and I can immediately thing of a number of scenarios where it will be very useful.

</comment><comment><USER6> I was just toying with such an idea and wondering why that wasn't thought before. Use webkit as the base GUI widget tied with Python/Ruby/your_favorite_lang and you get:

* Truly cross-platform GUI on major OSes.

* Smoother transition if your app needs to move on web.

* Pretty looking UI's. 5 years ago, I'd prefer VB/Delphi/.NET [1] for building state of the art UI's (backed by some commercial packages) but today the scene has been completely changed. Hard to catch up with JQuery and alike when it comes to good looking UI's with the tools above.

Downsides? Having a fully blown JS interpreter working aside and a few megabytes bigger installations? Well, I'd say, way to go boy!

Glad to see someone actually working on this idea. I hope they don't make the mistake of setting a high price for entry which would unavoidably push it into being another niche framework. Best of the luck!

[1] and good luck on Linux!

</comment><comment><USER7> Looks like I can view the package contents of your Twitter example app and see all the source. This may not be desirable for people trying to write a cross- platform app which they can also sell. Any way to close-source the final product?

<comment><AUTHOR> Yes, I've ported it to Ruby 1.9 When this is complete, you'll be able to byte compile all your Ruby code (and obscure all the JavaScript).

</comment></comment><comment><USER8> As the web (html, js) is the future any tool porting it into proprietary platforms (desktop, phone, multi-touch) is more than welcome!

It's better to focus on a business domain than learning proprietary technologies.

</comment><comment><USER9> Drooling...

You build a working HTML4 web app, and then sprinkle progressive enhancements with JS and HTML5 (even offline browsing!), and voilá! You've got a web application with an awesome desktop client!

</comment><comment><USER10> Quite interesting. Have to see how this compares to using JRuby + Swing, where I have a remarkable choice of UI widgets, and tools (rawr, for example) to turn my program into .app and .exe files, with installers.

Plus, the resulting code is protected by the jrubyc compilation process. And I can use all available Java libs in my app.

Still, being able to do things in HTML is nice (though a bit limited).

Props on a very cool project.

</comment><comment><USER11> Neat idea but the user experience is terrible. I want a whatever.app that just opens and does its thing when double clicked, not something that shows a dialog box telling me that a dozen things need to be downloaded.

Is there a way around this?

</comment><comment><USER12> So, how does this equate to _why's Shoes framework?

<comment><AUTHOR> * Bowline uses HTML/JS - Shoes is pure Ruby. * Bowline respects MVC. * Shoes is more developed at this time.

<comment><USER13>
      Shoes is pure Ruby

Ruby wrapped around Cairo (drawing library) & Pango (text library)

<comment><AUTHOR> Sorry, I mean Shoes is developed in pure Ruby</comment></comment></comment></comment>


An Introduction to Ontology: From Aristotle to the Universal Core - <AUTHOR> http://palexander.posterous.com/barry-smiths-course-an-introduction-to-ontolo <comment><USER2> Does anyone know what his basic theory is for the structure of the hierarchy of concepts?</comment>