Ask HN: Renting satellites like servers? - <AUTHOR> Perhaps not guidance/ability to make it crash/hit stuff but would be cool to just "SSH" into a satellite and then access its sensors and what not. Maybe a camera feed up there. <comment><USER2> Wouldn't it make more sense to beam all the data from the sensors to a server and sell access to that? Why would anyone need to access the actual satellite?

<comment><AUTHOR> I guess as close to realtime access to space without say flying there. I sometimes watch the ISS feed from space pretty neat.

</comment></comment><comment><USER3> I'm pretty sure this is already a thing. Except you probably have to use some monstrosity cobbled together in LabView instead of SSH.

<comment><AUTHOR> I would think so as well at least since I heard for example a batch of tiny satellites that were connected to twitter recently made it into space. Doesn't seem related but yeah.

I'm curious how much too like would it be priced for the gods and not mere serfs.</comment></comment>


Extreme Agility at Facebook - <AUTHOR> http://cacm.acm.org/blogs/blog-cacm/51564-extreme-agility-at-facebook/fulltext <comment><USER2> Whenever I read things I like, I find myself thinking "This is interesting, but is it relevant to a startup like ours? At what point does it _become_ relevant?"

If you haven't launched yet, working on scaling issues is a huge mistake.

If you have fewer than 1,000 users, working on scaling issues is a huge mistake.

If you have a million users, working on scaling issues is a critical necessity...but that's a high-class problem.

</comment><comment><USER3> _Another aspect of the Facebook engineering team is how large the ratio of active user to developer is. Currently it stands at 1.1 million users per developer._

This ratio changes my model of how the world can work. I'm not sure how, yet. I have to give it time to sink in.

<comment> brown9-2 Is this really accurate? Of Facebook's 900+ employees (according to Wikipedia, I'm sure it's higher), only ~300 are engineers?

<comment><USER4> And what are the other 600? I fail to see how they (as a whole) bring much value to the company relative to the engineers. Could you image a startup of 1 lawyer, 1 manager, and 1 engineer?

<comment><USER5> Engineers don't (necessarily) have to scale with the number of users, but things like customer support (Facebook calls it "user operations") do.

</comment></comment></comment></comment><comment><USER6> _...less than 3 hours of down time in the past three years._

This is pretty incredible, any way you spin it.</comment>


China building 1k-bed hospital over the weekend to treat coronavirus - <AUTHOR> https://www.reuters.com/article/us-china-health-hospital-idUSKBN1ZN07U <comment><USER2> I was born and raised in Wuhan. My father and a few friends are still in Wuhan, one of the friend is a nurse. Here's what they told me:

* The hospitals in Wuhan are at absolute maximum capacity. they are lumping any fever cases (e.g. flu) patients with potential coronavirus patients in the same room.

* People with mild symptoms are sent home due to capacity, they are instructed to be quarantined at home unless symptoms get worse

* Despite reports, surgical masks are completely sold out in China, my dad is asking me to send him 3M (the brand) masks from abroad.

* Even hospitals are low on surgical masks for staff. Each nurse is given one or two masks per day, but per regulation, they needed to replace the mask every 3 hours.

* A wider scale locked down went in to effect in Wuhan this morning, forbidding anybody from entering or leaving on any roads, rail, water or flight.

* Domestic news are filled with non-sense, top 3 news today are praising Xi's CNY speech, which has exactly zero word mentioning the pandemic or Wuhan.

[Edit] One more thing,

* This coronavirus is potentially deadlier than SARS. Most of the 25 deaths are from the original 47 cases that was reported a few weeks ago.

<comment><USER3> If you are interested, there is a crowdfund in the UK trying to raise money to provide surgical masks to doctor and nurses in Wuhan. Here is the link: [https://www.justgiving.com/crowdfunding/standbywuhan](https://www.justgiving.com/crowdfunding/standbywuhan)

<comment><USER4> No. That's the government's job. China is not some impoverished country.

<comment><USER5> > China is not some impoverished country.

That's not obvious. Here are some countries with higher estimated GDP per capita than China:

Mexico (roughly equal)

Malaysia (10% more)

Romania (24% more)

Uruguay (69% more)

<comment><USER4> The per capita is low in China, but that doesn't make the different layers of government unable to provide stuff like that.

</comment></comment></comment></comment></comment><comment><USER6> Too bad they're not doing more in other cities.

My wife ( mainland Chinese ) said the hospital in Chongqing told here there were 24 confirmed cases there. She's sick now and possibly has the Wuhan virus ( though her chest scans are clear ).

Unfortunately the doctors are overworked right now due to the holidays and she can't see anyone for the next couple days. Hopefully she doesn't have the virus, but she's taking precautions.

I think the virus is spreading more than the news is letting on.

<comment><USER7> it's also less deadly than the attention it gets, so while there are for sure much more infected than the confirmed cases the mortality rate is also pretty low affecting only old people and people with weak immunity, so no point to panic about it

<comment><USER8> Seriously. Typically 60-80k people die of the flu every year in the U.S. alone. 40 deaths in the largest country by population in the world is noise.

</comment></comment></comment><comment><USER9> Setting aside quality assurance and risk assessment/mitigation, I'm seriously impressed with the speed in which they construct complex infrastructure.

The are some good reasons we don't quite go at this pace, but there are lots of good lessons about expediency to be gleaned as well.

<comment><USER10> This is exactly the opposite of complex infrastructure. They're reducing a hospital down to the essentials: beds under a roof. If it weren't winter, they could've gotten away with just using tents, too.

<comment><USER11> I'm still not convinced they aren't just building a simple morgue... or perhaps even just a large covered grave.

...all we see so far is a TON of excavators digging a hole.

</comment></comment></comment><comment><USER12> coronavirus, where does this stack in the legacy of nasty viruses that come out every few years? I can remember several off hand making the news, maybe I'm lumping some mistakenly. Anyone know a place where a timeline and scale of each pandemic (is that what they're known as?) can be found?

        * swine flu
        * SARS
        * bird flu
        * H1N1

<comment><USER13> Adding one: [https://en.wikipedia.org/wiki/Middle_East_respiratory_syndro...](https://en.wikipedia.org/wiki/Middle_East_respiratory_syndrome)

</comment></comment><comment><USER14> Did Reuters do any of its own investigation here, or is this story just republished from Chinese state media?

<comment><USER15> It says "Writing by Ben Blanchard" at the bottom. No idea who they are though.

<comment><USER16> The author added a few misc. info but the article is more of a report on a report...many of the sentences were like

"Building machinery, including 35 diggers and 10 bulldozers, arrived at the site on Thursday night, with the aim to get the new facility ready by Monday, the paper added."

"The construction of this project is to solve the shortage of existing medical resources," the report said.

"It created a miracle in the history of medical science," the paper added.

</comment></comment></comment><comment><USER17> Fantastic propaganda piece. Well, it's more of a camp made it prefabricated pieces, but yeah, let's repeat Beijing's propaganda.

</comment><comment><USER18> Can you imagine something like this happening in America?

<comment><USER19> >Can you imagine something like this happening in America?

A new, dangerous respiratory virus mutating in the overcrowded and unhygienic environment of a poorly-managed city market, and then spreading almost unchecked for six weeks, amidst continual denials of its serious nature?

No, probably not.

<comment><USER20> No probably not... crammed homeless in city parks giving each other Hep, city streets disinfected from feces, leprosy being endemic in parts of the homeless population. People unable to afford life-saving medication or unable to take time off work due to lack of medical leave, choosing to carry their viruses to work. People also never eat Armadillo meet and come down with the plague. Large parts of the population distrusting science and government and rejecting vital vaccination to keep diseases from spreading.

Such things would never happen in any kind of first world country. let's focus on exotic animal markets in China to make us all feel superior

<comment><USER21> While the plight of the homeless in the U.S. is great discussion fodder, I don't see what relevance it has to meat market hygiene in China, or the state's role in publishing accurate public health information.

<comment><USER20> Yes, thank god we have no head of state questioning vaccines and no federal agencies dismantling health related regulations. thank god

No, health epidemics could never thrive in our amazing country because we have safe meat markets

<comment><USER22> You're right, they couldn't, because the US has much stricter safety regulations to prevent stuff like this from happening.

Unlike China, the West tries to learn from its mistakes. It's why we have so much bureaucracy. The cost of red tape seems excessive until shit like this happens in the places that don't have red tape.

<comment><USER20> Wow. Really. Only we are able to learn from mistakes and we have so much bureaucracy.

We do so much learning, its Yuuge I tell you. No other country learns so great. And our bureaucracy, everyone is jealous of it, it is so highly, so much red tape. Nobody has that much red tape.

[https://qz.com/1790253/the-usda-is-recalling-more-unsafe- mea...](https://qz.com/1790253/the-usda-is-recalling-more-unsafe-meat-now- than-in-2013/)

Lol

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> They are using pre-fab (not sure if this article mentioned that). Makes things so much easier where buildings can be built in factories with similar standards. Lots of new builds nowadays have so many little issues due to bad quality control.

<comment><USER24> Even with prefab components this is an amazing achievement. I suspect that here in Germany we would still be waiting for the hospital to treat the Marburg virus patients to be completed.

<comment><USER25> I read about the airport debacle in Germany, were you perhaps referring to that?

<comment><USER26> The Brandenburg Airport in Berlin is already took 15 years instead of 5 and it is still not ready...

</comment></comment></comment></comment><comment><USER27> Two weeks ago it wasn't human transmissible

<comment><USER28> I think the more accurate phrase was that it wasn't human transmissible .. as far as anyone knew / there wasn't evidence to show it was.

I think with any new virus or etc folks focus on what they know at that time ... and effectively waiting for testing / what they observe to enhance their understanding.

<comment><USER11> No. It was shown that human to human transmission happened in December.

The issue is that the Chinese gov't threatened prison to anyone who reported it.

</comment></comment></comment><comment><USER29> Sounds more and more like Raccoon City...

</comment><comment><USER26> In Germany it will take 15 years to build a hospital. True bureaucratic hell on planet.

<comment><USER30> In Germany people have rights and that complicates things, yes.

<comment><USER31> People's rights are not what's stopping BER from being finished. People's rights aren't what set the Elbphilharmonie so far behind schedule and over budget.

</comment></comment></comment><comment><USER32> This kind of thing is basically impossible in the West now.

There would be one rabbit family on the site, which would trigger endless environmental protest and lawsuits to protect their right of living there and against disruptions of their habitat.

<comment><USER33> > _endless environmental protest and lawsuits_

States and the federal government have emergency powers for crises. This is how _e.g._ FEMA is able to rapidly erect shelters in disaster areas without needing to care about zoning rules.</comment></comment>


Chrome Extension to Block MG Siegler's stupid posts on TechCrunch - <AUTHOR> http://sunilz.com/2012/04/24/chrome-extension-to-block-mg-sieglers-stupid-posts-on-techcrunch/

<comment><USER2> Great. Can I use it to block anything I don't want. How do you tell a layman what it is for and how to make use of it.

<comment><AUTHOR> Nope. You cannot block anything. This extension has been specifically developed to block MG's posts on TechCrunch. So its for TechCrunch lovers who don't like MG's posts... Based on feedback/suggestions, I might add more features/blogs in the future. Lemme know what else you would like to see... :)

</comment></comment><comment><USER3> Awesome stuff. about time :)</comment>


What Exactly Happened at Autonomy? - <AUTHOR> http://allthingsd.com/20121120/what-exactly-happened-at-autonomy/ <comment> X-Istence More discussion about this: <http://news.ycombinator.com/item?id=4808721>

</comment><comment><USER2> _off topic_ \- Why do I receive a redirect loop error when trying to view their site? This issue has been going on for months...

<comment><USER3> They redirect you to some ad (I'm not sure what, I have ad-block on so I don't see it, but I see the blank page). Then you can click through to the actual site. Presumably, that redirect is breaking for you for some reason. They may use a cookie to indicate what URL you are supposed to be redirected back to; do you have cookies disabled? Or you could just try clearing all of your cookies for that this site.

<comment><USER2> Thanks very much for the great answer. I didn't realize they redirected through an ad server, but that's exactly what the problem is. I'm not just using adblock and ghostly with cookies and javascript turned off, but I'm also using the ad-blocking hosts file.</comment></comment></comment>


Technology behind Google keyword rank trackers? - <AUTHOR> I know the use proxy servers but then how do they create such proxy servers for specific cities or country? Also checking eanks require proxies which can handle session other wise google will give inconsistent results back. How much isnthe cost of such proxy serverices? Thanks <comment><AUTHOR> Any help?</comment>


Green Sea Slug Is Part Animal, Part Plant - <AUTHOR> http://www.wired.com/wiredscience/2010/01/green-sea-slug/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+%28Wired%3A+Index+3+%28Top+Stories+2%29%29 <comment><USER2> What's unclear in the submitted article is whether the slugs have genes evolved by mutation for producing chlorophyll from earlier slug genes or whether the slugs have incorporated algal genes into their own genome--which would be be a bigger deal. Of course the article notes that some scientists don't think that the chlorophyll production is being done by slug genes at all, but by algal genes contaminating the slugs. Interesting research, well worth more follow-up.

How many human beings would like to be able to photosynthesize?

<comment><AUTHOR> I kinda wondered about that. If people could photosynthesize, why would we ever move around? The only thing I can think of is to migrate to where it's sunnier, and only eat in the winter.

On another note, for a startup, a lot of the cost is in food and rent. If you can get rid of the food part by sitting by the sun, I guess that'd be another advantage for startups in CA.

<comment><USER3> Well if you're going to go that route...

... then wouldn't it be cool to be snails? It's still kind of like a slug, plus you solve the rent part by carrying your entire house on your back. Not sure if there are any advantages to being a snail in sunny CA though.

</comment></comment></comment><comment><USER4> Check back in a couple million years, and maybe it will have evolved chloroplast production. But this seems unlikely to happen, given how advantageous it would be and how much time it's had to evolve without it happening yet.

<comment><USER5> How advantageous something _would be_ when "fully evolved" shouldn't affect the chances of evolution, I think. The advantages of the incremental steps are the important.

<comment><USER4> No, no. I'm just saying that given the amount of time that sea slugs have been around, the usefulness of photosynthesizing without needing to eat algae, and the fact that it hasn't evolved yet, it's probably really hard to evolve.</comment></comment></comment>


Free Energy Magnet Motor (Engine) - <AUTHOR> http://vidinterest.com/video/4901/free-energy-magnet-motor-engine

<comment><USER2> Ok, so obviously this is a hoax. However, I've run into a lot of people that believe that it has to be possible for magnets to give unlimited power. I've found the best way to explain it to them is to compare a magnet to a spring. Yes, a spring can push or pull another object, moving it from one place to another. But it takes energy to compress the spring in order to get it to move something else. In the same way, it takes energy to move an object an magnet into position so the magnet can push (or pull) it. Therefore, the magnetic force can be viewed as having nearly the same properties as a coiled up spring.</comment>


Forced Inlining Might Be Slow - <AUTHOR> http://aras-p.info/blog/2017/10/09/Forced-Inlining-Might-Be-Slow/ <comment><USER2> Note that this is about slow _compilation_ , not execution. IMHO if the output also becomes much faster, the tradeoff is reasonable. It would be interesting to know how much runtime performance changed, and in what direction, by not inlining.

On the other hand, the huge difference in compile times suggests there may be a hidden quadratic or higher complexity algorithm somewhere in the code path of the compiler when inlining is performed.

<comment><USER3> Right. Of course turning off forced inlining will speed up compilation. The article is completely silent about what it does to run time.

This is an unusual case, in that it involves code with SIMD instructions. Out of line calls usually mean the arguments have to be put on the stack, then loaded into the SIMD registers. Inlining opens up the optimization possibility of not doing that.

It's not clear what he's writing, but from the math it sounds like a physics engine for animation or games.

<comment><USER4> he's a senior developer at unity.

</comment></comment></comment><comment><USER5> aside from compilation time, inlining doesn't mean your program will run faster, because now you're filling your icache with the inlined instructions rather than a call instruction, that might be flushed away on a missed branch prediction.

<comment><USER6> True, but less so now than a decade ago; if it's a hot path (which anything `__forceinline` presumably is, assuming the author has a reasonable understanding of optimization) inlining is usually going to be a performance win, and often a cache/code size win as well (optimizing the inlined code, avoiding register spills).

<comment><USER7> No, still. If it's an unlikely branch and pretty big, better put it into an extra function call if possible. icache pollution is still an issue.</comment></comment></comment>


Why Should I Care What Color the Bikeshed Is? - <AUTHOR> http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING <comment><USER2> Has anyone here read Parkinson's original book? I'd be interested in comments about it. It's been on my radar for a long time but I haven't got to it yet.

Incidentally, the article is wrong to date Parkinson's Law to the 1960s. It was very much a creature of the 1950s. That maybe isn't as trivial as it sounds; IIRC the book was part of the wave of post-WWII systems thinking that really got going in the 50s. A lot of that stuff remains pretty interesting. It certainly fed into the cultural explosion that happened later, and was an early sign of disaffection with 50s rigidity, but is a different sort of critique.

<comment><USER3> I read it, a long time ago. I remember feeling that it had lots of interesting stuff in it, but that it suffered from the problem of being something that should have been just an essay, expanded into a book. (Practically 100% of books on "business" have this problem.) So it's the kind of book that's worth browsing through, reading bits that catch your attention, but not worth reading every word of.

<comment><AUTHOR> _So it's the kind of book that's worth browsing through, reading bits that catch your attention, but not worth reading every word of_

ChangeThis solves this problem quite well.

</comment></comment></comment><comment><USER4> I have always wondered what I should do with this piece of information. Does it mean that every proposal I want to have passed by people should be extremely large and complex? Conversely, if I want to engage people, should is be over something simple?

Or is it just, take simple decisions yourself and try hard to get input on the complex ones?

<comment><USER5> _I have always wondered what I should do with this piece of information._

All it means is that if you want people to implement your idea in an open source project, send a patch. Ideas don't get the project anywhere, nor does endless discussion. Shut the fuck up and write some code.

It's even on a T-shirt: [http://farm3.static.flickr.com/2388/2162805091_44ece496b7_m....](http://farm3.static.flickr.com/2388/2162805091_44ece496b7_m.jpg)

</comment></comment><comment><USER6> <http://searchyc.com/submissions/bikeshed?sort=by_date>

Move on, nothing to see, kthxplz.

</comment><comment><USER7> When presenting designs to clients some firms add a "pink rabbit" to it, i.e. something that's just too obvious to be ignored by the client. The discussion will then be steered to what to do about it, how to change it, what color it should have, etc.

This is a way of deflecting the client's need to "contribute". If there are other issues with the design those will come up as well, but that initial itch will be lessened.

</comment><comment><USER8> also: <http://bikeshed.com/>

<comment><USER9> Click refresh a few times for the full experience.

<comment><USER5> I don't like any of those colors. Some are too dark, and others are too light. I think the color should always be #c0ffee!

</comment></comment></comment><comment><USER10> I've found this to be true. The solution is to propose every single color that you DON'T want the shed to be painted, so the only option anyone has to make a helpful suggestion as to the color is the ONE color you didn't pick...and the one you wanted in the first place :-D</comment>


Adobe Flash: Almost as Open as Microsoft Office - <AUTHOR> http://daringfireball.net/2010/05/flash_almost_as_open_as_office

<comment><USER2> He's absolutely right. Both of them are ridiculously flawed 'standards'. OOXML because there are literally sections of the standard that don't clearly document the behavior required of the implementation (space lines according to method used by Word 5), and Open Page because it documents only the required behavior for compliant, error-free swf's, when in practice the error-handling behavior is much more important (which, if you're wondering, is why we don't have a useable open-source reference implementation of Flash - even the bits without DRM).

</comment><comment><USER3> Gruber seems to be mocking Adobe's claim by suggesting that Microsoft Office is more open.

However, he never explains why Microsoft Office is not "open" and seems to be counting on generic anti-Microsoft sentiment to make the case for him. His post may have been a lot more convincing if he had explained why Office isn't "open" and then went on to explain why Flash is less "open" than Office.

Btw I say all this as an developer who thinks that section 3.3.1 makes a lot of sense for Apple and as someone who thinks that Flash is too buggy.

</comment><comment><USER4> Wait, he missed a step. Since when was MS Office the same as OOXML?

</comment><comment><USER5> And that's the last daringfireball article I will read. I've ripped into the last three that have made it big here or on reddit and I'm tired of hearing the same things over and over.</comment>


Fresh Grad's Compensation in Silicon Valley - <AUTHOR> https://medium.com/swlh/fresh-grads-compensation-in-silicon-valley-3d694cb3ae59 <comment><USER2> I am the author of the article.

If you find inaccuracies feel free to comment. I wrote the text based on how it looks from my eyes and it could be heavily biased.

I would be also happy to answer the questions here, if needed.</comment>


Save the Internet - the pressure is working - <AUTHOR> http://www.avaaz.org/en/save_the_internet/?cl=1425589399&v=11332

<comment><USER2> Even at a rate of 1 name per second, this would take almost 11.5 days to read out all the names non-stop. Is there some kind of time limit for this kind of thing?

<comment><USER3> There's no time limit, but a 60% vote can force him to stop.

[http://en.wikipedia.org/wiki/Filibuster_in_the_United_States...](http://en.wikipedia.org/wiki/Filibuster_in_the_United_States_Senate)

Edit: That's 60% of all Senators, not just those currently there.

<comment><USER4>
      Edit: That's 60% of all Senators, not just those currently there.

Also known as 60 Senators are required to vote to force him to stop.

</comment></comment></comment><comment><USER5> Is it just me but the website title aptly means "voice" in Hindi (an Indian language).

<comment><USER6> "About us: Avaaz - meaning "voice" in several European, Middle Eastern and Asian languages - ..."

</comment></comment><comment><USER7> On a semi-related note, has anyone signed up for them? They don't comply with the CAN-SPAM act by not giving an unsubscribe link in the emails they send out.

<comment><USER8> I just checked and the last few emails I have _do_ have an unsubscribe link. It's right at the bottom in 8 or 9 pt text.

</comment></comment><comment><USER9> The filibuster: it's a feature, not a bug.

</comment><comment><USER10> Just curious: Who's going to read them?

<comment><AUTHOR> Ron Wyden, senator of Oregon.

<comment><USER11> Yep! And when he's done with it, he will read The Great Gatsby.

</comment></comment></comment><comment><USER12> Lets all sign please!

<comment><USER13> I agree. Signed.

</comment></comment><comment><USER14> While it's awesome that it works against SOPA, this is an illustration of the type of thing that is wrong with our political system.

<comment><USER15> It's a feature, not a bug.

The founders of the USA when they wrote the constitution intentionally put in a fair amount of paralysis because they preferred a weak Federal government. For things truly needing quick action, there's the office of the President.

<comment><USER16> Its a stupid feature. It should not take 11 days of all available senators time to register an objection. It is an unjustifiable waste of expensive people's time and effort/opportunity cost.

Put aside "its always been this way" and work out something better - shorter, and to similar effect. As important as SOPA is, its not as important as many other things going on in the world right now, wasting senator time in this way is so daft.

<comment><USER17> > It is an unjustifiable waste of expensive people's time and > effort/opportunity cost.

I guess you mean (expensive (people's time)) rather than ((expensive people)'s time), but it still doesn't make much sense to me. Why is their time expensive? Because they've got so many other valuable things to do?

I read (though I can't remember the source) a report from one congressman who said that most representatives simply don't have time to read all the bills on which they have to vote. This means that a lot of votes are passed not based on the representative's understanding of them, but based on what the loudest voices _tell_ him or her—an understandable but frightening lacuna, when considering whose the loudest voices are. Isn't anything, even political theatre, valuable if it allows those of us with less political clout nonetheless to wield a louder voice?

<comment><USER16> _Why is their time expensive? Because they've got so many other valuable things to do?_

No, because the tax payer pays a lot above average salary for them.

"The current salary (2011) for rank-and-file members of the House and Senate is $174,000 per year" - about.com

 _Isn't anything, even political theatre, valuable if it allows those of us with less political clout nonetheless to wield a louder voice?_

Maybe, better than literally dropping it, but I wasn't suggesting that, I was suggesting taking what it does and making it simpler to do. If it's useful for a senator to filibuster for days until they collapse of exhaustion, instead make it so a senator can register a million vote petition, show it as evidence, and put a delay on the bill as if he was talking, but have everyone involved do something else instead.</comment></comment></comment></comment></comment>


Ford and Automatic - <AUTHOR> http://blog.automatic.com/ford-and-automatic/

<comment><AUTHOR> This might make me get one!:

"In addition, Automatic will provide greater convenience to Ford and Lincoln drivers by enabling access to the popular If This Then That, or IFTTT service, which automates actions using the Internet. This will allow them to use the push-to-talk button to trigger an IFTTT recipe from among hundreds in the web service library. IFTTT recipes range from automatically sending a message to a loved one to remotely operating home appliances from your car — enabling you to connect your car to family, friends and home. You can even create your own IFTTT recipes, so get creative!"</comment>


Engineers crack 58-year-old puzzle on way to quantum breakthrough - <AUTHOR> https://phys.org/news/2020-03-year-old-puzzle-quantum-breakthrough.html <comment><USER2> The localization claims in this article seem very exciting. Could someone with a background in quantum computing provide some context for whether this is something likely to be important in the future?</comment>


How The Average U.S. Consumer Spends Their Paycheck - <AUTHOR> http://www.visualeconomics.com/how-the-average-us-consumer-spends-their-paycheck/ <comment><USER2> Full sized imags: [http://www.visualeconomics.com/wp- content/uploads/2009/07/wh...](http://www.visualeconomics.com/wp- content/uploads/2009/07/wheredidthemoneygo.jpg)

</comment><comment><USER3> Interesting that they chose not to consider taxes an expense, even though many things around taxes are decision-based (such as whether to defer income, what types of investments to make, etc)

If they had shown taxes, by my calculations it would be the second biggest expenditure, just after housing.

<comment><USER4> ~25% straight off the top (obviously changes depending on income). In CA another 10% for sales taxes. The 6-7% the employer pays that you don't even see.

On top of that the government inflates the currency every year by 3-5%

this isn't even taking into account the fact that producers of goods pay all these taxes as well, so that tax gets factored into the price we pay for the item even before sales tax. I'd say that another 5% for this is being conservative.

all told taxes suck 50% of our productivity out _easily_.

if you got a 50% raise tomorrow you think you couldn't afford private security, private schools for your kids and replacements for all other government services with greatly increased quality and lower prices?

<comment><USER5> "On top of that the government inflates the currency every year by 3-5%" Do you mean the inflation? Is so, this is more around 2%, and not directed by the government.

<comment><USER4> um...the federal reserve directly controls the interest rate paid by banks, which affects how much money is injected into the system. via the money multiplier new money disseminates out into the economy, causing inflation.

how is it not government?

<comment><USER5> The federal reserve does not control the price of oil for example. Controlling inflation is one of its function. Again: controlling it, not setting the inflation rate. For example, there are/were fear of deflation when the inventory was high, and the demand low. With a interest rate set at pretty much 0%, there is not much else the reserve bank can do.

So I stand by my statement, the government does not "inflate the prices by 3-5%" a year.

<comment><USER4> interest set to 0% certainly is inflationary since that means real interest is negative. government doesn't control the prices of commodities directly, but if the money supply was kept static you'd get continual mild deflation.

</comment></comment></comment></comment></comment></comment><comment><USER6> I don't see any debt factored in, such as paying off student loans and the interest accrued from credit cards.

<comment><USER7> Not to mention if you are a current full time student, you have to swap insurance or housing for education. Heck, I feel like most of that circle should be education.

<comment><USER8> It's an aggregate over all households. People are students for 4 of the ~60 years of their adult lives, so only 1/15 are full-time students. (Perhaps more, as this doesn't count grad school or two college-educated people getting married and becoming one household. But it also doesn't count the people who don't go to college at all, which is an even bigger proportion.)

</comment></comment></comment><comment><USER9> Given that a very disproportionate amount of the average US income is from a few people making a lot of money, I'm not convinced that looking at expenditures averaged over the population is in any way indicative of the situation of someone making median income. (According to Wikipedia/US Census Bureau, 2007 _median_ household income was $50k, quite different from their average of $63k.)

</comment><comment><USER10> Interesting. For reference, rough figures from Finland:

\- housing 28% \- transport 15% \- groceries 12% \- culture and spare time 11% \- personal well-being, extra studies, etc. 11.5%

Personally, I can confirm that living costs (i.e. rent or mortgage) indeed do chop the most off my salary but food comes already as the second, but then again I eat well :)

</comment><comment><USER11> America's obsession with cars explains the high transportation outlay (currently > 17%). So many assume that they have to buy new cars (preferably luxury brands, which connote status) and change them every x years. They'll buy them on layaway even if they can't afford the payments.

<comment><USER12> Also America's size...

</comment></comment><comment><USER13> Very surprising that people spend 34% of their income on housing. I have always thought it unwise to spend more than 25% -- a big reason why I still rent even when people were telling me I was "throwing my money away".

<comment><USER14> I'm surprised it isn't more. In places on the East and West coast you have to spend close to half your take home income or else live in a complete crime ridden run down ghetto.

<comment><USER15> In Wichita and Tulsa (where I have lived) spending half your income on rent or a mortgage would be considered insane.

</comment></comment></comment><comment><USER16> Interesting thing to note: The average 'consumer unit' spends 4.8% of their income on gas/oil. So when the price of oil goes up about 20%, it requires roughly 1% more of their annual income... and yet people still claim that the price of gas is 'killing them'.

<comment><USER17> It's not the 1% that's killing them - it's the fact that they're spending at their limit and they don't have that 1% available.

"Annual income twenty pounds, annual expenditure nineteen nineteen six, result happiness. Annual income twenty pounds, annual expenditure twenty pounds ought and six, result misery." -- Charles Dickens, 'David Copperfield'

<comment><USER8> I think this point doesn't get enough attention from people whose salaries are big enough to save lots of money. If you make $60K after taxes and spend $30K, then you can easily eat a $300/year increase in gas expenditures. Your savings rate goes from 50% to 49.5%, big whoop. But if you make $31K and spend $30K, and gas goes up $300/year, it's eaten up a whole 30% of your savings rate. And if you make $30K and spend $30K and gas goes up, you're screwed.

</comment></comment></comment><comment><USER18> $457/yr for liquor seems pretty small for a family with 2 adults.

And why is tobacco counted for the "average" person? I'd think the average person wouldn't be a smoker.

<comment><USER19> More families than you think spend $0/yr on liquor.

<comment><USER16> I don't have a 'family', but I only spend maybe $250/yr on alcohol, and my girlfriend doesn't spend any, and we are in our mid-20s.

It's not for any moral reasons. I only drink beer that I think is tasty, and then pretty much only with meals at restaurants. She just really doesn't like the taste of alcohol.

</comment></comment></comment><comment><USER20> I'd like to see this adjusted for higher cost-of-living locations. For example, in Chicago 34% on housing might be on the low side.

</comment><comment><USER21> Can someone from mint.com confirm these figures? Surveys are fine but I trust transactional records more. The figures don't seem far off as I compare to my mint.com breakdown, but I'd like a more comprehensive and modern approach to this data collection.

<comment><USER22> Two words: selection bias.

</comment></comment><comment><USER23> Any coincidence that this is a government publication and that it doesn't show taxes?

<comment><USER24> Yes it does. `Income before taxes: $63,091', `AVERAGE ANNUAL EXPENDITURES: $49,638'.

Computes to $13.453 paid in taxes. That's about 21% of gross income, and compares to expenditures as about 27%. It is my understanding taxes aren't considered expenditures or `costs' anyway.

The ring breaks down the expenditures, not the gross income. Whether this is fair or not is up to a democratic debate ;)

<comment><USER23> "Yes it does."

No, it doesn't. You proved it yourself. You had to do some math to figure it out.

The reason taxes don't appear on this U.S. government publication is the same reason that they take withholding out of your check. If you actually saw what it cost you each year, it would piss you off so much you might actually get off your butt and do something about it.

<comment><USER16> The less cynical explanation is that people are generally horrible at saving money, so withholding is the only way the taxes would get paid by most people. It reduces risk to the government that people won't have the cash on hand at the end of the year and just declare bankruptcy or otherwise claim they can't pay. Businesses don't have withholding, but they have quarterly tax payments for the same reason I'd bet.

This is the reason that withholding is used by individuals to fund their retirement plans and other rainy day savings accounts. It's too easy to fritter the money away if you actually get your hands on it.

I would agree with you that it'd be helpful to see taxes as a section of the pie chart here, but presumably the focus here is what people _choose_ to spend their money on, and taxes aren't much of a choice.

<comment><USER25> _but presumably the focus here is what people choose to spend their money on, and taxes aren't much of a choice._

Taxes are the rent you pay for choosing to live in the USA.

<comment><USER26> I didn't "choose" to live in this country.

I was born here. And without open borders to make residence in multiple countries, we are not "free" either.

<comment><USER25> You choose to stay. A person may be born in an apartment, but that doesn't mean they can live there rent free for the rest of their life. And yes, you are not just free to walk into some other country and live there. But nor are you are allowed to walk onto someone else's property and live on it.

<comment><USER27> I'm not sure if your reasoning for this is the same as our mutual friend MM's, but I've been meaning to address it, so I might as well do that here. To take your position, I think you first have to admit that USG is the _de facto_ owner of all US territory. You, MM, and I would probably have no problem admitting this, but most people would have trouble with it.

But even after we admit this, we still need to ask if this ownership ought to be treated as legitimate, and there I disagree with MM.

<comment><USER25> I think that the principle of Adverse Possession applies ( <http://en.wikipedia.org/wiki/Adverse_possession> ). If USG is not the legitimate title holder of middle-North America, who is?

<comment><USER27> Why should adverse possession apply? One use for it is to establish who the _de facto_ owner is, but that is of course unnecessary here. Another is to provide more security for property owners -- does the most powerful corporation in the history of the world need that from us? Third, since adverse possession is based on the doctrine of laches, if it applies here doesn't England have a stronger claim to ownership?

Also, if we are applying common law principles, I contend that USG has in the past engaged in massive fraud by pretending it is not the actual owner, and continues to do so today. When we also consider the violent means it has used to acquire and maintain ownership, we have force and fraud -- enough to disqualify USG as a legitimate title holder.

> If USG is not the legitimate title holder of middle-North America, who is?

I admit, the answer is unclear, but it _does_ seem clear that USG is not it.

Correct me if I'm wrong, but it seems your reasoning is at least slightly different from MM's, then -- I don't think MM has much of an interest in this question or much of an answer to it, since he has criticized the "Rebellion" but now accepts USG's ownership.

<comment><USER25> Adverse Possession does not care how the property was acquired. All it cares is that the owner has managed to maintain uncontested possession of it. The states originally siezed the territory from the Brits. The Feds then seized it from the states. Neither usurpation is still contested to this day. No state government maintains that the New Deal is illegitimate.

Adverse Possession is not about making moral claims. It is a way to prevent violence by settling who owns what. Groups would try and manufacture claims and rally groups to regain possession. You see this happen in the Balkans and Middle East with claims going back hundreds or thousands of years.

Of course, in some ways the question of legitimacy of state ownership is silly. Law between sovereigns or between a sovereign and its residents is always jungle law. The strongest wins. By definition, there is no third party to enforce the law.

<comment><USER27> I don't think I disputed anything in your first two paragraphs, but let me know if you think I did. As you say, the strongest wins, so why rely on something like adverse possession? If you're saying it ought to apply here solely for the purpose of preventing violence, then, as I said, it doesn't seem necessary. USG's military and propaganda arms are powerful enough today as to make this irrelevant.

Of course, if most of the residents are very dissatisfied with their sovereign and are willing to take extreme measures, they have a chance of winning regardless of immediately available firepower. This is where the question of legitimacy matters, because a sovereign will have at least some trouble if its residents do not accept its legitimacy, even if it wins in the end.

<comment><USER25> _This is where the question of legitimacy matters, because a sovereign will have at least some trouble if its residents do not accept its legitimacy, even if it wins in the end._

There are two things to consider in regards to USG's relationship with middle- North America: a) property ownership b) management structure

I do not view the property ownership as illegitimate. I do not agree with the libertarians who view taxation as theft. I think such a view is neither justified nor constructive.

USG's management structure is awful. It badly needs reform or a reboot. The goal of a management reboot is not so that us subjects will pay more taxes. It's so that resources will not be squandered. This would end up being good for us subjects, but it would also be in the interest of USG itself. Thus I view a management change as more likely to succeed and less likely to incite violence.

If a management structure is bad enough, an outside group could be morally justified ( though not legally justified) in trying to seize the territory itself. But that would be worst case.

<comment><USER27> > I do not view the property ownership as illegitimate. I do not agree with > the libertarians who view taxation as theft. I think such a view is neither > justified nor constructive.

Yes, there are some libertarians who naively, and incorrectly, believe they are the _de facto_ owners of property in the US. That is, they would not even agree that USG actually owns all US property. However, I'm afraid I still don't see why you view USG's ownership as legitimate, unless you are equating _de facto_ ownership with legitimate ownership -- i.e., you don't believe there is any difference between the two.

> USG's management structure is awful...

Agreed, of course.

> ...but it would also be in the interest of USG itself. Thus I view a > management change as more likely to succeed and less likely to incite > violence.

I'm not so sure about this. Yes, USG could be run more profitably, but severe agency problems exist. Would the leaders of the Catholic Church want their subjects to be told there is no God, even if these leaders were paid large sums of money? Power and influence are worth something to them as well.

> If a management structure is bad enough, an outside group could be morally > justified ( though not legally justified) in trying to seize the territory > itself. But that would be worst case.

I assume a group of subjects would also count as an "outside group"? If we are using common legal principles, then for the reasons I mentioned earlier, I suggest they would be legally justified as well, even if this might not matter all that much in the real world.

<comment><USER25> _However, I'm afraid I still don't see why you view USG's ownership as legitimate, unless you are equating de facto ownership with legitimate ownership -- i.e., you don't believe there is any difference between the two._

I think the concept of adverse possession is a necessary concept to avoid violence and enable us all to get along with each other. So if de facto ownership exists for long enough, it should be considered legitimate.

 _Would the leaders of the Catholic Church want their subjects to be told there is no God, even if these leaders were paid large sums of money? Power and influence are worth something to them as well._

Any Moldbuggian plot to reboot the U.S. would require a critical mass of mandarins to acknowledge the intellectual bankruptcy of the current regime. Well, either mandarins or soldiers.

The other option, which is perhaps more plausible, is that perhaps break away republics can form as the U.S. continues to weaken. Those break away republics could innovate new forms of government and provide examples of how to reform USG.

<comment><USER27> > I think the concept of adverse possession is a necessary concept to avoid > violence and enable us all to get along with each other.

If possession is established and maintained violently, I'm not sure legitimizing this is a good way to avoid violence. MM does tend to confuse _order_ with _peace_.

Example: Jack kidnaps John and forces him to work as his slave. John soon attempts to escape but is prevented from doing so. Under Jack's brutal rule, John eventually gives up trying to escape. Years later, Jack's crime is discovered, but Jack is allowed to maintain ownership of John due to adverse possession. _Order_ is preserved, but the violence continues.

> Any Moldbuggian plot to reboot the U.S. would require a critical mass of > mandarins to acknowledge the intellectual bankruptcy of the current regime. > Well, either mandarins or soldiers.

If that's true, then yes, a reboot seems about as likely as the Pope declaring his atheism. Well, maybe less likely, because the Pope is just one person.

> perhaps break away republics can form as the U.S. continues to weaken

Perhaps, but a total collapse of USG or even the formation of the fabled NAU conservatives keep droning on about would surprise me less.

<comment><USER25> _If that's true, then yes, a reboot seems about as likely as the Pope declaring his atheism. Well, maybe less likely, because the Pope is just one person._

Well, the reformation did happen. And the Soviet Union did fall. And Deng Xiaoping did say, "It matters not the color of the cat, but whether it catches the mouse". The problem is, that the leaders of these states all had positive examples to follow. The U.S. has no positive example of what a good management structure looks like.

 _Perhaps, but even a total collapse of USG or the formation of the fabled NAU conservatives keep droning on about would surprise me less._

I'm not familiar with the concept of NAU conserveratives. Mind explaining?

So do you have any ideas about what should happen? Or what will happen?

<comment><USER27> > Well, the reformation did happen. And the Soviet Union did fall. And Deng > Xiaoping did say, "It matters not the color of the cat, but whether it > catches the mouse".

Agreed; I wouldn't say it's impossible.

> The problem is, that the leaders of these states all had positive examples > to follow. The U.S. has no positive example of what a good management > structure looks like.

Maybe you're right. The changes required for USG seem more drastic to me than those that were applied in the Soviet Union or China, though. After all, Protestants are still Christians.

> I'm not familiar with the concept of NAU conserveratives. Mind explaining?

Sorry, I was referring to this: <http://en.wikipedia.org/wiki/North_American_Union>

This scares some conservatives to death, particularly the ones who worship the Constitution. I think the biggest change we'd see is different text on some signs, and I'm exaggerating only slightly.

> So do you have any ideas about what should happen? Or what will happen?

My ideal looks somewhat similar to "Patchwork", but without the joint stock corporate management structure, which I believe has some fatal flaws. As for what will happen, I can't say I'm sure, but I'd guess some sort of catastrophic financial collapse and associated instability. As we know, the worldwide financial system is horribly engineered. We can try to be optimistic about what comes after that, but realistically things could get pretty ugly. The parts of the world that are mostly disconnected from the financial system will be relatively okay; spontaneous order could arise in small pockets of the developed world as well, but much of the West could plunge into violence and chaos for some time.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Show HN: Get help from developers near you for your startup - <AUTHOR> http://trylime.com/ <comment><USER2> Is it just me or is the english a little incorrect here?

"Help developers near you Find developers near you who're looking for help in their startups and projects, help them in your spare time. Get paid!!"

This is really confusing - are you talking to developers or to people who need help? Because at the start of the next section you seem to target the people who need help.

Also why "Help developers near you" instead of "Help startups near you".

<comment><AUTHOR> Thanks, I was thinking about that for a moment too. I will fix that :)

<comment><USER2> Looks better now! Though checking on a mobile its a little broken.

</comment></comment></comment><comment><USER3> Fascinating idea. Suggest you allow us marketing/Hustler/growth hacking types to offer as well. Maybe require an invite from a dev so we pass muster in some way?

<comment><AUTHOR> Thanks for the suggestion, that's a good idea :)</comment></comment>


Homoiconicity isn't the point (2012) - <AUTHOR> http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/ <comment><USER2> In my opinion, this article puts too much emphasis on _reading_ , and too little emphasis on actually _reasoning_ about programs in homoiconic languages like Prolog and Lisp, and due to this imbalance the conclusion is not sufficiently justified.

It is true: Being able to "read without parsing" is definitely nice.

But that is only a subset of those advantages that a homoiconic language gives you. An at least equally important advantage is due to the fact that programs in homoiconic languages are typically _very easy_ to reason about by built-in mechanisms in that language.

For example, Prolog programs are readily represented as Prolog _terms_ , and can be easily reasoned about by built-in mechanisms such as unification.

Since I regard it as a key advantage of homoiconic languages that their _abstract_ syntax is completely uniform and can typically be easily reasoned about within such languages, I disagree with the main point that the article is trying to make.

One interesting fact about homoiconicity is that extremely low-level languages (like assembly code) _and_ extremely high-level languages (like Prolog) are homoiconic, yet there is a large gap "in the middle", where there are many languages (like Java, C, Python etc.) that lack this property.

<comment><USER3> > _very easy to reason_ [sic] _about_ by built-in mechanisms in that language.

Languages allow you to express your reasoning, but they don't do the reasoning by themselves. Also, there is no conclusive evidence that homoiconic languages have simpler semantics, especially of the denotational kind.

<comment><USER4> I think the meaning is that fewer things are implemented by bringing in outside capabilities. In lisp, everything's can be expressed in terms of other lisp code. Typically directly so. In other languages that are not as macro friendly, most keywords get the explanation of "this is how the computer will act" and then explanations of new behaviors.

<comment><USER3> > In lisp, everything's can be expressed in terms of other lisp code.

Um, and how exactly are primitive forms defined?

> most keywords get the explanation of "this is how the computer will act" and > then explanations of new behaviors.

Have you heard of Hoare logic? The meaning of ordinary ALGOL-style imperative programs can be given in terms of relating preconditions to postconditions. Suppose that you have the Hoare triples:

        {P} foo {Q}
        {Q} bar {R}

Then you can derive the Hoare triple:

        {P} foo; bar {R}

Note that `Q` is not mentioned at all. Hence, any implementation is free to translate the program

        foo; bar

into something that doesn't have `Q` as an intermediate state.

<comment><USER4> You seem to be arguing past me. If you are just upset that I said everything instead of most things, yeah, obviously some things are defined elsewhere. To that end, how things are actually implemented takes a trip to assembly. (I mainly blame that I'm writing in my phone. Often while in the bus.)

My point was that you don't typically see c constructs explained in terms of other c constructs. This is quite common in lisp. To see lisp constructs explained in terms of other lisp constructs. In large because there are few constructs.

You showing me that you can explain using other logic is kind of my point. It is awesome that you can do this. I recommend the skill. It is still not showing c or Java or Haskell or whatever in terms of themselves.

Note that I think you actually can do this, in large. It is not typically done, though.

<comment><USER3> > To that end, how things are actually implemented takes a trip to assembly.

Don't confuse "defined" with "implemented". This is the entire point to having an axiomatic semantics!

> My point was that you don't typically see c constructs explained in terms of > other c constructs.

Languages can't be entirely defined in terms of themselves. At some point you need to _drop down_ to something else. If most of Lisp is defined in terms of other Lisp constructs, that is perfectly fine, but, for my purposes, i.e., proving things about programs, there are two mutually exclusive possibilities:

(0) The semantics of Lisp is the semantics of its primitive forms, and derived forms are just Lisp's _standard library_.

(1) So-called "derived" forms have an abstract semantics of their own right, and their implementation in terms of so-called "primitive" forms is, well, an implementation detail.

So, my answer to "most of Lisp is defined in terms of Lisp itself" is "that's cute, but how mathematically elegant is the part of Lisp that is _not_ defined in terms of itself?"

<comment><USER4> I said explained. Not defined. Not implemented. Definitely not proved. Just explained. There is typically exposition, as well.

So, by all means, keep arguing points I'm not making. I was offering what I suspect the parent post meant by it being easier to reason using the mechanics of the language. Nothing more.

<comment><USER3> > I was offering what I suspect the parent post meant by it being easier to > reason using the mechanics of the language.

And it still doesn't make sense. "Reasoning about programs" is making inferences about their _meaning_ , i.e., deriving judgments from prior judgments. How exactly do homoiconic languages make it any easier to make inferences about the meaning of programs, given that homoiconicity is largely a property of how concrete and abstract syntaxes are related to each other? (Not that homoiconicity makes things more difficult either. It is just completely unrelated to reasoning about programs.)

<comment><USER2> For one particular example where homoiconicity makes _reasoning_ about programs easier, consider an important reasoning method called _abstract interpretation_ :

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

Using abstract interpretation, you can derive interesting program properties. The uniformity and simplicity of Prolog code, as well as its built-in language constructs like unification and backtracking, make it especially easy to write abstract interpreters for Prolog.

Here is a paper that applies this idea to derive several interesting facts about programs and their meaning:

Michael Codish and Harald Søndergaard, _Meta-circular Abstract Interpretation in Prolog_ (2002) [https://link.springer.com/chapter/10.1007%2F3-540-36377-7_6](https://link.springer.com/chapter/10.1007%2F3-540-36377-7_6)

Abstract interpretation is also applicable to other programming languages. However, it is much easier to apply to homoiconic languages like Prolog.

<comment><USER5> Abstract interpretation is entirely about the semantics of programs and has nothing to do with their surface syntax.

<comment><USER2> Yes, indeed!

Please note that what makes this reasoning method so easily applicable in this case is uniformity of the _abstract_ syntax, _not_ of the surface syntax, which is also called _concrete_ syntax.

Homoiconicity is a relation between the concrete and _abstract_ syntax tree (AST) of programs and the language's built-in data structures.

<comment><USER3> No idea about you, but when I _reason_ about programs, I spend very little time manipulating syntax. Most of the time is spent manipulating semantic objects, like predicates on the program state, whose representation is independent from even the abstract syntax of a programming language.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> > _You simply can't produce an AST without expanding macros first._

False; the syntax before expanding macros is an AST, so is the one after. It's an AST-AST transformation.

If anything, the one with macros is more abstract: because it, like, has the abstractions in their original abstract form!

Also, non-Lisp languages perform AST-AST transformations; just usually not with Lisp-like macros. For instance, the AST node for a _while_ loop in a C compiler might be replaced with a combination of _if_ , _goto_ and statement label nodes (with generated labels: analogous to a Lisp macro's gensyms). That's a form of expansion. The input is an AST with _while_ nodes; the output is one without.

So, no the advantage really is that with Lisp we are reading rather than parsing. Or, alternatively, that the parsing is very simple and uniform, and that the language of the parser __over-generates __: it produces a large space of forms which do not have a meaning, but serve as arbitrary data or can be given a meaning with new abstractions.

In, say C, we have a syntax in which there are numerous lists: lists of declaration specifiers in a declaration, lists of parameters, lists of structure members in a struct declaration, lists of global definition, lists of statements in a statement body. These all have their own grammar productions with their own quirks. And none of them have an object model to which they correspond.

In Lisp, the analogous things are all the same list type with the same syntactic representation. It corresponds to an object, and is operated upon by the same access and construction methods.

Homoiconicity isn't the point, because that just refers to storing procedures in the form in which they were entered ("code is characters, and nothing but"). Code is structured data is code is the point, with a nice, straightforward printed representation for working with the data textually.

<comment><USER7> > False; the syntax before expanding macros is an AST, so is the one after. > It's an AST-AST transformation.

I mean, yes, in the same vacuous sense that the flat stream of tokens output by a lexer technically qualifies as an AST. If you like, your lexer could output a "tree" of 1+N nodes: a Parse node, and within it, a list of N arguments (the lexer-tokens.) You would then apply an AST-AST transformation that responds to the "parse" node by parsing its contents.

When we talk about an AST in the context of programming, we usually mean to refer not to any airy CS concept, but specifically to the output of an LR(k) parser—that is, a bottom-up, context-free parser. To parse the lexer-token stream in an LR(k) parser, you need to be able to output ("produce") a structure given a sequence of tokens, without having any context of the greater rule you're executing "within" (i.e. above on the call-stack) other than the fact of what the current rule is.

Homoiconicity is exactly the property of a programming-language _grammar_ that allows code containing macros to pass cleanly through this initial "lexical parsing" step. Usually, this requires a separation of the grammar from the syntax of the language, such that the "lexical parsing" grammar will no longer directly produce any of the "special forms" of the language itself, but these will rather be later handled by a similar (or the same!) process as macro- expansion—consuming AST subtrees to produce other, more specialized AST subtrees.

Or, to put that another way: macros require top-down parsing. If you want to avoid using a full-on top-down parser, you can instead apply a traditional bottom-up context-free parser followed by applying a folding transformation to the generated tree to do "the rest" of the parsing. But, to achieve this parsing strategy, the property you have to imbue your language grammar with is called "homoiconicity."

<comment><USER6> Lisp macros (that the article is talking about) work with the same input and output language, not with two different languages/representations as is written. Macros can expand to other macros and even to themselves. It's an iterative process in which the intermediate pieces of tree have fewer and fewer macros until none are left. Other than not using macros, the target code is in the same language.

(In C, the preprocessing phase also works with the same input and output language. It's not a tree data structure, but rather a sequence of preprocessor tokens. Tokens in, tokens out. Parsing is then done in the next phases of translation. Macros have to do some light parsing in order to delimit the argument lists, of course, and to identify the operators like the token pasting ##, stringification # and whatever, plus to handle the preprocessing directives and #if expressions with arithmetic.)

</comment></comment></comment><comment><USER8> This is the most pedantic post I have ever read on the subject. The point is that code is data, enough said. You manipulate your functions the same way you manipulate lists, because they are the same thing.

Stuff like this is frankly why so many programmers shy away from lisp and s-expression based languages.

<comment><USER9> > The point is that code is data

That's the popular slogan, but there'a actually quite a lot more to it than that. After all, strings are data too, and C programs are represented as strings, so "code is data" in C too. But that is obviously missing the point.

What's really going on is that, in Lisp, code is a particular kind of data, specifically, it's a tree rather than a string. Therefore, some (but not all) of the program's structure is represented directly in the data structure in which it is represented, and that makes certain kinds of manipulations on code easier, and it makes other kinds of manipulations harder or even impossible. But (and this is the key point) the kinds of manipulations that are easier are the kind you actually want to do in general, and the kind that are harder or impossible are less useful. The reason for this is that the tree organizes the program into pieces that are (mostly) semantically meaningful, whereas representing the program as a string doesn't. It's the exact same phenomenon that makes it easier to manipulate HTML correctly using a DOM rather than with regular expressions.

<comment><USER10> _The reason for this is that the tree organizes the program into pieces that are (mostly) semantically meaningful, whereas representing the program as a string doesn 't. It's the exact same phenomenon that makes it easier to manipulate HTML correctly using a DOM rather than with regular expressions._

Mind. Blown. Your whole comment is incredible. I've never thought about it this way or realized what the value proposition was. Thanks!

<comment><USER9> Check out: [https://news.ycombinator.com/item?id=16395810](https://news.ycombinator.com/item?id=16395810)

</comment></comment></comment></comment><comment><USER11> But you can do this without S-expressions.

DLang, for example, has free-form macros that they weirdly call "mixin" (as in, mixing in some text or declarations into the AST, syntax-wise).

Each mixin must be a valid AST subtree on its own, which gives the same guarantee that paren matching prior to macro expansion gives you.

Then, the compiler can interleave:

         parsing

      -> evaluating mixin strings
      -> resuming parsing of the mixin subtrees
      -> evaluating the deeper mixin strings
      -> ...

You get the power of Lisp macros, but without the Lisp syntax that is unattractive to many.

</comment><comment><USER12> The languages I know typically have a fairly standard way of implementing functions - either values or references to values are passed as arguments and then the function does something. Maybe it returns a value. That means a construct that short circuits, such as:

`if is.open(file) && read(file) { ... }`

can't actually be implemented by a function. That is, you can't write a function:

`special_and(is.open(file), read(file), ...)`

Because the `read` is automatically evaluated before the function is called.

This means a programming language with lisp-style macros can very easily implement constructs that behave like `&&` and short circuit, because they are implemented as a macro instead of a function. This opens up new (& fast) ways to control program flow that aren't available to a lot of people. The profound impact is that lisp libraries can tack on new control structures in a way that, say, C can't.

I'm no language designer, so this is basically out there to see if I get corrected.

<comment><USER13> For some technical discussion of the order of evaluation of arguments: [https://en.wikipedia.org/wiki/Evaluation_strategy#Non- strict...](https://en.wikipedia.org/wiki/Evaluation_strategy#Non- strict_evaluation) (Short-circuiting is specifically mentioned as having relevance)

Note that even in a language which is generally strict, laziness can be provided selectively for individual values, and vice versa. Haskell's laziness has proven to be a cause of troublesome performance problems, sometimes needing to be solved by "strictness annotations"; the newer language Idris is strict, but offers laziness as a type.

[http://docs.idris-lang.org/en/latest/faq/faq.html#how- can-i-...](http://docs.idris-lang.org/en/latest/faq/faq.html#how-can-i-make- lazy-control-structures)

EDIT: phamilton beat me to it, maybe the links are still useful.

<comment><USER14> Scala also has lazy values and arguments as an option.

</comment></comment></comment><comment><USER15> I would not call that 'syntax tree', but something like 'token tree' or 'nested token lists'.

For the Lisp reader the form (+ 1 2) in

      (first '(+ 1 2))

and

      (* (+ 1 2) 3)

looks the same. It has no idea that the first is data or code represented as data. It has also no idea that the second is actual code and which syntax (here some prefix syntax) it uses.

All we represent is a bunch of tokens in nested lists.

</comment><comment><USER16> Short but interesting thread at the time: [https://news.ycombinator.com/item?id=3854262](https://news.ycombinator.com/item?id=3854262).

</comment><comment><USER17> If I understand correctly, homoiconicity isn't really about the symbols used in the source file to represent code are the same as the symbols used in the source file to represent data structures. It's really about the parse tree of the program using the same data structures that programs use for data, _and therefore you can operate on the parse tree just the same as you can on regular program data_.

<comment><USER18> This is probably the raisin d'être of homoiconicity but it's more specific a concept than that. It's a conceptual property on the grammar of the language: there need to be control characters/words in the grammar like spaces and parentheses so that the parser can correctly generate nested lists, or trees matching the intended AST, even when it doesn't necessarily have full information about what the languages set of operative keyword are. Basically the parser has to support adding new, user defined operators.

And then in addition to being able to parse user defined operators, then you have to have a decently organized, simple system for applying AST transformations and modifying tree objects. And there again homoconicity in the grammar can be useful if it makes it easy to textually serialize and set object attributes.

</comment></comment><comment><USER19> > None of this is to say that it's _impossible_ to design a macro system for > languages with non-Lispy syntax

For me this was most poignantly demonstrated by [https://chrisdone.com/z/](https://chrisdone.com/z/)

</comment><comment><USER20> I'm starting to think that the reason Lisp has never taken off outside a minority of users is that homoiconicity is a downside for the _human_ readers of the language; computers are happy to count brackets, but humans prefer either different types of brackets or other separators like ';' or 'newline'.

<comment><USER21> Brackets in lisp are like the stick shift in a car. It looks scary and dreadful to anyone who has never learned to use it.

Then, it turns out to be the easiest thing about the entire endeavour, and you forget about it in all of your first 10 minutes on the job.

<comment><USER22> That's your opinion, but I spent weeks with the Clojure book and various exercises and could honestly never get past the syntax.

Because of this I have zero interest in working with a lisp day-to-day, but there are multiple C-style langs I'd be happy working with for a day-job.

I think GPP is right in asserting that _most people_ just won't ever get over it, and you shouldn't be so quick to hand-wave their opinion away.

<comment><USER23> I introduced Clojure to a Java shop. We took 30 Java developers from zero experience in lisp to 100% Clojure developers. I have to say that my experience agrees with the parent. People didn't struggle with the syntax after a few days.

They struggled with functional programming and immutability. At least to start with. I actually found it amazing how easily people moved over and how enjoyable they found it. Out of 30 people only one didn't take to Clojure. He moved to a C# team for a while but eventually decided to rejoin and pick Clojure back up.

Obviously everyone is different but this was quite a good sample.

<comment><USER6> > _They struggled with functional programming and immutability._

So, i.e., they were struggling with just the stuff in Clojure that makes it a non-Lisp.

Those programmers should have been informed that there are real Lisps out there in which you don't have to do functional programming, and things are mutable.

<comment><USER24> Of course any true Scotsman that wants to program in a real lisp wouldn't use Clojure.

<comment><USER6> > _true Scotsman_

I'm not defending a generalization against counterexamples by trying to exclude them with a moving-goalpost definition.

Mutation and pure procedural programming are part of Lisp. They are part of Lisp when they are bad, and part of Lisp when they are good. I've never shifted a definition of what is Lisp to exclude or include these characteristics in order to suit an argument at hand.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> Guys it's simpler than that I think. First, homoiconicity means _one representation_ for code and data. Code and data are represented by the same data structure (in lisp it's list).

So what's it good for? Well, it's a generalise way of doing objects. In OO code, when you're given an object, say in parameter of a function, you're given data and, joy, you're given code as well. That's super handy because now data and _code-that-runs-on-those-data_ come in the same package. You dont have to know the details (and more importantly, you dont care about the details) of how that piece of code-and-data was made - Im looking at you polymorphism - you can interface your algorithm to it and things will run the way they are supposed to. Notice how your programming has become more powerful. You've decoupled things here: now you dont need to know how the code works, but you still can interface to it. Other teams can supply piece of code-and-data, and, as long as you've agreed on the interface, things will run. That's classy.

Now you could go one step further. You could go literally _matrix_ on this concept, and by changing virtually nothing. Let's just represent an object in a different, yet identical way: as an ordered list of members and methods - which it literally is. What's that cool for? Well now you have a list, you can splice it. You can add and remove code-and-data at will which is what you were doing when using polymorphism (you were swapping methods, adding members, that kind of stuff).

What's it good for? Step back a minute, what is polymorphism good for? We mentioned it before, it allows you to decouple implementation from execution. Well then, homoiconicity is good at the exact same thing. That's it, there is nothing more to say. If you understand what inheritance and polymorphism are good for, you understand what homoiconicity is good for: it's tools for representing and manipulating code-and-data. Notice how polymorphism and inheritance are tools from compile-time. Homoiconicity is the most usefull at compile time too, yet can be used at runtime as well.

All in all, that's why coding in lisp will make you a better programmer. OO languages and Lisp have the same goals. Only one is the nerd version of the other. Code in lisp and you'll come back to OOP thinking "this looks like BASIC now".

Ultimately, OO is good. The only thing that's bad with OO is that it's clunky in practice (what a pain to change a class hierarchy) and therefore gets in the way of _refactoring_. _Refactoring_ is the key difference between _waterfall_ and good software development. I had a friend who used to say "you should be refactoring 30% of the time" and I believe he's right. So while OO features are arguably good enough, programmers tend to waterfall with it and that's a killer.

</comment><comment><USER26> I have to admit I've never heard of the term homoiconicity before... Parsing it out, I clicked on the link thinking it might be an article about making icons or emoji on different platforms look similar.</comment>


Ask HN: How to discover/read quality content? - <AUTHOR> Nowadays I come across an attractive titled blog mostly from medium starts with a high pitch but usually, there will be generally available content presented in a bit polished way. Only to realize there is not much substance in the article.  Does anyone share similar experience? <comment><USER2> Not to hard-sell but I would recommend discovering content via sites like HN or Reddit where quality content gets upvoted. I built a tool[0] for curating quality content so you can share to friends.

[0][http://stackkup.com](http://stackkup.com)

</comment><comment><USER2> Here's a collection of your submitted HN links: [http://ec2-18-139-223-173.ap- southeast-1.compute.amazonaws.c...](http://ec2-18-139-223-173.ap- southeast-1.compute.amazonaws.com/shared/RXGTX)</comment>


Oracle finally launches Elastic Compute Cloud, 9 years after Amazon debuted EC2 - <AUTHOR> http://venturebeat.com/2015/10/27/oracle-finally-launches-elastic-compute-cloud-9-years-after-amazon-debuted-ec2/ <comment><USER2> This gets no comments? Oracle cloud engineers will be a little disappointed I'm sure.</comment>