Controlled detonation for WWII bomb found in Munich - <AUTHOR> http://www.bbc.co.uk/news/world-europe-19400974 <comment><USER2> I might add that WW2 bombs are found every week somewhere in Germany. They're dug up when old buildings are demolished, when rails are repaired, sometimes children find them while playing in the woods. I don't understand the technology behind bomb disposal and consider it a small miracle that rarely anything ever happens. In fact, bomb defusings are so routine that they don't usually make it the national news.

(This one is noteworthy only because it had to be actually detonated, and in the process caused quite a bit of damage.)

<comment><USER3> Ditto for the UK :-(

Although one of the biggest _known_ unexploded bombs is a US ship that was sunk in the Thames Estuary:

<http://en.wikipedia.org/wiki/SS_Richard_Montgomery>

"According to a BBC news report in 1970,[9] it was determined that if the wreck of the SS Richard Montgomery exploded, it would throw a 1,000-foot-wide (300 m) column of water and debris nearly 10,000 feet (3,000 m) into the air and generate a wave 16 feet (5 m) high. Almost every window in Sheerness (pop. c20,000) would be broken and buildings would be damaged by the blast. However news reports in May 2012 (including one by BBC Kent) stated that the wave could be about 4 feet (1 m) high, which although lower than previous estimates would be enough to cause flooding in some coastal settlements."

</comment></comment><comment><USER4> Was on the radio news today. It seems a huge crowd was using this 'chance' to have a party with cocktails and beers, making this some kind of .. event.

<comment><USER5> Sounds like they were having a blast.

</comment></comment><comment><USER6> 70 years later we're still paying the costs for WWII. Interesting that the best option was to detonate it in place, with all the damage that caused.

</comment><comment><USER7> Better quality of the video (Original, CC): <http://vimeo.com/48399328>

</comment><comment><USER8> As I understood they tried to mitigate the explosion by putting sandbags and straw bales around the bomb. The burning straw is what I guess you see at the top of the explosion/fire. The straw also caused surrounding roofs to catch fire. Not sure why they didn't think of this and used fire proof stuff.

</comment><comment><USER9> Do old unexploded bombs ever just go off on their own, or do they always need a trigger? (Moving them, etc.)

<comment><USER10> They rarely, if ever, go off on their own. Modern explosives (and WW2 era explosives qualify as quite modern) are pretty inert and safe to handle. The fuses and cases are designed to be robust and safe to abuse - after all, they have to be transported in rough conditions, thrown about in a hurry, mounted and dismounted. A fuse has to do a lot of things to get the main charge to detonate.

The main danger is that the fuse is damaged by rust and erosion, and not all fuses were designed to be fail-safe. Such a damaged fuse can then activate on being tampered or moved. But a burrowed, undiscovered bomb going off on its own, I don't think such a thing ever happened.

<comment><USER11> It does happen. For an extreme example, see <http://en.wikipedia.org/wiki/Battle_of_Messines#cite_note-83> (I could not find a better link)</comment></comment></comment>


How to Write Good - <AUTHOR> http://www.plainlanguage.gov/examples/humor/writegood.cfm <comment><USER2> Amusing read

</comment><comment><USER3> "How To Write Well" \- your teacher

<comment><USER2> That's what I thought too, because "good" is an adjective and adjectives describe nouns. On the other hand "well" is an adverb and fits perfectly well.</comment></comment>


Astronomers find no signs of alien tech after scanning over 10M stars - <AUTHOR> https://www.cnet.com/news/astronomers-find-no-signs-of-alien-tech-after-scanning-over-10-million-stars/ <comment><USER2> I think our first radio signals were send around the very end of the 19th century. They would have traveled around 125ly. Don't know if the signals had enough amplitude and frequency to even leave the atmosphere though.

There are quite a few stars in a 125ly sphere already, but the center of our galaxy alone is 25k ly away. So we wouldn't be know to too many neighbors yet.</comment>


Artic Strategy - <AUTHOR> https://go.usa.gov/xfkD3+ <comment><USER2> this is a PDF if anyone needs to know.

the gist...

>> Residing at the intersection between the U.S. homeland and two critical theaters, Indo-Pacific and Europe, the Arctic is an increasingly vital region for U.S. national security interests.<<</comment>


Shrinking to Zero: The Raspberry Pi Gets Smaller - <AUTHOR> http://www.bbc.co.uk/news/technology-34922561 <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=10631668](https://news.ycombinator.com/item?id=10631668).

</comment><comment><USER3> another discussion: [https://news.ycombinator.com/item?id=10631668](https://news.ycombinator.com/item?id=10631668)</comment>


Telescope captures most detailed pictures yet of the sun - <AUTHOR> https://www.theguardian.com/science/2020/jan/29/solar-telescope-captures-most-detailed-pictures-yet-the-sun <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=22188800](https://news.ycombinator.com/item?id=22188800). That submission is currently at #1 on the front page, so it's likely to keep the discussion going for longer.

</comment><comment><USER3> Editorialized title? Should be "Telescope captures most detailed pictures yet of the sun"

<comment><USER2> Yes. Submitters: please don't rewrite titles like that. This is in the site guidelines: [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html). If you want to say what you think is important about an article, please post it as a comment to the thread. Then your view will be on a level playing field with everyone else's.

[https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...](https://hn.algolia.com/?dateRange=all&page=0&prefix=false&query=by%3Adang%20%22level%20playing%20field%22&sort=byDate&type=comment)

(Submitted title was "The Engineering behind this is superb". Which it probably is.)

</comment></comment><comment><USER4> Ironically Googling "site:thesun.co.uk inouye" returned nothing relevant.</comment>


Honey bee colonies down by 16 percent - <AUTHOR> https://www.strath.ac.uk/whystrathclyde/news/honeybeecoloniesdownby16/ <comment><AUTHOR> Paper Title:

Loss rates of honey bee colonies during winter 2017/18 in 36 countries participating in the COLOSS survey, including effects of forage sources

Abstract:

This short article presents loss rates of honey bee colonies over winter 2017/18 from 36 countries, including 33 in Europe, from data collected using the standardized COLOSS questionnaire. The 25,363 beekeepers supplying data passing consistency checks in total wintered 544,879 colonies, and reported 26,379 (4.8%, 95% CI 4.7–5.0%) colonies with unsolvable queen problems, 54,525 (10.0%, 95% CI 9.8–10.2%) dead colonies after winter and another 8,220 colonies (1.5%, 95% CI 1.4–1.6%) lost through natural disaster. This gave an overall loss rate of 16.4% (95% CI 16.1–16.6%) of honey bee colonies during winter 2017/18, but this varied greatly from 2.0 to 32.8% between countries. The included map shows relative risks of winter loss at regional level. The analysis using the total data-set confirmed findings from earlier surveys that smaller beekeeping operations with at most 50 colonies suffer significantly higher losses than larger operations (p < .001). Beekeepers migrating their colonies had significantly lower losses than those not migrating (p < .001), a different finding from previous research. Evaluation of six different forage sources as potential risk factors for colony loss indicated that intensive foraging on any of five of these plant sources (Orchards, Oilseed Rape, Maize, Heather and Autumn Forage Crops) was associated with significantly higher winter losses. This finding requires further study and explanation. A table is included giving detailed results of loss rates and the impact of the tested forage sources for each country and overall.

[https://www.tandfonline.com/doi/full/10.1080/00218839.2019.1...](https://www.tandfonline.com/doi/full/10.1080/00218839.2019.1615661)</comment>


15 Years of Concurrency - <AUTHOR> http://joeduffyblog.com/2016/11/30/15-years-of-concurrency/ <comment><USER3> To note:

> Out of the bunch, Rust has impressed me the most. They have delivered on > much of what we set out to deliver with Midori, but actually shipped it > (whereas we did not). My hat goes off to that team, seriously, because I > know first hand what hard, hard, hard work this level of type system hacking > is.

<comment><USER4> But see also:

> In particular, I'm still conflicted about whether all those type system > extensions were warranted. Certainly immutability helped with things far > beyond safe concurrency. And so did the side-effect annotations, as they > commonly helped to root out bugs caused by unintended side-effects. The > future for our industry is a massively distributed one, however, where you > want simple individual components composed into a larger fabric. In this > world, individual nodes are less "precious", and arguably the correctness of > the overall orchestration will become far more important. I do think this > points to a more Go-like approach, with a focus on the RPC mechanisms > connecting disparate pieces.

<comment><USER5> I don't think this is incompatible with Rust's goal, which is to bring safety to the sort of low-level domain where C is currently dominant and systems can't afford to be structured as isolated nodes communicating only via RPC. In contrast, Midori was aimed at a higher-level general-purpose domain, like Go (and Erlang, too, which is even better than Go at the "cluster of nodes" approach, yet doesn't have a type system at all).

<comment><USER6> Could it be, that many desicions for Rust have been made to make it more appealing to C devs?

Like, opting out of purity annotations or forced immutability?

I'm not saying these desicions are good or bad, I don't know much about system programming. But I often ask myself what the main motivators for a language are.

<comment><USER7> FWIW,after spending a couple of years with rust as my primary programming language, I'm convinced that they made the right decision wrt mutability (immutable by default, but mutability availale when needed), as rust's lifetime system eliminates nearly all the remaining pain points around mutability (data races).

On the other hand, I think it is very important that some notion of purity be incorporated, even if only as an opt-in.

<comment><USER6> > spending a couple of years with rust as my primary programming language

Oh, how did you achieve that? :)

<comment><USER8> Probably not with too much difficulty. 1.0's alpha was nearly 2 years ago. The github repo goes back to mid 2010: [https://github.com/rust- lang/rust/graphs/contributors](https://github.com/rust- lang/rust/graphs/contributors)

<comment><USER9> See also [https://github.com/graydon/rust- prehistory](https://github.com/graydon/rust-prehistory)

<comment><USER6> I didn't want to imply that Rust is to young for people to have been spending years using it.

I wanted to know how you could get a Rust-job (using it as primary programming language) today :)

<comment><USER9> Ah. So, most organizations using Rust in production are moving existing employees over or hiring more generally.

I'd hit up these people: [https://www.rust-lang.org/en- US/friends.html](https://www.rust-lang.org/en-US/friends.html)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> One of the things that this blog ought to have clearly mentioned is that all this business about static analysis, ownership types, read-write annotations, purity, immutability and all that is due to a simple conflation of two axes that ought to be orthogonal: mutation and aliasing.

This is what Rust gets right: you can have an object be mutable (in which case you have only one pointer to it), or you can multiply alias pointers, all of which can only read the object. The type system enforces a static RW locking scheme in a manner of speaking; it ensures that only one of those capabilities is available at any one point in time.

In other words, Rust ensures that mutation by itself is not a problem, that passing mutable structures between threads is statically checked for safety. You don't _have_ to make an object immutable in order to share safely by reference.

\</comment><comment></comment><comment>---

It'd have been nice to hear about the "P" language, also from MSR ([https://www.microsoft.com/en- us/research/publication/p-safe-...](https://www.microsoft.com/en- us/research/publication/p-safe-asynchronous-event-driven-programming/)). No pointers, just value types, communicating state machines, produces model- checkable code. What's not to like?

<comment><USER11> > It'd have been nice to hear about the "P" language

And already used in production, even if in a small use case.

</comment></comment><comment><USER12> For anyone else wondering what "Midori" is, it looks like it was an internal Microsoft research project:

[http://joeduffyblog.com/2015/11/03/blogging-about- midori/](http://joeduffyblog.com/2015/11/03/blogging-about-midori/)

<comment><USER13> I've been reading these but it's become apparent that the author lives in a universe parallel to mine. I remember reading that in most languages "A null dereference or out-of-bounds array access is treated the same way as a network connectivity problem or parsing error" and scratching my head, because while I know some languages are like that (Java) there are others were a null dereference and the failure to establish a network connection have radically different effects (C++). At another point discussing error handling he says "This leads us to a beautiful sweet spot. It does suffer from the performance problems I mentioned earlier, but does very well on all other dimensions." so the author's sweet spot is a spot with poor performance, which also put me off because his articles all talk about performance but never concretely (in terms of nanoseconds).

Anyway it's an interesting, if long, series but most of the interest for me has been in reading things from a very different perspective from the one I hear at work every day.

<comment><USER14> I'm not really clear what this comment implies?

What system do you work with that doesn't have null pointers but also cares about eliminating as many fine-grained locks as possible?

<comment><USER15> I believe the point you are missing: The article compares a null pointer deference and network failure.

One of those is routine.

The other is a serious logic error that strictly speaking a correct program cannot be said to do.

<comment><USER14> After re-reading I think I see that point, but I still don't understand the overall comment...

Is the author saying his standard language is C++? Everything I know about Midori said that it was competitive with C++ on performance in almost every way. Regarding error handling in particular, Midori used a combination of returning values and safe exceptions, both of which seem similar to C++.

It also explicitly _doesn 't_ have the aforementioned conflation of bugs and runtime errors.

</comment></comment></comment></comment></comment><comment><USER16> 15 Years of Concurrency ... and now we're all using JavaScript, which has a single-thread model, and doesn't allow cross-thread structural sharing of data structures (without going through a number of hoops).

<comment><USER17> Which ironically, is a model with probably best performance and scaling characteristics. If you want high performance, you should avoid sharing mutable stuff as much as possible.

<comment><USER18> The bigger problem is that Javascript disallows (or at least, browsers don't currently provide) efficient sharing of _immutable_ values between threads/workers.

Because JS has no notion of immutability, sharing is done via copying - <USER2> what's worse, copying via full-blown serialization, not just in-memory blitting or COW. At least, that was the state of things when I last checked a year ago.

<comment><USER19> Modern JS does allow you to send large buffers from one worker to another with just a pointer copy (because it stops being accessible from the sender).

<comment><USER18> Yes, but even with that restriction, it doesn't let you transfer ownership of structured messages, only buffers and images; so a serialization roundtrip is needed.

</comment></comment></comment></comment></comment><comment><USER20> from the article:

So, we made some:

Isolation is paramount, and we will embrace it wherever possible.

Message passing will connect many such isolated parties through strongly typed RPC interfaces.

Namely, inside of a process, there exists a single message loop, and, by default, no extra parallelism.

A "promises-like" programming model will be first class so that:

Synchronous blocking is disallowed. All asynchronous activity in the system is explicit. Sophsiticated (sic) coordination patterns are possible without resorting to locks and events.

with the exception of trying concurrency primitives on heavy-weight os provided processes, this looks like recreation/rediscovering of erlang primitives once again :)

would one be chastisized for wagering that erlang is the lisp of concurrency world ?

edit-001: slight clarification (hopefully)

<comment><USER21> Every time I read about concurrency in other languages I see them trying to become Erlang but without the core design decisions that make Erlang works.

Always reminds me of this quote:

"Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang." \- Robert Vriding

<comment><USER11> The problem is that Erlang is only good a network communication and parallel programming, which is of course to be expected, given the language design goals.

The problem is when one tries to make a general purpose solution out of that design.

For example, how would Erlang look like in GPGPU programming, video/audio codecs, graphics programming, GUI,...

<comment><USER20> > The problem is when one tries to make a general purpose solution out of that > design.

yup. go(lang) / rust seems to be exploring some ideas with an almost similar approach, but not _solely_ focussed on n/w programming. are there other languages out there as well ?

and a slightly open ended question as well: in your opinion, do you think a language needs to implement a complete runtime (similar to erlang) with it's own 'process' abstraction, scheduler, i/o etc. etc. to provide concurrency support ?

<comment><USER11> Well, C++, D, .NET, Java, Swift, Objective-C, Rust... are all exploring the runtime approach for concurrency support.

The main difference across those languages and Erlang/Go is how they expose the runtime to the developers.

It isn't a black box, rather they exposes a default set of behaviors and as set of APIs that allow to fine tune its behaviors.

<comment><USER20> > Well, C++, D, .NET, Java, Swift, Objective-C, Rust... are all exploring the > runtime approach for concurrency support.

wasn't it hans-boehm, who famously posited (?) that concurrency needs to be part of the language, rather than bolted on after the fact ? do you think that makes all these other languages kind of poorer w.r.t concurrency ?

edit-001: specifically, this is the paper that i am talking about: [http://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf](http://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf)

<comment><USER11> But concurrency is part of the language.

What you are missing is that those languages are quite expressive, thanks to generics, operator overloading, trailing lambdas, and APIs into runtime the are available as tools for the programmer.

So you get, for example, async/await built into the language, with a default behavior. But at the same time, the necessary runtime hooks that allow any library writer to fine tune and built other concurrency models on top of it.

For the user of those concurrency models, it is indistinguishable where they are coming from.

<comment><USER21> The disnguishing factor is prescheduling vs cooperative scheduling. In all those other languages each process has to hand control back to the scheduler - meaning runaway code can negatively impact everything, pause the entire stack to garbage collect and can't transparently distribute itself across machines because of shared memory (you can't transparently pass a pointer).

Those are design decisions you can't bolt on later. Isolation, prescheduling and message passing without shared memory get you access to all of that.

<comment><USER11> Yes you can, has been done in Java, .NET, Active Oberon and Modula-3, just from the top of my head.

It is only a matter of making use of the said compiler hooks and underlying machinery.

<comment><USER21> I'm not familiar with Active Oberon or Modula 3, but Java and .NET absolutely do not. You can bolt on message passing but it's a constraint of the VM to properly handle prescheduling and heap per process isolation.

Mimicking the patterns doesn't replace the VM.

<comment><USER11> Java and .NET are not only the Java and C# programming languages.

There are for example, distributed agent programming languages built on top of them, including network aware distributed GCs.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> This looks like it's gonna be a long, interesting read. I better save up my bathroom time...

<comment><USER23> Not sure why you got down voted, I feel the same way. I read what I was sure was 3/4 of it only to realize it was about 1/8 but I'm definitely going to save it and finish.

I'm slightly (very?) jealous that I am not so passionate about any part of software as the author. I am interested in lots of areas but no one piece of the puzzle draws me and its bittersweet sometimes to read the thoughts of someone who seems so passionate about their field.

<comment><USER24> >Not sure why you got down voted

Because the comment adds nothing to the conversation.

<comment><USER25> It adds humor, and we like that sort of thing on HN

<comment><USER26> Post that only try to be funny tend to be downvoted on HN. We try to avoid reddit style threads where people just post one-liners.

</comment></comment></comment></comment></comment><comment><USER27> This is a fantastic write-up.

It was back in 2011 that I first started wrapping my head around the complexities of concurrent programming. Even in single-threaded environments, such as a JavaScript processes, concurrency woes can escalate quickly in terms of the non-determinism introduced by asynchronous operations (timers, I/O) and their callbacks.

My trying to understand and deal with those complexities resulted in an exploration of functional-reactive programming concepts, which in turn led me to make a "deeper dive" into computer programming language design and various computer science topics. Concurrency is still the CS topic that makes my ears perk up the most.

</comment><comment><USER28> I've recently stumbled upon a very interesting paper about concurrency. Naming and Synchronization in a Decentralized Computer System:

[http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS- TR-20...](http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-205.pdf)

It's written in 1978, but if I interpret it correctly, it's still conceptually ahead of everything mentioned in the article (the closest thing being STM). Anyone else here seen it?

<comment><USER11> No, but thanks for bringing it up, it appears an interesting read.

</comment></comment><comment><USER29> Hey another article at YC frontpage about saying "DO NOT MESS WITH STATE" to scale;

"Shared-memory multithreading really isn't the future, we thought, and notably absent from all of my prior work was fixing this problem."

I'm thinking about..

Immutability is the way to scale complex systems?

Every system can be implemented as immutable by definition?

We need to look to build new data structures - like Tries - to be Immutable- friendly?

When Immutability doesn't worth it?

<comment><USER30> Computer memory is mutable. For multiple processors to make use of the same memory requires contending for that memory _somehow_ (else the processors are not communicating in any meaningful way).

You can mathematically try to hide that however you want, but somewhere deep in your language runtime stack will be a shared-memory concurrent mutable algorithm, be it a lock, queue, or otherwise.

The alternative is to ditch shared memory entirely and use e.g. hardware IPC to manage contention. Tilera tried that, they had 64-core processors with a hardware IPC mesh and incoherent cache. But last I checked they switched focus to coherent shared-memory concurrency. Not sure what the driver for the change was but it's telling.

EDIT: Not to mention that half the article focused on promise-style concurrency, which has nothing to do with shared memory or even multicore. Immutability does nothing to address that I/O exists and has latency, and that people try to hide it in frankly bizarre ways. (Really… not pumping the event loop to avoid deadlock? That's a design issue, you should be using queues instead of mutexes and eliminate cycles if you find you have that problem.)

<comment><USER29> I will search about Tilera :) Your answer open my mind cause I hadn't thought about hardware. It got me thinking.. Are GPU architecture more friendly to be immutable or It have the same "problem" of shared memory too? And.. by the way thanks to sharing your knowledge :)

<comment><USER31> Functional array programming on GPUs works pretty well, and is an immutable programming style. Your object granularity tends to be pretty big (entire arrays), so the low-level shared memory concerns that inevitably arise at some point in the software stack are easy to handle for the compiler and/or runtime. Basically, you have much fewer synchronisation points, so you can afford for them to be slow.

It's a more restricted programming style than common functional programming - in particular, recursion and advanced control flow is out - but that's the name of the game on GPUs, no matter what you do.

<comment><USER11> And there are at least Haskell and F# implementations for GPGPU, not sure about other languages.

</comment></comment></comment></comment></comment><comment><USER32> Although distributed programming is different than concurrency (albeit one I suppose could argue) I was hoping for some mentioning of Join Calculus. Particularly Polyphonic C# [1] (given Duffy's MS background).

I have been meaning to re-investigate Join Calculus (the last time I did was in OCaml a long time ago) and to why it never really took off.

Some programming patterns can be found here: [https://en.wikipedia.org/wiki/Join- pattern](https://en.wikipedia.org/wiki/Join-pattern)

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

<comment><USER10> True. Both polyphonic C# and JoCaml were lovely projects.

</comment></comment><comment><USER33> Weird thing is that the inspirations didnt factor in only commercially- depolyed schemes for safe concurrency: Ada's and Eiffel SCOOP. The SCOOP model was even ported to Java at one point.

<comment><USER34> Erlang CSP is also commercially deployed and safe.

</comment></comment><comment><USER32> On Joe Duffy's profile there is what I thought to be a hexadecimal: 284d69f1cb

I tried converting it to ascii and decimal and nothing interesting came out. Anyone know what that is? Maybe a key signature?

<comment><USER35> Probably a part of the hash of the first Git commit of his new project.</comment></comment>


A "lifestyle" business with 30M uniques/month: the story of wikiHow - <AUTHOR> http://www.xconomy.com/national/2011/12/16/how-to-build-a-lifestyle-business-with-30m-visitors-per-month/

<comment><USER2> Great story about a great resource, a lifestyle business model that works very well and the man behind it all.

</comment><comment><USER3> wikiHow may be a 'lifestyle business', but for many of its volunteer editors, it's a lifestyle. It has become part of who we are and we hope that it can make that kind of a difference to others.

<comment><USER4> Agreed!

</comment></comment><comment><USER5> amazing what wikiHow has done to tackle the problem of creating quality content at scale. go jack and team!!

</comment><comment><USER6> Great! :D -a wikiHowian</comment>


Realtime WarGames-style visualization of Github updates - <AUTHOR> http://streams.robscanlon.com/github

<comment><USER2> This is awesome! Great way to visualize the data and I really like that you used IRC.

</comment><comment><USER3> It's cute, but like many of these visualizations quite militaristic.

<comment><AUTHOR> Yup, that was the intent. It mimics the war room in the 80's film WarGames: [http://www.imdb.com/title/tt0086567/](http://www.imdb.com/title/tt0086567/)</comment></comment>


Show HN: Kubernetes on Raspbian - <AUTHOR> https://github.com/alexellis/k8s-on-raspbian <comment><USER2> Putting a blog post in a repository IMHO still doesn't make it a Show HN: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

</comment><comment><AUTHOR> > This repository holds the original tutorial for "Kubernetes on Raspbian" / > Raspberry Pi by Alex Ellis

Moved from Gist format to a repo to enable collaboration.</comment>


Crystal 0.8.0 - <AUTHOR> https://groups.google.com/forum/?fromgroups#!topic/crystal-lang/Voz9wDlpvao <comment><USER2> Compare this to [https://news.ycombinator.com/item?id=10023413](https://news.ycombinator.com/item?id=10023413) or [https://news.ycombinator.com/item?id=10187596](https://news.ycombinator.com/item?id=10187596) and tell me that HN doesn't have a severe Rust/Javascript bias.

</comment><comment><USER3> really enjoyed crystal lang's ruby-like syntax.</comment>


Show HN: Would this site make you want to interview with us? - <AUTHOR> http://careers.talis.com/

<comment><USER2> Seeing as nobody else is assisting you, let me chime in.

1) The mario theme in the middle of the page kind of ruins your "hipster" look you are going for with the rest of the design.

There's too much scrolling for finding info and I still couldn't find out which Birmingham (USA or UK) the firm was in.

The pictures are nice, but there are so many and so much is "happening" as one moves down that it is kind of hard to collect the info from a humans POV.

Based on who you're trying to attract, this page may help, but for somebody looking for a job (and jobseekers look far and wide), they'd probably skip over all the clutter just to see what position you have open.

</comment><comment><USER3> yeah, I think I may, nice and mission driven!</comment>


Why exactly do we care about where Snowden is going? - <AUTHOR> http://i.snag.gy/z5PO8.jpg

<comment><USER2> Because he has blown the whistle on internet surveillance and the belief in the need for government transparency and individual privacy has deep roots in the hacker world.

<comment><AUTHOR> That explains why we care about the person, but why do we need to know on what continent he is? I don't see the value.

<comment><USER3> uhm... like, because we want to see him go to a country where he will be safe, for example?

</comment></comment></comment><comment><USER4> Because he is starting at China, one superpower that is an antagonist of the US; taking the first leg of his trip to Russia, another superpower that is an antagonist of the US; and traveling through one to three countries (Cuba, Ecuador, and/or Venezuela depending on the the report) that style themselves as enemies of the US. His travel itinerary is strong evidence that he was a spy for a foreign power this whole time.

Incidentally, every one of the countries on the list plays the Great Game as aggressively as the US does, and spies on and oppresses its people more aggressively than the US. These are not places where someone with an interest in peace or human rights can seek refuge.

<comment><USER5> The countries that he has to fly through to avoid immediately being detained and sent to the US are all countries that you find suspicious and "baddy".

 _What a surprise._

Are you for real?</comment></comment>


Short Story: A Long Way Down - <AUTHOR> http://mathoda.com/archives/215

<comment><USER2> What on earth would make you think this is the site to post this story?</comment>


Stacks-cli: Analyze a website's stack from the terminal - <AUTHOR> https://github.com/WeiChiaChang/stacks-cli <comment><USER2> There is also another reason to use this over an extension: privacy. Last I saw the browser extensions worked automatically for all pages, thus sending all your browsing habits to some random place. Quite serious if you ask me.

That said, they may have changed or I may have missed extensions that aren't pervasive.

Awesome work! Thanks!

<comment><USER3> It's a wrapper over wappalyzer which is a chrome extension, why would this avoid sending your data to wappalyzer servers?

<comment><USER4> Presumably it does the same thing, sure, but isn't active on every page you visit, only those you drop into a shell and run it against. So it gives you the same sort of results without having to enable and disable the extension in the browser.

</comment></comment></comment><comment><USER5> There is also [https://github.com/rverton/webanalyze](https://github.com/rverton/webanalyze) which is a Go port of Wappalyzer. It makes use of the Wappalyzer apps.json definition file.

</comment><comment><USER6> Author himself points to Wappalyzer himself which does the same thing, either as a service or a Chrome extension: [https://chrome.google.com/webstore/detail/wappalyzer/gppongm...](https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg?hl=en) / [https://www.wappalyzer.com/](https://www.wappalyzer.com/)

<comment><USER7> Author also uses Wappalyzer data. The CLI is basically few lines of code.

<comment><AUTHOR> Hello, I'm the author of stacks-cli,and yes just like you said, stacks-cli just another tool based on wappalyzer this npm module and was a side project of mine built in my spare time, but I think the most important core value of stacks-cli is that you can still have another options when choosing tools. I mean you can choose to install browser extension or just installing stacks- cli. For my situation, there's two reasons, the first one is that I don't wanna too many redundant extensions in my browser especially Chrome already ate too many RAM of my laptop. The other one is I'm a CLI lover, just that simple.

<comment><USER7> I don't mind, enjoy doing what you want. Is it worth posting on HN, I'm not sure, but let that be your decision too. Cheers.

</comment></comment></comment></comment><comment><USER8> First line in README is a bit misleading IMO - it implies that this tool has been built as an alternative to Wappalyzer, but it's actually using the Wappalyzer Node module ([https://www.npmjs.com/package/wappalyzer](https://www.npmjs.com/package/wappalyzer)). Maybe naming it `wappalyzer-cli` would make more sense.

</comment><comment><USER9> I just use BuiltWith.com for this.

</comment><comment><USER10> Are javascript runtime dependencies considered part of "the stack"?

</comment><comment><USER11> What is with the trend to stuff emojis everywhere? It looks childish and does not improve readability at all.

<comment><USER12> How is it childish?

<comment><USER11> It is the same reason, why I don't like when companies use buzzwords like "code ninjas" instead of "developers" in their job listings. This gives me an impression, that you think I'm incapable of understanding basic words and terms and you need to describe it with images and pop references for me, which is weird because these kind of articles are usually oriented towards tech savvy people and not general public. And/Or you are trying to look very "hip" and "cool", which is not a bad thing, but I find it a little bit annoying. This is job offer/github app, not your Tinder bio.

Finally, in this specific case the use of emojis is so over the top it distracts me from the actual content.

I'm generally all for fun, but this feels like insulting the reader's intelligence to me.</comment></comment></comment>


7 College Majors That Will Land You a Six Figure Job - <AUTHOR> http://tryecruit.com/blog/7-college-majors-that-will-land-you-a-six-figure-job/

<comment><USER2> Where are those salary numbers coming from? There's no way new graduates are getting that much. Looking at the report they linked to, I'm seeing much lower numbers.

<comment><AUTHOR> Dept of Labor & Georgetown Center for Education and the Workforce

</comment></comment><comment><USER3> Wow, now I know what to study! _sigh_

<comment><AUTHOR> :-( Dont worry. I've spent the past year talking to recruiters and there are other ways you can impress them even if you're not in a 'target major.'

The biggest reason why I'm building something in the recruiting (specifically entry level/internship) space is that right now, if you're not on a 'target campus', in a 'target major' or have personal connections, you're kind of screwed and left to the will of Taleo (may thou readeth dry job descriptions for hours with no response, gwahahahah!!!).

That's bullshit. It should be about talent, passion/interest and demonstrated abilities, not just BS credentials.

<comment><AUTHOR> <http://tryecruit.com></comment></comment></comment>


Ask HN - Why 3SAT? - <AUTHOR>

Hey, everyone -
The recent buzz over the 3SAT paper has brought an unanswered ? from college back to the front of my mind, and I was hoping someone else could help me out.
I understand SAT as a problem and its implications for P/NP. What I'm not clear on, and which my computational complexity professor couldn't/wouldn't elaborate on, is why 3SAT is the "interesting" form of this problem to use?
Conceptually, using clauses makes sense because it allows us to express the logical relationship between literals, but why is it useful to restrict clauses to 3 booleans? Why not 2? Why not 5? What's magic about 3? <comment><USER2> Because 2-SAT is polynomial. 3-SAT is the smallest "interesting" flavor of the SAT family. Limiting the forms makes some sorts of reasoning easier, but 3-SAT and k-SAT are effectively the same. There are simple ways of inter-converting.

ADDED IN EDIT: <http://en.wikipedia.org/wiki/2-satisfiability>

<comment><AUTHOR> Okay - that 2-SAT fact makes sense. Thanks!</comment></comment>


FizzBuzz Enterprise Edition - <AUTHOR> https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition <comment><USER2> The sad part is that many Java programmers would probably not realise that this is supposed to be a parody, because there are even more ridiculous- looking things in real, "production" Java code:

[http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server...](http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html)

[http://docs.spring.io/spring- framework/docs/2.5.x/api/org/sp...](http://docs.spring.io/spring- framework/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html) (this one is somewhat famous - maybe it wins the "most number of design patterns in a class name" award?)

The impression I get whenever I come across code like this is that its authors were more interested in "creating architecture" than solving a real problem - and creating many classes containing short methods whose only function is to create more objects or pass existing ones around is a particularly insidious form of busy-work.

GNU Hello ([http://www.gnu.org/software/hello/](http://www.gnu.org/software/hello/) ) is basically the same sort of thing done to a Hello World program.

<comment><USER3> "Convenient proxy factory bean superclass for proxy factory beans that create only singletons."

<comment><USER4> I have the urge to find out if a well (or badly?) tuned Markov chain can generate functional enterprise java code; I know exactly enough java to be sure all those words in that order actually mean something, but not nearly enough to have any notion what, precisely, that is.

<comment><USER5> For those who haven't seen it:

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

The Spring-flavored generator has an extra DesignPatternFactoryMixin.

[http://www.classnamer.com/index.html?generator=spring](http://www.classnamer.com/index.html?generator=spring)

</comment></comment></comment></comment><comment><USER6> This was a lot funnier before GitHub introduced the current folder mechanics. Since you previously had to dig into each level.

<comment><USER7> And is not even the longest one seen so far in java land

        /src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage

</comment></comment><comment><USER8> They rejected my pull request to migrate their markdown docs to docbook.

[https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/pull/125)

<comment><USER9> _While we appreciate the careful crafting that went into this pull request and regard XML as an excellent choice for documenting projects of Enterprise caliber, we feel that moving to Docbook version 5 is a rather hasty move. The version is brand new, and we are unable to convince stakeholders about its Enterprise-grade integrity and long-term prospects as a documentation platform._

Brilliant.

</comment></comment><comment><USER3> I was trained in Java, but I never had to do any Big Enterprise Java coding. Can anyone summarize why and when this style of development began?

<comment><USER10> A combination of wasteful architecture astronomy and legitimate need to divvy up absolutely mammoth line-of-business applications among teams with hundreds of members operating for years with _wildly_ varying skill levels, often on different subsystems from different physical locations, with billions of dollars on the line. You can't let the least senior programmer in the Melbourne office bring down the bank if he screws up with something, so instead you make it virtually impossible for him to touch anything than the single DAO which he is assigned to, and you can conclusively prove that changing that only affects the operation of the one report for the admin screen of a tier 3 analyst in the risk management group for trans-Pacific shipping insurance policies sold to US customers.

The tradeoff is, historically, that you're going to have to hire a team of seven developers, three business analysts, and a project manager to do what is, honestly speaking, two decent engineers worth of work if they were working in e.g. Rails. This is a worthwhile tradeoff for many enterprises, as they care about risk much, much, much more than the salary bill.

(I spent several years in the Big Freaking Enterprise Java Web Applications salt mines. These days I generally work in Rails, and _vastly_ prefer it for aesthetic and productivity reasons, but I'm at least intellectually capable of appreciating the advantages that the Java stack is sold as bringing to users. You can certainly ship enterprise apps in Rails, too, but "the enterprise" has a process which works for shipping Java apps and applying the same development methodology to e.g. a Rails app would result in a highly effective gatling gun for shooting oneself in the foot.)

<comment><USER11> I never understood what the 'risk' in architecture designs meant until your comment made me realize it is indeed meant for teams where you really cannot trust all team members ( _shudders_ ). Thanks, I see now more clearly.

<comment><USER12> if the decision makers were truly smart, they would've asked to use a provable programming language like Coq, or at least haskell or something like that (i hear Ada is very popular in millitary software because of it's contract based programming).

<comment><USER13> Not true. It's very difficult to unlock a big budget when you have a small team. And with Coq or Haskell, you team won't be very big...

Also, ADA is _a bit_ popular, but not too much. Most of the code is still done in C because of the conformism. Object oriented programming is still considered like a dangerously modern move. The rules here are pretty hard and it's easier to fuck up the regulation than the code... ( _cough_ A330 Neo _cough_ )

</comment></comment></comment></comment></comment><comment><USER14> The sad part is that there is actually an advantage to abstracting out the printing of fizz and buzz, and that is it will be easier to test. But the authors didn't even swap in a testable printing strategy, they just changed System.out.

<comment><USER15> Some things it's better NOT to test, rather than create an overengineered mess to facilitate testing.

Sometimes a fuzzbuzz is just a fuzzbuzz. A.k.a: KISS, YAGNI, etc...

</comment></comment><comment><USER16> I love that there is a commit to 'remove redundant import'. [https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/commit/3732e43bc59070e5f1c9e826d07b6313453d42cd)

Being enterprise software, the last thing they need in the codebase is clutter.

<comment><USER8> Well, someone probably had a stretch goal to clean up some of the static analysis warnings.

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

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

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

<comment><USER18> Yes, but since then, there has been a continual stream of updates, unit tests (shockingly, the original version had ZERO unit tests), expanded support for a variety of IDEs, and better code structure.

Also, they author finally got around to actually providing a proper pom.xml file.

Check the commit history for details.

If you're interested in contributing, there's definitely room for expanding the unit test coverage, and also instrumenting the build process to support a code coverage tool such as EMMA or Coberture. Also, I don't believe that the code has undergone a security audit, and I don't see any code reviews for many of the commits, which is distressing.

And documentation! The code does not support javadoc, and in fact, there are only two comments in the entirety of the nearly 1500 line code base!

<comment><USER19> > And documentation! The code does not support javadoc, and in fact, there are > only two comments in the entirety of the nearly 1500 line code base!

This is just _so_ non-compliant with Best Practices that it reveals itself too easily as a parody.

Each class should at least have the default Eclipse comment telling you how to change the template for a new class file, and most methods should have auto- generated JavaDoc for the first version of the method which was written years ago, with nothing filled in.

</comment></comment></comment><comment><USER20> The main thing I look for with FizzBuzz solutions in general is how many modulus operators are used. The junior end of the spectrum tends to use four (% 5 && % 3; % 5; % 3), while intermediate/seasoned developers will either use three (% 15; % 5; % 3), or two (storing % 5 and % 3 in variables, then comparing the combinations).

My personal preference in terms of demonstrating maintainable code is using two modulus operations with variables. However, I fully understand the argument that an additional % 15 is preferable compared to the overhead of storing two variables on each iteration. Both are valid approaches IMO, and the debate can roar on for eternity. Micro-optimizations and whatnot.

I just don't like to see four modulus operations, which IMO shows a lack of basic willingness or ability to refactor while coding. It's fine to initially write the four modulus operations, but if someone doesn't immediately catch the duplication and do something about it, it screams "I write code until it works and then move on without cleaning anything up."

Strangely enough, only once have I seen someone use the % 15 optimization _and_ add a short comment along the lines of "// least common multiple, divisible by both 3 and 5". Spotting the optimization is nice; placing a short comment explaining why % 15 when the test is about % 5 and % 3 is a nice touch. Explains something that might not be immediately obvious to the next person coming to the code.

Aside: it astounds me how many people, when asked to write a short snippet of code during an interview, have basic formatting problems and inconsistent code style. I've seen two lines of code inside an if() block indented at different levels, with no excuse for "different opinions on formatting". Not a wrapped line continued on the next, but just two simple statements inexcusably indented at say 8 and 12 spaces. Don't call us, we'll call you...

<comment><USER2> How many _zero_ -modulus solutions (and still using a loop, not just a long precomputed string) have you seen? In my experience, this is the rarest type. Of those who can write a correct FizzBuzz (which is already a pretty small fraction of the total candidates), I like to ask "how would you do this without any modulus" and very few of them can easily see the pattern that makes this possible.

 _Aside: it astounds me how many people, when asked to write a short snippet of code during an interview, have basic formatting problems and inconsistent code style._

If this is being done on paper or an absolutely "non-IDE" text editor then it's probably someone dependent on an IDE to do the right formatting for them. If they still do this in an auto-formatting IDE, it's probably a sign that they have no good idea of the structure/flow of the code.

<comment><USER21> What is the "optimal" answer you are looking for if you ask to solve it without modulus? Build modulus by hand, or using additional resetting counter variables?

<comment><USER2> Two counters, one that counts by 3 and one that counts by 5.

</comment></comment></comment></comment><comment><USER22> This makes me hurt inside.

</comment><comment><USER23> "Enterprise-strength" stack trace: [https://plus.google.com/+JeanBaptisteQueru/posts/9oHHUMpwYhG](https://plus.google.com/+JeanBaptisteQueru/posts/9oHHUMpwYhG)

</comment><comment><USER24> I don't get why all you kids love these obfuscation competitions. ;-)

</comment><comment><USER25> "... necessary tools such as if-/else-statements and loops"

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

</comment><comment><USER26> Enterprise programming is like Hadoop. Huge startup overhead, but once workers start up, progress shoots up at a pace faster than possible with less thought out systems.

</comment><comment><USER27> Verbose way to express that a lot of enterprise Java code is verbose. I wish I had as much free time.

</comment><comment><USER28> ahahahahahahahahaha nice :D</comment>


Google Experiments with 'Search Without Search' - <AUTHOR> http://www.pcmag.com/article2/0,2817,2374068,00.asp

<comment><USER2> Earlier submissions:

<http://news.ycombinator.com/item?id=1986996> \- venturebeat.com

<http://news.ycombinator.com/item?id=1983184> \- techcrunch.com

<http://news.ycombinator.com/item?id=1529491> \- itworld.com

Comments:

<http://news.ycombinator.com/item?id=1529532>

      > Allow me to be the first to call BS.
      > (Am I allowed to do that with Google?)

<http://news.ycombinator.com/item?id=1983338>

      > Google Discovers the Appeal of Spam</comment>


RPG 'UnReal World' released on Steam after 26 years - <AUTHOR> http://www.wired.co.uk/news/archive/2016-02/26/steam-game-release-after-26-years <comment><USER2> And bought already. It's a great roguelike game. I remember playing it years ago. Then tried anything possible to convince the author the migration to SDL was reasonable. (rather than whatever else it was before) The game seemed to be stuck on Watcom and dos for ages.

I had so much fun losing the game time after time. (damn winter...)</comment>


Test-drive the public API for our real-time prediction market - <AUTHOR>

smarkets.com is a real-time prediction market. A prediction market is much like a stock exchange, except that instead of buying into a company you can buy into, say, 'Apple will not recall the iphone 4' (http://smarkets.com/current-affairs/tech-gadgets/iphone-4-recall).
We're starting to open up a rest api to allow users to develop trading robots and assistants. Unlike betfair we don't charge you for access or limit the number of requests. The more activity in our markets the better - we know our infrastructure can take it.
The core functionality is already up and running at api.smarkets.com . Documentation is temporarily housed at http://apidocs.s3-external-3.amazonaws.com/index.html . If something is broken or doesn't make sense you can get hold of me at email@example.com or jamii in #erlang.
Unfortunately we can't accept money from users in the USA due to the rather draconian gambling laws, but you can still open an account and get read-only access to the api.
The smarkets backend is built on top of erlang, couchdb, postgres, rabbitmq and mochiweb. I will be writing about various parts of our tech over the next couple of weeks at scattered-thoughts.net . Whilst this stuff gets a lot of hype there is often a lack of real-world experience reports, especially for couchdb. Hopefully I can close that gap a little bit.
Also, we're hiring: http://smarkets.com/about/internships/ http://smarkets.com/about/jobs/ <comment><USER2> Do you have any more documentation (other than <http://smarkets.com/faq/#betting_matching>) on your order matching?

I assume it's like any other call market with price (odds) and time precedence, but I'm still curious.

<comment><AUTHOR> At the moment all our markets are closed, price-time priority markets and users can only place limit orders. So your order will be matched against the best odds available, unless those odds are worse than the limit on your order. A pair of orders are always matched at the price of the order which was placed first.

I should probably add some example markets to the docs.

</comment></comment><comment><USER3> Are all of your gaming activities under the Maltese license?

Sorry if this is too business and non-HN oriented. I will remove this question, if requested.

<comment><AUTHOR> Yes, apparently. I don't know much about our licensing myself.

<comment><USER3> Excellent. Thanks for responding.

For better or worse (for my sake, not yours!) I know what this means in terms of how I may be able to use it in conjunction with an exotic options platform with which I am tangentially involved.</comment></comment></comment>


Show HN: Lectito, a speed reader for Windows Phone - <AUTHOR>

I am a big speed reading fan, especially the idea of being able to use rapid serial visualization presentation (RSVP) on a phone.
The idea behind RSVP is that it takes a considerable amount of effort and time to move your eyes' focus from word to word when you are reading, especially on a phone where the font might be tiny. Because of this you can increase immensely your reading speed if instead of having to move your focus from word to word, you focus on a point and the word changes at a certain cadence. Typically, with some practice you can increase that cadence to numbers such as 500 words per minute comfortably, which is a lot more than what the average person can read and works brilliantly if you read light stuff (I wouldn't use it for hard technical stuff, because you need more time to process the information for it to make sense).
I looked for speed reading apps for WP8 and found a few, but they required you to either copy&paste the text you want to speed read, required the text to be in OneDrive or that you'd copy the url of the page you wanted to speed read.
So I did Lectito (it means reading in Latin): http://www.windowsphone.com/en-us/store/app/lectito/c4f00daf-d815-4868-8e65-a55ae40708e2
Lectito can be "launched" from Internet Explorer using the sharing option and it also supports pictures (it will display them and their "alt" text), which was another feature lacking in all the apps I've tried.
I'm still adding features and making stuff better in general. I'd really appreciate feedback in terms of features/problems that the app might still have.
All of the code that is not UI related is PCL, so it isn't too hard to port it to other platforms. I've chosen Windows Phone because that's the phone I have now (Lumia 920 and I really like it, especially the camera), and because I thought it would be the mobile platform where the market is less saturated.
Thanks! Rui <comment><AUTHOR> Link: [http://www.windowsphone.com/en- us/store/app/lectito/c4f00daf...](http://www.windowsphone.com/en- us/store/app/lectito/c4f00daf-d815-4868-8e65-a55ae40708e2)</comment>


The Fourier Transform and its Applications (free ebook) [pdf] - <AUTHOR> http://see.stanford.edu/materials/lsoftaee261/book-fall-07.pdf

<comment><USER2> Damn, why do these PDF's always seem to have worthless filenames?

book-fall-07.pdf? Seriously?!

Why not fourier-applications.pdf or something?

<comment><USER3> I guess the author named it. Book (because it's his book, probably the first so for now just "the book"), fall '07 - the revision.</comment></comment>


'First 5G mobile net connection' claimed by Qualcomm - <AUTHOR> http://www.bbc.com/news/technology-41652967 <comment><USER2> They've been installing 5g cell towers in my city for the past 3 three yrs, its about time they start making 5g for cellular devices.</comment>


Limitless Brain Power Possible? - <AUTHOR>

I just watched the movie Limitless last night and I was surprised that it was actually pretty good but it got me thinking.
Are there any fixes for stimulating brain activity or things that can help you learn faster? I've been really into neuroplasticity for the past five years and personally know the experience of learning one thing and benefiting in other areas of life.
I tried some paracetam (nootropic) in college and it did help with writing papers so I'm wondering whats the current state of affairs with "Brain Hacking" <comment><USER2> I suspect you're searching in the wrong branch of the solution tree. Brains, you see, work in strangely similar ways to that of other muscles in your body. You can certainly get "quick fix" improvements, but over the long term, they will never, ever get anywhere close to organic incremental gains built under exercise, and regularly pushing your limits.

However, just like with body building, there are instruments for accelerating this growth:

-Lumosity (www.lumosity.com) is to brain building what a bench press is to muscle improvements. In a 30-minute daily session, your brain is exposed to 5 different games, each exercising general brain plasticity, and specific muscles (speed, flexibility, memory, whatever you think you could use). I'm using this for 2 months now straight, and their pricing is terribly, terribly off compared to the returns I'm getting.

-If Lumosity is for building the general hardware, Spaced repetition is the enabler for installing software for long-term instant recall. Supermemo, or other SR products can help; specific areas usually have their own SR solution already.

-Language: of all the disciplines I've sucked up so far, nothing has changed my mind, and worked on my brain more, than acquiring a new language (preferably from a conceptionally different linguistic branch -eg. I'm learning Japanese; Chinese could also prove to be profitable in the near future)

Hope this gets you started, and feel free to ask any questions (my e-mail's in my profile)

</comment><comment><USER3> I take 1500 mg aniracetam daily and find that it makes a notable difference in my cognition. I'm able to maintain a train of thought without having to spend effort leaving mental "breadcrumbs" to retrace my steps.

I don't know if this is the state of the art, but it seems to work well for me. My brain works well enough that I don't see much benefit to tinkering with my own chemistry to eke out a few more cycles. My biggest obstacle is that some malicious trick of evolution forces my body to lie dormant for roughly a third of every day instead of actually doing stuff.

</comment><comment><USER4> Try imminst.org forums for the latest on brain hacking--they're the go-to experts on this kind of stuff. Tim Ferriss (4hww) seems to pick up many of his brain hacks there too.

</comment><comment><USER5> This might not be the best solution for everyone but for me it works, and I only recommended this if you have (and been tested for) ADD/ADHD and have no heart disease(s), as it will increase your chance of getting a heart disease

I take Adderall as prescribed by my doctor and it slightly improves my cognitive ability but much more substantially, it enables me to focus. And I focus seemingly more so than other people normally do while on Adderall. I take 10mg of Adderall XR (Time Release in 3 doses). There is a significant period about 8 hours later wherein one will feel fatigued and their brain will feel like mush (Or that's at least how I describe it).

Maybe you should try focusing more and not worrying as much about cognitive ability. I find that if you're excited and focused on something it's crazy what you can come up with.

</comment><comment><USER6> If you're going to be messing around with your brain chemistry please do be careful. You can really screw things up if you take something that blocks a key receptor. Be sure to find the minimum effective dosage.

You're not really 'increasing your brains activity', your increasing the plasticity (though you can increase efficiency as well). One common myth I hate hearing is that humans only use x percentage of our brains. We use 100%, otherwise the body would break it down just like any other inactive tissue. Brain tissue has a huge metabolic toll on the body, you're not going to waste resources on something that's not being used.

</comment><comment><USER7> Nothin' like a good, low, daily dose of amphetamine to keep you focused on your ambitions.

</comment><comment><USER8> Meditation: <http://en.wikipedia.org/wiki/Research_on_meditation></comment>


Sometimes A Founder Needs To Let Go - <AUTHOR> http://informationarbitrage.com/post/15515808052/letting-go

<comment><USER2> Probably true, but there's always exceptions (think Steve Jobs)</comment>


Ask HN: Would you donate directly to poor Kenyans? - <AUTHOR> Hi, all. After seeing the work of GiveDirectly (https://www.givedirectly.org), I started playing around with getting in touch directly with poor Kenyans and, thanks to the magic of Olx (basically the international Craigslist), WhatsApp, and M-PESA (Kenya's electronic money transfer system), I've managed to find and send money to a number of needy individuals.
While I haven't been able to reach the very poorest Kenyans, I've been able to reach Kenyans living on $100-$300/month, and sending them small amounts of money (low hundreds of dollars) has been absolutely life changing for them. Moreover, I've formed some really amazing and perspective-altering relationships. And it's injected a lot of meaning into my life to, say, send the single-mother $300 a month, so she can "live very comfortably" (her words) by renting a single room on a dirt road for her and her daughter.
So, would anyone of you be interesting in doing something similar? There's tons of obstacles here (not the least of which is protecting the recipients from abusive relationships) but, putting that aside, is this something you could see yourself doing?
Thanks so much! <comment><USER2> Last week I got scammed by some guy that came to my door asking for money so he can have a hand surgery, he showed me his hand which was severly disformed and I got sentimental and gave him some spara change (a few bucks), which considering I'm a student still hurts my tight budget a bit. Anyhow I felt good giving him the money, because I thought it might help him if even just a bit. Turns out he got arrested for being a scammer the next day, I recognized his face in the local news article. The takeaway lesson from that was that if I were ever in a position to help people out, I'd do so only through legal chanells and organizations that have proved themselves to actually give something meanigful for the people in need.

<comment><USER3> I have mixed feelings. A tragic injury used to solicit sympathy has been a staple of beggars for 1000 years (its in 1000 and 1 nights?) And what makes a beggar 'a scammer'? The injury is fake? Well, the need might have been genuine.

I don't know; helping is helping, whatever the path it took.

</comment></comment><comment><USER4> I did something like this for 2 years using MTN as well to pay a farmer family in rural Uganda every month but I had met them first through a friend, wouldn't trust Olx and other sites though a few times I sent money randomly that way. It was literally spare bitcoin change I had in various wallets that inflated to a ridiculous price and I exchanged them directly to mobile money, then transferred it for 24mos.

As other posts point out, it is a risk to flood a foreign market with capital though, you could help one family but screw over people you don't know about who's income ceases because you interfered and your patronage displaced their daily hustle somehow. When I discovered another large bounty of old coins I was hesitant to try this again since I know jack about the local economy. Paying for education seems a better plan, through somebody you know to take a pro makeup/hair course or some other trade. Pro training they can then start their own small business and train an assistant, there's no work in any of these countries like Uganda.

Edit, there's a Gambian newspaper where people can go to their office and request help that's published. Better than random CL/Olx giving [http://foroyaa.gm/category/those-who-need- help/](http://foroyaa.gm/category/those-who-need-help/)

<comment><AUTHOR> This isn't addressing your point and I'm not saying your doing this, but, as I've told people here and elsewhere about my idea, it's interesting how readily they come up with criticisms. I guess this is the classic reaction to cash transfers, but it's still interesting to see it in action. I wonder how much of it is just people finding excuses not to be generous.

I'm a pretty generous person in general, but it's amazing how much my heart has opened upon having a personal connection to people in such need. Right now I'm not only giving as much as I can, but I'm looking for ways to earn more so I can give more. That personal connection and everything that flows from it is, I think, the unique benefit of this approach.

As for finding people via Olx, I should be clear (as I think I stated in another comment), I'm not putting up a post saying that I'm looking to give money away to those in need. That would just make me a target. Instead, I go through various sections of the site and contact posters that seem like they might be on the lower end of the socioeconomic spectrum. Given this approach and given the scale I'm doing this on, there's basically zero chance that I'm sending money to someone that set out to scam me. I'd actually be _more_ leery of a system like you mentioned with The Gambian newspaper, because it has the potential to attract scammers.

There's some chance that folks may be exaggerating their need to receive more money than I'd otherwise give them, but I talk to my recipients extensively and form very real, meaningful and lasting relationships with them and, in the process, collect a lot of what you could call "collateral evidence" (like photos), so I end with what I really think is a very accurate picture of their lives. Moreover, if this type of exaggeration is happening it's netting people something on the order of tens of dollars. Both through correlating what different recipients have told me and through independent research, I've got a good sense of what the cost of living is there and what is and isn't a reasonable amount of money. So if someone says they need $310 a month (the most I send anyone) to support their family when they really need $300, it really matter doesn't matter, and I don't care.

</comment></comment><comment><USER5> That's really interesting! I have a couple of questions, if you don't mind.

1) How do you make sure you're not getting scammed? I mean you probably can't really get scammed in the literal sense, because you'd still be helping out a poor person somewhere (just maybe a 20-something year old guy in Nigeria rather than a single mom in Kenya).

2) Was it difficult to sign up for M-Pesa (and top it up with credit) given that you're not in Africa?

3) Why did you decide to give directly, rather than support, say, a charity that builds schools for girls in Kenya? A friend of mine is paying the college tuition for a student in Nigeria (wired directly to the University), which I think is great, as the recipient is less likely to see it as a 'handout', but rather as an investment into their future.

<comment><AUTHOR> Hi and thanks for the questions.

1\. To be clear, I'm not advertising on Olx saying I'm giving away money, so I don't have adverse selection to deal with. Rather I use to the "Seeking Work" section to proactively reach out to individuals that seem like they might be in need. And when I do reach out, I don't just open with "Do you need help? Can I give you some money?" Rather I try to build rapport and develop a real relationship. Most of the people I contact are just excited about talking to an American even before money enters the picture.

So I think the remaining risk isn't that the person isn't who they say they are but that they'd exaggerate their circumstances to get more money from me. The way I counter that is by developing a real relationship with the recipients. I talk to most of them on a daily basis. See pictures of their house and children. Get their whole backstory. And, in general, just end up with enough collateral documentation about their lives that it'd be hard to fake.

And, in fact, it's these relationships that are the most rewarding part of the whole thing. You're not just helping an abstract stranger. You're helping a very real person that's become a part of your life. My first recipients, the single mom, has become something of a sister.

2\. I don't use M-PESA directly. Rather I use WorldRemit ([https://www.worldremit.com](https://www.worldremit.com)), which connects to M-PESA, to send the money. Other than the occasionally delay, it's a pretty seamless experience. When you factor in the poor exchange rate you get, the cost of sending money is about 1%.

3\. Honestly, it's just more rewarding to give directly. I know keep saying this but to talk to the recipients and see how grateful they are and how life changing the money is just an amazing experience. And it's motivating. I want to keep giving and find ways to give more.

As for the handout question. None of my recipients seem to attach any stigma to receiving the money and none of them treat it as a handout. They all keep working in one way or another and most use the funds to start a business of some sort.

<comment><USER5> Sounds great, thanks for your response. I love your approach and will try this out myself.

<comment><AUTHOR> Thanks! Hit me up if you have any questions. My email is in my profile.

</comment></comment></comment></comment><comment><USER6> You should read the book "When Helping Hurts" to get a better idea of the harm you can cause by just giving poor people money without addressing root causes and more systematic issues.

In fact, I will buy you a copy if you are interested.

<comment><USER3> You give a man a fish, he eats for a day. _He eats for a day_ Don't imagine that doesn't matter. Its easy to give up because its not permanent. Nothing is permanent, but helping is helping, no matter what the cynics say.

<comment><USER6> What happens when the people you are helping become dependent on you and you disappear?

The discussion isn't helping or not helping, but determine how to best help and allocate your resources accordingly.

<comment><USER3> As long as it doesn't turn into stasis, where nobody is helped at all because we're not sure its the perfect solution. Which cynical me thinks is selfish and shortsighted.

And, what happens when they eat for a day and then you disappear is, they ate for a day.

</comment></comment></comment></comment><comment><USER7> What's the problem with GiveDirectly.org? How likely is that the poorest have internet access?

<comment><AUTHOR> There's absolutely no problem with GiveDirectly, and, if you want the most impact for your dollar, absolutely give to them. My approach has the benefit of being much more tangible. I'm helping people I've gotten to know and become friends with. I keep saying this, but it's truly an amazing and perspective altering experience. You don't realize just how much we all have in the West compared to even middle-class person in Kenya.

And while cellphone penetration in Africa is pretty astounding, the poorest might not have reliable electricity let alone a smartphone. I'm under no illusions that I've reaching the poorest Kenyans. But the people I'm reaching are definitely in need, and I feel good helping them.

I'm not saying this is an alternative to GiveDirectly, but I think it's an interesting approach that has some unique benefits.

<comment><USER8> While a donation through GD comes with no strings attached for the receiver, would you say that your method does? Is there a chance that they feel an obligation towards you that affects them negatively?

Great initiative though, I admire your spirit. If you're not already introduced, givewell.org and 80000 hours would be interesting for you to look up, I think.

<comment><AUTHOR> Yes, I'm very familiar with GiveWell.org and 80,000 Hours. They're great orgs.

I attach absolutely no strings to any of my donations, but I think you bring up a great point. There's a huge inherent power differential, so you really have to make sure the the relationship doesn't become subtly coercive in some way. I spend a great deal of talking to my receipients and get a lot from it. I think they do too, but I'm sure they also realize I enjoy it and may feel some obligation to indulge me. I try my best to make sure they don't feel like there's any quid pro quo, but there's a chance that they feel like there is, and that obligation, in theory, could affect them negatively.

Perhaps I'm gravely misjudging, but the relationships I've formed seem very genuine and, in some cases, almost familial. The mere fact of someone half a world away reaching out and opening their wallet for a total stranger really warms people's hearts and leads to a kind of bonding that seems to be about more than mere self interest. It's quite amazing, really.

And, because of that, I'm donating $1k a month to people who, at the very least, need it more than me. Would the best choice and the morally right choice been to just have donated $1k a month to GiveDirectly? Absolutely, but I don't think I'd ever have done that.</comment></comment></comment></comment>


Automobile History: Brakes - <AUTHOR> http://www.motorera.com/history/hist07.htm <comment><USER2> Scroll to the last paragraph for TL;DR.

<comment><USER3> It's a one minute read that is informative. You can do it.</comment></comment>


Are you paying too much for drinks? Please review my app. - <AUTHOR>

Hi HN
The Happy Hour Finder is my iPhone app.  http://thehappyhourfinder.com/
I've gathered thousands of drink specials from around the net to build a happy hour database.  The app connect via custom API to display drink specials near the users lat/long.  If a user suggests a new happy hour or marks an existing happy hour as outdated then that request is sent to a call center to call the business and directly gather the correct data.
HN is a great community and I highly respect the opinions of the people on here.  I'd love to get your feedback.  A download and a good written app review would be nice too :) <comment><USER2> Minor note: change the name of the YouTube video so it is descriptive. "HHF Demo Video v2" is distracting and the space could be better used to sell your app.

<comment><AUTHOR> Good point! I forgot to do that..

<comment><USER2> looks great otherwise. I'm an android user (and past my happy hour days). Would have used it a few years back.

</comment></comment></comment><comment><USER3> You already submitted this 2 hours ago... <http://news.ycombinator.com/item?id=1835073>

<comment><AUTHOR> I wanted to test a different title and I'm hoping to not get lost in the stream of new submissions. I'm proud of the app and I'd like to show it off to HN.</comment></comment>


Speeding up and strengthening HTTPS connections for Chrome on Android - <AUTHOR> http://googleonlinesecurity.blogspot.com/2014/04/speeding-up-and-strengthening-https.html <comment><USER2> This is great news.

ChaCha20 is a refinement of Salsa20, which is probably Bernstein's best-known crypto design (it survived the eSTREAM contest to become one of the final portfolio ciphers). Bernstein wrote an extremely readable design paper on Salsa20:

[http://cr.yp.to/snuffle/salsafamily-20071225.pdf](http://cr.yp.to/snuffle/salsafamily-20071225.pdf)

Salsa20 is essentially a fast hash function run in a carefully designed counter mode. If you don't care about speed, you can turn any secure hash function into a stream cipher by, for instance, running the HMAC of that hash in counter mode. Here, Bernstein has designed the Formula 1 car of hash cores to run quickly in software without side channels as the basis for a counter- mode stream cipher.

Poly1305 is, like the GHASH construction from GCM, a "polynomial MAC", which is the modern way to say "cryptographic CRC". Poly1305 was designed more carefully for software performance than GHASH. In particular, because it's based on binary fields, for competitive performance GHASH requires either hardware support (such as the Intel CLMUL instructions) or a table-based implementation that potentially leaks secrets from cache timing. Poly1305 is based on prime fields and is fast in software on platforms without instructions tailored to it. It is also mercifully easier to code (though maybe I'm just irrationally biased against binary field polynomial math).

</comment><comment><USER3> Details: [https://www.imperialviolet.org/2014/02/27/tlssymmetriccrypto...](https://www.imperialviolet.org/2014/02/27/tlssymmetriccrypto.html)

<comment> Lx1oG-AWb6h_ZG0 Damn, that is an impressive writeup. I'm staggered by the amount of work needed to enable a new crypto suite, and amazed it got done so quickly. The scale at which Google operates is genuinely mindblowing.

<comment><USER4> It looks like it's pretty painful to add stuff to OpenSSL: [https://plus.google.com/+ElieBursztein/posts/c99W3fGsuKx](https://plus.google.com/+ElieBursztein/posts/c99W3fGsuKx)

</comment></comment></comment><comment><USER5> "Poly1305 also saves network bandwidth, since its output is only 16 bytes compared to HMAC-SHA1, which is 20 bytes. This represents a 16% reduction of the TLS network overhead incurred when using older ciphersuites such as RC4-SHA or AES-SHA."

Does that mean 25B->21B per-packet overhead? What percentage overhead are TLS headers?

<comment><USER6> > Poly1305 also saves network bandwidth, since its output is only 16 bytes > compared to HMAC-SHA1, which is 20 bytes

I'm puzzled why a shorter MAC would be considered a _good_ thing in a security application - because theoretically, a 20-byte MAC gives roughly 4 billion times the space of a 16-byte one. It's like shortening an encryption key - hasn't the trend been toward making them _longer_ and thus more resistant to attack?

<comment><USER2> Simpler security proof, higher guaranteed security with a shorter MAC.

<comment><USER7> could explain this in a longer way?

Considering the HMAC subset of MAC, the final value of the function should be of the same length of the base hash function.

So i.e. hmac-sha256 would be longer than hmac-sha1, but I don't understand why the latter would be simpler to check and of higher security.

Or do you mean that Poly1305 is all three (simpler, more secure, shorter mac) compared to the HMAC family?

</comment></comment></comment></comment><comment><USER8> Does anyone know why google doesn't offer a webserver?

I want SPDY, QUIC, and whatever cypher ordering magic is required to make my service faster on android. Unfortunately I probably won't be able to deploy this for at least a year because I have to wait on nginx and openSSL. By the time I could reasonably deploy this, shipping android phones will have the hardware to make this irrelevant.

Maybe google sees their in house webserver as a competitive advantage. Maybe their own internal infrastructure is too complicated to pull out a simple useful webserver.

<comment><USER7> they do offer the pagespeed proxy.

<comment><USER9> Also pagespeed nginx module.

</comment></comment></comment><comment><USER10> > Poly1305 also saves network bandwidth, since its output is only 16 bytes > compared to HMAC-SHA1, which is 20 bytes.

You could also just truncate HMAC-SHA1 to 16 bytes, right?

<comment><USER2> If you wanted a slower, less secure MAC, yes.

<comment><USER10> Is 16-byte Poly1305 more secure than 16-byte HMAC-SHA1? (Actually curious. Citation: I've done all the matasano crypto challenges, and all of the stripe µctf stuff :).)

<comment><USER2> I believe so? Isn't there a 2^80 attack on SHA1? I think the bigger issue is that the security proof for a polynomial MAC is much clearer (and the MAC itself is much faster).

<comment><USER6> On average a bruteforce attack will find a match halfway through the keyspace, so that would be 2^80 for SHA1... and only 2^64 for Poly1305 and anything else with a 128-bit width (that isn't broken in some other manner.)

<comment><USER11> Halfway through the tag space of a 160-bit tag is 2^159. You're looking for an exact match, not just a collision.

</comment></comment></comment></comment></comment></comment><comment><USER12> I'd love to offer ChaCha20 server-side, but I am currently using the default package of OpenSSL from Debian Wheezy which doesn't support the cipher. Are there already official OpenSSL builds available with ChaCha20 enabled, or does it still require running the patch from the Chromium team? If available, it'd be nice if someone could backport it.

</comment><comment><USER13> It seems no major distro builds their OpenSSL with the Salsa20+Poly1305 patches yet.</comment>


Job satisfaction level hits new low, especially among younger workers - <AUTHOR> http://www.msnbc.msn.com/id/17348695/ <comment><USER2> This may be attributed to how many new grads simply do not know exactly what they want to do. Many are eager just to get started on any career path to begin earning income. This is the type of grind many of us have learned to try to avoid.

<comment><USER3> nah- not unless the grads got put in the demographic of making around 13k a year. The majority of people in the dissatisfied pool are people who are barely making enough money to stay afloat and not enough money (and often not the right skills) to work their way out of the situation.

</comment></comment><comment><USER4> The non-link-jacked version: http://www.conference- board.org/utilities/pressDetail.cfm?press_ID=2582

I have a hypothesis on the bit about age group satisfaction. The demographic swell of the baby boomers are having difficulty advancing to their ambitions. The pre-boomers and the leading edge of the boomers snapped up the choice positions.</comment>