The myth of doing "that one thing" - <AUTHOR> http://leostartsup.com/2012/08/the-myth-of-doing-%E2%80%9Cthat-one-thing%E2%80%9D/ <comment><USER2> I wonder if this is a cultural issue. People have become used to the idea that taking one (usually small) action will have an outsized impact.

Don't like the political environment? Voting for the right presidential candidate will fix it.

Overweight and out of shape? This pill will do the trick.

Don't want to do the years of hard work to achieve excellence in your field? Just be at the right place at the right time and get "discovered" (or "funded").

<comment><USER3> There's a strong undercurrent of "silver bullet thinking" in the US, and it dovetails nicely with the relatively recently named "Lottery Effect":

[http://www.nytimes.com/roomfordebate/2011/03/21/rising- wealt...](http://www.nytimes.com/roomfordebate/2011/03/21/rising-wealth- inequality-should-we-care/the-lottery-mentality)

The two above things combined with the short-termist culture that is still going strong in this country help explain the appeal of the magic of "just one thing."

<comment><USER4> There's the rub. All due respect to Leo and the guys at Buffer. It's a wonderful product. And he's sharing his learning process. I'm not dogging on them. _However_ The email exchange with Noah Kagan is shows the mentality that so much of startup culture is stricken with: "how can I sell my soul to hit it big" not "educate me on building a sustainable business."

</comment></comment></comment><comment><USER5> To me personally this is at once trite and also a point desperately worth making to the wider public. There's something about the story-telling nature of humanity that makes "that one thing" such a pervasive myth. The written word just doesn't do well at encapsulating the daily grind of thousands of tiny decisions that shape a product to slowly converge on success.

While a precious few products may in fact be a tinder box just waiting for TechCrunch to blow them up, I don't think you stand much chance of success if that's the standard you set for yourself.

</comment><comment><USER6> I have mixed feelings about this. On the one hand, no one can argue with the idea that it takes a ton of work in many different areas to create a successful business. However, this doesn't mean that there's no such thing as a tipping point.

In my experience, many of my projects build on each other, and in many cases the true benefit of each project isn't clear until some critical mass of other projects have also been completed. For example, I spent the first few months of my business making what I thought was a pretty good product, but when I launched it, no one signed up. It turns out that my landing page sucked, I did a terrible job of onboarding the user, and the product didn't come with the right default settings. All of those things were important, but when I finished the last one, all of a sudden free trial users started turning into subscribers. That final project wasn't actually "that one thing" but it looked that way because it was the straw that broke the camels back.

So yes, there's probably not a "one thing" that will be responsible for taking you to the next level, but there will possibly be "one thing" that puts the finishing touch on a massive body of prior work. I think that's the dream that many of us use as motivation for pushing through the tough times at a startup.

<comment><USER7> This makes sense, but a lot of the time the "one thing" you are talking about is simply the very last required thing. If you had done things in a different order the "one thing" would be something else entirely. And if you had omitted one of the hundred other things, that daily grind and ton of work, then doing the "one thing" would mean nothing.

In short, I think you are completely right, but it seems the point is that you need to focus on achieving that "massive body of prior work".

</comment></comment><comment><USER8> Jim Collins talks about this in "Good to Great." He likens business success to a flywheel that takes a lot of effort to get moving but seems to almost spin by itself once in motion. You usually can't point to one particular decision that was "the" push that made it spin, just lots and lots of little things that worked in aggregate.

</comment><comment><USER9> It was April 2012. We just lost 3 large wholesale clients that were responsible for 80% of our revenue. Our online sales were dropping. We had reached 3k/wk in online sales at our peak but in the few months prior we steadily dropped down to $500/wk. We were falling apart. I was advocating for giving up on our shopify and focusing on more wholesale sales to retailers. My partner was convinced we should build a larger online audience.

He went on a few forums and started pitching our products. The next day we had 10x the sales we had the day before. We're hovering around 4-5.5k/week since then.

I have many anecdotes that all tell the same story: About 90-95% of the things we try don't work. The remaining 5-10% of our initiatives lead to huge boosts in sales.

A very well known counterexample to the article is the 37signals Highrise redesign. Changing the site design lead to a 103% increase in paid signups ([http://37signals.com/svn/posts/2991-behind-the-scenes-ab- tes...](http://37signals.com/svn/posts/2991-behind-the-scenes-ab-testing- part-3-final)).

Now I think we should be a bit more rigorous here. There are two parts to making money selling a product/service. There is customer acquisition and customer retention. These examples focus on customer acquisition. I think it would be much harder to keep customers 5x longer than it is to get 5x the customers to purchase your product.

</comment><comment><USER10> Great article. You should also check out Joel's posts about 'overnight success' which imho have a related message:

<http://joel.is/tagged/achieving-overnight-success>

The buffer guys do a great job to communicate what success means and what the many many 'one' steps in between look like. Much needed angle in a world that craves for easy sensations. Keep rocking!

</comment><comment><USER11> I can totally relate to the point, and know exactly how it feels. But I also feel like 'that one thing' is often a motivator and gives you something to focus on, it also helps bring the team together to focus on doing that "massive amount of work," by giving a clean and easily digestible direction for your efforts.

</comment><comment><USER12> It usually is just a few things that make a difference. The rest are "table stakes". They're required to succeed but they don't differentiate you from everyone else.

</comment><comment><USER13> Definitely agree with the comments here. One thing to add is I think some of this comes down to ex-ante versus ex-post thinking. Ex-ante, many things are required to make any substantial change. Ex-post, we can scrutinize and analyze and sometimes create a version of history that points to one as the key factor. As others have pointed out, sometimes this is simply a top of the stack situation (last piece of effort is most important but would be true for whatever is last) and sometimes it's a genuine catalytic change (the last thing really was the biggest). But since our decision-making about the future is fundamentally ex-ante, there usually is no silver bullet. Also ex-post analyses are often based upon human surveys / analysis, which is highly flawed. If you ask people, for example, why they love a certain product, they may respond with one feature and you might think that was the "that one thing" when in reality, they might love the overall experience, branding, support or something else entirely.

</comment><comment><USER14> People are always looking for a shortcut. There are no shortcuts. If you put the time in you might get lucky and get that breakthrough.

But people confuse that one thing with success. If I do X I will get the same result. But without putting in the time the breakthrough never comes.

</comment><comment><USER15> I'm not sure I agree with this. I've seen enough personally that I believe there _is_ such a thing as a tipping point. That doesn't mean wild success on the first try, and in fact many people never reach it, but it definitely exists. There's some combination of luck and trying enough different ideas that eventually you may "strike gold".

</comment><comment><USER4> When I was a musician we had a saying: "Playing and performing are like food and water. Writing is breathing." \- You play, you promote. You maintain, you sustain. \- You write, you build. You create, you grow. Buffer will succeed by building and improving, not maintaining and sustaining.</comment>


Ask HN: What's with the black band on top of the page? ANSWERED - <AUTHOR> There seems to be an extra td on top of the page, containing a fairly "empty" gif (https://news.ycombinator.com/s.gif). After a quick look with a random hex viewer, I can't see anything interesting in that gif. This doesn't seem to accomplish anything on the page, so, what gives?<p>Here is a screenshot: https://imgur.com/a/dY6czCs <comment><USER2> [https://news.ycombinator.com/item?id=22369857](https://news.ycombinator.com/item?id=22369857)

</comment><comment><USER3> I figure it has something to do with the top two stories atm:

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

</comment><comment><USER4> It's a mourning band.

<comment><AUTHOR> Oh, that makes sense. @danq, mind adding an alt attribute to the image?</comment></comment>


Could you please trust yourself? Seriously. - <AUTHOR> http://www.lewro.com/design/could-you-please-trust-yourself-seriously

<comment><USER2> I didn't read this article because the web design was so bad.

Native scrollbars. We have them. They're 25 years old. For the last decade or so, we've even had these handy scroll wheels that work with them. When you attempt to replace them with your cutesy home-rolled Javascript version and force me to navigate to a button and click it to scroll, you give me every incentive to ignore you.

See (e.g.) the classic _Quiz Designed to Give You Fitts_ :

<http://www.asktog.com/columns/022DesignedToGiveFitts.html>

<comment><AUTHOR> Thanks for your opinion. You are not the first one who is not a fan of the scrolling function. I understand that it is a risky implementation where some people love it and some hate it. I can only go this director on my personal site where I can test stuff but would not risk it on customer's site. Cheers Lewro</comment></comment>


Privacy not an absolute right, says GCHQ director - <AUTHOR> http://www.theguardian.com/uk-news/2014/nov/03/privacy-gchq-spying-robert-hannigan

<comment><USER2> He is right, one of them has to go.</comment>


Elon Musk has an idea for saving boys stranded in a Thailand cave - <AUTHOR> https://arstechnica.com/science/2018/07/elon-musk-has-an-idea-for-saving-boys-stranded-in-a-thailand-cave/ <comment><USER2> Doesn't SpaceX have some of their new suits they could lend to the rescue? Or do the suits not have integrated oxygen sources?

<comment><AUTHOR> Different problems. And the suits probably don't have integrated oxygen sources or CO2 removal and are not designed for EVAs

</comment></comment><comment><USER3> Quick - call the lawyers and incorporate the __caving __company, brand a few generic flamethrowers and sell to the HN sycophants, and shit all over the free press for noticing the truth about financials and product quality

</comment><comment><USER4> duplicate: [https://news.ycombinator.com/item?id=17470636](https://news.ycombinator.com/item?id=17470636)

</comment><comment><USER5> Oh god. Of course he does.

Stay out of this Musk. There's lives at stake here and nobody needs your brainworm riddled opinions.

<comment><USER6> He does other stuff other than express opinions too. If I remember correctly he is leading privatized space exploration, bringing about the electric car revolution, and tunnel boring.

So idk, maybe someone who is focusing on quickly building tunnels might be helpful.

> Elon Musk is sending a team of engineers to Thailand to see if they can help > authorities racing to save a dozen boys and their coach who are stranded in > a cave there.

<comment><USER5> I suppose you didn't read the article, but if you did, his idea really has nothing to do with building a tunnel.

<comment><USER6> Kinda, an air tunnel.

But really it seems like Musk is trying to help, you're the one who's just offering an opinion.

<comment><USER5> Oh, I have an idea. It involves crazy glue, 4 pallets of waffle cones, and a pitchfork, but nobody writes an article when I spew nonsense.

<comment><USER6> You're right, we should not trust the advice of random strangers on the internet who spew nonsense.

Let me know when your team of engineers gets to Thailand too.</comment></comment></comment></comment></comment></comment>


Laravel Spark 1.0 is now available - <AUTHOR> https://spark.laravel.com/ <comment><USER2> What's the state of Laravel right now? Is it gaining adoption?

Pre 2015, I rolled my own PHP framework. I eventually decided I should take the time to learn a modern framework and narrowed my choices down to Django & Laravel. Ended up going with Django; just curious to see what I missed out on.

<comment><USER3> If all the PHP nay-sayers used Laravel, the public opinion toward PHP would shift dramatically to be more favorable. It's a modern framework that makes using PHP a true joy, as opposed to the wrangling we had with PHP pre-5.4.

It pretty much ships with everything you need to build an app: scaffolding, migrations, authentication, middleware, templating, caching. Most of getting up and running is really configuring a bunch of settings that takes virtually no time at all.

I'm a huge Laravel fan. They also have a slimmed down version called Lumen, which is pretty much specifically for APIs. Lumen stays up-to-date with Laravel, so you get the benefits of both worlds there.

<comment><USER4> For some reason, PHP is not just a language, _it 's a spirit of writing bad software_.

A few weeks back I needed to port some crypto from Laravel to Go. I did not have too much trouble – apart the strange usage of Rijndael-256 that Laravel had until one version or two ago. When I looked at the way they were using keys to encrypt data, I realized that they were directly using "application private key". Is that bad? It shouldn't, but Laravel makes sure all the keys it generates are ASCII, for copy/pasting convenience. What happens if you're using a 256-bit key that can be represented with ASCII? The key space is 10^20 times smaller (the entropy of a byte in the key goes from 256 to 62!). That's been a thing in the most "modern framework" in PHP for more than three years. I'm far from being a security professional, but spending one hour on one file was enough to find a basic security issue. Let's just say we're not writing code with Laravel anymore.

I must mention that Taylor Otwell (the author) was extremely fast for fixing the problem. He is probably among the best open source project maintainers I know, and desserves to live off this work on Laravel.

Here is the commit: [https://github.com/laravel/framework/commit/370ae34d41362c3a...](https://github.com/laravel/framework/commit/370ae34d41362c3adb61bc5304068fb68e626586)

</comment></comment></comment><comment><USER5> Link for the official site: [https://spark.laravel.com](https://spark.laravel.com)

Spark and Laravel are a super good combo to start an app with, I personally think php's ease of deployment (plus how cheap Laravel Forge is) blows rails out of the water.

<comment><USER6> Ok, we changed the URL to that from [http://learninglaravel.net/laravel- spark-10-is-now-available](http://learninglaravel.net/laravel-spark-10-is-now- available), which has less information.

</comment></comment><comment><USER7> Do laravel php projects "just work" like regular PHP might on inexpensive shared hosting? Or do you need a custom setup similar to all these js node / react projects seem to require?

<comment><USER3> You need to install Composer, the PHP package manager, and then install it, but there aren't a whole lot of OS dependencies there. You don't have to install node, then npm, then... ad nauseum. You just drop a composer binary on there, and then run composer install, and it installs the app dependencies.

I personally find it much less headache-inducing than NPM, but I think practically, they're about the same in terms of what they do.

<comment><USER8> What you described is literally the same process. No need to arbitrarily bash other programming languages or ecosystems.

PHP:

(1) Install PHP (2) Install Composer (3) Run 'composer install' to download dependencies

Node:

(1) Install Node.js (2) Install npm (3) Run 'npm install' to download dependencies

<comment><USER9> Well he did refer to most shared hosting which do usually come with php already installed, and you may not have sudo. installing composer is simply curling a phar file, or you could even bundle it into your repository if you want to, im really not sure what to tell you.

</comment></comment></comment></comment><comment><USER10> Has anyone seen in the documentation how they are handling pricing in the long term? I.e., if $299 is for the lifetime of 1.0 releases/upgrades, or something else?

</comment><comment><USER11> This looks pretty great! Are there similar offerings other languages, or as open-source software?

</comment><comment><USER12> Why not go the whole hog (or Elephant) and call it Hadoop?

<comment><USER3> because this isn't Apache Spark?

</comment></comment><comment><AUTHOR> really like this. Always thought of building a similar app but here it is already. For $99, it is a steal :)</comment>


Martin Kleppe: 1024+ Seconds of JS Wizardry - <AUTHOR> https://www.youtube.com/watch?v=RTxtiLp1C8Y

<comment><AUTHOR> The part about [http://aem1k.com/world/](http://aem1k.com/world/) begins approximately 18 minutes in.</comment>


Ask HN: Confront someone who passes off my work as their own on a blog? - <AUTHOR>

A colleague at another firm has posted content to their blog that is pretty clearly derived from a talk I gave in 2012. (The order of points, the language, and the examples are all very similar.)
Their post has about 700 views in two months and will probably continue to generate 100 views or so a month.
I know the person in charge and I suspect she doesn't actually realize this happened. My guess is that someone at their organization saw my talk, made notes, and then with time, the source was forgotten and it became their own.
When I write, I'm very careful about giving credit where credit is due. But I can't decide if this is a case where I should point out the similarities? <comment><USER2> Shoot an email asking politely to be credited--they either will or won't.

Either way, push it out of your mind and keep making awesome things people want to steal. :)

<comment><AUTHOR> You totally made my day with that comment. It never occurred to me to think of it that way! Thanks!</comment></comment>


Extensional Higher Order Prolog - <AUTHOR> https://billwadge.wordpress.com/2016/01/18/extensional-higher-order-prolog/ <comment><USER2> I've just published a draft paper on an entirely different approach to the same problem: instead of creating a higher-order Prolog, we've discovered a functional (and so higher-order) analogue of Datalog, a more limited language ([http://www.rntz.net/files/datafun.pdf](http://www.rntz.net/files/datafun.pdf), on github at [https://www.github.com/rntz/datafun](https://www.github.com/rntz/datafun))

This idea of a higher-order Prolog is very interesting! But it's not clear to me how it can be truly extensional without further limiting the language. For there is another reason why Prolog is not extensional: non-termination. As a simple example, consider this program:

        q(X) :- q(X).
        q(adam).
        p(adam).

`p` and `q` are logically equivalent (the line `q(X) :- q(X).` is a no-op; _of course_ a predicate implies itself). But in Prolog, `q` is a useless, nonterminating predicate. This problem is not a simple quirk: provability in even _first-order_ Horn logic is undecidable if you augment it with compound terms & unification (as Prolog does), so there _is_ no general algorithm for deciding Prolog queries.

It _looks_ like extensional higher-order prolog should have the same problem. The article doesn't address it, so I'll go read the papers.

EDIT: The relevant research papers on Higher-Order Prolog, if anybody is interested: [http://arxiv.org/abs/1106.3457](http://arxiv.org/abs/1106.3457) "Extensional Higher-Order Logic Programming"; [http://arxiv.org/abs/1405.3792](http://arxiv.org/abs/1405.3792) in which they extend it to negation; [https://github.com/acharal/hopes](https://github.com/acharal/hopes) the implementation's github repo

<comment><USER3> I'm interested, thanks for posting! I have no background in logic programming, but I have a problem at work that seems to be screaming for it. I tried Prolog but ran into some limitations. I couldn't tell whether they were with the language or whether I was just holding it wrong.

</comment></comment><comment><USER4> Good to see Prolog getting a mention!</comment>


Ask HN: Is stereoscopic photography possible with telescopes? - <AUTHOR>

Noob astronomy question: Imagine two telescopes photographing the same region of the sky (much like the human eyes). Can this help us perceive depth (distance from the Earth) ? <comment><USER2> Yes, that idea does allow for measurement of distances to astronomical objects. Sadly, to get decent measurements for things like stars, the two telescopes need to be _very_ far apart -- farther apart than the diameter of the earth. But we can be clever about it; if we take a picture of a star and then take another one 6 months later, then the distance between the two positions we took pictures from is the diameter of the earth's orbit around the sun -- around 300 million km (while the diameter of the earth is less than 13 thousand km).

That allows measurement of the distance to nearby stars. For most stars, though, even 300 million km isn't far enough.

From Wikipedia[1]:

> Astronomers use the principle of parallax to measure distances to the closer > stars. Here, the term "parallax" is the semi-angle of inclination between > two sight-lines to the star, as observed when the Earth is on opposite sides > of the sun in its orbit. These distances form the lowest rung of what is > called "the cosmic distance ladder", the first in a succession of methods by > which astronomers determine the distances to celestial objects, serving as a > basis for other distance measurements in astronomy forming the higher rungs > of the ladder.

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

</comment><comment><USER3> Here are some stereo pairs of Mars, Jupiter, & Saturn,

[http://www.sunflower- astronomy.com/index.html?http://www.sun...](http://www.sunflower- astronomy.com/index.html?http://www.sunflower- astronomy.com/Stereo_Images.html)

And the moon,

[http://lcni.uoregon.edu/~dow/Marks_photos/stereo_pairs/Apoll...](http://lcni.uoregon.edu/~dow/Marks_photos/stereo_pairs/Apollo_moon/Stereo_pairs_of_moon.html)

Here are some artistic (not real) stereo pairs of the Heart nebula,

[http://astroanarchy.blogspot.com/2010/04/ic-1805-as- stereo-p...](http://astroanarchy.blogspot.com/2010/04/ic-1805-as-stereo- pair.html)

Some explanation of the artistic method,

[http://astroanarchy.blogspot.com/2011/02/sh2-132-as- stereo-p...](http://astroanarchy.blogspot.com/2011/02/sh2-132-as-stereo- pair-3d.html)

</comment><comment><USER4> One of the empirical phenomena that reasonably supported a geocentric cosmology was the absence of observable parallax in regard to the stars. It just points out that interstellar distances are vast beyond ordinary human experience...which is to suggest the concept of distance becomes a mathematical abstraction and untethered from the way we think about distances in our daily lives.</comment>


Do most programmers honestly enjoy programming? - <AUTHOR> http://www.quora.com/Do-most-programmers-honestly-enjoy-writing-code

<comment><USER2> I enjoy the time I spend doing actual programming. Though I am a programmer that is not what I spend most of my time doing.

</comment><comment><USER3> Depends on the client!</comment>


Ask HN: Tips for working remotely? - <AUTHOR> <comment><USER2> I've done this for many years. This is what works for me:

\- Turn off interruptions in the AM. _Focus, focus, focus._ You have the most mental energy in AM and it is gradually depleted as the day goes by.

\- Keep a log so you know what you worked on. Doesn't have to be wordy, just enough so you can tell what you did.

\- Put something in the log at end of day so you know what the next thing you are working on is. Example: "Working on error in timestamp()." You don't want to expend energy trying to remember what you were working on, you can just jump right in.

</comment><comment><USER3> I'm going to take this as tips for working effectively with others remotely because that's the main problem that needs overcome. So...

Buys real over/on ear headset. No one wants to hear your bad audio through some AirPods.

Use zoom and get a (silly and cheap) team domain and everyone forward their name as a sub domain to their slack meeting room so you can get in a video chat with zero friction.

If one person is remote then all team activities are remote even if everyone else is in the office (remote first team). That means everyone needs a real headset at their desk.

</comment><comment><USER4> Tools of the trade:

\- Logitech BRIO

\- Spend a lot of money on a good monitor (whatever you think is the limit, double it)

\- Spend even more money on an awesome desk chair (Herman Miller Aereon for me)

\- If you don't already have one, get a big big desk. Simple, no drawers, but one that you can have a little bit of clutter without it becoming impossible to work on. A simple $50 ikea desk will do.

\- Decent over-ear headphones (I'm rocking some Audio Technica whatever whatevers)

Audio recording is good through the Brio, visual quality is great. Decent over-ears means you aren't disturbing people around you (if they exist). Overall I would recommend developing the mental discipline to work out of your own place. Its just so much better than awkwardly sitting at some random coffee shop with some horrible little seat that hurts after 45 minutes.

Social/behavior:

\- Always be online/available during your hours of work, i.e. don't fuck around. Seriously. Don't necessarily always be online on chat things (Slack, Rocket.Chat, whatever...) but actually be doing work most of the time when you're either working from home/working remotely.

\- Early on, develop a reputation for being very quick at 1) building new stuff, 2) debugging problems, and 3) iterating on existing code. Usually people have some kind of niche, and unusually people are good at all 3. Be that unusual person that is good at everything, if possible.

\- Raise concerns early on, don't feel shy because you're behind a monitor. This will earn you respect of your higher-ups that kind of expect to be informed of whats going on.

Just for fun: Here's 2 pics that show my setup. Works for me, might not work for you: [https://imgur.com/a/vD8Toge](https://imgur.com/a/vD8Toge)

Anyways have fun & get work done! :)

</comment><comment><USER5> Work outside the house. Go to coffee shops or co-working spaces. Shower daily. Self-care slips easily when you don't have to leave the house every day.</comment>


Ask HN: Best current model routers for OpenWRT, DD-WRT, Tomato, etc.? - <AUTHOR> I'm in the process of choosing new device(s) for a small wireless network in multi-story building and prefer having devices supporting some open source router software/firmware (OpenWRT, DD-WRT, Tomato). The amount of models available is enormous, but as the last Ask HN[0] (from 3 years ago) on this topic was a good starting point I think some good up-to-date advice can come up now. malandrew the original poster told it well so:<p>>  If one were to decide to buy a brand new model router to install open source router software on, where would you go to find out the best current models and be able to compare their features? > While it would be nice to know the best models as of today, I think it's more interesting to be taught how to fish instead of being given a fish. This also makes it easier for me (and anyone else) to pass this advice onto the next person.<p>[0] - https://news.ycombinator.com/item?id=6828699 <comment><USER3> The first thing you need to know is that the OpenWRT project is basically dead and that 95+% of the developers went over to the LEDE Project. However, LEDE has not yet published a stable release yet. You can get nightly builds that are in pretty good shape though.

I would highly recommend an ipq806x-based system, if you can afford it. Almost always matched with qca9880 radios. These are modern 802.11ac wave2 systems.

ipq806x is a Qualcomm-Atheros SoC. Go to wikidevi for specifications on the chips and all of the devices I mention below.

Check camelcamelcamel for recent pricing info if buying in the USA.

The list would be:

Linksys EA8500

TP-Link Archer C2600 (Not recommended due to TP-Link going anti-OSS. Modern versions require signed firmware and other DRM junk)

Trendnet TEW827DRU (Not yet accepted into LEDE, but could be any day now)

Netgear R7800 (Has a slightly faster CPU, but more expensive)

Netgear R7500v2 (Avoid the V1)

ZyXEL NBG6817 (Has the same slightly faster CPU as the R7800, but it's storage flash is goofy and I'm not 100% sure it's fully working. Ask the lede-dev mailing list first.)

The top issue that all of these devices have is that the 802.11 radio LEDs don't work yet because the driver is missing support for it. However, if you can live without blinking lights, these models are the way to go. This feature will almost certainly get fixed in the future.

I would tell you to go with the Linksys EA8500 if price/value is your concern. Otherwise the Netgear R7800 has a very active dev and probably has the best support. The ZyXEL NBG6817 looks really interesting to me, but I don't have one yet.

If $140-$200 USD is too much for you, look to some older 802.11ac devices. Like I said above, avoid TP-Link as they have started locking down their devices by removing serial ports and requiring signed firmware/DRM etc.

Your list here in comments is pretty good, though I'd avoid the TP-Link unless you can get one that is older (before TP-Link became anti-OSS.)

Good luck

<comment><USER4> As an OpenWRT user it's a little worrying to find that many of the developers have left the project. Do you have any more info on why this happened?

<comment><AUTHOR> There was a pretty detailed discussion on HN on the split [0] I personally hope that the situation won't become as [1].

[0] - [https://news.ycombinator.com/item?id=11624374](https://news.ycombinator.com/item?id=11624374) [1] - [https://xkcd.com/927/](https://xkcd.com/927/)

<comment><USER4> Sure, having competing standards isn't always a good thing but we're not talking about a standard here. It's a new router firmware distribution and I think having more of them is a good thing as it gives people more choice.

The major problem that I do see here is that LEDE has been forked from OpenWRT, but has nowhere near the level of device support that OpenWRT has. I have a TP-Link WDR4300 which I bought specifically because it was one of the routers which are highly compatible with OpenWRT. However, LEDE doesn't list this router amongst its supported devices (though there are newer WDRXXXX devices listed).

<comment><USER5> > However, LEDE doesn't list this router amongst its supported devices (though > there are newer WDRXXXX devices listed).

What list are you looking at?

LEDE does builds for the WDR4300, and given that it's an ath9k router, it is and will continue to be very well supported. The only caveat is that I don't know whether they've added the necessary signature to allow the firmware to be accepted as a valid upgrade by recent TP-Link stock firmware, but once any third-party firmware is installed, there's definitely no barrier to upgrading to LEDE.

<comment><USER4> I was looking at this page: [https://lede- project.org/toh/views/toh_available_864](https://lede- project.org/toh/views/toh_available_864)

But I see now that my device is listed under the "non-ideal" table of hardware page.

</comment></comment></comment></comment></comment></comment><comment><USER6> I have the Asus RT-AC68U/TM-AC1900. I bought it from T-Mobile for $60 and flashed it to stock and then put Asuswrt-Merlin on it (but you can use Tomato or DD-WRT). It does take a little work to flash it to stock (like Telnet'ing into the router), but it wasn't bad and for $60 I ended up with a wonderful router. There are guides online for flashing it back to stock.

If you're looking for information, I suggest SmallNetBuilder. They have very thorough reviews: [http://www.smallnetbuilder.com/tools/rankers/router/view](http://www.smallnetbuilder.com/tools/rankers/router/view). It looks like the RT-AC68U is their #1 pick for AC1900 router now. It used to be their #2 pick under their previous testing methodology (after the R7000 Nighthawk from Netgear). That's slipped to #3 under the new testing and the Asus has taken the top slot.

Asuswrt-Merlin isn't such a radical departure from stock, but it has some nice features and allows me to do things like edit the etc/hosts to block certain things.

The Asus RT-AC68U is probably one of the top 2 AC1900 routers out there and T-Mobile is selling it for a song (even if you're not a T-Mobile customer). It's a little work to re-flash it so read a guide and see if you're comfortable with that. Or you could buy a stock RT-AC68U and get SmallNetBuilders #1 AC1900 router overall, for 2.4GHz avg throughput, 2.4GHz max throughput, 2.4GHz range, 5GHz avg throughput, and 5GHz range.

<comment><USER7> I'll third the Asus RT series.

I just replace my FIOS router with an ASUS RT-AC66U running AsusWRT-Merlin (I understand the stock firmware is based on Tomato). It is very fast, stable, has great coverage and is extremely configurable/hackable. I think I paid $75 for it from Amazon Warehouse Deals.

<comment><USER5> > extremely configurable/hackable.

Except for the closed-source WiFi drivers, which also limit the choice of kernel versions.

</comment></comment></comment><comment><USER8> I know others have recommended this already, but I would also say that your best bet is to buy some Ubiquiti hardware. An EdgeRouter X + UniFI Pro dual- band AP is on the order of $200 from Amazon and has way, way better functionality than SOHO hardware of same price point, with the principal issue that it is enterprise hardware, and is very much not point-and-click to set up. I think the tradeoff in functionality and build quality is worth it, though.

I recently replaced my PC router running pfSense with an EdgeRouter X - <USER2> ~$50 the power savings alone will probably pay for it in less than a year, and the only thing I can't do with it that I could do with pfSense is create a standalone OpenVPN endpoint - so I'm moving that functionality to a server that was running anyway.

<comment><USER9> I can second this. I recently upgraded my home network to an EdgeRouter PoE + Netgear R7000 (flashed to DD-WRT) and wish I would've gone with Ubiquiti across the board. That side of things was much, much easier to get configured how I wanted it than DD-WRT on the Netgear. The VLAN tagging in DD-WRT for that hardware only partially worked via the GUI configuration, and I ended up having to go in via the CLI to finish it off.

<comment><USER10> Pretty far out of my depth here, but I did the same w/ 3 Long Range Dual Band Pro APs and I'm quite pleased... so thirded.

</comment></comment></comment><comment><USER11> I use two devices to handle usual definition of the router:

      1. Mini PC[1] running as a router (pfSense);
      2. eero to handle the wifi.

Why? I've tried many times to use dd-wrt, openwrt and tomato firmwares on my routers, but every time I failed miserably: it's either something stops working, or I need to schedule routers reboots and so. So I gave up. Since that time, mini pc [1] is the third system which routes my traffic, acts as VPN gateway, proxy server and so on on my home network and I've never been happier. With eero I've got even better coverage comparing to the previous Airport Express.

[1]: [https://www.aliexpress.com/item/Latest-windows-8-mini-pc- min...](https://www.aliexpress.com/item/Latest-windows-8-mini-pc-mini-fanless- desktop-pc-with-Dual-Intel-82574L-Gigabit-Nics-Walk/32255088559.html)

<comment><USER12> I found [https://www.amazon.com/Qotom-Q190G4-Celeron-Processor- Barebo...](https://www.amazon.com/Qotom-Q190G4-Celeron-Processor- Barebone/dp/B019Z8T9J0) a fantastic device for the price. There's a non-Atom Celeron, a Broadwell chip and four Intel LAN ports in a <$150 package without moving parts. My home is small so this also handles the wifi for me.

<comment><USER13> How do you make it do WiFi? USB WiFi adapter?

<comment><USER12> It has two mini PCIe slots, one for mSATA, one for wifi. It has the usual antenna holes as well. You need an mPCIe card (Intel 7260HMW is popular) and two U.FL to RP-SMA connectors and be done. But yes, you could use USB as well. They sell kits as well but they use inferior cards IMO.

<comment><USER13> Thanks! I have an ASRock Beebox which has mSATA WiFi card installed by default, but I've never trusted the signal due to its lack of external antennas. I was wondering how well it performs in your setup :)

</comment></comment></comment></comment></comment><comment><AUTHOR> For now, by my research the best candidates are

\- TP-Link Archer C7 (supported by both DD-WRT and OpenWRT, and recommended by the latter)

\- Linksys WRT1200AC/1900AC (supported by both DD-WRT and OpenWRT)

\- Ubiquiti UAP-AC-LITE/LR/PRO (OpenWRT, diffrent models depending how much speed/range do you need. No routing here, just access points.)

For any models discussed, please keep in mind that depending on the hardware version, the firmware support is different.

<comment><USER14> I have a TP-Link Archer C7, and while it has generally been pretty good, the last six months or so it will simply drop all connectivity and require a reboot. Pretty frustrating (happens 2-3x/week) and has me looking for another replacement. This is with stock firmware though, so I would hope, but haven't tried, that alternative firmwares would fare better.

<comment><USER15> I've had the same issue happen, running Archer C7 running OpenWRT. But I'm not 100% sure it's actually the router or whether it's really a problem with my ISP. I haven't seen the issue in a couple of months now, yet I've made no changes to my setup.

I did have considerable issues getting both wifi interfaces to work well at the same time, but that's probably more due to my own incompetence more than anything. I did finally manage to make it work, much like how you'd wiggle antennae on an old tv back in the day and suddenly you got a signal.

</comment></comment></comment><comment><USER16> I highly recommend just building a Thin-ITX router. I have a post of how I built mine here:

[http://penguindreams.org/blog/building-a-thin-itx- router/](http://penguindreams.org/blog/building-a-thin-itx-router/)

I paid too much for parts. You can easily construct one of these for under $200. I'm sick of ARM and needing a different image per device.

AVOID the ClearFog and BPI-R1:

[http://penguindreams.org/blog/review-clearfog- pro/](http://penguindreams.org/blog/review-clearfog-pro/)

[http://penguindreams.org/blog/banana-pi-bpi-r1-fails-into- an...](http://penguindreams.org/blog/banana-pi-bpi-r1-fails-into-an-insecure- state/)

I cannot recommend either of them (although if I had to, the BPI-R1 is better than the ClearFog. Just don't expect it to be stable)

</comment><comment><USER17> I bought the Buffalo N300 not long ago:

[https://www.amazon.com/gp/product/B00IB8IVDQ/ref=oh_aui_deta...](https://www.amazon.com/gp/product/B00IB8IVDQ/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1)

I've been extremely happy with this purchase, admittedly I'm a bit of a high- demand user (I host a number of minor services for myself and friends including TeamSpeak, minecraft, as well as operating two Xbox Ones) so I needed something with good port forwarding support and UPNP. Rock solid, straight DD-WRT interface with minor branding, shell access, and monitoring support. This router's been an absolute champ and I'd recommend it to anyone.

<comment><USER18> I'll second Buffalo. I have the N600 [0], and I'm pretty happy with it. I started with the built-in DD-WRT firmware, installed OpenWRT soon after, and recently moved to LEDE, without any issues. I don't really use many advanced features, but I find it's really stable. One really nice thing I appreciate is dnsmasq. It puts your DHCP entries on the local DNS, so you can access your machines by their hostnames via straight DNS, no WINS or Bonjour needed.

[0]: [https://www.amazon.com/Buffalo-AirStation-HighPower- Wireless...](https://www.amazon.com/Buffalo-AirStation-HighPower-Wireless- WZR-600DHP/dp/B0096239G0/ref=pd_bxgy_147_2?_encoding=UTF8&psc=1&refRID=5YSR8EG4NVKKF090D4KS)

</comment></comment><comment><USER19> I used to run a modified advanced tomato (advancedtomato.com) on a few Asus routers. But the build process is terrible and I got sick of maintaining it. Looked at openwrt and lede, but still a pain to maintain.

I recently decided on the ubiquiti edge router x ($49), ac-lr access point($90), and pihole($50) on a raspberry pi for DNS. The pi also runs DNS crypt. But now everything gets regular updates and the firewall config and stats on the edge router are great.

<comment><USER20> DNS crypt? The google came up with several possibilities.

<comment><USER21> Probably this one: [https://dnscrypt.org/](https://dnscrypt.org/)

</comment></comment></comment><comment><USER22> If all you need is a wireless network the UniFi AP-AC series is great. I don't have any reason to put OpenWRT on it.

</comment><comment><USER23> In the past two years, I've bought...

\- TP-Link Archer C7. This supports our office of ~30 ppl and has been bullet- proof since day 1.

\- TP-Link N600. Cheaper but still 5GHz. Also super stable, I use it as a wifi bridge daily.

\- I just bought a Netgear R6300v2 which will go in my home. Have not used it much yet but for the price it's an ARM core with a lot of Flash & RAM so I'm excited.

Caveats: I don't know if in practical terms new-ish TP-Links (later than Q2 '16) are harder to flash due to them supposedly cracking down on third-party firmware. At the time they were super easy, I just downloaded the latest from ftp://ftp.dd-wrt.com/betas/ and followed standard instructions.

Caveat #2: For Broadcom/ARM builds you probably _don 't_ want to use builds from ftp.dd-wrt. Intead you want KONG's build, see: [http://www.desipro.de/ddwrt-ren/K3-AC- Arm/Readme](http://www.desipro.de/ddwrt-ren/K3-AC-Arm/Readme) and search the forums for latest KONG builds.

Finally, reading Amazon reviews for any supported model helps as well, you'll find a few ppl who relate their experience putting ddwrt on it.

EDIT: if your budget is $100+ I've also read good things about the Netgear R6400 and ASUS AC66 and AC68 but don't have any direct experience there.

<comment><USER23> Heads up! If you're quick, the TMo-branded ASUS AC68 is on sale for $60 after coupon WIFI40. [http://www.t-mobile.com/accessories/t-mobile-wi-fi- cellspot-...](http://www.t-mobile.com/accessories/t-mobile-wi-fi-cellspot- router.html)

</comment></comment><comment><USER24> This is not quite what you ask for and a little more expensive that some options, but I use a PC Engines APU2 running Alpine as my router+wifi access. Great little machine that is much more functional than typical home router hardware, and it boots using coreboot. A good option if you like setting up everything by hand.

More about APU2 at [http://www.pcengines.ch/apu2b4.htm](http://www.pcengines.ch/apu2b4.htm)

<comment><AUTHOR> Thanks for the option - are you using an Wi-Fi card on PCI, or you have access point connected by the LAN ports?

If it is the first option - there are two recommended Wi-Fi cards - which one you are using and how many client devices does it manage?

<comment><USER24> It has WLE200NX a/b/g/n PCIe with antennas (all from PC Engines), plus an Alfa g/n 2000mW adaptor at the end of a long USB cable, positioned for better reception in another building ~150 feet away (n devices are mostly fine without it but especially old b/g devices had a hard time). Before that, wifi had been managed by an RT-N66U, and a repeater had been required to reach the other building. For my setup the APU2 actually replaced 3 devices which had previously been required: Erlite-3 router, RT-N66U, plus repeater. And more to the point, replaced 3 key network infrastructure devices, all running different commercial/closed software, with a single device running a security focused Linux distro and open source boot firmware.

As to load, it manages just a household's worth of machines, maybe ~10 wireless clients and ~10 more devices on the LAN side. The load on the machine is effectively zero. I would personally be confident building such a setup for even 100 clients. The 2 PCI + 2 USB3 offers many expansion options and the SoC itself is tens of times faster than most home routers.

</comment></comment></comment><comment><USER25> A router has nothing to do with providing WiFi. You should have a separate router and WAP.

For the router, any fanless mini-PC with two ethernet ports. Run OpenBSD or pfSense.

<comment><USER26> I wonder, are there simple powerful just AP's comparable to the already mentioned routers? Just with less features...

<comment><USER27> I had the Asus AC68U, which was the best rated consumer router on smallnetbuilders, in terms of wifi range and speed. I just replaced it with a Ubiquiti AC-PRO access point which is much cheaper than the Asus. The Ubiquiti is maginally better in my informal testing with the two in the same location. After ceiling-mounting the Ubiquti in a more central location, it blows the asus out of the water. It went from ~100 MBit -> 500+ on the old "dead spot" desktop, the raspberry pi on that desk went from 22MBit to 72MBit. The rest of the house has better coverage than before.

For a router, I use openbsd and this guide: [https://news.ycombinator.com/item?id=13052673](https://news.ycombinator.com/item?id=13052673)

The router is an AMD that runs almost any unix, so it is more or less immune to obsolescence due to lack of software updates (Linux and *BSD all have to abandon headless x86-64...)

Total cost was ~$300. The router was $200 of that and should last until my home internet connection is ~1GBit (OpenBSD probably can't NAT quite that quickly on that hardware--haven't measured it).

[edit: fixed asus model number]

</comment></comment></comment><comment><USER28> As long as you can do without 802.11ac, make sure you get something supported by the ath9k driver, which IIRC is the only driver that doesn't need a firmware blob. So all the people working on bufferbloat etc. are using that driver for their tests, so you'll get the improvements first.

I have a TP-Link TL-WDR3600 v1 running OpenWRT. It was cheap, and works fine.

</comment><comment><USER29> Direct from real world experience, a few points of architectural guidance.

1\. Use WiFi routers for WiFi.

Avoid firewalling, NAT, authentication protocols, the strongest levels of encryption, or other packet changes/control on the WiFi Router.

Resources are always constrained. Mentioned processes consume resources and the load only appears under real world conditions that you did not anticipate or could not replicate in test.

2\. Distribute (as much as possible). A little work/cost up front will save you down the line.

A lot of WiFi routers support multiple radios (IE 2 radios). That gives you three points of failure for every router - one for each radio, and one for the router. Take one dual band router down and everyone in the coverage area loses connectivity in both bands.

Separating these will provide improved redundancy, throughput, offloading, and etc.

</comment><comment><USER30> What fanless mini PC should I use to run a VPN gateway at line speed? I see a lot of random boxes reccommended on aliexpress, but which one should I buy? Should I just get whatever one, as long as it has the right AES instructions? Or are some of them awful?

</comment><comment><USER31> mikrotik routerboard with a ubiquiti wap. I've never been happier.

<comment><USER32> Have you tried the Mikrotik WAPs?

I'm just about to order a Mikrotik hAP AC Lite.

[https://routerboard.com/RB952Ui-5ac2nD](https://routerboard.com/RB952Ui-5ac2nD)

It's for a one-floor collective house in Latvia, so it's kind of nice to get an AP from a Latvian company. :)

<comment><USER33> I just ordered the hAP AC non lite. I have a gigabit internet connection so I couldn't deal with the 100mbit ports. I'll get that and an RB3011uias-rm tomorrow! Got that because of some of the traffic shaping I'm planning on doing will need routerOS 5 and more processing power. I'm in the US and a huge fan of Mikrotik stuff, they don't get the exposure they deserve on threads like this.

They also have a new cheaper wAP ac which has a single gigabit port and work outdoors!

<comment><USER32> We just got some 100 Mbit fiber to the house and we don't do a ton of heavy file sharing so it'll be fine for us.

A stone's throw from the house is a field where we plan to have some activity in the spring and summer, so I'm thinking we could then get an additional outdoor wAP.

Yeah, finding out about Mikrotik at all took a fair bit of googling and researching but they seem cool!

Latvia has a bit of an electronical engineering tradition, especially in radio, as I understand...

</comment></comment></comment></comment><comment><USER34> Very interesting question I've asked myself a year ago. I ended up buying an old Netgear WNDR3800 for $15, and put OpenWRT on it. And it works great! It has enough ROM to install most of the services you would probably need need (ssh, iptables, smb, shadowsocks, dnsmasq, time machine, dyndns, are running altogether perfectly well) and enough RAM as well. OpenWRT itself isn't perfect, and I had to setup an package building environment on my machine to install some packages (typically shadowsocks) on the latest stable build (currently 15.05.1). But it works. And it works great. Speed is good, and I don't see anything I would have to complain about that disturb my needs/usage. I like the modularity and I love having a real Linux I can ssh to as router.

I've been quite interested to read about the fact developers from OpenWRT are moving to LEDE. Maybe it could be worth it to wait - as I said, OpenWRT isn't perfect and I'm sure a lot of improvements can be done. I haven't tried LEDE though. But I think, for a small office/home network, just getting an (reasonably)old/cheap yet powerful, compatible hardware and put OpenWRT on it is quite a good solution at the moment.

</comment><comment><USER35> I've used OpenWRT in different incarnations over the years, and at this point my suggestion is to forget about OpenWRT and buy some Unifi hardware from Ubiquiti. You get almost the same amount of control from Ubiquiti's pro line, plus the hardware is really solid and it all Just Works.

Now that the enterprise-level Ubiquiti stuff is so insanely cheap, there's basically no reason IMO to fool around with open-source router projects.

</comment><comment><USER36> Among the open source router options, what's the best for multi-WAN and flexible QoS?

I was looking at switching from ASUS on Merlin to Tomato for better QoS and to try out multi-WAN that was added in shibby about a year ago. I really want the internet to be reliable and fail over to a 2nd connection and then back fairly seamlessly.

Am I better off using pfSense (or something else) vs trying one of these integrated router/wireless firmwares?

Years ago I started looking for multi-WAN and got the very disappointing Linksys / Cisco RV042. It worked, but the interface was crap and it lacked a lot of the features that even consumer routers had. For an office of up to 50 people (and 2x devices) we've been using an ASUS RT-AC66R on Merlin and it's worked pretty well in that it's rock solid stable for many months at a time, has a bit of features - now including nice graphs for per-host bandwidth monitoring, and basic QoS and multi-WAN. The biggest issue is that QoS options are limited and it's hard to know if it's even working properly. The multi-WAN auto failover seems buggy and that seems like an area that Merlin hasn't touched.

</comment><comment><USER37> I recommend buying a simple Access Point (AP) but with enterprisy components, like xclaim xi-3, and treat it as a stupid radio device while running layer 3 services with DHCP, firewall, etc on a separate device (or a vm) with pfSense. This way if you have problems with radio signal, you can just replace or buy a different brand AP without changing anything on your network stack.

</comment><comment><USER38> Pipe dream: take over production of AirPort Extreme from Apple, release the hardware specifications to the public, and make it easy for users to install their own kernels, e.g., NetBSD.

Reality: as someone else said already, PC Engines or Soekris are the best you can do. They make the hardware and let users make the software. These companies appear to have some longevity. Easy to run user-compiled kernels of choice.

Ubiquiti is not an option if you want to compile your own kernels. The drivers are proprietary. They make the hardware _and the software_. Users assumed to be incapable? Apparently they cannot survive selling hardware alone. Longevity of this company is uncertain. Humble opinion only.

</comment><comment><USER39> I'm currently using a Ubiquiti Edgerouter X (previously an ERLite) for routing/NAT and a UAP-AC-LR for WiFi (along with an OnHub in bridge mode, for AB testing).

Previously, I used a UAP-LR reflashed with "normal" OpenWRT as I hated their controller/config software, but now there's Android and iOS apps for basic AP configuration.

EdgeOS (a Vyatta fork) isn't as user friendly as other "consumer" routers, but every tech friend who owns one has fallen in love with the price/performance and feature set.

</comment><comment><USER40> I'm using Nexx WT3020 [https://wiki.openwrt.org/toh/nexx/wt3020](https://wiki.openwrt.org/toh/nexx/wt3020) for my easy VPN project, but I've got the GL-iNet in mind also.

The idea of these is to connect them to your main router and have a "protected Wi-Fi network" that routes all traffic through VPN, while you can always go back to your normal Wi-Fi network to not use VPN.

If anyone's interested in talking about it, hit me up at firstname.lastname@example.com

</comment><comment><USER41> It's not exactly what OP asked for but some readers may find it worthwile:

The Raspberry Pi is well supported. If you happen to have one that's collecting dust and want to have a look at OpenWRT. Or to try things without fear of bricking the main router. I use a spare v1 for "traveling". Add a cheap Wifi dongle, an LTE dongle and one of those portable USB batteries and you have something to play with.

<comment><USER42> This isn't a good recommendation as anything other than a toy. The RPi doesn't have enough processing power to handle adequate speeds.

<comment><USER43> The Pi 2 should have enough power, the Pi 3 has more than enough.

What they don't have is good I/O. USB 2.0 only. And the 100mbps Ethernet is attached through it.

<comment><USER44> YMMV, but 100mbps is not enough speed for me. That rules out the Pi.

</comment></comment></comment></comment><comment><USER45> I bought a netgear NightHawk R7000 (dual core 1GHz) this year and it is great. Despite it being connected by a wire through my ISP provided router, the wifi bandwidth is about 40% better. DD-WRT installation was easy and is solid.

</comment><comment><USER46> Carambola 1 and 2 from 8devices[1] worked for me.

[1] [http://www.8devices.com/products/carambola](http://www.8devices.com/products/carambola)

</comment><comment> awinter-py Are there any efforts to test the long-term stability of the open router distros on specific hardware? I'd give money to a legit 'OSS router lab'.

</comment><comment><USER47> Does anyone want to share their experience / recommendation for a router with 4G / LTE SIM card slot?

I think I'm going to be needing one soon.

<comment><USER48> Not an open source one, but we use Cradlepoint routers for our remote offices that need to fail over to 4G / LTE. I quite like them.

</comment></comment><comment><USER49> It's an answer to a different question but Wirecutter did a nice roundup of all the new (proprietary) mesh WiFi systems

[http://thewirecutter.com/reviews/best-wi-fi-mesh- networking-...](http://thewirecutter.com/reviews/best-wi-fi-mesh-networking- kits/)

HN discussion [https://news.ycombinator.com/item?id=13102698](https://news.ycombinator.com/item?id=13102698)

If LEDE has a stable release that supports mesh networks it will be nice.

</comment><comment><USER50> tplink c7. period. you can go and read the detailed reviews on whirlpoolforums. the amount of ram available is 512mb which is huge.

if i were you, i would take an el cheapo j1900 intel box (from aliexpress) with quad lan ports and run pfsense on it. perhaps the best bang for buck configuration known to man!

</comment><comment><USER51> Taking into consideration the do-it-all directions the linux kernel is heading, I am more in favour of security conscious solutions, such as an APU board with BSD on it. For myself, this is still a concept. I've decided to learn more about bsd, security and networking before jumping into implementation and purchase of hardware.

Next year though! Next year!

</comment><comment><USER52> What do you guys think about raspberry Pi configured as a wap? Are we there yet??

<comment><USER53> Maxes out at 50-100 Mbps, depending on packet size. Wifi-USB-CPU-USB-Ethernet for every packet.

</comment></comment><comment><USER54> PC Engines APU2 (or Soekris net6501) + OpenBSD is the best router you can get.

</comment><comment><USER55> I think the Turris Omnia ([https://omnia.turris.cz/en/](https://omnia.turris.cz/en/)) looks fantastic, and plan on getting one when my budget allows.

On further (re)inspection though it seems you'd still be tied to your ISP's router/modem :(

Perhaps there's a good standalone/mPCI modem out there somewhere?

<comment><USER56> Turris Omnia has a SFP port, so if your ISP has that option, you can get rid of your modem.

<comment><USER55> Good call, but my line in is RJ25 so probably not gonna happen.

</comment></comment></comment><comment><USER57> I recommend a custom built PC and pfsense.

<comment><AUTHOR> pfSense for the routing part (and many other features not found in consumer Wi-fi routers) is very good, but is using it for Wi-Fi such a good idea ? The mantra in the pfSense forums is not to hassle with Wi-Fi, as it is a big pita.

Moreover, are there any AC cards supported? Based on the list provided by them[0] and info on the forums there aren't?

[0] - [https://docs.google.com/spreadsheets/d/11cF4UoNL68Me5ZC6qhjF...](https://docs.google.com/spreadsheets/d/11cF4UoNL68Me5ZC6qhjFPmzdW7mib56dBIAKz30Qpug/edit?hl=en#gid=0)

<comment><USER16> pfSense is FreeBSD based right? If so, then no, there is no AC support at all in most of the BSD operating systems out there. AC is a pretty big fundamental difference from bgn. There are devs working to support it, but anything out there is likely to be alpha/beta state right now.</comment></comment></comment>


On the Record: Andrew 'Boz' Bosworth, Facebook's Hardware Boss - <AUTHOR> https://www.bbc.com/news/technology-49765421 <comment><USER2> > We always are making sure that we're doing everything from a privacy, safety > and security standpoint that we can and those are our top priorities across > the entire company, more so now than ever before. And so those are our top > priorities - very focused on consumers...

\- 'Boz'

The silver lining of the misinformation era is that eventually, society will enforce severe consequences to those who casually lie to deceive people.

There isn't a soul in our galaxy who believes that Facebook always does everything they can from a privacy, safety, and security standpoint.

When people like 'Boz' make statements like this, I wonder if they are even capable of feeling shame or regret.

<comment><USER3> He never said "increase privacy, safety and security of consumers". You read that between the lines, but he never said it. As far as he's concerned, it is you that has a comprehension problem.

<comment><USER2> I quoted the transcript verbatim. Then restated the quote. But I didn't use the word "increase".

I stand by my statement. If I'm wrong, please correct me without misrepresenting it.

<comment><USER3> Without "increase", Boz's statement can also be parsed as "how much privacy, safety and security we can tradeoff for the largest amount of money".

<comment><USER2> If I understand you, you're saying that Boz didn't lie, he just said the truth in so subtle a way that other social predators pick up on it, but that seems nice to normal people.

That's a deception even worse than lying!

Lie or not, this style of communication demands stricter sanctions.

<comment><USER3> Exactly. I suspect this type of communication helps dealing with cognitive dissonance.

</comment></comment></comment></comment></comment></comment><comment><USER4> Was hoping for a way more interesting interview. This guy is the most singularly responsible person for being XML HTTP Request (AJAX) to web browsers. There could be such an interesting conversation how he came up with that approach and what he thinks of where it's come.</comment>


Matching and Replacing Whole Words in JavaScript - <AUTHOR> https://azio.dev/posts/matching-and-replacing-whole-words-in-javascript/ <comment><USER2> I wish they used regex literals.</comment>


Slanger: An open implementation of the Pusher protocol written in Ruby - <AUTHOR> https://github.com/stevegraham/slanger?hn

<comment><USER2> Holy crap I've been working on the exact same thing but for a different platform. This is incredible. We should talk!

<comment><AUTHOR> my email address is my hn username @mac.com

</comment></comment><comment><USER3> Soon as I get a working ruby 1.9 (hello Ubuntu Hardy!), I'll be giving this a good going over. Looks very handy.

<comment><USER4> Have you considered using RVM?

<http://beginrescueend.com/>

I use it to replicate Ubuntu 10.4 server setups on my Arch dev box. RVM does weird stuff with 'cd' so you may prefer rbenv:

<https://github.com/sstephenson/rbenv>

...though I have no experience of that.

</comment></comment><comment><USER5> Pretty epic. A pure demonstration of the power of open source. Will definitely have a play with this.</comment>


Ask HN: Is there any video from Mars? And if not why? - <AUTHOR> I wanna see more photos, more videos etc. <comment><USER2> I don't think there is any now.

Mars is far away. The bit rate possible is not that great:

[http://www.nbcnews.com/id/4269545/ns/technology_and_science-...](http://www.nbcnews.com/id/4269545/ns/technology_and_science- space/t/mars-rovers-get-bandwidth-boost/)

Opportunity at that time could upload 256 kbps to Earth. You could get highly compressed video over that kind of link, but it wouldn't be so appealing for scientific work because you'd be looking at compression artifacts as actual stuff.

In that case the rover was talking to a relay satellite which then talked to earth. With bigger antennas (on all sides) and more power (on the Mars side) we could get that bit rate up.

Even then there is the issue that video on Mars is going to be a few minutes delayed, so you are not going to have the special fun of being able to interact with things on video.

</comment><comment><USER3> There is, but Martians use a proprietary form of encryption that they haven't licensed to us puny Earthlings.

<comment><USER4> Speak for yourself - after spending a week snorting Oumuamua dust, I think I have it all figured out.

</comment></comment><comment><USER5> [https://www.youtube.com/watch?v=09hDM2NfluY](https://www.youtube.com/watch?v=09hDM2NfluY)

<comment><AUTHOR> That was awesome!

</comment></comment><comment><USER6> To clarify. Are you asking for videos that have been saved or do you mean realtime (ie, now)?</comment>


Amazon Makes Graviton2 AWS Instances Available - <AUTHOR> https://www.anandtech.com/show/15788/amazon-makes-graviton2-aws-instances-available <comment><AUTHOR> To quote from Anandtech:

Amazon is also making some very impressive benchmark comparisons against its fifth-generation instances, supporting Intel Xeon Platinum 8175 processor of up to 2.5GHz:

            All of these performance enhancements come together to give these new instances a significant performance benefit over the 5th generation (M5, C5, R5) of EC2 instances. Our initial benchmarks show the following per-vCPU performance improvements over the M5 instances:

           - SPECjvm® 2008: +43% (estimated)
           - SPEC CPU® 2017 integer: +44% (estimated)
           - SPEC CPU 2017 floating point: +24% (estimated)
           - HTTPS load balancing with Nginx: +24%
           - Memcached: +43% performance, at lower latency
           - X.264 video encoding: +26%
           - EDA simulation with Cadence Xcellium: +54%</comment>


Making Wrong Code Look Wrong (2005) - <AUTHOR> http://www.joelonsoftware.com/articles/Wrong.html

<comment><USER2> I like the ideas expressed but I'd rather see them enforced by the language than by coding convention. For example to simulate type checking you could prefix _typename onto each of your variable names. Then

i_int += j_filehandle

would stick out as wrong. But luckily many languages support type checking so we don't have to do it in those languages!

I wonder is it possible to avoid mixing safe and unsafe strings (for example) using some new language feature (or a new use of an old one)?

<comment><USER3> You can do that in Haskell easily.

      data UnsafeString = Unsafe String
      htmlencode :: String -> String
      sanitizeUnsafeStr :: UnsafeString -> String
      sanitizeUnsafeStr (Unsafe cs) = htmlencode cs

<comment><USER4> You can do it in any OO language easily as well. For instance, in Python:

      class UnsafeString:
        def __init__(self, str):
          self._str = str
          self._sanitized = None
        def __str__(self):
          return self.sanitize()
        def unsafe(self):
          return self._str
        def sanitize(self):
          if self._sanitized != None:
            return self._sanitized
          else:
            self._sanitized = sanitize(self._sanitized)
            return self._sanitized

That way, as long as you wrap all input in the UnsafeString class, you'll have to be explicit if you want the unsafe version and you'll get the safe version by default.

<comment><USER3> Precisely. Isn't user input handled like this on most web code? It seems the most sensible way to do it.

</comment></comment></comment></comment><comment><USER5> Well, my first thought would be using macros to ensure you never have 'unsafe' strings anywhere.

But, for some inexplicable reason, Joel says "Don't use macros to create your own personal programming language."

How is using macros to encapsulate common functionality any different than using functions to encapsulate common functionality? Both lead to less mental overhead, more code reuse, and code that's easier to parse.

<comment><USER6> Given the overall theme of this rant, I would assume that it's about keeping code close together and easy to understand.

Obviously, macros have almost nothing in common with functions. Macros are simply shorthand for code that will be literally placed at the spot they are called.

So rather than calling functions, with all argument expressions evaluated, and a call stack, and blah blah blah, you are just copy-pasting code without it actually ending up on the screen for a developer to see.

<comment><USER5> You really think that macros have almost nothing in common with functions? Granted that the semantics are a little different but, in my mind, macros and functions are just two different tools that serve the same goal: allowing for code reuse.

(I do understand the difference, for what it's worth. I worked as a professional Common Lisp coder for a while.)

<comment><USER7> Well, I don't think he's talking about Common Lisp macros.

</comment></comment></comment></comment><comment><USER8> I don't quite buy his argument about why we need to keep things in unsafe format for a while. If that credit card app can't handle HTML-encoded stuff, how would it handle evil javascript?

<comment><USER9> In general, I find that it's a bad idea to destroy information. Keep all input intact as long as possible, so if you ever do encounter a problem, you don't need to reconstruct the original data. You can always process data into the correct form at runtime.

Of course, there are performance implications to this, but those can be dealt with. Encoding strings right away for performance reasons is definitely a premature optimization.</comment></comment>


Plastic bulb development promises better quality light - <AUTHOR> http://www.bbc.co.uk/news/science-environment-20553143 <comment><USER2> This will be interesting. I'm not sure how they make the claim "any spectrum" but if they really can make a full spectrum light that has decent (> 75) lumens per watt then that really will change things.

</comment><comment><USER3> > gives off soft, white light – not the yellowish glint from fluorescents or > bluish tinge from LEDs.

The claim of not having "bluish tinge" would be more credible if their picture of the thing wouldn't clearly show a blue color cast :)

<http://i.imgur.com/gGx5W.jpg>

</comment><comment><USER4> I wonder what the real breakthrough is here. Dumping "field-induced polymer electroluminescent" into Google yields other papers going all the way back to the 1990s, and the article itself says he's had one in his lab for over 10 years. Why does he expect to commercialize it in 2013, but couldn't in 2003?

</comment><comment><USER5> missing for me; seems to be [http://phys.org/news/2012-12-goodbye-fluorescent- bulbs-techn...](http://phys.org/news/2012-12-goodbye-fluorescent-bulbs- technology-wont.html)

</comment><comment><USER6> Answer: "I'm saying we are brighter than one of these curly cube bulbs and I can give you any tint to that white light that you want."

Question: "Can you explain this to me like I'm a five-year-old (or a science journalist)?"</comment>


Getting It: What Makes a Great Software Engineer - <AUTHOR> http://avandamiri.com/2010/02/08/getting-it-what-makes-a-great-software-engineer.html

<comment><USER2> Not to nitpick but I think the title of engineer is being abused quite a bit by software folks. I'm a software developer and would never consider myself an engineer. We build things, great. But one has to be professionally licensed by an accreditation board. While the other just has to have a few successful projects under their belt.

One of my friends just got his PE license. 7 frikkin' years after we both graduated. Could you imagine if it took 7 years before you were legally allowed to run your own company? (I believe 7 years is the average amount of time to get a PE). Anyone calling themselves an engineer without that little piece of sheepskin might as well call themself an MD without the years of med school.

But this is America (assuming the majority of HN subscribers) so call yourself whatever you would like.

<comment><USER3> When it comes to engineers being licensed, that _is_ America. No such thing exists in Sweden, at least. "Civilingenjör" is an university degree in applied science, roughly equivalent to an MS.

<comment><USER2> I know it's not a valid source but according to her <http://en.wikipedia.org/wiki/Professional_Engineer> the title PE (and variations, all require accreditation) includes: Japan, Canada, South Korea, Bangladesh, Pakistan, Sri Lanka, EU (Ing. Eur).

Sweden requires 7 years experience and peer review in lieu of examination.

But the main argument still holds. Some guy with 2 years of experience can't bestow himself an engineer.

</comment></comment></comment><comment><USER4> I hate this type of article.

"Here is a distinction I just made up. We'll make it sound somewhat reasonable, put all of the positive characteristics on this side, the negative on that, and now which do _YOU_ want to be?"

What if I think your distinction is half-baked and your description is somewhere between useless and wrong? Sorry, but I'm not buying into your world view today. There are a lot of variations of "darned good programmer" out there, and your oversimplification didn't even begin to capture what is involved.

<comment><USER5> What I still don't get though is what that made up distinction is.

</comment></comment><comment><USER6> Sounds like the No true Scotsman fallacy.

<http://en.wikipedia.org/wiki/No_true_Scotsman></comment>


Hyperloop highway: US to India in 3 hours for $50 - <AUTHOR> http://www.techrepublic.com/article/hyperloop-highway-you-could-travel-from-us-to-india-in-3-hours-for-50/ <comment><USER2> Yeah, this is not particularly credible.</comment>


Orson Welles' 'Voodoo' Macbeth - <AUTHOR> https://dangerousminds.net/comments/orson_welles_voodoo_macbeth_on_film <comment><USER2> I had the opportunity to attend a real voodoo ceremony in Togo (West Africa) a few years ago. It was a very interesting experience, and very hard to describe. You can find videos of them on Youtube. It consisted of a mixture of dancing, which at times got extremely energetic almost to the point of violence (blood was spilled), and weird magic tricks. For example, at one point the shaman buried a bag of broken glass in the ground which later was dug up again and had turned into a bag full of coins. It went on for a very long time. Despite the fact that there were was a substantial audience of Western tourists watching, it didn't feel like a performance. The participants were not focused on the audience at all. On a number of occasions, some of the dancers nearly collided with some audience members.

If you ever get an opportunity to see an authentic non-touristified voodoo ceremony, I recommend it. I've never seen anything remotely like it before or since.</comment>


Peep: A "pip install" that is cryptographically guaranteed repeatable - <AUTHOR> https://pypi.python.org/pypi/peep/

<comment><USER2> This nice as long as the source doesn't already contain a backdoor. Definitely plugs a security hole though. Nice</comment>


Functionally Solving Problems With Haskell - <AUTHOR> http://learnyouahaskell.com/functionally-solving-problems <comment><USER2> While LYAH is a lot of fun, if you've gotten your feet wet with Haskell for a while and want to see some really powerful examples of "functionally solving problems" I cannot recommend more highly Richard Bird's "Pearls of Functional Algorithm Design"[0].

All of the "Functional Pearls" papers are worth a read, but Bird's book is such a compressed, convenient, powerful collection of advanced functional problem solving _style_ that I think anyone interested in "thinking" functionally should strive to read it.

It's not exactly for the faint of heart, to be clear. Bird's idea is that we can establish certain mathematical rules which allow us to transform "the simplest thing which could possibly be correct" to an efficient program through a series of steps, each one maintaining correctness as an invariant.

[0] [http://www.amazon.com/Pearls-Functional-Algorithm-Design- Ric...](http://www.amazon.com/Pearls-Functional-Algorithm-Design- Richard/dp/0521513383)

<comment><USER3> The majority of this book is also highly portable. The techniques can be applied across languages very easily, although, the Haskell implementations are very elegant.

<comment><USER2> I would say that's true in so far as your language you're porting to has a preponderance of pure functionality and notions of real mathematical "variables". Without those it'll be hard to get any semblance of equational reasoning to work out.

</comment></comment></comment><comment><USER4> I read the book a while back and it is absolutely fantastic. What I understand about monads, I learnt it from this book (no other exposition of monads ever made sense to me), and I particularly like his progression functors -> applicative functors -> monads. I think it's the clearest way to proceed (certainly helped me a lot anyways)

<comment><USER5> When I teach Haskell, I like to take a diversion from Applicatives to Monoids before going to Monads.

Understanding join is pretty valuable for understanding Monads too.

<comment><USER2> You can do Applicative -> Alternative and study Alternatives as Monoids of Applicatives and then lay on the difference between (<*>) and (<>) as producing a seminearring!

And then go study Monads because why not. They're kind of cool, too.

<comment><USER5> Actually you just reminded me that I need to explain sums and products in terms of a seminearring.

</comment></comment></comment></comment><comment><USER6> As a side-note, if you want to get into functional programming but don't want to make the full leap into "PURE EVERYTHING MUST STAY CLEAN DONT BREAK THE RULES" world of Haskell, F# is another excellent choice for a beginner functional lang. You can program in either OOP or functional style, letting you take your time with the transition.

I also toot F#'s horn because it has an amazing resource for learning how to use functional style in your programs: [http://fsharpforfunandprofit.com/site- contents/](http://fsharpforfunandprofit.com/site-contents/)

A few pages on that site did more for me regarding functional programming than the entirety of LYAH did, and it also has a very nice monad tutorial: [http://fsharpforfunandprofit.com/posts/computation- expressio...](http://fsharpforfunandprofit.com/posts/computation-expressions- intro/)

<comment><USER7> Not everybody uses Windows.

F# is a .NET language.

<comment><USER8> Heard about Mono?

[http://fsharp.org/use/mac/](http://fsharp.org/use/mac/) [http://fsharp.org/use/linux/](http://fsharp.org/use/linux/)

<comment><USER9> Are you serious?

<comment><USER8> Care to elaborate on that?

<comment><USER10> I suspect that levosmetalo ([https://news.ycombinator.com/item?id=7538317](https://news.ycombinator.com/item?id=7538317)) is referring to the common perception (on whose correctness I cannot comment) that Mono has considerable drawbacks, a perception to whose existence a quick Google search will attest ([https://www.google.com/search?q=Mono+drawback](https://www.google.com/search?q=Mono+drawback)).

</comment></comment></comment></comment></comment></comment><comment><USER11> Did anybody else notice what is written on the upside-down calculator about 1/8 down the page?

<comment><USER12> Stuff like this is all over LYAH, silly hidden unrelated jokes. Read the tree in the Zipper chapter :-) [http://learnyouahaskell.com/zippers](http://learnyouahaskell.com/zippers)

<comment><USER13> Also, be sure to read the tree with a pre-order traversal. In-order and post- order traversals yield a nonsensical string.

</comment></comment></comment><comment><USER14> If you just want to play around with RPN a bit, I made a simple (regex-based) RPN calculating Perl script a while back:

[https://github.com/dbb/math- scripts/blob/master/rpn_calc.pl](https://github.com/dbb/math- scripts/blob/master/rpn_calc.pl)

</comment><comment><USER15> Confused why a random chapter from the wonderful LYAH is on the top of Hacker News....

<comment><USER16> Yeah. This is annoying. I mean, I can't give an objective measure as to why this is a tragedy, but I feel like it is, you know?

Let's just all go through our favorite 3 year old books and post HN articles about every chapter that strikes our fancy why don't we?

<comment><USER17> If it actually strikes your fancy, why not? But I also don't understand why this specific chapter and what poster wanted to show us really.

<comment><USER16> I guess that's it. It feels very arbitrary and unfocused, and I question the specific value. I'd feel awful yelling "karma whore" in a crowded theater without proper evidence, but if it looks and smells like one...

</comment></comment></comment></comment><comment><USER7> Oh, I remember. That's where I stopped reading the book.

</comment><comment><USER18> The link is a chapter from "Learn You a Haskell for Great Good", which I recommend a lot if you want to learn Haskell. However, if you click through to the table of contents, you'll see immediately one of my problems with Haskell as a language: guess in what chapter you finally get to write hello world?

<comment><USER19>
        main = print "Hello, world!"

Is that really interesting enough to rush to?

</comment></comment><comment><USER20> Another Haskell SPAM.

How can anyone seriously code in a language which introduces new kind of bugs which cannot be detected by any test until running in production on real data when it is already too late?

<comment><USER12> I don't understand what you said, but it sounds like FUD.

\- Haskell does not have "a new kind of bugs". It's an ordinary programming language with ordinary bugs.

\- The bugs you put in your program are not any more or less undetectable before production compared to unstable than they are in other languages.

<comment><USER20> Telling that king is naked also sounds like FUD.

<comment><USER12> FUD is fear, uncertainty, doubt. I corrected your statement by saying there is no reason for that particular fear, uncertainty, or doubt. I don't see how that qualifies as FUD. (I'm leaving this thread now.)</comment></comment></comment></comment>


Show HN: Unmodified Java Swing apps in any browser, fully client side - <AUTHOR> http://cheerpjdemos.leaningtech.com/SwingDemo.html <comment><USER2> Cheerp[J] seems to have a handful of fans here on HN: [https://hn.algolia.com/?query=cheerpj&sort=byPopularity&pref...](https://hn.algolia.com/?query=cheerpj&sort=byPopularity&prefix&page=0&dateRange=all&type=story)

apignotti also posted the big discussion yesterday; gratz! Definitely some interest here.

CheerpJ Applet Viewer – Runs Java applets without a local Java installation | [https://news.ycombinator.com/item?id=14587296](https://news.ycombinator.com/item?id=14587296)

Not really sure on the licensing model; it doesn't appear to be open source. From the FAQ: _Details on the commercial licensing model will be made available at a later date._

</comment><comment><USER3> I don't know the details of how this is implemented - I'm assuming that it's some sort of translation of JVM byte code to asm.js and a re-implementation of the core JDK runtime - but the question arises: why?

If you're still forced to use browser-based client-side Java applications, for whatever reason, what does this get you that just using the actual JVM plugin doesn't?

<comment><USER4> Are you kidding? If that's really what this does, you've just properly sandboxed a horribly insecure binary plugin, eliminated the need to constantly install patches, heck, eliminated the need to even install a plugin whatsoever.

</comment></comment><comment><USER5> I want to be able include libraries that are server side only but the framework knows to separate that out and run on the server side and handle the data transmission.

<comment><USER6> Might be worth looking into Autowire [0]. Runs Scala code locally, compiles your API through ScalaJS, allowing you to write your app all in one language without exposing the business logic to the client.

[0] [https://github.com/lihaoyi/autowire](https://github.com/lihaoyi/autowire)

<comment><USER5> my idea for now are objects that can be compiled twice, once for private methods which run on the server and public methods on the client and the compilation process handles the wiring.

</comment></comment></comment><comment><USER7> Oh man, GWT mechanism all over again ?</comment>


New Khan Academy mobile apps, including first official Android app - <AUTHOR> https://www.khanacademy.org/about/blog/post/129669853050/khan-academy-in-your-pocket-new-apps-available <comment><USER2> Any idea if the source will be posted online on their github [https://github.com/Khan](https://github.com/Khan) ?

Khanacademy is a non-profit but when it comes to licensing they are closer to for-profit business licenses in that don't allow commercial derivative like wikipedia does. I love what they do though.

<comment><USER3> To be fair they may be non-profit but they still need to be able to sustain themselves financially, which means they need to operate on a commercial basis.

</comment></comment><comment><USER4> It's amazing to see how far Khan Academy has evolved over the past few years from it's days as a simple gallery of YouTube links. I also think Khan Academy is a great example of the importance of structure and organization in learning. You could probably find all of the same material scattered all over the web, including the KA videos themselves, but the structure, tracking and assessments add immense value to the material.

</comment><comment><USER5> Glad to see Khan Academy supporting Android! This is definitely the better way to reach the majority of the world at the moment.

Would really love to see AndroidTV / AppleTV apps too!

</comment><comment><USER6> This is amazing. I blame the successful completion of my classes in post secondary and high school thanks to Khan Academy. In retrospect, I could've done better by staying at home watching khan academy and using mooc and open source than going to most of my classes.

School does kinda resemble prison [1].

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

</comment><comment><USER7> Not actually related to the android app, but I was a bit confused as to what this would be other than just a video player. I hadn't seen the Khan Academy since it was a collection of maths videos. _Wow_. I've been playing with the coding tutorials, and it's incredible. My wife has been learning with codeacademy but the tutorials there are oddly restrictive in what they allow, and have a bunch of problems with code that should (but doesn't) or code that doesn't (but should) work.

Listening to someone explain their code, being able to pause it and modify the code and see the changes immediately (and helpful error messages if you bork it) then hitting play and having it go back to a sensible state is incredible.

</comment><comment><USER8> How will the mobile app enhance the delivery of education that the mobile website won't?

[edit: thank you for all the replies!]

<comment><USER9> In terms of reach, a native app seems like a pretty big win. KA are aiming for global reach, and, in countries like India where tons of folks are running on old devices, any bandwidth or performance upgrade is significant.

Native apps save bandwidth on each request by relying on the API, which primarily transmits semantic data rather than presentational data. On a slow, metered connection, that's significant.

And, once the exercise framework lands on Android, it oughta have _way_ better performance than the current Javascript implementation that the mobile website uses - especially for manipulating those fancy graphs. When users are frustrated by KA's unresponsiveness, they drop off and don't learn.

That said, the current Android app is definitely just a starting point; until exercises and all the personalized learning features land, mobile web will still be the best tool for KA's non-casual mobile users.

</comment></comment><comment><USER10> Anyone know if they're using React Native for this?

<comment><USER11> (I worked on the Android app.)

No, we're not using React Native yet, but we're hoping to start using it in the near future.

<comment><USER12> Okay, I got to ask. Why do you need permissions for identity and call logs. I still installed it, because you guys are awesome, but those permissions don't seem necessary. Obviously, I could be (and probably am) wrong.

<comment><USER11> Thanks for calling that out, it looks like the "read phone status and identity" permission is actually there by accident. (Still, I think it doesn't provide access to call logs, but I might be missing something.) We never specify it in our manifest, and none of our libraries do, but it looks like it's getting automatically added for compatibility reasons because one of our libraries has a low target SDK version. I'm fairly sure we never use that permission. I'll file a bug and we can probably can probably find a workaround to get that permission removed in a future release.

All of the other permissions are explicitly in our manifest and correspond to actual features of the app.

</comment></comment></comment></comment><comment><USER13> Funny to realize I had the urge to have an Android app for Khan Academy just today, took the time to search and got into their Tester program, used it the whole day and now I've found they just released it officially.

That's great news, they've been doing a really awesome job evolving their business and it's great to see now they are expanding even more, an Android app was really something they've been missing for a long time.

</comment><comment><USER14> What possible reason is there not to open the source for these apps?

There could be so many contributions and innovations from people who want to help with the code.

<comment><USER9> One reason is that managing an open-source community requires a _huge_ investment in communication.

If you're not in a position to run a community, it makes sense to avoid doing things that suggest otherwise. People will ask questions and be upset when you don't have time to answer, they'll submit pull requests that you don't have time to properly review, etc.

<comment><USER14> I see what you're saying but they are hiring full time devs to work on these apps so it's not like a side/night project that's tough to get time for.

I believe it's really a lost opportunity and I've asked them about it but received no response.

</comment></comment></comment><comment><USER15> Any way to share content between devices? Or have a central repository of content on a LAN that you can download to your device? An Android app with content sharing could enable a great offline Khan Academy experience in places without high-speed internet.</comment>


How does a programmer become a Brogrammer? - <AUTHOR> http://www.quora.com/Brogramming/How-does-a-programmer-become-a-Brogrammer

<comment><USER2> Focus on the person, instead of the code. Easy!</comment>


Slick: a modern database query and access library for Scala - <AUTHOR> http://slick.typesafe.com/ <comment><USER2> The problem I can see is that its not totally type safe as you still need to run the code to check that your entity is compatible with the underlying table at runtime. If I am wrong here please correct me. It appears fairly easy to make a mistake on the datatype (Int vs Long) and have it blow up in your face when you run it. Sure the re-factoring is simple but I don't want to wait till runtime to catch these issues.

I don't think that its not achievable either. I think that LINQtoSQL and EntityFramework are the best implementation of database access that exists today. Import the database/table select over it with 95% assurance that the query will work at runtime and with the correct types. I really wish something like this existed in the Java world as I would switch in a heartbeat.

For the record I code C# mostly in my day job, but every time I move over to PHP/Java/Scala I miss LINQ. I am working with Play! at the moment and while the DB access is the best I have come across in the Java world, its still not at the same standard. I am still getting issues with simple selects where I should be using a Long rather then an Int.

<comment><USER3> >> The problem I can see is that its not totally type safe as you still need to run the code to check that your entity is compatible with the underlying table at runtime. If I am wrong here please correct me.

With pleasure. You are wrong. SLICK (formerly known as ScalaQuery) is Typesafe.

>> I am working with Play! at the moment and while the DB access is the best I have come across in the Java world

I've been working with Scalaquery with Play 2 for two months now. The experience has been fantastic. I haven't really had any queries I haven't been able to create even complex joins.

The approach where queries are made like Scala collections is really intuitive. Compared to you I just started using linq recently for a work related project. Basically coming from the other end and I've been quite pleased that the SQ skills I've built over the past month transferred over reasonably well. I only have good things to say about Slick. You should try it out.

<comment><USER2> Its only typesafe if you generate against the database though correct? Its entirely possible for me to write it by hand, and not know there is a problem till runtime yes? I want to close this loop, and LINQ is the only db access I have tried that does so.

Should have mentioned I am using Scala for the DB access in Play 2.0 and the other portions are mostly Java (heavy lifting done in existing libraries, so its just plumbing work hence doing it in Java). I am pretty happy with it except I still hit type issues which I would never encounter in LINQ.

I guess the way im looking at it is that LINQ solved a pain point for me which I am still experiencing in other languages. I would very much like someone to take the pain away from me, either by getting C# working well on Linux or bringing some of the features from C# over into the Java world.

</comment></comment></comment><comment><USER4> Glad to see a standard Scala DB solution emerge---especially one backed by Typesafe. I really found the lack of an elegant database solutions in Scala to be a huge setback in heavy Scala use a year ago. Excited to give it a try.

<comment><USER5> Squeryl <http://squeryl.org/> has been around a while!

<comment><USER4> Yes, there were lots of solutions a while back, including Slick's predecessor ScalaQuery, but none of them were that developed and it required you to build a fresh object model from whatever legacy schema you had. Not difficult to automate, but with so many solutions and it being entirely unclear which would survive, it was difficult to justify even that minimal effort of converting and testing. In the end, I found a modified version of <https://wiki.scala- lang.org/display/SYGN/Simplifying-jdbc> to be best for my purposes at the time.

</comment></comment></comment><comment><USER5> To me it looks inspired by Squeryl <http://squeryl.org/>

<comment><AUTHOR> It's actually based on ScalaQuery (<http://scalaquery.org/>).</comment></comment>