Show HN: Load this image from a peer rather than from a web server (open source) - <AUTHOR> http://demo.peerkit.com/static/index_demo.html <comment><USER2> My inner-Sysadmin loves it (reduce ALL the load), but my inner Security-nut worries-

Are the user's IPs or other connection information being exposed to one another?

Could users fake the upstream response, sending a fake/false image instead?

If a user visits the page over a 14.4 modem, is he equally likely to have other users try to load over his connection as the Google Fiber user?

This seems really cool, but I wouldn't trust my sites with it yet ;)

<comment><USER3> >Are the user's IPs or other connection information being exposed to one another?

So what? If I wanted to get a bunch of random IPs to attack, I could host a picture of a cat on my server, log IPs, and post the link on reddit. Or I could just scan random IPs within home ISP IP ranges.

<comment><USER4> Its not just random IPs, it would be ips of people who use whatever service the website provides. If that website were to have a vulnerability, you now have immediate targets.

<comment><USER5> Would suck if you were, for example, a "web dissident" in China and visited an HTTPS site that uses this tech.

All the security forces would have to do is visit the site then log all the IPs to which they send their copies of the images to.

Using this they could also narrow it down to the exact page being used rather than the IP address

</comment></comment></comment></comment><comment><USER6> My (Windows 7) firewall immediately popped up. Good firewall! Have a cookie.

</comment><comment><AUTHOR> In case you don't care about the CDN stuff, and only want to do p2p transfer from client-side JS, here's a demo app I wrote that lets you send and receive multiple images between people on the same site. <http://github.com/dtrejo/peerimage> Note: it is really slow on big images. I recommend just using favicons!

</comment><comment><USER7> a red checkmark is bad to indicate failing, you should use a red X instead..

<comment><USER8> It's actually culture-specific; some cultures have it as bad, some have it as good. In any case, it's a bad choice. From [1]:

> Symbolism can be culture-specific. The check mark means correct or OK in > many countries. In some countries, however, such as Japan, it can be used to > mean that something is incorrect. Japanese localizers may need to convert > check marks to circles (their symbol for 'correct') as part of the > localization process.

[1] <http://www.w3.org/standards/webdesign/i18n.html>

<comment><USER5> Yea, when I taught English in Japan I had a distraught parent come to me because she thought her child had got almost every question wrong because I used a tick (Checkmark)

Although to be fair, the tick (checkmark) that westerners use is not really the same as what Japanese to use to mark things as incorrect since they more closely resemble V than a tick.

</comment></comment></comment><comment><USER9> Apparently this is based on WebRTC [1]. Which is apparently not affected by the same origin policy. Can anyone explain why WebRTC can't be used for DDOS attacks in the obvious way (a script on a page that can open pages to any IP address could cause every visitor to that page send/receive massive data to an unrelated website, taking the target offline and/or massively inflating their bandwidth bills)?

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

<comment><USER10> WebRTC cannot connect to arbitrary IP addresses, only to other browsers that have opened the same page and whose user has authorized a WebRTC connection.

</comment></comment><comment><USER11> Every time the donation bar for wikipedia comes up, I think about making a project like this to reduce their bandwidth and server costs. I have no idea if something ad-hoc would work for their workload (they may have way too long of tail).

On the other hand, I think a lot of people would be willing to permanently donate some upload bandwidth and processing power to wikipedia if it were feasible to take advantage of it.

</comment><comment><USER12> I'm having a hard time to get a P2P image. I opened the demo in one window and opened a second one. After about ten refreshes I've got an image from a peer (presumably the other window as the shared counter went up by one). I repeated a bunch of times but it seems the rate at which images are served from a peer seems very low. Could you explain why? (I'm on Chrome 26.0.1410.43 m)

Other then that, sweet proof of concept.

<comment><USER13> Thanks! One possible explanation is that the coordination server, which tells you who has what files, is being slow. We're working on it.

</comment></comment><comment><USER14> Does this use data: URLs to get data from JS into the page?

Red means bad but checkmark means good, so red checkmark means... what?

<comment><USER15> Check mark means image loaded. Color indicates source. Sorry for bad UX. I was lazy and didn't find a good UTF symbol for X.

It's using the [https://developer.mozilla.org/en- US/docs/DOM/window.URL.crea...](https://developer.mozilla.org/en- US/docs/DOM/window.URL.createObjectURL) API to get data on page, so not slow and inefficient like data urls

</comment></comment><comment><USER16> This sounds like an interesting idea but needs a fallback for mobile devices. It didn't work mobile Safari. If it had though the person at the other end of my extremely slow 3G would have been very disappointed.

</comment><comment><USER17> Interesting idea. However, as far as I can tell, this will not work well from a security perspective; 1) No support for https (and implementing anything would be non-trivial -- either all clients would need a certificate trusted by all others (eg: cacert client certificates) -- as mixing signed and unsigned data on a page is unsafe, this would "break" ssl-enabled pages) and 2) No protection against rouge clients sending different data (from spoofing to exploits targeting image handling libraries).

</comment><comment><USER18> Wow, this is great. I feel like stuff like this can change the web. Have you thought about building a CDN with it?

<comment><USER19> This was launched just yesterday. Written in pure Javascript.

<https://peercdn.com/>

<comment><USER13> Co-Author here: A cdn using peer to peer has been on a lot of people's minds for a while. There are certainly going to be lots of competing implementations, but you can already start perusing PeerKit's code on github

<https://github.com/PeerKit/peerkit>

</comment></comment></comment><comment><USER20> So unless you're imgur, whose load has substantially to do with images?

In most of the stuff I've worked on, it was either a database or an analysis backend the requests were blocking in.

More power to 'em though, love stuff like this. :)

<comment><USER13> The project is flexible enough to provide support for all media types-- video is definitely where the majority of your savings will be coming from. For a first-time demo though, we decided to just transfer a small image.

</comment></comment><comment><USER21> Can Firefox Nightly be supported too? I couldn't tell if it worked.

</comment><comment><USER22> My company Kontiki (<http://www.kontiki.com>) has been providing peer-to-peer solutions for a while now. We do require a client installation but that's not an issue in an enterprise environment (our target market) where central software distribution is the norm. Most importantly, an installed client allows us to overcome the HTML5 Web Storage limit of 5-10MB. You can't really store much video content with that limit in place.

<comment><USER13> Peerkit's caching layer hacks around the HTML5 localStorage limit by opening iFrames to multiple top-level domains. Agreed that it's a messy solution that introduces some overhead (loading iFrames), but it seems to work.

<comment><USER23> :D</comment></comment></comment>


An introduction to data compression with arithmetic coding - <AUTHOR> http://marknelson.us/1991/02/01/arithmetic-coding-statistical-modeling-data-compression/ <comment><USER2> The BWT is also rather interesting [https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transf...](https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform) . An efficient implementation is fairly simple, but not at all intuitive.</comment>


A Foursquare TV show? Don't laugh, it's real - <AUTHOR> http://news.yahoo.com/s/yblog_technews/20101203/tc_yblog_technews/a-foursquare-tv-show-dont-laugh-its-real

<comment><USER2> Can't I laugh anyway? This seems an awfully thin reed upon which to hang millions of development dollars.</comment>


Show HN: Ferzy – Discover profitable and easy-to-rank keywords - <AUTHOR> https://ferzy.com <comment><AUTHOR> I hope that the app is easy to use and intuitive, but if you have any questions, let me know. Any feedback or suggestions are much appreciated.

<comment><USER2> Would it make more sense to show the full search keyword suggestions? Most of them are truncated when on a smaller screen (desktop)

<comment><AUTHOR> Thanks for the feedback bilkoo. We are aware of the problem, for the moment we have implemented a hover on them so you can see the full keyword even when it's truncated, but we are working on making our design more friendly for all resolutions. Thanks for the feedback.</comment></comment></comment>


Thoughts on my new non-QWERTY iPhone keyboard? - <AUTHOR>

Launched recently, but it may be too unconventional to succeed: http://herokeyboard.com
I'd like to add an auto-complete/suggest bar in phase 2. Any input and ideas is appreciated! Thanks. <comment><AUTHOR> Here's the linked URL: [http://herokeyboard.com](http://herokeyboard.com)</comment>


How to Write Injection-Proof SQL - <AUTHOR> http://www.schneier.com/blog/archives/2008/10/how_to_write_in.html

<comment><USER2> 62 pages. For comparison, let's look at the simple rule you need to follow to avoid buffer overflows:

Count.

Buffer overflow cost so far to the industry? In the billions, at least: companies buy hundreds of millions of dollars of products every year as countermeasures against them. And that's for a bug whose fix can be described in one word.

<comment><USER3> The article is about sql injection not buffer overflows.

But the advice is also simple: 99% of the problems are solved by using parameterized queries ( pretty much every language/db library has them )

<comment><USER4> You missed his point.

Preventing buffer overflows is simple and well understood, yet it's still a problem. Preventing SQL injection is not as simple.* He's pointing out that if we have big problems even in the presence of simple solutions, we'll have even worse problems with not as simple solutions.

*Your solution might be "simple," but it's still more complicated that making sure you don't overrun your buffer.

<comment><USER3> ah yes, good catch

I misread that

</comment></comment></comment></comment><comment><USER5> Correct title is "How to Write Injection-Proof PL/SQL"

</comment><comment><USER6> Another instance of xkcd seen in a "serious" context: page 14.</comment>


Pseudorandomness - <AUTHOR> http://people.seas.harvard.edu/~salil/pseudorandomness/ <comment><USER2> Semi on-topic: pseudorandomness is an interesting idea that has interesting applications in real life.

Maria Konnikova [1] mentions that poker players, even when they have an on- average winning strategy, randomize their play using the second hand on their watches. For instance, they might execute their play 3 times every 4 plays, depending what their watches tell them.

For me the deeper implication is that in an environment with stochasticity (the real world is a mix between determinism and randomness), executing the same deterministic strategy all the time is likely not going to guard you against the random events that are harmful. Randomization provides a sort of protection by diversifying your strategies.

[1] in an interview with Sean Carroll on the Mindscape podcast

<comment><USER3> In game theory, the optimal strategy is often a stochastic one. In those games, if you play deterministically there's always a way for your opponent to gain an advantage; playing randomly from a particular distribution is strictly better for you.

cf. [https://en.wikipedia.org/wiki/Strategy_(game_theory)#Mixed_s...](https://en.wikipedia.org/wiki/Strategy_\(game_theory\)#Mixed_strategy)

<comment><USER4> +1

A good example of this is rock-paper-scissors. Imagine playing against someone with a non-random strategy.

<comment><USER5> Good ol' rock always wins.

</comment></comment></comment></comment><comment><USER6> I took the class this book is based on (years ago), and it was great: after programming languages, it was the most philosophically mind-bending class I had in any technical subject.

There sure is a lot of mathematical content there; it's a graduate-level class in CS theory. The math is all there for a good reason if you want to understand precisely what's true in this area vs. what's too good to be true, or to be able to prove that it's true. But I think the key insights can be understood without much math.

The author discusses this all much better than I can in a comment, so I recommend reading the introduction and conclusion chapters. Or this other exposition by a different author, which I discovered through a reference in the intro: [http://www.wisdom.weizmann.ac.il/~oded/prg- primer.html](http://www.wisdom.weizmann.ac.il/~oded/prg-primer.html)

But here's an attempt at describing just one of the key insights: the right definition of "pseudorandom" is _computational_. Specifically, something that generates a bunch of data is pseudorandom if _you can 't tell_ it apart from genuinely random data, within feasible resources like polynomial time.

And one reason that's the right definition is: if you have such data, now you can plug it in literally anyplace you would use random data. Because if something would go wrong by doing so... well, that'd be a way to tell the difference! :-) There is no such way, so it must behave just like using the real thing.

</comment><comment><USER7> It's an interesting area, but a quick scan of the generators section makes it look quite inaccessible.

I actually have a pseudorandom number generator as my interview question and it's quite simple. I have a slightly simplified asci-art version of it that use essentially a variation of Wolfram's Rule 30.

Coding it is easy, requiring no algorithms or data structures, just some iteration, if statements and substring look ups. At first some are annoyed at what looks like a useless, made up toy project, but then I tell them this was actually a part of Mathematica in the early versions and we start discussing how you'd turn that output into a useful pseudorandom number generating function with a seed, acceptable performance etc. Quite a few end up happy with the problem at the end.

<comment><USER8> I've looked around abit and pseudorandomness is not an accessible subject, if you have any links for something then please share. I can not judge this, at least it seems thorough, but too much math but it feels like it at least is a good starting point.

<comment><USER7> Wolfram has a lot of talks, etc but this interview seems like a decent intro: [https://www.youtube.com/watch?v=VguG_y05Xe8](https://www.youtube.com/watch?v=VguG_y05Xe8)

Let's implement Rule30, which is quite beautiful and he talks about it a lot: [https://mathworld.wolfram.com/Rule30.html](https://mathworld.wolfram.com/Rule30.html)

[https://jsfiddle.net/zL6pgyo4/1/](https://jsfiddle.net/zL6pgyo4/1/)

We start with a simple seed and apply a set of simple rules over and over again. If you scroll past the first few lines of the output, you start to get very complicated patters. If you try other rules, you usually don't see any patterns or anything interesting, rule30 is kind of rare.

Wolfram's done some analysis and he says if you go down the central line (assuming the width keep on growing, which is not the case in my fiddle), and take each "bit" (which I represent as "-" and "X") and plot it, you'll find they're fairly uniformly distributed. Once we have these stream of uniformly distributed bits, you can convert it a string of integers or whatever you need.

For the math behind whether something is random or not, you can look up the "chi squared test", but I think the intuition is way simpler - random things are uniformly distributed. Random things look like white noise on old TVs. If you plot the frequency of their occurrence, each one should be just as likely as every other thing. In our example, if you take the output, flatten it into a string, segment it into chunks of 8 (representing a byte), then count the occurrence of each byte ("\</comment></comment></comment><comment>--", "\</comment><comment>-X", "\</comment><comment>X-") they should have the same number of occurrences.

</comment><comment><USER9> "Anyone who attempts to generate random numbers by deterministic means is, of course, living in a state of sin." \- John Von Neumann

<comment><USER10> Aren't most PRNs made deterministically? LCGs can have huge cycle times and can produce statistically sound random numbers.

I had to look it up and Wikipedia has this statement a bit differently. This one makes Neumann sound funny because his Mid-Square method is a terrible PRN generator.

<comment><USER3> > Aren't most PRNs made deterministically?

All pseudorandom numbers are deterministic; that's what the 'pseudo-' prefix is meant to indicate. There are other kinds of random number generator that observe physical entropy sources instead. Perhaps the most iconic is CloudFlare's wall of lava lamps[1].

[1] [https://blog.cloudflare.com/lavarand-in-production-the- nitty...](https://blog.cloudflare.com/lavarand-in-production-the-nitty-gritty- technical-details/)

<comment><USER11> History trivia: Cloudflare stole this from SGI, who patented the idea.

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

<comment><USER12> Hardly stole it, literally acknowledged in blog post where we announced this: [https://blog.cloudflare.com/lavarand-in-production-the- nitty...](https://blog.cloudflare.com/lavarand-in-production-the-nitty-gritty- technical-details/)

 _We 're not the first ones to do this. Our LavaRand system was inspired by a similar system first proposed[1] and built by Silicon Graphics and patented[2] in 1996 (the patent has since expired)._

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

[2] [https://patents.google.com/patent/US5732138](https://patents.google.com/patent/US5732138)

<comment><USER11> Calm down.

I'm hardly accusing anyone of any wrong-doing. It is a turn-of-phrase that I'm sure most english-speakers have encountered.

<comment><USER13> It has a very different connotation when you say "I'm stealing..." than it does when you say "you're stealing..." It's only jargon in first-person.

Compare saying "wow, I'm really stupid" when you make a mistake vs. saying "wow, you're really stupid" when they do.

Self-deprecation applied to others is just deprecation.</comment></comment></comment></comment></comment></comment></comment>


Music with AWK - <AUTHOR> http://kmkeen.com/awk-music/

<comment><USER2> Here is Paul Hudak's library for creating music in Haskell

<http://haskell.org/haskellwiki/Haskore> and here are some samples that you can listen to [http://users.informatik.uni- halle.de/~thielema/Music/HAL2/mi...](http://users.informatik.uni- halle.de/~thielema/Music/HAL2/midi-haskore/)

He also discusses it in chapter 20 of his book. I was quite surprised to know that he is currently on medical leave due to a rare form of leukemia. Surprised, because leukemia has been on the radar on HN (as well as on personal front) lately.

I know it is selection bias, but it still feels weird when coincidences like that happen in clusters.

</comment><comment><USER3> You'll want to pipe it into `aplay -r 64000`. At least my copy of aplay incorrectly guesses the rate so you have to tell it.

<comment><USER4> Thank you- that sounds much more pleasant.

</comment></comment><comment><USER5> How can i make it work on osx?

<comment><USER6> pipe it into SoX

awk [...] | sox -c 1 -b 16 -r 44100 -s -t raw - -d

<comment><USER7> And you can install sox from homebrew. (I, at least, didn't have it installed by default)

</comment></comment></comment><comment><USER8> Hey, it is HN again. I would have about four times as many points if I ever remembered to post any of my stuff here. :-)

Thanks for the feedback, will update it with regards to osx later.

</comment><comment><USER9> Oh, the power and beauty of the pentatonic scale.

<comment><USER10> You reminded me of [http://www.ted.com/talks/bobby_mcferrin_hacks_your_brain_wit...](http://www.ted.com/talks/bobby_mcferrin_hacks_your_brain_with_music.html)

</comment></comment><comment><USER11> Anybody knows if the faster "chirping" sounds in the background can be eliminated? If there were only "slow" chimes I think it would really be very suitable for meditation purposes.

<comment><USER8> There is no faster chirping sound. I'm guessing you are using Jesvs's sox line? I was very surprised sox was able to work at all, half of the settings were wrong. Try

awk [...] | sox -c 1 -b 8 -r 64k -e unsigned -t raw - -d

instead. No clicking/popping with that.

<comment><USER11> I've just listened to the mp3 linked from the page (<http://kmkeen.com/tmp/awkbient.mp3>) and I've heard the sounds I've described. I hear it like "(loud:) dong (quieter:) brrr-brrr-bbrrr (loud:) dong (quieter:) brrr-brrr-brrr (loud:) dong" The brr-brr sounds are the unpleasant ones. I hear them also when listening to wav made by lame --decode of mp3.

</comment></comment></comment><comment><USER12> This is a little (a lot) off-topic but I liked the way he conveys his contact details in that image to the left, heh.

</comment><comment><USER13> You don't need to end all those lines with backslashes, BTW.

</comment><comment><USER14> haha, reminds me of the social network.</comment>


Show HN: Rocket – a language that lets you focus on your business logic - <AUTHOR> https://github.com/camullen/Rocket <comment><AUTHOR> OP here - in the very early stages of language design, but would appreciate any feedback / help the community can provide</comment>


Boeing finds debris left in new 737 MAXes, now in storage - <AUTHOR> https://leehamnews.com/2020/02/18/boeing-finds-debris-left-in-new-737-maxes-now-in-storage/ <comment><USER3> I don't care how certified these planes are down the track, I never want to set foot on a 737 Max and generally any new Boeing that doesn't have a solid air history. Trust with these guys is totally blown.

<comment><USER4> I'm totally with you, but how do you prevent it? Usually you only know what type of plane you fly with _after_ buying tickets. A solution might be to only buy tickets from operators that don't have with 737 MAX planes but this group might be getting smaller over long time.

<comment><USER5> I pick airlines that have (almost) no Boeings and that I can call before booking to see if it's an Airbus. I have done that for many years before the 737 Max issues. I simply find them annoying (very noisy) to fly with, but I definitely try to avoid. Some times I find myself in a Boeing on short flights when suddenly another airline provides the plane and it may be bad luck or damaged hearing or whatever; every flight I get into (and I fly a lot) with a Boeing, the noise is horrible.

<comment><USER6> my experience with A350 vs 787 (both Qatar) is that the A350's are some of quietest planes I've flown.

<comment><USER7> Got bumped from a A350 to a 777 for an upcoming long haul when Cathay Pacfic changed their schedules due to COVID-19. Blegh.

<comment><USER8> The 777 is the safest of them all, isn't it?

</comment></comment></comment></comment></comment></comment><comment><USER9> The Daily podcast interviewed a manager of the NC (SC?) Boein plant and he said he reported debris in planes and tried to stop them from being shipped off... and failed. It wasn't the fuel tank, though, it was in the air frame. Sharp objects. That coexist with wires. While listening I must have said "WTF" out loud a dozen times.

<comment><USER10> Worse, that type of thing is long been known as an dangerous issue and the industry has processes and protocols to deal with it. That's why it's "worse", Boeing knows about all these things and conscientiously decides to don't give a f#$%k.

Airbus ( and I'm sure pretty much all the other manufacturers ) has all the processes for training the workers about this problem, how to avoid it, how to deal with it when happens, check-in and checkout all the tools at the start and the end of the task, inspections, etc. this is so basic it hurts.

<comment><USER11> I think its probably a lack of supervision and not a lack of protocols, if it were a lack of protocols the 787s assembled in Everett would have the same issues. Also, I have personally observed the use of protocols to prevent this in tours and (a long time ago) working in the Everett factory.

<comment><USER12> The tricky thing about protocols is that you have to be willing to follow them and deal with the consequences when you step off the normal path through the flowchart.

If the protocol says "(1) Check out tools before using them. (2) Check in tools when returning them. (3) Verify all tools checked out have been checked in before marking the job complete." that's one thing. Sending employees to training on how to do this and seeing daily clipboards by the tool room with initials might make you think the protocol is in use. And if there are supervisors making sure that the clipboard is full of initials at the end of the day, that can give you a nice warm fuzzy feeling.

The problem comes when supervisors want to 'look good' by having no deviations from the protocol. If people are post-dating their check-in or pre-dating their check-out, or checking stuff in that's still in use by a coworker, the protocol is less than useless.

When humans are tasked with following those protocols, they'll make human mistakes sometimes. If there are no mistakes that's not good, that's bad - <USER2> indicates the metrics are being fudged. I think any supervisor that fails to find a deviation from the protocol or who can't list an event when the protocol required action outside the norm does not look good.

Similar stuff applies to software development: If you're doing code reviews, or testing before check-in, or signing off on releases, and can't point to a time when the protocol said "nope, go back to the drawing board" you're not actually making your development safer you're making it a hassle.

<comment><USER11> The tool crib checkout is done on computer at least. The toolbox inspections might be fudged.

It also might be downstream or upstream of the Boeing factories, like at one of the companies that manufactures major components (example: Spirit AeroSystems manufactures the 737 main fuselage and I'm told Section 41/cockpit of many aircraft) or at one of the maintenance facilities.

</comment></comment></comment></comment></comment><comment><USER13> Apparently these problems are very hard to avoid. See here for some stories in context of the Space Shuttle: [https://waynehale.wordpress.com/](https://waynehale.wordpress.com/)

As a remedy, they use tools that are tracked by RFID and tool cabinets that monitor that all tools are back in place.

<comment><USER14> It's a known problem with known solutions. "Foreign object elimination" I ended up taking the FOE training after someone left a tool at a radar site. I work in software and never visited the site, but "big company". FOD foreign object damage is what everyone is trying to avoid.

(Pdf) [https://www.astm.org/CERTIFICATION/DOCS/222.NCATT_FOE_Standa...](https://www.astm.org/CERTIFICATION/DOCS/222.NCATT_FOE_Standard.pdf)

<comment><USER15> Any large aerospace contractor has mandatory FOD/FOE training for ALL employees (contract stipulation). Don't forget to _not_ charge for this time spent!

<comment><USER16> > Don't forget to not charge for this time spent!

Implying an interesting story here, mind sharing?

<comment><USER14> If you've ever worked for a defense contractor, you have charge codes for everything. They take charging to the correct code correctly very very seriously. (In 6 minute intervals (.1 hr)). Submit your time daily.

We were a Boeing Sub contractor.

Timecard fraud was a fireable offense. The company I worked for was rumored to have fired someone who came into the office on a weekend and badged in his buddy who wasn't actually there. Basically trying to game the door timer system.

My last task at big co, was making a timecard app for ios and blackberry, to make it easy.

<comment><USER16> Yes that makes sense, but the interesting story would by why required training should _not_ be billed to the client.

</comment></comment></comment></comment></comment></comment><comment><USER17> The article doesn't say what kind of debris they found. Can it lead to the fuel being cut off during flights? Can it be undetected for non-737 MAX planes that are currently flying?

Also, from the comments:

> One Middle East airline inspected their new 787 and found lots of debris and > didn't want 787 from Charleston for some time. They also found a chewing gum > covering a hole in a wall close to a door.

<comment><USER18> I feel like it would be easier to just put a big mesh over the fuel intake inside the tank, and then say "this plane is certified to have objects up to 10 inches in the fuel tank and will still operate as designed".

Planes have two fuel tanks and two engines anyway - I would really struggle to imagine a scenario in which FOD in a fuel tank would lead to something worse than an emergency landing.

<comment><USER19> A screwdriver is under half an inch in diameter and will cause major problems with your engine.

</comment></comment></comment><comment><USER20> So there is no need to delay delivery because they've launched a "robust" internal investigation. I'm sure this debris doesn't at all point to the possibility of overall bad quality control and the presence of other undetected problems. It'll be just fine.

</comment><comment><USER21> All of the rigor of modern software development.

</comment><comment><USER22> I'll chime in as I was previously an "air frame structure tech". Basically I did everything on the airplane other than mess with engines or electronics. Worked on the Navy P3 Orion fleet (remove and replace wings), the Airforce C-17 fleet (worked various tech bulletins as well as air frame inspection checks), and a brief stent on the the 747 'Sofia' project (cut a really giant hole for a telescope)

Anyway, I was most intimate with the P-3 orion fuel tanks (which is the entire wing) as we regularly pulled the wings on those planes, replaced various spars, ribs, etc and then reinstalled the wings. Then we'd have to fill the entire wings up with the 'anti explosion foam' which is in several hundred cube shapes, all with painted on numbers (yes they all go back in order), ranging from 6" to 18" in size. After that was done, plane was refueled and tested. Normally after a few weeks of checks, the fuel filters and intake strainers would be checked. They commonly had rags in them, but always had tons of metal shavings and wads of human hair (probably hair from your legs).

So yes, 'FOD' is always in the tanks after any construction or maintenance. There would be no tools in the tanks as normally your employee number or social security number was etched on everything you owned.

</comment><comment><USER23> This isn't unique in the manufacturing of large engineering projects. There are stories of the US Navy doing sonar test runs of new double hulled submarines to see if the submarine is as quiet as expected. One of the things that happen[s|ed] often enough is a tool box being left in between the double hulls that they know what it sounds like.

<comment><USER24> USN submarines haven't had double hulls for 70 years almost. Hopefully things have improved

<comment><USER23> We haven't put skids on the bottom of the boats in a really long time either. Doesn't make the stories any less interesting though.

[https://www.amazon.com/Blind-Mans-Bluff-Submarine- Espionage/...](https://www.amazon.com/Blind-Mans-Bluff-Submarine- Espionage/dp/1610393589/ref=sr_1_1?keywords=blind+man%27s+bluff&qid=1582161638&s=arts- crafts&sr=8-1)

</comment></comment></comment><comment><USER25> I suspect all the boeing planes have this paltry quality. It's just that the focus is very intense on the MAX right now.

<comment><USER26> When left to their own devices, and when allowed to act as their own oversight and auditing authority, it turns out that huge, impersonal corporations won't act in the public's best interest.

It's like there should be a portion of government funds devoted to an agency responsible for ensuring that these type of things can't happen.

Who knew? That's weird, right?

</comment></comment><comment><USER27> Does this mean normally these planes were suppose to fly and they had passed their final check?

</comment><comment><USER28> The head of Boeing's 737 programme has told employees that the discovery was "absolutely unacceptable".

That's fine, but what action did that person take other than saying that? Or does anything else need to be done at that level?

I recall reading about Andy Grove on the topic of management, and maybe the point of people at that level really is to just push down "company values" in a sense. I'd rather have someone up there shouting about this than constantly shouting "shareholder value" or "just deliver", at least for products like this. Maybe the bad culture there is changing ;-)

<comment><USER29> Notice that he said the discovery was unacceptable, not that having the debris was unacceptable.

<comment><USER30> like the employees who wrote the "designed by clowns supervised by monkeys" email. boeing took swift action... to fire the employees who made the mistake of documenting the problem in writing.

</comment></comment></comment><comment><USER10> Having seen a documentary a few years ago about the 787 and the absolute shitshow that was and still is, I'm now convinced Boeing has been building their planes like an AMC Gremlin for at least 2 decades.

</comment><comment><USER31> Considering how often surgeons leave all sorts of things inside patients ([https://www.ctvnews.ca/health/surgical-objects-left-in- patie...](https://www.ctvnews.ca/health/surgical-objects-left-in-patients-on- the-rise-in-canada-data-shows-1.4673890)) it's not hard to imagine manufacturing facilities doing much worse!

Of course, the issue is _knowing about the problem and ignoring it_. That's inexcusable.

</comment><comment><USER32> It seems like Boeing (and the FAA and the industry more broadly) have been hiding behind the veil of the "zero commercial accidents" streak for however long that was happening while aggressively trying to coverup serious problems.

It's great that everyone is finally doing a deep dive to figure out these problems. We need more of this, more critical thought and curmudgeons and people who assume the statistics are wrong.

</comment><comment><USER33> If it's Boeing, I ain't going.

</comment><comment><USER34> With the knowledge that A&P mechanics (air frame and powerplant) are required to shadow their tools in their boxes (filling the drawers with foam and plucking a distinct home for every tool to make confirmation that all are returned easy and fast) I find it staggering that tools are left behind on a regular basis at the assembly phase.

<comment><USER11> Its the same at the Boeing factories, it will be interesting to see where this stuff gets traced to.

</comment></comment><comment><USER35> What next?

</comment><comment><USER36> Submitted title is actual title, but the first paragraph actually makes sense, recommend change

Boeing recently discovered some of its stored 737 MAXes have foreign objects in the fuel tanks.

</comment><comment><USER37> Who needs Netflix? Just read the Boeing news...

</comment><comment><USER38> Do you think there is an element of sabotage by competitors?

<comment><USER39> Why would you think so?

</comment></comment><comment><USER40> no where it states if this is actually hazardous or not, if its a common thing which might happen to other vendors too or anything. just 'found some stuff which didn't pass the checks.' ok, thats what there are checks for..., good job... such reporting. just post some random piece of information about some buzzword or google trend without any background or context to put it in.

<comment><USER41> Have a listen to this: [https://www.nytimes.com/2020/01/03/podcasts/the- daily/boeing...](https://www.nytimes.com/2020/01/03/podcasts/the-daily/boeing- crash.html)

Sharp debris in the airframe close to electrical wires and the very wires that control the airframe in planes _that left the factory_ are not a theoretical risk. Imagine your airline gets a "quality controlled" factory new plane and you find they forgot a whole ladder (!) inside the hull — if this shouldn't raise concerns — what would?

Or must it crash first? Oh wait..

The software problem alone was bad, but combine this with a lack of effective oversight and a bad company culture and it looks far more bleak

<comment><USER42> The other good news is that the wire distances are not up to current standards in the MAX. So when one goes you have a better chance the other critical one also goes.

</comment></comment></comment><comment><USER43> > FOD is absolutely unacceptable. One escape is one too many. With your help > and focus, we will eliminate FOD from our production system.

> We've already held a series of stand down meetings in Renton with teammates > on the factory floor to share a new process for stopping FOD.

I can't help but think of "beatings will continue until morale improves!"</comment>


Ask HN: How to defend the source of a html5  audio/video player - <AUTHOR>

I have spent some time thinking on how to build a html5 audio/video player that will actually hide the source of the content in a secure and efficient way.
I have some ideas but the all are about making the source use very restricted not about hiding it. Is this the way to go or do you have any other ides?
Thanks -Dennis Mårtensson <comment><USER2> The bits need to come from somewhere, and your player will need to decode / un-obfuscate that. If it gets used enough, some enterprising person will open it up their debugging tools and figure out the way that you obfuscate the source URL. This is the same issue that DRM has: trying to prevent your user from using the info you're sending them is only winnable in the short term, and impossible to win in the long term.

You might be better off having the content gated with authentication: here's your random token, good luck downloading someone else's stuff. Past that, why do you care whether the source of the content is hidden? Does it matter whether someone uses your player or wget to get the same bits?

</comment><comment><USER3> Conceptually, I don't think it's possible with HTML5. Eventually, the browser is going to open a connection to the resource, and then the user can see it in FireBug. You could hide it with Flash, but you'd have other problems with compatibility on mobile devices. You might be able to do it with a proxy too, but then the proxy would be visible. Not sure if that suits your needs.</comment>


Introducing Aurelia - <AUTHOR> http://eisenbergeffect.bluespire.com/introducing-aurelia/

<comment><USER2> I went from "not another fucking framework..." to ok im switching today in 20 minutes</comment>


The Enigma of Chinese Medicine - <AUTHOR> http://opinionator.blogs.nytimes.com/2013/09/28/the-enigma-of-chinese-medicine/?ref=opinion

<comment><USER2> >Even a person as well versed in induction and deduction as Arthur Conan Doyle believed that the death of Lord Carnarvon, the patron of the Tutankhamen expedition, may have been caused by a pharaoh's curse.

I'm not sure he's the best example of a skeptic, given his belief in the Cottingley Fairies ([http://en.wikipedia.org/wiki/Cottingley_Fairies](http://en.wikipedia.org/wiki/Cottingley_Fairies))</comment>


Ask HN: What does your startup do for data backup/disaster recovery? - <AUTHOR>

<comment><USER2> We both use laptops, but run headless ubuntu machines with bittorrent sync for backups and staying up to date. It's a terrible system and we should be ashamed, but it works. Soon we'll have a software developer with us (hopefully) and I'm sure the ballgame will change. Maybe github on those 2 headless machines? dunno...

</comment><comment><USER3> We use CouchDB for distributed instances, using Digital Ocean droplets with backups there as well…might not be best practice.</comment>


Myjson – A simple JSON store for your web or mobile app - <AUTHOR> http://myjson.com/ <comment><USER2> Neat and simple, but that's exactly the kind of things that makes me go "too bad it's not open sourced, I could use that"

<comment><USER3> To be honest, the value resides more in the idea and the fact that it's already online than in the code.

A basic implementation of this service would take less than 100 lines in any language commonly used on the web.

<comment><USER2> Of course. It's just that it's easier and quicker to use something that someone has already developed, than recreate the 100-lines wheel each time.

<comment><USER4> Which is why I'm confused as to why you want an open-source version? Just use this one.

<comment><USER5> Maybe ozh wants to host the service on their own server? Or they've found a bug they want to fix?

</comment></comment></comment></comment></comment><comment><USER6> Seems like it might be handy for testing. Certainly good to stay way from it for production apps though.

</comment><comment><USER7> I built [http://jsonblob.com](http://jsonblob.com) for this purpose. It has an HTTP API as well as we nice GUI interface to edit your JSON. It's open sourced and really just a thin webapp on top of mongo, so it's easy to run your own.

<comment><USER8> Looks just like the design/functionality of [http://www.jsoneditoronline.org/](http://www.jsoneditoronline.org/) which seems to be an older project

<comment><USER7> Yeah, it uses that for the editor, but also has a full HTTP API ([http://jsonblob.com/api](http://jsonblob.com/api)) behind it for storing the JSON and accessing it from outside the browser.

</comment></comment></comment><comment><USER9> A JSON literal is also valid JSON. Therefore 4, "test" and true should be saveable without a object wrapper

<comment><USER10> To expand on that: only since RFC 7158, earlier versions required the root to be an array or object.

So if you're generating json, it's advisable to wrap it so that parsers written according to the older specs won't choke on it.

However, when parsing, like this, you want to try and accept values.

</comment></comment><comment><USER11> Could be used for notepad API or something public. That said, it seems that services like Parse and Firebox seem more robust and also have faster response times.

</comment><comment><USER12> I can't see the use case of this. If it was editable after saving then that would make sense, but this is just static. And being static, you're better off just bundling it with the app. Unless I'm missing something?

Nice presentation though, the site looks nice.

EDIT: I see you can create and update through the HTTP API, which makes it much more useful.

<comment><USER13> Except everyone can update it if they know your identifier.

</comment></comment><comment><USER14> Neat, but it would be neater if this were open source and running on https.

<comment><AUTHOR> Working on getting cert today ;). Thanks for the feedback.

</comment></comment><comment><USER15> Why not use [https://www.firebase.com](https://www.firebase.com)? Seems more reliable (Privacy Policy, ToS, SLA) and easier to start using, and it has a free tier if you need something quick for development.

</comment><comment><USER16> I built a similar thing, in Go on App Engine: [https://github.com/imjasonh/simply-put](https://github.com/imjasonh/simply- put)

</comment><comment><USER17> for anyone interested in a an easy tool for building JSON store/APIs, you might find HiveMind (crudzilla.com) useful, I am the developer.

Here's a simple screencast: [http://crudzilla.com/assets/img/info- graphics/instantiator.g...](http://crudzilla.com/assets/img/info- graphics/instantiator.gif)

There's a lot that you can with it, in terms of generating JSON.

</comment><comment><USER18> For testing purposes, wouldn't using Dropbox suffice as well? It gives a quick way to update the JSON and see changes occur near live in app?

<comment><USER19> Yep, I've done the same in the past.

</comment></comment><comment><USER20> Could you do this for an excel document (database)?

It would be cool to be able to drag and drop an excel document into here and call it with a url.

</comment><comment><USER21> Seems simple and useful like jsfiddle. I will really use this in my app.

</comment><comment><USER22> Maximum nesting depth of 100 :( or else it says it's invalid JSON.

<comment><AUTHOR> Thanks for finding this...looks like its rail's JSON::Ext::Parser which default to 100 max nestings. Looks like it can be disabled. [http://www.ruby- doc.org/stdlib-2.1.1/libdoc/json/rdoc/JSON/E...](http://www.ruby- doc.org/stdlib-2.1.1/libdoc/json/rdoc/JSON/Ext/Parser.html)</comment></comment>


Ask HN: Do sleep trackers help you get better sleep? - <AUTHOR> Do sleep trackers (like that of the latest Apple Watch) actually give you relevant, actionable insights that you can use to get a better night's sleep?<p>Surely you also find this information out very quickly which begs the question why would you need a sleep tracker for longer than say, 2 weeks? <comment> Lorenz-Kraft That's the current "improve yourself" mentality. Gadgets are there to help you.

Besides that, I noticed that many people actually don't really know anymore how to live "normal" (aka healthy) and really need those Gadgets. For Example: Make Sports, Sleep and eat well ... that's nothing new, but many people seem to forgot how to do so and need Apps to remind them on a hourly basis to do so (don't forget to stand up for 5 minutes every hour).

Beside all that: Proper sleep is not about tracking sleep and get a reporting that you have slept properly. There are several things that contribute to a proper sleep, like sleeping habits, eat well (and at the right time) and more.</comment>


Preventing toxic work environments through ethical leadership - <AUTHOR> https://business.sdsu.edu/faculty/faculty-research/preventing-toxic-environments-through-leadership <comment><USER2> The finding seems to be that jerks cause toxic work environments and non-jerk bosses (i.e. "ethical leadership") do not.

Unfortunately, hoping that leaders are not jerks isn't useful advice: if a jerk is appointed and supported from above the damage is mostly already done.</comment>


Show HN: "Escape from Montegrande", Procedural Ski Game for iOS and Android - <AUTHOR> http://mego.cl/montegrande

<comment><USER2> One of the achievements says "Slide trough N ice surfaces" \- is that supposed to be "Slide through"? Apart from that, good work, it's like a proper modern Horace Goes Skiing.

<comment><USER3> We'll fix that on the next update. Thanks! : _

</comment></comment><comment><USER4> Nice. What framework are you using?

<comment><AUTHOR> We created the game using Unity3d. In order to generate levels we used a combination of random "chunks" and perlin noise (very good for generating the 'paths' across the trees)

</comment></comment><comment><USER5> Great imagination! Good work!

</comment><comment><USER6> nostalgia</comment>


Verizon Droid Sells 100,000 Units At Launch - <AUTHOR> http://mashable.com/2009/11/10/verizon-droid-sales/ <comment><USER2> Agreed, it will be a while for the reviews and word of mouth to spread to really see if it'll ramp up or down.

I have one and love it... also started a site dedicated to it (shameless plug)

<http://www.droidforums.net>

</comment><comment><USER3> Is that good? Bad? Better than expected?

<comment><USER4> For comparison, the Pre sold around 85000 units in its first weekend and the iPhone 3G sold 1000000 (one _million_) units in its first weekend. OTOH, don't put too much faith in early numbers being useful as a comparator among these devices -- wait for a month or two to see if there is a trendline.</comment></comment>


WordPress 5.0 introduces a flexible block-based content editor - <AUTHOR> https://thenextweb.com/dd/2018/12/07/wordpress-5-0-introduces-a-flexible-block-based-content-editor/ <comment><USER2> What the article doesn't mention is that the new editor is completely incompatible with a serious amount of plugins due to the redesigned Edit page. There are severe accessibility issues with it[^1], and, in general, it breaks formerly working core features, such as reordering galleries (this is a first hand experience).

Gutenberg is going to be disastrous in short term, in long term - we're talking years -, it may come out nice.

Those not willing to deal with it should take a look at [https://www.classicpress.net/](https://www.classicpress.net/)

[^1]: [https://wptavern.com/gutenberg-accessibility-audit- postponed...](https://wptavern.com/gutenberg-accessibility-audit-postponed- indefinitely)

<comment><USER3> If you still need or want the old editing experience, you don't need to switch to a fork. WordPress is keeping the old editor available as a plugin for at least the next 4 years: [https://wordpress.org/plugins/classic- editor/](https://wordpress.org/plugins/classic-editor/)

Anyone who made customizations to the old editor has 4+ years to figure out what to do about Gutenberg (plus they have had the 2 or so years that it has already spent in beta).

</comment></comment><comment><USER4> How is it that the article makes no mention of the significant accessibility issues with the editor and the resignation of at least one key figure in the community?

[https://make.wordpress.org/accessibility/2018/10/29/report-o...](https://make.wordpress.org/accessibility/2018/10/29/report- on-the-accessibility-status-of-gutenberg/)

[https://wptavern.com/wordpress-accessibility-team-lead- resig...](https://wptavern.com/wordpress-accessibility-team-lead-resigns- cites-political-complications-related-to-gutenberg)

<comment><USER5> Because it's an eight sentences announcement article and not an opinion piece or an in-depth review.

That being said, it's amazing a CMS with such a market share and devmind seems to be so constrained in resources.

<comment><USER6> _> That being said, it's amazing a CMS with such a market share and devmind seems to be so constrained in resources._

That's what happens when you don't have a bunch of investors throwing money at you to pay for a growth team that can figure out how to optimize every second of user engagement to maximize ad revenue.

It is a major problem in the software landscape today, and there is no obvious solution.

</comment></comment></comment><comment><USER7> For Pythonistas, Wagtail takes a similar approach to content authoring with its StreamField:

[https://wagtail.io/](https://wagtail.io/)

[http://docs.wagtail.io/en/v2.3/topics/streamfield.html](http://docs.wagtail.io/en/v2.3/topics/streamfield.html)

<comment><USER8> Whilst also maintaining a great developer experience too! I'd never _enjoyed_ working with CMS' until I met Wagtail.

2.4 just got it's first release candidate and has a bunch of enhancements aimed at first time users so it's a good time to give it a go!

<comment><USER9> Meh, it's better than wordpress for sure but it has many warts. There is no i18n story and "modelcluster" is just a bad idea.

<comment><USER7> Can you expand on why you believe ModelCluster to be a bad idea?

</comment></comment></comment></comment><comment><USER10> As long as the traditional editor remains an option I won't mind. If they force it on us, that could be a problem. I try every new version of Gutenberg for posting on one of my sites, and so far I've had to switch back to the traditional editor every time. From the Wordpress 5.0 welcome page: "Support for the Classic Editor plugin will remain in WordPress through 2021... Note to users of assistive technology: if you experience usability issues with the block editor, we recommend you continue to use the Classic Editor."

</comment><comment><USER11> This update was a really bad decision, because it broke my wordpress websites which used carbon fields ([https://carbonfields.net](https://carbonfields.net)).

This plugin disables Gutenberg [https://perishablepress.com/disable- gutenberg/](https://perishablepress.com/disable-gutenberg/)

</comment><comment><USER5> It's weird they didn't include the pre-built page from the Gutenberg demo to highlight the new editor.

Right now the first impression is quite arid and doesn't look anything like [https://make.wordpress.org/core/2018/10/16/introducing- twent...](https://make.wordpress.org/core/2018/10/16/introducing-twenty- nineteen/)

<comment><USER12> They've committed to supporting the classic editor until 2022.

</comment></comment><comment><USER13> The new editor looks slick, but it's kind of confusing when you start using it. It works for simple sites that you can build with things like the ones you see on Squarespace, but to use Wordpress like a real CMS you still need metaboxes.

</comment><comment><USER12> A lot of spaghetti inline JS code means it's incompatible with any site with a sane Content-Security-Policy. I'm glad I switched to Hugo, now I need to migrate my wife's blogs.

</comment><comment><USER14> Dupe: [https://news.ycombinator.com/item?id=18627020](https://news.ycombinator.com/item?id=18627020)</comment>


The First COBOL Bootcamp - <AUTHOR> Http://www.gracehopper.com/curriculum/cobol <comment><USER2> "Hello COBOL Cutting Edge Computer-Age Classic"

000100 IDENTIFICATION DIVISION.

000200 PROGRAM-ID. HELLOWORLD.

000300

000400 ENVIRONMENT DIVISION.

000500 CONFIGURATION SECTION.

000600 SOURCE-COMPUTER. RM-COBOL.

000700 OBJECT-COMPUTER. RM-COBOL.

000800

000900 DATA DIVISION.

001000 FILE SECTION.

001100

101200 PROCEDURE DIVISION.

101300

101400 MAIN-LOGIC SECTION.

101500 DISPLAY "Hello world, I'm back!"

101600 STOP RUN.

If this ain't april fools joke lord have mercy on us.

<comment><USER3> I was able to easily read that English-like syntax.

</comment></comment><comment><USER4> Someday people will be posting similar Javascript jabs on April 1 and laughing about how people could ever have had serious jobs working with such a ridiculous language.

</comment><comment><USER5> In case people are confused - the Grace Hopper Program at Fullstack Academy is a real bootcamp. They do not teach COBOL - that's the April Fool's joke.

<comment><USER6> It's confusing to me, because all the April Fool's jokes appear on April the second. You American's are always behind the times.

</comment></comment><comment> nevi-me This is interesting. I think 2020 is an achievable number.

I'm an accountant by profession, and since I program; I got thrown into a project at work where we had to reverse-engineer COBOL code to figure out what the banking system was doing. It was a painful exercise by today's standards as the code was badly written, but we pulled through.

There was a script of a few thousand lines, which calculated interest on most of the cheque and investment products. It had the "here be dragons" disclaimer. After defeating the dragons, I asked if I could add "dragon slayer was here", but that wasn't going to happen, so I made it my pinned tweet (@nevi_me).

I wonder if it would be worth my while to join the bootcamp and learn COBOL properly.

</comment><comment><USER6> I thought this was going to be a historical article about some training camp Admiral Hopper arranged for swabbies who needed to learn COBOL.

Or at least for swabbies who _needed_ to learn programming and were _going_ learn COBOL because the way admiralty works.

</comment><comment><USER7> Given that I've heard day rates as high as £2000 for a CIVIL engineer, this would be great if it is a real thing. Alas, the timing of the post suggests otherwise...

</comment><comment><USER8> This is not satire right?

<comment><USER9> I am actually having enormous trouble telling. They seem to link to real articles about their academy at real publications (such as [https://www.forbes.com/sites/leoking/2016/01/30/shanna- grego...](https://www.forbes.com/sites/leoking/2016/01/30/shanna-gregory- women-in-tech-grace-hopper-impostor-syndrome/#61e21ae94f37)), plus, there is a LOT of material here for a joke site. But it sure sounds to me like satire.

I hate April Fools so fucking much. Hate it.

<comment><USER5> Real academy, fake COBOL bootcamp. It's just that one page that's the joke - the rest of the site is about their real JavaScript bootcamp.

<comment><USER9> Thx.

</comment></comment></comment></comment><comment><USER10> What, no mention of moving the mainframe to web assembly?

<comment> nevi-me Or just letting IBM Watson learn COBOL so we can continue figuring out how to prevent the Node event loop from drying up.

<comment><USER10> Or implementing Watson in JS with web workers to learn COBOL to prevent the event loop from drying up.

</comment></comment></comment><comment><USER11> what is the significances of 2020 in COLBOL? Given the 2038 issue COLBOL may again become in high demand.

</comment><comment><USER12> cobol would be much nicer if it accepted camelCase.</comment>


New Strategy as Tech Giants Transform Into Conglomerates - <AUTHOR> http://dealbook.nytimes.com/2014/08/05/new-strategy-as-tech-giants-transform-into-conglomerates/?_php=true&_type=blogs&_php=true&_type=blogs&_r=1&

<comment><USER2> This seems like a maturation of the tech industry, and outsourcing of R&D. It's very hard for large companies to innovate - the CEOs have too much on their minds to chase down hundreds of small ideas. Let others obsess on them, and then buy the winners. The in-house VC arms (Google Ventures) allows them to invest and get some upside as they stay attuned to the market. This hardly seems like a bad thing.

In addition, I've heard of people blame Sarbanes Oxley for the slowdown in IPOs. This is ok too. I'm much more likely to trust the financials of Google than of a small startup with an inexperienced CFO.</comment>


Fenwick Trees - <AUTHOR> http://loonytek.com/2015/08/17/fenwick-trees/

<comment><USER2> BTW, to reason a bit about this statement in a simpler fashion: "any natural number "K" can be obtained from sum of other natural numbers (less than K), where these natural numbers are powers of 2"

Think what you're doing mentally when converting a binary number to decimal. For example: 101001

Each one of those 1s represents 2^position, all added together, so:

      41 =   32 (100000 = 2^5)
           +  8 (  1000 = 2^3)
           +  1 (     1 = 2^0)

Since any natural number can be represented in decimal and binary, the rule applies that each binary 1 is the value of 2^that position, all summed up.

<comment><AUTHOR> Hey, thanks for this :)

I tried to be as intuitive as possible in my post, but kind of missed to reason about this one.

Hope you liked the article !!

</comment></comment><comment><USER3> Great post! I found Fenwick trees particularly useful when I was implementing layout / view recycling. The problem is that you need to keep track of a large number of vertically stacked elements with dynamic & varying heights, and you need a way to efficiently get the prefix sum. Would be curious if anyone else has real life use cases of these.

<comment><AUTHOR> Thanks!. I have read that this data structure can be used for range updates and queries. Something that can also be done using Segment Trees. I haven't covered range updates in my article. It only talks about prefix sum and point updates. I will talk about range updates and segment trees in another article soon.

</comment></comment><comment><USER4> Awesome Post :) Very well written !!</comment>


Ask HN: Sublime - <AUTHOR>

First I used Notepad, then Textwrangler, then Dreamweaver followed by Netbeans and  a few minutes ago I started using Sublime..
Fast and sheer awesomeness is my first impression..
Is it as good as it seems? <comment><USER2> It's good, I use it frequently at work and recommend it to people periodically. My editor of choice right now is TextMate 2: [https://github.com/textmate/textmate](https://github.com/textmate/textmate)</comment>


Sprint backlog prioritization can be a hindrance - <AUTHOR> http://danielwertheim.se/2013/10/24/how-i-think-sprint-backlog-prioritization-can-be-a-hinder/

<comment><USER2> Scrum is designed for [ guaranteed ] latency, like an RT os, not throughput/productivity or efficiency or any other objective, developers feelings incl.

</comment><comment><USER3> I guess the problem is what if the team doesn't deliver all the stories in the sprint? This can happen when they don't know their velocity very well.</comment>