Why don't all whales have cancer? - <AUTHOR> http://icb.oxfordjournals.org/cgi/content/full/icm062v1

<comment><USER2> Related: As a means to fight cancer, large mammals have mechanisms to suppress telomerase and the other (alt) telomere repair mechanism. Small mammals like mice do not have this. Why? It wouldn't help them. Even if the cancer cells in a tumor could not lengthen their telomeres, many of them would still get big enough to kill the host. (An inch-wide tumor might be no big deal for us, but for a little field mouse, it's as big as the whole body!) Hence, there is no evolutionary benefit to these mechanisms, and small mammals do not have them.

It could be that whales do get cancer, but since it's much harder proportionately for cancer to kill them as compared to merely large mammals like us, the cancer often goes undetected, and something else kills the whale. After all, finding 1 inch tumors in a whale would be like finding a needle in a haystack.

Cancer cells mutate rather rapidly, to the extent that this often impairs their function. If a cancer doesn't achieve and maintain efficient metastatis, it won't keep spreading. Perhaps whales have enough bulk that they can simply absorb being riddled with tumors in what constitutes a small fraction of their bulk, allowing them to ride the cancer out until it mutates itself past the point of efficient spread and survival.

<comment><USER3> _Some_ of the descendant cancer cells might lose their capacity for spreading and survival, but wouldn't selection favor those that maintain it? Is there really any reason to believe that its reproduction fidelity is so low that there wouldn't be enough non-mutated cells in each generation?

<comment><USER2> "spreading and survival" are contextual. "Cheater" cells might out-compete other tumor cells locally, but at the cost of the cancer surviving long term and successfully spreading elsewhere.

</comment></comment></comment><comment><USER4> So basically, the theory is that once you get big enough, your tumors themselves get tumors?

<comment><USER5> Perhaps the reason whales are the largest mammals is that, for anything larger, their tumor-tumor get tumors, killing the tumor-tumor and allowing the tumor to kill the whale.

<comment><USER6> it is very counter-intuitive... but then again evolution is.

whales don't get larger because they need to eat more. whales may be perfectly sized for their food supply. A theory.

In any case I am about at my limits of my understanding of biology :P

</comment></comment></comment><comment><USER7> What about bigger creatures, like dinosaurs? Is there any evidence of cancer among them? (I'm totally profane on the subject, just wondering).

<comment><USER8> Most (nearly all) dinosaurs were smaller than current whales.

To get a first hand impression, please visit the Museum of Natural History in New York City, which has many skeletons of both in display.

</comment></comment><comment><USER9> Why wouldn't the hypertumor go on to kill the host after it killed the tumor?

<comment><USER10> Maybe the hypertumor gets it's own tumor after a while, and the cycle continues. Or the immune system of the whale which doesn't react to the original tumor does react to the hypertumor. Or maybe the hypertumor only grows on the original tumors type of tissue. Etc.

This article is just about a hypothesis. It's anyones guess at the moment.

</comment></comment><comment><USER11> I was just discussing this exact topic with a geneticist friend of mine about 15 minutes ago. Small world.

One thing it does prove is that the problem of cancer suppression has been solved before. By evolution. That should give researchers a bit of hope at least.

Edit: He happens to think the linked hypothesis in the article is "bullshit."

<comment><USER12> Well, whales live under the water and most mammals have fur, so perhaps they are protected from the cancer causing sun more than humans. Elephants have thick protective skin.

Plus, humans tend to be closer to carcinogens like pesticides than other animals. Those deer in scandanavia are also herbivores...

It seems like they aren't limiting their variables enough. If they really wanted to determine the correlation between size and cancer, they'd need to use different sizes of the same species. What is the control group?

<comment><USER13> The sun is _a_ cause of cancer, but not the only or even a primary cause. The real "cause" of cancer is cell mutation, which can be triggered by sun, chemical exposure, or simply sheer random chance -- part of the thesis of this article is that, since whales have so many more cells, the "random chance" type would be more likely to happen. And one tumor is enough to kill us, so why not whales? That's the question they're asking.

</comment></comment></comment><comment><USER14> Maybe it also gives hope for a new cancer therapy: induce tumors on tumors. Similar to radiation therapy, except indirect.

</comment><comment><USER15> Sup Dawg, We heard you like tumors so we...

No?

I'll get my coat.</comment>


Show HN: A 3D-printed turret so you can shoot aliens for Halloween - <AUTHOR> https://sidigital.co/alien-invasion <comment><USER2> Suggestions: # Landing Page 1\. Increase the visual weight of the Call-To- Action button. One way to do this would be to move the button up on the landing page, perhaps after the first paragraph. \- You only want enough text to entice users into clicking the button. You can have a secondary fallback that allows them to read more on that page by scrolling down and add a secondary terminal call to action (at bottom of page content above footer). \- - You can defer the story information to the waiting stage area for users to read while they're waiting. 2\. INCREASE THE SIZE of the call-to-action text, namely "STOP THE INVASION" # Game Page 3\. "join the queue of fighters" \- How do we join the Queue? 4\. The use of @names looks like twitter integration. This could be a nice way to add some virality by letting people oauth into enlisting. 5\. Can you sell a queue jump for $.99? Either instantly putting you in control or making you next up? It'd be an interesting experiment. 6\. if usernames are only preserved by session you could still create lightweight player profile pages. If you twitter oauth in perhaps you can provide links to their twitter profile. You could include things like number of plays, number of shots, number of hits, total points, average points, play frequency per day, etc

General Ideas: Improve virality mechanics by integrating more tightly with twitter. Allow posting of score, perks for referring people (front of queue hop perhaps?). Show us some info on our weapon system even if its totally made up.

</comment><comment><USER3> Wow,that's awesome. How long did it take to create and set up? And are you all actually managing to get work done while this is going on?

And this just may be server load-related, but why does my wait time keep going up? When I first joined the queue it said 7 minutes. Two minutes later it jumped up to 9. A couple minutes later it was back down to 7, and there it stayed for about 4 minutes, until it jumped to 8.

<comment><USER4> I'm seeing the same issue. Queue time keeps jumping, was down to 10 minutes, shot back up to 20. Seems that there's queue jumping or something else going on behind the scenes. It then went from 20 minutes to 0, said it's my turn but then 5 seconds later said "Thanks for playing, you missed every shot".

</comment></comment><comment><USER5> So cool. How long are you guys planning on working in your space suits for? Hours? Days? Weeks?! Also, how does the turret get refilled? Is there a Roomba to clean up the balls on the floor? Wait, what happens when you leave the office for the evening?

<comment><USER6> WE WILL NEVER LEAVE

</comment></comment><comment><USER7> I'm confused, it shows me "Thanks for playing" before I've eve done anything. Is this one-time event that's already finished?

</comment><comment><USER8> Can anyone see what this is, or is it down under HN traffic? I just get a spinner with "Connecting".

<comment><USER3> It's a web-cam enabled ping-pong-shooting tower, situated in an alien control room, where various aliens are working among light-up targets, which register when you hit them.

You can join a queue to shoot the targets (and the aliens, if you choose), and get about 30 seconds of play time.

</comment></comment><comment><USER2> Are there any pictures of the turret build and possibly a bit of details about the implementation of the project?

<comment><AUTHOR> There's one at the bottom, we'll do a write up afterwards I'm sure (like we did for Sid [https://sidigital.co/blog/lab-sid](https://sidigital.co/blog/lab- sid))

<comment><USER2> Cool. Thanks. I posted some ideas for slight tweaks that might have a positive impact. Cheers and nice work.

p.s. Are those neopixel leds?

<comment><AUTHOR> They certainly are!

</comment></comment></comment></comment><comment><USER9> Possibly NSFW Flag? When I brought up the second page, a user with a NSFW image popped up...

<comment><USER10> Yep, please flag.

<comment><USER11> I don't think it's fair to flag as NSFW for a one time happening of a user with a NSFW avatar.</comment></comment></comment>


The New iPad Pro's Lidar Sensor Changes the Augmented Reality Game - <AUTHOR> https://heartbeat.fritz.ai/the-new-ipad-pros-lidar-sensor-changes-the-augmented-reality-game-5ee067058a7a <comment><AUTHOR> LiDAR definitely makes AR usable and a lot better. Bummer apple stores are closed and we can't try it out...</comment>


Ask YC: What to do when the competition surfaces? - <AUTHOR>

I think everybody who's been through the startup game knows this point:  You've been quietly working on something you think is novel for months, planning to take over the world any day now.  And then there's the painful moment where you realize there are others doing something similar.
We just hit that.  There are two groups, both with unlaunched products.  They've got bigger teams.  They've got more money.
What do you do?  We were tentatively planning on a public beta for the first useful application about a week out.  Neither of their groups has that.  Should we focus on differentiation or try to build momentum for a head-on collision?
We've been keeping quiet about what we're doing because we're not ready to launch yet, but they've just started breaking radio silence.  Should we care?  Should we start making noise?
Looking forward to your answers. <comment><USER2> Don't be intimated by _potential_ competitors--that's exactly what they want. Wait until you think what they are doing is going to _actually_ impact your company before reacting. Continue as planned.

Additionally, the competition might not be all that bad for you. They may help flesh out the market for you. You might be able to ride on their press and their advertising dollars. You might get ideas from their products.

Finally, pretty much all good ideas will attract competition. That is the nature of a free market. So it was going to happen sooner or later. The good news is that there is usually room for multiple competitors in a market. And in the low-cost startup world, I haven't seen any great evidence that bigger teams and bigger money win out on average after you control for the # of startups in each category.

<comment><USER3> Waiting until you figure out exactly what potential competitors are doing and then reacting might hurt more than it helps. Even if the impact a competitor has on your company is small, slight shifts in product positioning can always occur, and your end of the market could be encroached upon.

In the end, it's up to the users to decide. So launch quickly, listen to them, and help them choose your product as the best.

<comment><USER2> Well I didn't say wait until you figure out _exactly what potential competitors are doing_ , but just until _you think what they are doing is going to actually impact your company._

</comment></comment></comment><comment><USER4> Launch first, be differentiated, listen to your users.

It's important to know that even in absence of competing companies, you ALWAYS have competition. TONS of it. The first guy to try to sell a car heard, "What? My horse works just fine."

</comment><comment><USER5> More funding does not mean they can execute. I learned that lesson at Oracle, where a team 5x larger and in competition with mine claimed they could do everything and the kitchen sink. But because they could not focus, their developers got new directives every week their code was very buggy. My team's code was focused but it worked and we had better credibility with the salespeople and customers. If you make noise, you will need to respond to it, and may get distracted. So, I'd stick to your original plan -- to launch in a week - in the grand scheme of things I don't know if being a week later makes a huge difference in winning the war (not the battle). If I remember correctly, google was not the first search engine created. BTW, congrats on being so close to public beta. :)

<comment><USER6> I hate to be a ditto-head, but I couldn't agree more. If they have bigger teams and more money, that almost always means _you_ have the advantage. The only way you can lose is if you panic and make bad decisions. Plan your climb and climb your plan.

</comment></comment><comment><USER7> Just concentrate on your product.

It's fine to keep an eye on what your competitors are doing, but you want to use that as a source of ideas and inspiration, not as a way to defeat yourself before you're even out of the gate. The competitors may not be able to release as early or often. Everything might fall through for them. Or, maybe, they'll be successful, and you'll be successful, because there's room in the market for more than one company.

You shouldn't be afraid of competition, you should embrace it as an opportunity to be challenged to produce an even better product than you would have.

So, I say just focus on your product. Make it the best, most mold-shattering product you can. If you can do that, and keep on doing that, then at the very least your potential competitors are going to have to spend a lot of energy just trying to keep up with you.

</comment><comment><USER8> There are two kinds of companies:

The first defines themselves in terms of their (perceived) competition. A great example of this has been Sun. McNealy spouted out incessantly against Microsoft even though Sun's actual primary competitors were IBM and HP (while the true threat was the systemic commodification brought on by PCs and F/OSS).

The second defines themselves by the value that they actually deliver to their customers. Craigslist is a poster child for this in the online space.

In terms of the market perception, you should think a bit about who's going to be perceived as the driver/leader of your market and who's going to be perceived as the "me too" player.

In terms of market validation, it's almost always a good thing that you have some competition. For Krugle, we nominally have a fair number of competitors on the surface (including Google) but our actual product blows them away.

In terms of war chests (money), that's an open question. It depends on how creative you can be, how stupid (or not) they are because they have money, whether or not they can actually use the money to their advantage, etc.

</comment><comment><USER9> I couldn't find a link for you online but do you remember the story about how the competitors of Feynman's plated pen company were intimidated? They thought ' _omg an american company would be having millions of dollars in funding and army of PhDs in lab coats_ ' So they shut their company down. The company Feynman worked for actually had like $15 in funding or something like that.

<comment><USER10> [http://www.scribd.com/doc/20232/-surely-youre-joking-Mr- feyn...](http://www.scribd.com/doc/20232/-surely-youre-joking-Mr-feynman)

on page 22. Surprisingly relevant to this discussion.

<comment><USER9> Thanks!

</comment></comment></comment><comment><USER11> Just to counter all the "launch now" posts - rushing the launch can actually kill your project.

If you come out with a half-baked product, you _will_ have an honour of making an initial splash. However the majority of your potential user base will not bite, they will make a note to themselves to come back when there's a better version. So all your competition will need to do is produce that version - better looking, more stable, with more features, etc - and you can kiss you chances of grabbing a decent market share goodbye.

In short - never launch things that are not ready. Not to the general public. This greatly diminishes your chances riding a "viral propagation" wave made by a launch announcement. It also tags you as a developer that's OK with releasing (essentially) crap rather than a polished product. If you want to gather a feedback, do closed beta.

</comment><comment><USER12> _There are two groups, both with unlaunched products. They've got bigger teams._

Sometimes bigger also means much slower.

 _We were tentatively planning on a public beta for the first useful application about a week out._

Go for it -- your key advantage is that you're faster and more adaptable than the competition, so get your work out in front of users and start adapting based on the feedback you get.

 _We've been keeping quiet about what we're doing because we're not ready to launch yet, but they've just started breaking radio silence. Should we care? Should we start making noise?_

You'll probably get differing opinions here; but personally I've never been very interested in vapour. Don't talk up a product which doesn't exist; instead, put a product in front of users, and let THEM start talking about it.

</comment><comment><USER13> This is a great opportunity for you. Now you have another team with more funding to use as a guinea pig. Their manpower and money can be used by you if you know what to look for. See what they do differently and note is it better or worse than what you have. See what they're doing identically and see if you can improve what you have.

Like was already said, when they send out press releases or spend marketing dollars, make sure you get to catch some of that. You rarely see MySpace in the news without a mention of Facebook. I'm not saying aim for the #2 spot, but use the fact that you're similar to benefit from what they do.

</comment><comment><USER14> The rumour mill is a good thing - if possible, it's nice to get a feel for what they're doing, and specifically what they're doing _differently_. Not, I note, for check-box copying, but to see how your products are going to stack up, and see if you're lacking big-time in one harea.

For my tuppence (although I haven't been in this position yet), launch on time, and make noise. Even if they're making noises, a genuine usable product will speak louder. And even if they launch in turn soon afterwards, as the established service you could well ride the PR coat-tails. Of course, the longer you're established before they launch, the more likely you are to be cited as their main competition when they do launch.

Kiko described this effect wrt Google Calendar here (which is a different take on the story than some I've heard): [http://www.height1percent.com/articles/2006/08/18/actual- les...](http://www.height1percent.com/articles/2006/08/18/actual-lessons-from- kiko)

</comment><comment><USER15> Launch, iterate, and be better.

<comment><USER16> Eat their lunch ;) by following the above ^

</comment></comment><comment><USER17> Ignore them. Focus on your customers, not your competition.

You will always have competition (if you don't, you probably don't have a market) and if you're the best one to satisfy your customers you will succeed in your niche.

Joel Spolsky's "Fire and Motion" essays touch on this. The original is here: <http://www.joelonsoftware.com/articles/fog0000000339.html>

With an updated take on it here: [http://www.inc.com/magazine/20080401/how- hard-could-it-be-fi...](http://www.inc.com/magazine/20080401/how-hard-could- it-be-fire-and-motion.html?partner=fogcreek)

Every moment you spend worrying about your competition is one you're not spending focused on your product. Stick to your plan and deliver it.

</comment><comment><USER3> I'd say launch as soon as you can. Post your product here, digg, etc., and try to get it blogged, and hopefully TechCrunched. Watch Mike Arrington's video at startup school on tips to get your site blogged. Have someone leak a twitter message to Mike about your startup. Good marketing can be done effectively without any money.

With competition on the horizon, launching something less than perfect might be in your best interest, because you'll not only get the first jab at the market, you'll have the ability to iterate based on user feedback so that your product will be more tuned towards users' actual needs by the time your competitors start trying to gain momentum. Differentiation will come as you begin to mold to your users. It's a matter of agility.

</comment><comment><USER18> I remember in the Masters Tournament a few years ago when Mickelson won it all, he birdied the final hole to win.

His approach shot on 18 landed in almost the exact same spot as his playing partner's. The guy he was playing with gamely took his putt first, allowing Phil to see how the putt would roll (which direction it would take, how hard to hit it, etc).

After having seen this guy try almost the exact same shot, and miss, Phil was able to learn from his partner's mistakes, and hole his putt.

My point is that there's something to be said for watching someone else make the initial blunders and capitalize with a better product. There are plenty of market share leaders that weren't first to market, but perhaps came slightly afterwards...

</comment><comment><USER19> Look at what problems they claim to solve, how and why. Try to assess whether they are conceptually and technically better than you. They have more money than you, what I consider an advantage over a bigger team in terms of marketing (i.e. grow fast). So they will create the market. But now it depends:

When their business model and techniques are inferior to yours, customers won't get stuck to them. You will win them later. So be silent and have no fear.

When their model and techniques are better than yours, customers will stuck to them and you won't get them switch over to you. So make noise and let potential customers know they should wait for a maybe better alternative (that is you).

</comment><comment><USER20> Who cares? That's my first thought. If you don't have competitors, then your idea probably wasn't that good.

That being said, if your idea depends on a network effect (like Amazon), then you've got a bunch of other problems and you should read this: <http://www.changethis.com/8.StrategyLetter>.

If you're building a company where you charge a price and bring in revenues directly from your customers, and you don't have the need of a network effect, then you will have competition throughout your life. But don't worry, they will just keep you on your toes and help you to produce the best thing possible.

</comment><comment><USER21> Good question - I'm encountering something similar with what I'm doing.

The way I see is as a validation of my concepts and a way to add features/improve our offering.

It may also give you some ideas on how to differentiate yourself.

</comment><comment><USER22> I would say launch NOW.

I was in a similar situation, I was just plugging away at a site and about 1-2 months before I planned on launching a competitor (with an inferior service) launched. I decided to work as hard as possible and launch about 2 weeks after that.

What a mistake, the competitor always has an inferior site, but I never caught up. I would have been much better off had I just launched and not tried to make things perfect. The users were perfectly content with the competition.

My advice would be to launch first if you can and get the users to market for you.

</comment><comment> V12-Bill A proper answer would take a whole book :) You need to find _your_ central idea about what you are best at, what you value, and what you care about. Focus on that. Not! the competition. The competition is largely not relevant, early on. Do what you do best. Don't react to them. Do your own thing! Let the competition find the potholes in the road. You may then avoid the problems that they were bogged down solving. If you have solved the right problems, your value will be apparent. If not, adjust, and repeat :) Don't let the competition define you!

</comment><comment><USER23> Sometimes I think this is the IDEAL situation. You and your competitors, in a way, are validating each other. Also, nobody has the first mover advantage so (hopefully) none of the companies will bail. If all of you launch at the same time, the impact on the press will be greater for all of you because competitors usually get mentions as well. Finally, your industry might start be considered 'hot' because of all the activity.

</comment><comment><USER24> Do what you can to launch ASAP. Then when your competitors launch, there's a greater chance that any write-ups on them will be bound to include your product - which gives you more publicity.

You're also smaller and more nimble - teams mean meetings which KILLS productivity. So don't fret. Just iterate.

</comment><comment><USER25> If what you're doing is truly novel, those groups are not your competition. Your competition is the way things are done now.

Focus on the core of what makes you valuable. Get users ASAP so you can understand your value better.

</comment><comment><USER26> This isn't necessarily a bad thing: your novel idea just increased its potential for market acceptance.

From here, speed is of the essence. Focus your intent and make sure to delight your customers.

</comment><comment><USER27> Launch it now, speed up development, start listening to users. Get the word out.</comment>


A busy person's introduction to Clojure - <AUTHOR> http://eddology.com/post/14592579289/busy-persons-clojure <comment><USER2> I still feel like a beginner in Clojure. One of the things with Clojure is that you nearly always realise later that there was an easier way to do it. It can be frustrating, but it's a sign of the sophistication of Clojure that you keep running into functions that already do what you wanted.

P.S. check out the frequencies function. There are a large number of higher level cOnstructs on top of reduce.

P.P.S. good article :)</comment>


Show HN: Ham, a fast PHP router/microframework I hacked up last night - <AUTHOR> https://github.com/radiosilence/Ham <comment><USER2> Refreshing with these micro frameworks as a counter movement to the monoliths. In my opinion PHP is so fragmented library wise, that trying to streamline everything is a failure - Much better to have a collection of independent modules that are stitched loosely together. It's of course very much a matter of taste.

On the technical side, I have come to prefer using straight regular expressions for routes, rather than a dsl or made-up routing syntax a la rails. It's a relatively unknown feature of preg, but you can have named captures, that pretty much gives you all that you need. For example, here's a couple of routes from a recent application of mine:

        $GLOBALS['ROUTES']['~^GET/devices/(?P<device_id>\d+)~'] = "devices/show";
        $GLOBALS['ROUTES']['~^GET/devices~'] = 'devices/index';

My front controller is then just a loop over the routes, that will resolve first match.

For example, a GET request to `/devices/1234` will resolve to the file `handlers/devices/show.php`, where `device_id` is available as a parameter.

Yes, the syntax is a bit awkward, but it's computationally efficient without a cache/compilation step and it's a standard language, rather than a proprietary one.

<comment><USER3> I wouldn't call that computationally efficient. It is possible to make routing an O(log n) operation; your routing solution, like all routers that use regexes directly, is O(n).

<comment><USER4> I'm curious; what data structure and algorithm are you using to achieve O(log n) routing?

<comment><USER5> If n is the number of routes, and they are sorted (e.g. implicitly through a prefix tree) and evenly distributed accordingly then then the claim might be plausible by doing log n prefix comparisons of increasingly smaller suffixes of the route to be resolved. I find this line of reasoning unusual and misleading though.

The lower bound is linear in the length of the route if all routes participate in your regular expression and if you have it pre-compiled to, for example, a DFA or an LL parser ahead of time.

</comment></comment></comment></comment><comment> hendrik-xdest Great work. Hope to see this evolve into a great little toolset.

I have gone through your code a bit and think that you should consider error handling first. Some methods return strings on error but arrays on success but this is not validated before using the value as an array (this results in the error reported before). I guess when no caching system is available the Dummy will break your code as well as it only returns false.

Also, I think using "False" instead of "false" results in two internal checks when PHP tries to determine if something is false or true, instead of one. Not sure if that is still the case with the latest PHP version, though. I reckon using "false" would be better.

<comment><AUTHOR> Thanks, and I agree. I usually use exceptions but for some things (like cache misses) it seems unwieldy. For the example of the cache calls, I check when I've done a cache call like:

$data = $cache->get("key");

if(!$data) { // do the stuff if cache misses }

Though yes, I do need to go through and make sure it's extremely robust, as I did hack it up in an evening :)

<comment> hendrik-xdest I was thinking about the part where you check the cache with if (!$found)

On that note, I adapted a rule of an open source project (can't quite remember which) that said to never use !$var to validate your data. One should always use isset($found['args']) or empty($found['args']) or for example is_array($found) && count($found) > 0 to check.

<comment><USER6> I've been burnt by this in the past. Nowadays I use ($found === false) to check for a cache miss (though this means you can't store boolean values verbatim).

This is why:

!array() -> true

!null -> true

!false -> true

!0 -> true

!"0" -> true (!!?)

!"" -> true

</comment></comment></comment></comment><comment><USER7> Your microframework also reminds me of Silex a lot. <http://silex.sensiolabs.org/>

It also uses the same $app content, and but has - at the moment - a bit more evaluating of values.

</comment><comment><USER8> I'd prefer Slim Framework ( <http://www.slimframework.com/> ) combined with RedBean ORM and H2O Template.

<comment><AUTHOR> Good for you :)

<comment><USER9> I'll stick with Slim for now because, simply, it's established and Josh there has made it into a quite solid platform.

But keep at it, well done.

<comment><AUTHOR> Yep, that's cool, I mainly made it for personal use so I'm not too bothered if others don't use it!

I need to start writing tests and docs really, but as I said, it was something I hacked up in an evening :)

</comment></comment></comment></comment><comment><USER10> I remember seeing an article or talk or something by one of the main Symfony guys on the fact that PHP was wanting, as a community, to move away from monolithic frameworks in favour of smaller, front controller style implementations. I was actually tring to find it the other day - does anyone have a link?

It's interesting to see the growing trend in this direction for PHP.

I wrote one a little while back[1] that does even _less_ than this :) The only goal being to provide a simple way to execute classes from the web or command line with a default autoloading implementation and a way to inject new ones[2]

Personally a lot of my current direction in PHP comes from watching what's happening the node.js community - I like the way that there are a lot of small-ish packages/modules that are pretty independent.

I've written a couple of packages for RocketSled already which you can see on my github page if you're interested.

[1] <https://github.com/iaindooley/RocketSled>

[2] There are some obvious improvements that could be made to the current implementation which always parses the package tree ie. caching

<comment><USER11> I don't know about the article. But the truth is that Symfony2 is built from a collection of independent components. And each component could be used independently in your app without a need to use symfony framework. Here is for example a link for a routing component: <https://github.com/symfony/Routing>

<comment><USER12> The Zend Framework is the same. You can use each component completely separately. I know a few people who have used the Zend Controller classes and Zend Router in their own frameworks.

</comment></comment></comment><comment><USER13> Looks nice, keep it simple though. There are already a lot of feature full frameworks about that to be honest you can't compete with. I've never used a really lightweight framework like this but I would definitely consider it if I had a project that was the right size.

</comment><comment><USER14> I vote for a rename to phlask =)

<comment><AUTHOR> Heheh, the project was born out of enjoying flask development so much, then coming back to PHP and being like...whaaaat.

</comment></comment><comment><USER15> Can you tell us about the License for use? I do not see the license info.

<comment><AUTHOR> Ah, I didn't really think of that initially. I'll pop one in there!

Edit: Done - BSD 2-clause.

</comment></comment><comment><USER16> Seems much easier to use than Fat free <http://fatfree.sourceforge.net/>

You should evolve this into a solid/flexible micro framework.

<comment><USER17> I wonder what would be hard about FatFree? To me it does not get much simpler than that. And it has a router, templating engine, auto loader (even with name space support, if you wish) and several other plugins.

It helps when you need it and lets you do things your way at the same time.

The only caveat is there's basically only one guy developing it.

</comment></comment><comment><USER18> I hate to be That Guy, but how does this compare to klein.php [1]?

[1] <https://github.com/chriso/klein.php>

<comment><AUTHOR> Two things I do differently:

The most important one is that everything is done within an $app context. This means that theoretically you could build two apps, and I later will be creating functionality to "mount" apps on paths, like in Flask Blueprints.

Second one is that I am going to be extending it (but keeping it lean) with other microframework-y goodness, patterns, ways to use PHP's native stuff in elegant ways, etc.

Essentially, klein is a router, but Ham will be a microframework, providing patterns for application development with it, extensions to work with other libraries, etc, ala Flask.

I'm definitely looking at Klein and seeing what I can learn from it, what can be done better, etc.

</comment></comment><comment><USER19> Will definitely check this out, although I just started a project using Slim.

Slightly off-topic but besides Doctrine, RedBean and PHP ActiveRecord, is there any good and well-tested 'ORM' or some DataMapper/ActiveRecord implementation for PHP?

(I actually like PHP ActiveRecord but had some odd problems with it a while ago and well, there's 60+ issues on GitHub and no proper release since 2010.)

</comment><comment><AUTHOR> Critique totally welcome!

</comment><comment><USER20> Am I reading this correctly that currently the route results will stay cached for the caches TTL? So if you change a route to have a different callback in your main program it will not update?

Really cool framework and congratulations on hacking this up in a night!

</comment><comment><USER21> I tried the example but ran with some issues. Maybe you could specify the requirements ?

1/ It needs PHP >= 5.3 I guess (anonymous functions ?).

2/ It needs APC (use of apc_exists ?)

3/ I stopped at "Cannot use string offset as an array in ham\ham.php on line 42" (seems cache related).

<comment><AUTHOR> Ah there were a couple of bugs. It now doesn't require a caching module to be installed, but is slower with out it. XCache is preferred as it allows closure caching.

On my laptop:

Xcache: ~700 microseconds APC: ~1,300 microseconds Dummy (no caching): ~3,712 microseconds

<comment><USER6> Yeah, I tried to drop in a Redis caching class and immediately ran into that problem. I noticed someone had published a method for serializing PHP closures using magic methods and reflection, but that's way too complex a workaround.

</comment></comment></comment><comment><USER22> Looking very good! Definitely a nice start. Made me think of this MVC project: [http://www.phpro.org/tutorials/Model-View-Controller- MVC.htm...](http://www.phpro.org/tutorials/Model-View-Controller-MVC.html)

<comment><AUTHOR> I'm sure I built my 2nd or 3rd learning framework based on that tutorial some years back :)

</comment></comment><comment><USER23> Looks good. I'd use named regex matches for the routes (like in Django) to make routes more flexible, ie. !/path/(?P<id>[0-9]{1,5}_(?P<kw>[a-z0-9_]{5,20})! etc.

<comment><AUTHOR> Aye, I'm thinking of adding that functionality so you could do <re:blah> in the route, however for now I'm keeping it as simple as possible.

</comment></comment><comment><USER24> Looks similar to NiceDog (which is nice, but hasn't been updated for a while.).

<https://github.com/bastos/nicedog>

</comment><comment> johnx123-up

      Routes are converted to regex and cached so this process
      does not need to happen every request.

But, regex will again degrade performance.

<comment><USER25> For matching? Because PCRE/PHP_PCRE already caches the compiled versions of regexes, so there's little to no perf hit there.

<comment><USER26> Aren't the regexes cached only for the current request anyway?

</comment></comment></comment><comment><USER27> Following the feature set of <http://www.slimframework.com/> at all?

<comment><AUTHOR> Heh, wow - the syntax is really similar. I've never seen that before, I'll be sure to look at their code.

</comment></comment><comment><USER28> What, we're talking about PHP micro-frameworks and nobody's mentioned Lithium?

www.lithify.me

Your search for a modular and lightweight framework has come to an end.

<comment><USER19> Would love to see a proper release of Lithium out, along with up-to-date docs.

</comment></comment><comment><USER29> You basically ripped off Silex

<http://silex.sensiolabs.org/>

</comment><comment><USER30> Router? As in, TCP/IP? In PHP?

<comment><USER31> "Router" as in URL routing. Here's an example from his page:

      $app->route('/pork', function($app) {
        return "Delicious pork.";
      });

<comment><USER30> OK, but why would you do that, instead of just having pork.cgi (or pork/index.cgi)? That "routing" is built into Apache or indeed any HTTP server!

<comment><USER32> Mostly because mod_rewrite rules are fairly complicated, and the ability to put them in the server's conf file means any changes require a server restart. You could put them in .htaccess, but now your having to parse out the route every time. Using a front controller (like index.php) makes everything so much easier. Finally, you have to consider hosting support. This hasn't even touched on numerous other benefits.

Yes, their are tradeoffs, but they don't overcome the benefits, not the least of which is simplicity.</comment></comment></comment></comment>


Teardown of PlayStation Vita homebrew enabler HENkaku exploit - <AUTHOR> http://hexkyz.blogspot.com/2016/10/henkaku-koth-challenge-recap.html <comment><AUTHOR> Currently published posts are linked in the sidebar of the announcement post. For convenience, here are said links:

* [http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-...](http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-stage-1.html)

* [http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-...](http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-stage-2.html)

* [http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-...](http://hexkyz.blogspot.com/2016/10/henkaku-exploit-teardown-stage-3.html)

\---

For anyone interested in PS Vita homebrew, they may find the non-handheld variant of the PlayStation Vita game console known as _PlayStation TV_ [1] to be of interest since these have been reported as late as about a month ago [2] to still ship with firmware not patched against the vulnerability exploited by HENkaku. /r/vitahacks [3] is a good place to start if you want to learn more about HENkaku and PS Vita homebrew in general.

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

[2]: [https://www.reddit.com/r/vitahacks/comments/50j7wb/read_this...](https://www.reddit.com/r/vitahacks/comments/50j7wb/read_this_if_youre_on_361/d74hn23)

[3]: [https://www.reddit.com/r/vitahacks](https://www.reddit.com/r/vitahacks)</comment>


Mark Zuckerberg on Trending Topics - <AUTHOR> https://www.facebook.com/zuck/posts/10102830259184701 <comment><USER2> Mark Zuckerberg didn't write this. Facebook does this thing where they make it seem like it has one voice speaking for them - which is Mark. What is happening is multiple people in Facebook's PR department wrote this. I would even argue the title is misleading. We're feeding into the frenzy that Mark is writing this on behalf of Facebook. We should say it like it is. "Facebook released a statement"

<comment><USER3> The President has almost never written his own speeches, and yet we don't say they're written by his speechwriter. We say "The President delivered a speech."

Mark certainly signed off on this post, or at least on the people who wrote it. Why should we treat it any differently than when any public figure "says" something?

</comment></comment><comment><USER4> Facebook is done. It won't even need replacing. People are realizing its not worth the trouble.</comment>


Flood insurance policies in Houston plunged before Harvey - <AUTHOR> http://www.chicagotribune.com/news/nationworld/ <comment><USER2> [http://www.chicagotribune.com/news/nationworld/ct-houston- ha...](http://www.chicagotribune.com/news/nationworld/ct-houston-harvey-flood- insurance-20170830-story.html)

</comment><comment><USER3> Bad link. This links to the entire section of the paper. Not to the article.</comment>


Can LLVM be (re)implemented in c? - <AUTHOR>

Can LLVM be (re)implemented in c? As LLVM is basically a VM, implementing it in C would be better as fine grained control would be available. I am wondering how awesome it would be. <comment><USER2> Yes, it could be implemented in C.

 _implementing it in C would be better as fine grained control would be available._

Not sure why you think this would be the case, every language feature available in C is available in C++. If the C features were the best tool for the job they would have been used in preference to C++ features.

<comment><AUTHOR> I thought C was really low level than C++. So if you are gonna implement a Low Level Virtual Machine, then C would have been good choice. Further they tried to compile the Linux Kernel with LLVM, the former completely written in C. If thats where they were heading then C would have been a better choice IMO.

<comment><USER2> C++ is(well outside of a few corner cases and changes made to C in C99) a super set of C. That is to say any feature you have in C you have in C++. Then C++ adds a bunch of features on to the base that is C. C is lower level than C++ because it doesn't directly support as many abstractions as C++.

 _Further they tried to compile the Linux Kernel with LLVM, the former completely written in C._

Here you seem to be confused about what LLVM is. LLVM is a compiler, as with all compilers it is a language to language converter. It doesn't matter in what language it is written. The name LLVM refers to the way the compiler works. It has a large number of "front ends" that compile the source language to a byte code(much like java byte code or CIL) that targets a low level machine(that doesn't exist so it is virtual). The LLVM "back end" then generates an actual machine code. Yes people have used it to write JIT compilers like Java or .net's but it is primarily just a compiler like gcc or msvc.</comment></comment></comment>


Homebrew silicon fab - <AUTHOR> http://makerfaire.com/pub/e/2545 <comment><USER2> So where's the link to some real information on this rig?

<comment><USER3> Google to the rescue![1] <http://www.youtube.com/watch?v=w_znRopGtbE>

[1] Though when I googled "Jeri Ellsworth", Google suggestions helpfully suggested I would be interested in her cleavage. Shame on you, internet!

[2] I wonder what happened to the fatmanandcircuitgirl site. I was watching them build a pinball machine and then it just stopped updating.

<comment><AUTHOR> <http://twitter.com/jeriellsworth/status/15098921380></comment></comment></comment>


Ask HN: What set of features make a programming language advanced? - <AUTHOR> Reading the comments from https://news.ycombinator.com/item?id=23077992 it seems that people have different ideas on what it means for a programming language to be "advanced".<p>Given that most languages are Turing complete, what really makes a language "advanced"? <comment><USER2> I honestly prefer Golang which took the minimal approach instead of all the coolest PL features. The language is so much better for this choice.

Check out [https://cuelang.org](https://cuelang.org) for futurology

</comment><comment><USER3> Higher order abstractions and more general control flow, usually.

</comment><comment><USER4> Good Metaprogramming tooling</comment>


With iOS 13, Apple locks out apps from accessing users private notes in Contacts - <AUTHOR> https://techcrunch.com/2019/06/05/with-ios-13-apple-locks-out-apps-from-accessing-users-private-notes-in-contacts/ <comment><USER2> Title is misspelled. There should be an apostrophe at the end of "users".</comment>


Ask YC: IPO requirements? - <AUTHOR>

I might be able to post more info.  The company is 10 years old, VC backed, cashflow positive, growing revenues the past 4 years, enterprise software.  Are there any benchmarks for when a company should consider IPO'ing?  minimum revenue, growth, number of employees, etc? <comment><USER2> I agree with the other posters that this probably isn't an appropriate question for the news.yc crowd. IPOs are rare. So you would be much better off seeking out experts.

That being said, check out [http://www.softwareceo.com/attachments/softwareceo/com021908...](http://www.softwareceo.com/attachments/softwareceo/com021908.php)

Unless you can do something like Google does in not giving out guidance, which seems highly doubtful, the bottom line benchmark seems to be a) a revenue threshold and then b) being able to give decent guidance about future numbers on a quarterly basis. I've always thought the revenue threshold was around 100M, but that link argues it can be smaller for software companies in the right situation.

<comment><AUTHOR> Thanks, this is what I was looking for.

</comment></comment><comment><USER3> You should ask your VC's.

Few (if any) people on this board have taken a company public.

<comment><USER4> _You should ask your VC's._

And your lawyers, and your CFO, and your bank.

I'm inclined to say that if you're asking news.yc whether you're ready to IPO, you're not ready.

</comment></comment><comment><USER5> To spin this in a slightly different direction, there are different req's on NASD/AMSE wrt market cap (this comes up when cos get delisted).

I'd be curious to know what it takes to get onto the OTC/BB (pink sheets), b/c those tend to be smaller cap public companies.

</comment><comment><USER6> Yes. You post the minimum specs in an internet forum and do what they tell you. That's how you know when it's time.</comment>


Update on Transaction Malleability - <AUTHOR> https://bitcoinfoundation.org/blog/?p=422

<comment><USER2> This puts a new spin on mtgox hate, for once something is not their fault and it appears they were honest in their announcement.

<comment><USER3> If they were expressing a concern about a legitimate risk in the system wouldn't something like the security list been the right avenue, and not an accusatory press release?

You'll note that mtgox had funds taken from it, none of these other sites are. They're just being flooded with junk that screws up their transaction processing. It's not really the same thing at all.

<comment><USER4> _You 'll note that mtgox had funds taken from it_

Source, please? How much did mtgox lose?

<comment><USER3> I (Greg Maxwell) am the one of the two "Bitcoin core developers" mentioned in the MtGox press release. My source is Mark Karpeles directly.

I do not know how much they lost. Most of my discussion with them was before I think they knew exactly how much they lost. I had assumed, by the nature of the issue, that it wasn't likely to be much. I'm a little less sure of it based on their behavior since this weekend and due to finding out that there software was automatically issuing reissuing transactions that it didn't think had been paid out.

<comment><USER5> An enterprising blockchain-spelunker _might_ be able to put a very rough ballpark estimate on amounts lost by any affected repeat-payers, by:

(1) Find all confirmed transactions that have a signature that appears in non- canonical form (and thus likely confirmed under an unexpected TXID);

(2) For those transactions, identify the paid-to addresses and amounts: possible targets of make-up transactions. (Of course, it may be hard to distinguish true targets from 'change'.)

(3) Find later transactions with the exact same paid-to addresses and amount: these _may_ be erroneously-issued repeat payouts.

Of course, if the complaining user offers a different address for the make-up transaction, this wouldn't work. On the other hand, a researcher already working hard to correlate affiliated addresses, now or in the future, still might be able to surmise when duplicate-amounts went to affiliated-addresses in succession during the active exploitation period.

<comment><USER3> > (1) Find all confirmed transactions that have a signature that appears in > non-canonical form (and thus likely confirmed under an unexpected TXID);

Unfortunately, you can't— MtGox had a long standing bug where they would author transactions which were themselves non-canonical form (they encoded the variable length values in DER as fixed length with excessive padding). This is one of the reasons their transactions were getting stuck.

People mutating their transactions removed the padding, making them canonical.

<comment><USER5> Aha, interesting. Seems someone could still run a similar process in reverse: if MtGox's successful make-up transactions are non-canonical, find those first, then look for canonical precursors, within the suspected-exploitation timeframe.

That seems more prone to false-positives, though, and perhaps after some point the flood of copycat non-canonicals becomes a problem. (On the other hand, if MtGox was fairly unique for a while in issuing a particular kind of non- canonical transaction, it could make mapping their affiliated addresses by some larger effort easier.)

Some researchers might have records of most of the alternate transactions that were circulating without being confirmed. For example, I don't know how comprehensive Blockchain.info's double-spend report – [https://blockchain.info/double-spends](https://blockchain.info/double-spends) – is, but I imagine TXID-mutated variations might appear as double-spends there. It's currently reporting 1126 detected double-spends - over 1000 in the last 3 days, but before then, quite rare.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I think it is exciting to see mass attacks that aren't really bringing the network down. It actually builds my confidence in Bitcoin.

<comment><USER7> It is so exciting to know that a script kiddie can knock double-digit percentages off the value of the currency while causing the community to fragment into infighting and calling each other "full of shit". That really builds my confidence in Bitcoin.

<comment><USER8> That's really not fair. Bitcoin is still young and considering that it's surprising we don't see more incidents like this.

Where is it written that it was a script kiddi. If this was the work of just a script kiddie, we would be seeing incidents like this all the time.</comment></comment></comment>


ARX, Arthur and RISC OS (2012) - <AUTHOR> http://www.rougol.jellybaby.net/meetings/2012/PaulFellows/ <comment><USER2> A shout out to those involved in Acorn, RISC OS, etc around the late 1980s and throughout the 1990's. Around 1992 or so, our family bought our first computer (when I was around 5 years old) which was an Acorn A3000 running (if I recall correctly) RISC OS 2 on ROM. The school I went to also had Acorn computers (including the RISC PC toward the latter half of the 1990's).

Nowadays I consider myself extraordinarily privileged to have experienced RISC OS on Acorn hardware in its heyday. I see so many things in modern computing inspired by RISC OS. The taskbar in modern era Windows and Mac OS is remarkably similar to RISC OS 2 which was released in 1988. RISC OS was also an early pioneer of anti-aliasing fonts and had it years before it appeared in Windows.

However, sadly, there are many things now lost to history. A machine running RISC OS 2 booted in literally <3 seconds. It was basically just a console screen with "RISC OS 2048K" (or something along those lines) and a second or two later you were at the desktop. It is near impossible to find any modern computing device that boots as quick as the A3000 running RISC OS did.

RISC OS also had a wonderful file-save dialog which was simply the file icon—which you were to simply drag and drop directly to the folder you wanted to save the file to! Given you usually had the right folder open anyway, it was usually a case of just dragging to your already open folder. So much more sensible than having to search for a folder in a small explorer window.

Thanks to all involved. Acorn and their RISC OS sparked a lifelong interest in computers. Thank you!

<comment><USER3> I guess because I'm in a bit of a mood thanks to arguing with Linux Desktop evangelists lately, I'd like to point out that Rox Filer implemented exactly this file saving functionality (and many other good ideas RiscOS) on Linux. Then they built Rox Desktop around it. It was great. There were AppDirs, context-menu-only, spacial file management, drag-n-drop to save, etc.

Naturally, the project's reward for trying to improve the Linux Desktop experience was to have all its ideas ignored by the wider Linux community as it faded into obscurity.

If anybody was ever wondering why all these people who have gripes about the Linux Desktop experience never seem receptive to your pleas of "contribute! you can make it better!", this is why.

<comment><USER4> I've been thinking for a while that the only way to get a decent desktop experience on Linux is going to be to start from scratch. The graphics drivers and Wayland are probably adequate. But absolutely everything from there on up - window mangers, GUI toolkits, applications, configuration tools - needs to be written from scratch by people who know what they are doing and can build all of it as a cohesive whole.

This would be a huge project, and i don't know who has any incentive to do it. It's hard to imagine that it would be possible to make a business out of it.

<comment><USER5> I mean, this is what Android did, right? They use a Linux-based kernel but completely reimplemented the display systems. The real problem is that there isn't anybody who is willing to pay for that sort of work, either on the supply side or the demand one.

<comment><USER6> Not only that, Android IPC builds on top of Xerox PARC ideas.

Although it is very underutilized, you can compose Android applications (Activities) as Lego pieces, with each one doing just one thing right.

</comment></comment></comment></comment></comment><comment><USER7> The whole thing is fine, but this passage is GOLD:

> We had a really interesting time with part of that, we had one of the > machines that we just could not get this thing to boot reliably. You could > boot it, turn it off, reboot it and sometimes it would work and sometimes it > wouldn't. It turned out, it would boot fine if you left it long enough, but > if you didn't turn it off for very long then it didn't reset properly, and > this was because the fan on the board was still spinning and the back EMF on > the fan was enough power to keep the ARM running. And that's why you've got > an ARM in your phone today, it would take no power to keep a 3 micron ARM > with 25000 transistors would run for 30 seconds off the energy stored in the > fan.

<comment><USER8> There's quite a bit of power in that sort of stuff. If you move the steppers on my 3d printer while it's not plugged in it'll light the backlight on the LCD screen very brightly!

<comment><USER7> I double dog dare you to put your tongue on it!

<comment><USER8> Hahaha no way :)

</comment></comment></comment></comment><comment><USER9> Arthur Norman's SKI Machine was interesting: rather than being LISP (as mentioned in the talk) it was a combinator reduction machine [https://en.wikipedia.org/wiki/Combinatory_logic](https://en.wikipedia.org/wiki/Combinatory_logic) \- SK combinators are the way Miranda does lazy evaluation, so the SKI Machine was basically Miranda in hardware. Miranda was a forerunner of Haskell [https://en.wikipedia.org/wiki/Miranda_(programming_language)](https://en.wikipedia.org/wiki/Miranda_\(programming_language\))

</comment><comment><USER10> The development of the first ARM chip is just such an amazing story.

 _I just wanted to say a bit about why Acorn decided to do this whole RISC thing at all, Acorn was a manufacturer of home computers, why on earth would you be crazy enough to design your own chip?

Sophie did an analysis of the compiler output for a lot of common compilers as part of the process of trying to choose which chip we should use next, we were looking at things like the 68000 and the National Semiconductor 16032, or 32016 as it got renamed. I don't know if you remember, a second processor was done with that 32016 and Nat Semi had produced a poster that said "32016 is not a late 16 bit machine it's an early 32 bit machine", a year later we crossed out 'early' and wrote 'late' on it. This analysis showed that all of the complicated instructions and all of complicated mem-copies, the compilers just don't generate them. They generate Load/Store, add, subtract, and/or, compare, branch, that's about it really, the rest of them, unless you're writing in assembler, you just don't use them, so they're a complete waste.

Now, the aforementioned, Arthur Norman, who had written the LISP interpreter for the BBC Micro, and was in and out of Acorn the whole time, had come up with a design for a machine with 3 instructions called the SKI machine. Whose instructions were called 'S', 'K' and 'I' and it ran LISP in hardware and he built one of these things, it never worked, it was so big and covered in wire- wrap it was always broken. The idea was to prove that you really didn't need very many instructions for a general purpose machine._

...

 _Tony Thompson, who had done that implementation of BASIC 64, he got to do the core of the operating system, so the real guts of Arthur itself. That brought it out of reset, powered it up, organised all the memory and so forth. We had a really interesting time with part of that, we had one of the machines that we just could not get this thing to boot reliably. You could boot it, turn it off, reboot it and sometimes it would work and sometimes it wouldn 't. It turned out, it would boot fine if you left it long enough, but if you didn't turn it off for very long then it didn't reset properly, and this was because the fan on the board was still spinning and the back EMF on the fan was enough power to keep the ARM running. And that's why you've got an ARM in your phone today, it would take no power to keep a 3 micron ARM with 25000 transistors would run for 30 seconds off the energy stored in the fan._

</comment><comment><USER11> Fabulous read, and a lot of it really made me laugh especially the F0 keyboard bit.</comment>


Teen born without half her brain has above average reading skills - <AUTHOR> https://www.newscientist.com/article/mg24532693-800-teen-born-without-half-her-brain-has-above-average-reading-skills/ <comment><USER2> Paywall</comment>


China Plans to Build the World's First Solar Power Station in Space - <AUTHOR> https://www.forbes.com/sites/scottsnowden/2019/03/05/china-plans-to-build-the-worlds-first-solar-power-station-in-space <comment><USER2> This is one time that the term "World's First" seems to insufficiently capture the intent.

Years ago when I first heard of the idea (beaming energy back to Earth from space) it made me wonder what would happen if such a device were to be hit by a bit of rock or space debris. If even for a split second the beam was knocked out of alignment, would it fry everything in its path? A 1-degree jitter from that distance would cover quite a lot of area on the ground.

Also, what about aero flight paths? Although, I suppose this could be a similar issue to the realization of a space elevator. You'd probably have to implement a no-fly zone to prevent serious damage.

<comment><USER3> You can build a bunch of smaller microwave transmitters instead of one really powerful one. Not only is it safer, it provides redundancy.</comment></comment>


Ask HN: Are there good self-hosted video conference tools? - <AUTHOR> As we switched to full home office at my university, we started establishing short regular video conferences. Unfortunately, most tools are overwhelmed and we would like to self host our infrastructure.<p>Do any of you have experience with self hosted tools for video conferences? <comment><USER2> You need a _lot_ of GPU time to run a decent video conferencing system.

That's because every video feed usually needs to be realtime, low-latency transcoded to match the receivers bandwidth requirements. If some people in the meeting are on 3G while others are on fast internet, you can't send the same data to all of them! You can't send the same to all of them if different client devices have different hardware video encoders/decoders. Start doing software decoding and you'll soon end up draining users batteries like Zoom!

In a 10 person meeting, thats 10 incoming video feeds, and 100 outgoing video feeds. Not many machines can encode 100 video feeds in realtime! Obviously you can skimp on quality a bit and bucket users (ie. we'll have a high, a mid, and a low res feed, and just pick which to send).

For all the above reasons, that tends to be why self-hosted video conferencing systems are kinda laggy and gobble battery and have poor client support.

Big companies offering hosted VC solutions tend to have dedicated video encoding chips, so they can cheaply make hundreds of video streams to send to every participant.

<comment><USER3> Is there no video compression algorithm that lets you drop every third "line" or something from a higher resolution feed, to let you downscale video efficiently for bandwidth savings, but using only little CPU, and providing okay-ish quality?

<comment><USER4> That's not really how video codecs work. Below is a gross oversimplification to bootstrap the parent's knowledge.

Video is usually both temporally compressed (across frames), and over frequency domain (ala jpeg) in the frame itself.

Transcoding is essentially what you're asking for, it downscales the video. It's the cheapest currently or we'd be using something else.

If you just dropped data you'd get that blocky square thing that you get when watching tv or satellite and the signal goes lossy.

</comment></comment></comment><comment><USER5> Matrix is a fascinating decentralized chat and VoIP conferencing option that can be self-hosted. I'm running the Synapse server and recently tried it with a couple of friends. The 1 to 1 video experience was noticeably sharper than Google Hangouts.

[https://matrix.org/docs/projects/server/synapse/](https://matrix.org/docs/projects/server/synapse/)

Edit: This is the client software: [https://about.riot.im/features](https://about.riot.im/features)

<comment><USER6> How did you set up video ? Last time I checked it was not straight forward. Do you have any software/plugins/repositories to recommend ?

<comment><USER5> The official install docs have a TURN server option to help with VoIP and all of it worked without modification. What problems did you run into?

<comment><USER6> I don't really remember. Compiling a lot of things maybe, or running out of space or RAM on my VPS.

I'll try to get it running again this weekend.

</comment></comment></comment></comment><comment><USER7> You can try Jitsi meet[1]. Open-source and with all the usual features.

[1][https://jitsi.org/jitsi-meet/](https://jitsi.org/jitsi-meet/)

<comment><USER8> It's simple and works very well! maybe a little bit harder to self-host but definitely a top option!

<comment><USER9> There are .deb packages for Ubuntu and Debian available. I installed it on a freshly provisioned VM running Debian 10 in about 15 minutes. They even provide a shell script to obtain an let's encrypt SSL certificate.

[https://github.com/jitsi/jitsi-meet/blob/master/doc/quick- in...](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md)

</comment></comment></comment><comment><USER10> A group of friends were and still are evaluating video conferencing for small groups (<6 people).

Here's what we've tried so far:

Nextcloud: I'm running a nextcloud instance since ~2 years (it's awesome) and tried nextcloud talk several times, though for some reason we could not get audio and or video to work.

Just this week we tried jitsi because it's open source and can be self-hosted. Unfortunately while it worked in principle jitsi uses large amounts of cpu cycles when running in the browser and additionally latency and video quality was an issue.

For us the best option as of now is still [https://whereby.com](https://whereby.com) which works well regarding stability, audio/video quality and latency, though it's not self-hosted. I'm not affiliated in any way with them, I just like their product.

I'd love nextcloud talk to work, and I'm very curious about other solutions I'm not aware of - self-hosted and otherwise.

Edit:

After reviewing my nextcloud talk setup I saw that I didn't set up a TURN server which might be the reason it's not working. So it's not nextcloud, but incomplete setup.

<comment><USER11> I use nextcloud talk with installed coturn (STUN/TURN) to regularly connect with friends. But it is mostly one-on-one, no experience with +4 people. Sometimes there is the issue for browsers to pickup the mic but this will get sorted out. I recommend it. Before we used appear.in (now whereby.com). For work face-to-face is nice and human, but screensharing+audio is where the productivity really is. I think mumble would be fine too if it can be transport encrypted.

</comment></comment><comment><USER12> Twilio just released a (mostly) full featured client for their Programmable Video service: [https://github.com/twilio/twilio-video-app- react](https://github.com/twilio/twilio-video-app-react)

We decided to roll this out to our users as a free service for 6 months. Our users are small business owners in the physical meat-world and don't typically have a Zoom subscription already.

I made a couple tweaks to the app- namely to be able to embed as an iFrame into our web application (and pass the room+user name in as GET parameters).

It works great! We've deployed it to Twilio's infrastructure so we didn't have worry about any of that. Will be rolling out to users today.

<comment><USER13> Can you share the iframe embed code?

<comment><USER12> Sure! Check out [https://github.com/leesalminen/twilio-video-app- react](https://github.com/leesalminen/twilio-video-app-react) and [https://github.com/twilio/twilio-video-app- react/pull/95](https://github.com/twilio/twilio-video-app-react/pull/95) . It's a single commit to add support for <iframe> embed.

</comment></comment></comment><comment><USER14> Don't forget the value of finding ways to avoid the need for video conferencing. While many may feel unavoidable, alternatives like delegating authority, simplifying tasks, and such can often achieve more than a meeting.

The before covid-19, a friend who organizes conferences told me how his firm achieved more by his not going to the second annual conference he organized in Shanghai and delegating more to his former helper, now main Shanghai organizer.

Even if you can't avoid everything, the more you find ways to simplify, the more you build your experience and skills to do so more the next time.

<comment><USER15> My experience with my customers is that we hardly need to see each other. Chat all the time, voice calls when they save time, screen sharing about 50% of the time we're in a call, video almost only by misclicks on camera icons.

</comment></comment><comment><USER16> You can try setting up [https://www.kurento.org/](https://www.kurento.org/)

Note that all modern browsers support WebRTC. I wrote a simple server to setup WebRTC sessions between browsers that worked, but it's probably easier to use kurento.

<comment><USER17> Kurento looks pretty great. Here's a brief snippet from their 'Getting Started' guide which could be useful too:

"If your intended application consists of a complex setup with different kinds of sources and varied use cases, then Kurento is the best leverage you can use.

However, if you intend to solve a simpler use case, such as those of video conference applications, the OpenVidu project builds on top of Kurento to offer a simpler and easier to use solution that will save you time and development effort."

(edit: and here's a link to OpenVidu: [https://openvidu.io/](https://openvidu.io/) )

</comment></comment><comment><USER18> You could try [https://www.yameeting.com/](https://www.yameeting.com/) we give free service for small meetings < 10 ppl with no time restrictions (no enforced limit except server capacity)

You can also use the Ninja Mode (disposables VM's), but you'll have to pay for that.

Disclaimer: I'm the owner of yameeting.com and we use jitsi meet behind the scenes.

<comment><USER19> School is closed, but class isn't. Classrooms and play-from-home groups urgently need a solution for parents/teachers. What I'm looking for is a solution for classrooms or other activities for tweens (think 4th graders). I need to be able to limit the users to only those who are authorized, but leave the rooms open for joining/exiting much like a chat server. Jitsi itself is great for that except there is no white-list authorization and that I'd have to host it myself (the free host is overburdened). I think you're targeting a different use case, but schools and parents everwhere need a classroom solution urgently.

<comment><USER18> Hey, thanks for you comments. The idea behind yameeting it's the "Ninja Mode" where you have disposable VM's to reduce costs and help to prevent intrusions on the servers where the meetings are taking place.

You can't limit who enters the room using a whitelist with the out-of-the-box jitisi installation but since it's using XMPP you can have that functionality.

I'm pretty sure there are solutions out there that focus on those features.

If you want more information or help with this just contact me hello at yameeting.com

</comment></comment></comment><comment><USER20> I'm surprised that no one mentioned Bigbluebutton.

Open source, easy installation, good documentation and has a great community.

<comment><USER21> It's really lacking in Linux distributions

<comment><USER20> You are right. 64 bit Ubuntu 16.04 alone is supported. It allows them to focus and ship faster updates.

</comment></comment></comment><comment><USER22> I have recently implemented a Janus server for my client and it's working great for them!

[https://janus.conf.meetecho.com/](https://janus.conf.meetecho.com/)

</comment><comment><USER23> There's Nextcloud Talk: [https://nextcloud.com/talk/](https://nextcloud.com/talk/) but I haven't personally tested it yet.

<comment><USER24> Never worked for me.

</comment></comment><comment><USER25> DuoBango [https://github.com/DoubangoTelecom/doubango](https://github.com/DoubangoTelecom/doubango)

Use with any standard SIP client. It can be stand alone or part of a PBX... It can be crabby to build and as others have pointed out it's gonna need a bit of horse power but by no means do you need a super high end 48 core monster but your not gonna host this thing on a AWS micro instance either.

</comment><comment><USER26> We were looking for a good LAN video conference tool, since we (ZeroTier) could use it on virtual LANs for telework. The ideal would be something where you can do a conference call by just entering IPs or finding participants with mDNS. It seems nothing like this exists beyond some really old abandonware for Windows. I spent a little time seeing if we could trick VNC into doing this but it's too clunky.

</comment><comment><USER27> I'm using Janus [https://janus.conf.meetecho.com/](https://janus.conf.meetecho.com/)

</comment><comment><USER28> Keep in mind that depending on the model used by the video/audio processing this might require some hardcore transcoding and/or bandwidth.

Normally a few SD/HD streams are not that hard, but it does add up.

</comment><comment><USER29> \- matrix-synapse as the server

\- coturn to help webrtc audio & video get through

\- riot.im as a client (includes jitsi)

It's not rocket science. All the server side stuff is in Debian main. Clients available for every major platform. The riot desktop client even has a properly maintained apt repository...

<comment><USER24> How is the quality and stability?

<comment><USER29> Feels rather solid in most ways I interact with it. Try the public matrix.org instance through [https://riot.im/app](https://riot.im/app) to get a feel for it...

</comment></comment></comment><comment><USER30> Since nobody has mentioned it - multi platform seems to be a necessity.

</comment><comment> Sean-Der Another SFU is [https://github.com/pion/ion](https://github.com/pion/ion)

Someone also built a CLI based conferencing solution [https://github.com/dialup-inc/ascii](https://github.com/dialup-inc/ascii) :) stop wasting all those resources on X11!

</comment><comment><USER31> Do you know the oss [https://jitsi.org/jitsi-meet/](https://jitsi.org/jitsi- meet/) They also have docker containers: [https://github.com/jitsi/docker- jitsi-meet](https://github.com/jitsi/docker-jitsi-meet)

</comment><comment><USER32> Not sure how well it works for actual video conferencing, but [https://www.vidyo.com/](https://www.vidyo.com/) is on premise product.

We use it for its audio/video in an ATM/VTM (virtual teller) system.

During testing I did 1-1 video calls and it works well.

It uses 3 Linux VM's that was delivered to us via OVA.

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

</comment><comment><USER34> Working on a webbased FOSS video conferencing/telephony solution: [https://github.com/garage11/ca11](https://github.com/garage11/ca11)

</comment><comment><USER35> You should definitely take a look at Elos[1]:

Every common feature you need, multiplatform, and customizable

1: [https://elos.vc/site/en/](https://elos.vc/site/en/)

</comment><comment><USER36> We've been using these guys to pick tools, though we didn't ask for self- hosted vidcon:

[https://www.remote-theory.com/](https://www.remote-theory.com/)

</comment><comment><USER37> Isn't SfB (neé Lync) still available as self-hosted ("on-prem") solution? Of course it's not necessarily exactly "good" but it exists and can work

</comment><comment><USER38> jitsi

</comment><comment><USER39> I have no experience with this. But I imagine XMPP solves your problem in some way: [https://en.wikipedia.org/wiki/XMPP](https://en.wikipedia.org/wiki/XMPP)

</comment><comment><USER40> Why do you need video? Most video conferences are about watching someone's lips move - so you can drop to audio (you still need to deal with the deaf though). With a little work you can turn most video calls into audio only calls and make this greatly easier.

Sometimes writing on a blackboard while talking seems to be the best way to teach. However if you can encourage those who can teach other ways to do so it would be a great help.

<comment><USER41> No, they're about having a more personal interaction absent an in-person meeting. Body language, facial expressions and even some inflection is lost on phone and completely absent in text.

My company is remote and all of our meetings internal and with clients are done by video conference. I wouldnt dream of ditching the video just for a call bridge.

<comment><USER40> As someone who doesn't read body language well I'm glad for that lack.

Though your point does stand, people do need to work without it.

<comment><USER42> Totally agree. I find video is ok for initial meetings, but after that I vastly prefer audio-only, for small groups. Works well with inferior wifi connections in coffee shops, etc. Using this for global discussions every day. Currently I use Skype since it works well for audio-only. I prefer zoom for video, for one thing because it usually works well in China, and the 40 minute limit for free calls has been removed now. Also zoom doesn't force the use of a web client; in my experience, reliability, performance and web clients for videoconferencing don't go together. May explain why they are now worth more than several airlines.

<comment><USER43> There is no 40 minutes limit for <=2 persons in a Zoom meeting. Are you sure the limit is removed for larger groups? I don't see this stated on [https://zoom.us/pricing](https://zoom.us/pricing) .

<comment><USER42> It's removed for users in China (1) Nota bene: Zoom in China has now been somewhat separated from global Zoom (2), and is now hosted in China. Haven't been on a call with anyone over Zoom in China for a while. I don't think that people in China using Zoom are always able to join Zoom calls elsewhere. Will be verifying this shortly. For me, the only thing that always works to China is Wechat (Weixin) (I'm careful as to what I say on it).

(1) [https://www.businessinsider.com/coronavirus- covid-19-spread-...](https://www.businessinsider.com/coronavirus- covid-19-spread-zoom-video-lift-call-limit-2020-2)

(2) [https://technode.com/2019/09/19/chinas-zoom-users-switch- to-...](https://technode.com/2019/09/19/chinas-zoom-users-switch-to-local- version-after-blockage/)</comment></comment></comment></comment></comment></comment>


Facebook Co-Founder Speaks Publicly: What I Learned - <AUTHOR> http://www.cnbc.com/id/39675388 <comment><USER2> This is a very strangely organized article, though I guess it's because it's trying to use the movie as a hook? The outline is something like:

1\. Watching a movie about me was quite interesting/surreal.

2\. However, I don't really want to talk about the movie; whether it got things right or not isn't that important.

3\. Instead, I'd like to talk about entrepreneurship and innovation, and won't mention the movie again, despite this article supposedly being about what I "Learned From Watching 'The Social Network'".

<comment><USER3> It struck me as he was trying to be very careful and diplomatic with the wording so as to not say anything too extreme or controversial. Similar to when a politician is asked to make a statement, they do so, then afterward you're left with the distinct impression that they didn't really say anything. This is not meant as a criticism of his piece, I think it's more of a compliment that he seemed to realize (a) it was just a movie, and (b) nothing positive would come from him saying anything negative anyway. I believe he eventually got bank from a settlement, and I'd imagine he'd like to stay on good terms, publicly, with Zuckerberg and other key investors.

</comment></comment><comment><USER4> _Relatively young companies such as Microsoft, Apple and Google are huge drivers within our economy and each rank in the top ten of all public companies in terms of market value, according to the 2010 Fortune 500. Remarkably, none of these companies even existed a mere thirty years ago._

Microsoft: 1975.

Apple: 1976.

The easiest way to feel old is to get excited about how new stuff is--and stay that way while it gets older.

<comment><USER5> So in fact, of the top 25 US companies by market capitalization, all but two (Google and Cisco) are at least 30 years old, and even Cisco was founded in 1984.

Indeed, having just looked at the list, it turns out that there are only two companies from the internet boom which have made it to the top fifty: Google and Amazon. Then you have ebay in 94th position and you're done with the top 100. GOOG is nothing but a massive outlier.

So not only is the quoted statement incorrect in its details, it's wrong in its entire thrust; there really aren't all that many companies which are big and new.

<comment><USER2> It's quite dated now, but someone in 1994 did a survey of the founding dates of the Fortune 500 companies as of that year, and found that new companies were quite uncommon: 39% were over 100 years old, and about 50% were founded between the 1880s and the 1920s, in the "second industrial revolution". Only 16% of F500 companies (as of 1994) were founded after 1950.

The authors speculate that the 1880s-1920s period dominates because it gave birth to the first large-scale corporations that could enter new markets, acquire new businesses, etc., through a mix of industrial and financial prowess. So while the Second Industrial Revolution gave rise to a bunch of F500 companies, the post-war Third Industrial Revolution based on chemicals, pharmaceuticals, aerospace, electronics, etc., hasn't given birth to as many new firms, because the older firms have been able to enter the market themselves, or buy up newcomers who do.

The exceptions they note: "companies such as Apple (1976), Compaq (1982) and McDonald's (1948), built new industries focusing especially on integrated- circuit technology and on franchising in the food and retailing sectors. Tellingly, the youngest member among the Fortune 500 is Office Depot (1986), one of the new breed of 'category killers' that have appeared in certain retail sectors. These category killers depend on sophisticated information technology for quick reporting of turnover figures and detailed data about their customers."

The article's here, but paywalled: <http://www.jstor.org/pss/3117220>

<comment><USER6> An histogram with the founding decades of the 2009 Fortune 500 is in this article: <http://www.gathr.me/the-economic-future-just-happened.pdf> (figure 2).

<comment><USER5> Wow, that is interesting. Huge peaks in the 1980s, 1900s and 1920s. Enormous trough during the 1950s.

It probably wouldn't be unfair to assign the first peak to the internal combustion engine plus electrification, and the second to the microprocessor.

</comment></comment></comment></comment></comment><comment><USER7> This has the ring of a valedictorian delivering the graduation speech -- lot's of platitudes about innovation and some interesting bits, but nothing really memorable

</comment><comment><USER8> Damn! The one time I actually wanted to read about the drama!

</comment><comment><USER9> Why in God's name would I want to see Google's stock chart here on a hover- over?</comment>


Show HN: Trim leftover styles to speed up Angular tests - <AUTHOR> https://simontonsoftware.github.io/s-ng-dev-utils/typedoc/index.html#trimleftoverstyles <comment><AUTHOR> On a small project of mine this sped up tests from about 10 seconds to 4 seconds. At work it sped up our suite from about 8 minutes to 4 minutes.

Both suites are almost exclusively component tests, with relatively complex components. Ymmv.</comment>


Interactive shell to a running Python process - <AUTHOR> https://github.com/amoffat/Inspect-Shell

<comment><USER2> If you want to do the same without modifying the script (or if you have the script already running without the needed import for the remote debugging possibility), i.e. inject into a running process:

<https://github.com/albertz/pydbattach>

</comment><comment><USER3> I use ipython's "ipdb" or plain old Python "pdb" for the same functionality, and a bit more -- people don't seem to realize that ipdb gives them a full-on REPL within the calling context.

I usually wrap it into our error logging functions, so an environment variable enables debugging where I would normally have a catch-all -- very handy when looking for heisenbugs in AndBug.

AntiLog -- <https://gist.github.com/a256ed1295619fad7cfc>

AndBug -- <https://github.com/swdunlop/andbug>

</comment><comment><USER4> My most excellent friend Thomas Hurst implemented a remote python shell a few years ago, for use in debugging running instances of Terminator. You can see the code in question here:

[http://bazaar.launchpad.net/~gnome- terminator/terminator/tru...](http://bazaar.launchpad.net/~gnome- terminator/terminator/trunk/view/head:/terminatorlib/debugserver.py)

and how it gets set up, starting at line 88, here:

[http://bazaar.launchpad.net/~gnome- terminator/terminator/tru...](http://bazaar.launchpad.net/~gnome- terminator/terminator/trunk/view/head:/terminator#L88)

</comment><comment><USER5> You can also run an RPyC* server in your process, and connect to it from any Python shell on any computer to control it.

* <http://rpyc.sourceforge.net/>

</comment><comment><USER6> Would it be possible to use gdb or something similar to inject this into a running process?

<comment><USER7> Yes, pyrasite does just that with a python wrapper around the gdb commands.

<https://fedorahosted.org/pyrasite/>

It was discussed here:

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

</comment></comment><comment><USER8> Zope has this facility and boy it was useful for troubleshooting live systems.

<comment><USER9> And Twisted has Manhole, but for some reason we were never allowed to enable it on production deployments...

</comment></comment><comment><USER10> What are the consequences of running this in production? What's the performance hit like, is it unsafe, etc.?

<comment><USER11> > is it unsafe, etc.?

As the readme notes, it's completely unsafe if you perform any mutation operation.

As to the performance hit, I'd expect almost none when not in use for long- running processes: it spawns a thread, and that thread will then wait on a socket accept, no connection, no resources spent. You'll still be paying in memory for the server thread, but that's it (the server thread only creates two objects, an rlcompleter.Completer instance and a function).

</comment></comment><comment><USER12> I wanted something like this back in the day to be able to poke around in the EVE Online client. Nice job!

</comment><comment><USER13> Very interesting. I would love to see this for other programming languages, especially Ruby (probably fairly easy) or Objective-C (may be quite hard).

<comment><USER2> For ObjC:

<https://github.com/albertz/Pyjector> (and then access the ObjC runtime via the Python ObjC bridge)

<https://github.com/albertz/FScriptAnywhereSIMBL>

<comment><USER14> Or Cycript, which all of us iOS hackers use. ;P

<http://www.cycript.org/> <http://iphonedevwiki.net/index.php/Cycript>

</comment></comment></comment><comment><USER15> This is great I thought Ipython was great. But this is awesome.</comment>


The Harmful Consequences of Postel's Maxim - <AUTHOR> https://tools.ietf.org/html/draft-thomson-postel-was-wrong-01 <comment><USER2> I think Postel's Law is best understood as a growth strategy. Its tolerance facilitates easy composition but at the expense of some protocol decay. What the author does not acknowledge is that less tolerant designs schemes are often so exacting that they discourage participation.

</comment><comment><USER3> I have to reluctantly agree with this (the noisy failure position) much as I like and have followed jon's maxim for decades.

Right now, for me, the worst "offender" (I.e. "faithful observer") is USB type-C. Hook up two high speed thunderbolt devices using a cable that supports only USB 2.0 speeds and it will "work", but slowly. There's currently no way to tell which cable is which by visual inspection.

I can see why this is a triumph of engineering and back compatibility, but I can also see why it's a problem.</comment>


A way out of Corporate Tax Avoidance - <AUTHOR> http://aaahq.org/ata/meetings/midyear-meetings/2012/2012%20RIP%20Amiram%20Bauer%20Frank.pdf

<comment><AUTHOR> I _really_ like the idea of changing over to an imputation system: In an imputation system, you get tax credit, as a shareholder, for taxes paid by the corporation. This means if the corporation avoids tax, you as a person end up paying the tax. Conversely, if the corporation pays a large amount of tax, you as a tax payer and shareholder get a credit for that tax amount.

(Imputation systems usually have no special capital gains rate, or a higher one).</comment>


A 23-year-old Windows 3.1 system failure crashed Paris airport - <AUTHOR> http://www.zdnet.com/article/a-23-year-old-windows-3-1-system-failure-crashed-paris-airport/ <comment><USER2> Maybe they should consider running their OS's in VMs.

<comment><AUTHOR> From the article:

        It's an odd balance between tech that's obsolete enough to not be a target, but current enough to still work

<comment><USER2> A Mac Host OS would be less likely to have a virus than a contemporary Windows OS.</comment></comment></comment>


The surprising thing ancient mummies tell us about what to eat - <AUTHOR> https://www.washingtonpost.com/news/wonk/wp/2015/12/31/the-surprising-thing-ancient-mummies-tell-us-about-what-to-eat/ <comment><AUTHOR> This article explodes the myth that by doing exercise you can compensate for eating badly, that is eating animal products. The person who has probably exercised more than anyone else in this world is the explorer Ranulph Fiennes ([https://en.wikipedia.org/wiki/Ranulph_Fiennes](https://en.wikipedia.org/wiki/Ranulph_Fiennes)), who has had a double heart bypass operation.</comment>


Instant Music is the fastest music player on Chrome - <AUTHOR> http://instantmusicapp.com/

<comment><USER2> Curious. Why did you decide to make a Chrome plugin instead of, say, a standalone website?</comment>