The world's largest telescope is going to be built in Chile - <AUTHOR> http://www.vox.com/2014/12/5/7339349/extremely-large-telescope <comment><USER2> Chile is a wonderful country, generally very well run since Pinochet was deposed. They are developing world but they are really developing. The government runs a financial surplus and despite being really huge with an odd distribution of population (a huge percentage of the country lives in santiago) the infrastructure in remote parts is quite good. (Quite good on south american standards)

The country is running Startup Chile to build entrepreneurship, and has been pretty successful in jumpstarting a startup economy and culture.

I highly recommend if you get a chance to spend time in Chile, do so.

<comment><USER3> Chile is also approximately the safest country in Latin America.

Its murder rate is 5% that of Venezuela, 10% that of Colombia, 1/3 that of Peru, and almost half that of Argentina.

<comment><USER4> The murder rates in the other countries are mostly drug related gang on gang violence. I've spent the past four years in Latin America (Mexico, Guatemala, and Chile (was in Startup Chile)) and found Chile to be the sketchiest of places for lesser crimes against tourists like non-violent theft, or assault.

I lived in an apartment with three others, and we were all robbed during the 8 months in Santiago, violently in some cases, and non-violently in other cases. I knew lots of others who were also robbed.

The rest of my years in other Latin American countires, including hitchhiking from Chile back up to Guatemala after Startup Chile was completely safe and uneventful.

<comment><USER5> What part of Santiago? At this moment, I'm staying at a hotel in Las Condes. This part of the city seems very safe, but I've taken the subway to other parts of the city, and never felt unsafe in those other places either. Part of my strategy is to blend in with my attire, mannerisms, and attitude. My Spanish is currently rudimentary at best, but I still manage not to stick out like a sore thumb and "shout" that I'm a tourist with my actions.

If you stand out like a tourist, it seems like no matter where you are in the world, you will be taken advantage of.

<comment><USER4> I agree about standing out. But as someone that lived in other countries down there for three years before moving to Chile and speaks Spanish, this definitely wasn't the case for me.

Are you in Startup Chile?

Just watch your backpack on the subway or walking through busy streets. During my time there my female room mate had her wallet taken from her backpack at the market and some big charges racked up on her credit card before she noticed.

A month later her parents visited and they climbed Cerro San Cristobal in the middle of the day and had three young guys come out and beat them with sticks to steal their bags. Lots of bruises and stitches.

Another had a iPhone ripped out of her hand while she was using it on the street. Another had his laptop stolen out of his bag on a bus to the coast. Laptops were also stolen by people who just walked into the co-working space that Startup Chile uses.

There's no reason to be scared in Chile. I always felt safe, but don't let the title of safest place in Latin America based on comparative murder rates make you forget that you're still a possible target for a robbery. And based on nothing but my own experience and people I knew, more so than any other place I've ever visited.

<comment><USER5> I'm not in Startup Chile, just visiting my grandfather and doing some sightseeing. I use an over-the-shoulder bag like many of the businessmen here use. I only keep valuables in one pants pocket that I can be more aware of and control access to rather than using multiple pockets.

Being attacked with sticks to steal bags is pretty bad, it would be difficult to try to prevent that. Poor access control and letting people walk in to steal stuff is not good either. It seems to me that the rest can be prevented by having better control over one's belongings and being more aware of their environment. The same things happen to Americans in the US.

In highschool, I would mess with my friends by either removing things from their backpacks while walking behind them in crowded hallways, add random things to their backpacks, or put things in their pockets without them noticing. I would also tie their shoelaces to desks or backpacks when they weren't paying attention. Even though it was just highschool, it taught me that most people don't pay attention to their stuff, themselves, or the things around them.

Since I've traveled a lot internationally for school, work, and family, I've learned to operate in "Condition Yellow" (Cooper Color Code) and I've never had any problems.

</comment></comment></comment></comment></comment></comment><comment><USER6> Sweet!

My uncle is an astronomer for NOAO and worked at the Blanco Telescope in Chile for a while. The things he'd talk about absolutely blew my mind, even if they were quite often miles above my head (heeyo).

One of my favorite observations of his teams' was when they found galaxies stealing stars from one another.

[http://www.noao.edu/news/2011/pr1102.php](http://www.noao.edu/news/2011/pr1102.php)

[http://news.nationalgeographic.com/news/2011/07/110720-galax...](http://news.nationalgeographic.com/news/2011/07/110720-galaxies- stars-stealing-space-science/)

Fun anecdote - his twin brother is also an astronomer. They're quite funny in the same room together, as they're... slightly competitive with their theoretical understandings.

</comment><comment><USER7> There's a nice panorama of the site here:

[https://www.google.com/maps/dir/B-710,+Antofagasta,+Chile/An...](https://www.google.com/maps/dir/B-710,+Antofagasta,+Chile/Antofagasta,+Chile/@-24.589167,-70.192222,3a,85.3y,340.77h,80.14t/data=!3m5!1e1!3m3!1sk7SpJLlWnPoAAAQYElAd3Q!2e0!3e11!4m13!4m12!1m5!1m1!1s0x96a54c5bd46fe8e7:0x6ae77ca03d469e11!2m2!1d-70.3333962!2d-24.5577022!1m5!1m1!1s0x96a58a1999656469:0x9fbe15f44d1e6f96!2m2!1d-70.4!2d-23.65)

Looks like it's a couple of hours drive to the nearest city, Antofagasta. That will be a lonely stay for those working there. On the plus side they will probably average 364 nights a year of good viewing weather.

<comment><USER8> My astronomy professor talked about that place. Apparently it has nice living facilities and lots of researchers there.

Far from being lonely, he glowingly described it as a place where young, attractive, incredibly intelligent & mostly single grad students get to come together to do astronomy research in between watching re-runs of Contact. This location is like an Olympic Village for astronomers; with this telescope, a mecca.

</comment></comment><comment><USER9> Here's that telescope scale comparison in svg: [https://upload.wikimedia.org/wikipedia/commons/c/c5/Comparis...](https://upload.wikimedia.org/wikipedia/commons/c/c5/Comparison_optical_telescope_primary_mirrors.svg)

</comment><comment><USER10> Too bad the OverWhelmingly Large Telescope (OWL) did not make it.

<comment><USER11> Yeah, too bad, but the thing I wonder is, if it got built, what would they name the next, bigger, one.

<comment><USER12> "Oppressively colossal"? :) [https://xkcd.com/1294/](https://xkcd.com/1294/)

</comment></comment></comment><comment><USER13> The Colossus telescope is also a nice proposal that fits in the $1bn pricetag, if its proponents are to be believed:

[http://the-colossus.com/technology.html](http://the- colossus.com/technology.html)

Basically, a 74m telescope made of independent 8m mirrors, with a very narrow field of view (a few arcseconds), dedicated to extrasolar planets and other small FoV astronomical science.

</comment><comment><USER14> Note that this telescope has sorta been in 'competition' with the Thirty Meter Telescope--they're similar technologies being used and they even use basically the same hexagonal submirrors.

It will be interesting to see who sees first light first. (I think right now, TMT is scheduled to be first, but we'll see if that holds.)

</comment><comment><USER15> How much more resolution will this have compared to Hubble? I know this is on earth, while Hubble is in space, so I assume Hubble avoids the distortions from the earth's atmosphere, but I'm not sure exactly how much of an advantage this is for Hubble.

</comment><comment><USER16> I like astronomers' way of naming things...so simple.

</comment><comment><USER17> I wish they'd talked more about the novel five-mirror design. The YouTube video mentions it very, very briefly.</comment>


Dell UK is charging £16.25 to Install Firefox, Mozilla denied for any such Deal - <AUTHOR> http://www.techcomunication.com/dell-uk-is-charging-16-25-to-install-firefox-mozilla-denied-for-any-such-deal/

<comment><USER2> I can see why people might choose to pick this option when ordering a computer for a less computer savvy friend or relative. Finding and downloading Firefox safely is not trivial if you aren't very tech literate. I just did a search for "firefox" on Google a few moments ago and these are the top 'results': [http://i.imgur.com/FZDn4rB.png](http://i.imgur.com/FZDn4rB.png) Obviously most HN users will notice that those ads don't point to the official Mozilla site, but to dodgy third party sites where the software is bundled with spyware and toolbars.

It's all well and good for Mozilla to be questioning Dell over charging for this, but perhaps they should also spend some time trying to make it so that users can find Firefox safely from the biggest search engine in the world. Mozilla have plenty of experience at public relations. When they want to they can get their press releases and stories in just about every tech news sites in the world (this story being an apparent example of that, this is the second submission to HN because it is being so widely reported). If Google are refusing to sort out the problem[1] then Mozilla need to put up some fight and get the public on their side. Put together stories with screenshots and explain the security and privacy risks of the spyware and rogue browser extensions that those sites bundle.

[1] which seems to be the situation; I've been noticing these malware ads for the last year or so (and they've probably been around a lot longer) and apparently repeated complains have been raised

<comment><USER3> I expect people do raise the issue with malware ads with Google, but as stated its a Google problem and not much Mozilla can do about it.

Why in the hell would mozilla be pushing this as PR?

<comment><USER2> >its a Google problem and not much Mozilla can do about it.

What they can do about it is complain loudly and publicly to try and force Google to stop their shitty behaviour. The same way they engaged in PR campaigns about Firefox not being allowed on iOS or H264 requiring patent licences, or dozens of other topics.

>Why in the hell would mozilla be pushing this as PR?

Because that seems to be the only solution left open to them to try and stop millions of users of their software being infected with malware. Are you saying that Mozilla should only talk to the media when it is about ideological political things like software patents, and not about real world threats to their users?

<comment><USER3> 'this' meant the story about Dell 'selling' Firefox, which will probably end up as a bit of a shitty thing to do but likely within their rights. You seem to have reached a confusing conclusion that this is out the the Mozilla PR machine.

</comment></comment></comment></comment><comment><USER4> What is the problem? Someone has to be paid for the time they spend on the installation. Bearing in mind it takes a minute or so max. for this job, hourly rates (or profits) at Dell must be mouth-watering.

<comment><USER5> The problem is Mozilla's trademark policy [1]:

"If you are using the Mozilla Mark(s) for the unaltered binaries you are distributing, you may not charge for that product. By not charging, we mean the Mozilla product must be without cost and its distribution [...] may not be [...] tied to purchasing a service"

IANAL, but Dell is free to charge for the installation, but then they need to call it the Arctic Bear Browser.

[1]: [http://www.mozilla.org/en- US/foundation/trademarks/policy/](http://www.mozilla.org/en- US/foundation/trademarks/policy/)

<comment><USER6> They're not charging to "distribute" firefox as a product in this instance, they are simply charging for the service/time to install it so I don't think this applies, it wouldn't be any different from geek squad etc charging to install firefox on a PC (IANAL).

<comment><USER7> That sounds like semantics.

Couldn't you say the same for any service where you _actually_ distribute it as well? "I'm not distributing it, I'm simple charging for the service of easy installation".

(I'm also not AL, though...)

<comment><USER8> I've never understood the complaint that something is "just semantics", or "you're arguing semantics".

If someone can't argue based on the meaning of the words in a piece of text, what else can they argue about? The grammar? The spelling? Surely we _only_ want arguments based on semantics!

<comment><USER9> The meaning of the sentence as a whole. "Just semantics" is used when you hinge your argument on the subtleties of meaning of one word.

</comment></comment></comment></comment></comment></comment><comment><USER10> A couple of thoughts:

1 - Windows comes with a 'Browser Choice' icon on the desktop out of the box, it can't be that difficult to install Firefox, even if you're a novice user.

2 - I doubt that they have a single person going through and running the Firefox installer each time somebody checks that box. It's more likely that they use a different image for the computer, one with Firefox preinstalled.

3 - I'd be dubious to accept a preinstalled version of a browser. Let alone from Dell. The first thing I'd do with a new computer from an OEM is remove all of the preinstalled crap. Who is this geared towards?

4 - I feel like I'm missing a trick here. £16.25 for one version of Firefox!? I should get on to Apple and see about bundling my "Install all Firefoxes" shell script, and charge per version installed from there... £455 for every new Mac would be nice! [https://github.com/omgmog/install-all- firefox](https://github.com/omgmog/install-all-firefox)

<comment><USER11> 1\. It can be surprisingly hard to install free software without getting crapware bundled installers. Look at java...

2\. If only 1 order of 1000 has the option checked, then that order alone would have to cover the cost of setting up that image. Automation isn't free.

</comment></comment><comment><USER12> So... I can pay more so I can check a box on Dell's site now instead of on Ninite's site later?

</comment><comment><USER11> I don't see the point, they are charging to install software, is that upsetting? Is it the fact that it is free software they are charging for that is upsetting?

I can't see the standpoint of mozilla either, surely you can't be required to have permission to use a "brand name" just because you mention that you can install some software for a fee? EDIT: I _did_ read mozillas terms, but still think it makes no sense.

If I set up a store selling computers, surely I can, without permission of software manufacturers, allow customers a choice of software and offer to purchase a license & preinstall the software for the customer?

<comment><USER13> The point is that they're monetizing Mozilla property by using their trademarks and their name recognition without permission.

      If I set up a store selling computers, surely I can, without permission of software manufacturers, allow customers a choice of software and offer to purchase a license & preinstall the software for the customer?

Not if you use their trademarks to push your products and services.

<comment><USER11> Is the issue that there is a cost directly attributed to the trademarked software? If Dell lets users choose from a list of products to preinstall without cost would that then make it acceptable? What if the system has a fixed fee for build/setup? What if that fee is dependent on the number of different products chosen? At what point are they really "charging" for trademarked software?

I can see how it is a bad thing for Mozilla if dell charges and uses their trademark, but shouldn't it be easy to circumvent by just moving the charges around on the order page?

<comment><USER13> It would be extremely easy to circumvent.

Sell it as the Dell Software Power Bundle for 50 quid, or so. My take of the problem that there's a direct cost involved as soon as you add Firefox to your order and that's clearly against Mozilla's guidelines.

</comment></comment></comment></comment><comment><USER14> I don't see anything wrong with this. If the option is selected, probably someone at the shipping out location (or retail location) manually will install firefox, or windows image with firefox on it. It is perfectly fine. Even if automated, automation is not free. Are they overcharging? Probably.

I disagree that it does not follow mozilla's terms, they are selling the service, as stated, not the browser.

</comment><comment><USER15> Not particularly bothered about that. I charge a minimum of £30+VAT to do exactly the same if someone asks me.

</comment><comment><USER16> Please read the HN guidelines and submit the original source. This blog is written by someone who is not even fluent in English.

<comment><USER17> For the 'not fluent' part, you are being harsh (and kind of rude). Not everybody can be fluent on Californian tech-community english. The post is in english, easy to understand and there is no ambiguity.

Yes, post from foreigner for who english is not their first language can have mistakes, but tolerance and constructive criticism is the way.

Sorry for the rant, your point about the "original source" still stand. Even more in this case where the original source is a major newspaper, and supposedly more trustworthy.

<comment><USER18> I could not agree more.</comment></comment></comment>


RL3: a rule-based information-extraction and entity-recognition engine - <AUTHOR> https://rl3.zorallabs.com/wiki/Main_Page <comment><USER2> Not free [https://rl3.zorallabs.com/wiki/RL3_License](https://rl3.zorallabs.com/wiki/RL3_License)

<comment><USER3> Yes it's a bit sad to see a project that otherwise would be interesting.

</comment></comment><comment><USER4> Seems to be as complicated as regex to me. Perhaps I am missing something? Any other libraries like this that are decent at this and simplify the problem?

<comment><USER5> I don't know if any are simpler, but here's a stack overflow question that points to other similar tools: [https://stackoverflow.com/questions/17891932/open-source- rul...](https://stackoverflow.com/questions/17891932/open-source-rule-based- pattern-matching-information-extraction-frameworks)

<comment><AUTHOR> We started RL3 (more than 10 years ago) because we had several projects with a huge number of patterns. We found other projects (present at that moment) were too heavy on a syntax, which make it complicated to support / manage large library of patterns. So, we tried to keep the power of regex, add new features (like named patterns, modules, templates and lookup dictionaries) but minimize additional syntax... as result we were able to enable team of computational linguists (i.e. not programmers) quite easily develop and support huge libraries of NER patterns and document classification rules.

<comment><USER6> Are there any public projects based on this engine?

<comment><AUTHOR> Yes. The most notable are [https://www.aihitdata.com](https://www.aihitdata.com) and [https://www.happygrumpy.com](https://www.happygrumpy.com) First crawls corporate websites (~25 millions) and extracts key information such as people, contacts, etc. Second is a sentiment analysis tool.

<comment><USER6> Thanks. Consider expanding the docs with more examples on how to extract different types of structured data.

</comment></comment></comment></comment></comment></comment><comment><USER7> Self-promoting our own Duckling [https://duckling.wit.ai/](https://duckling.wit.ai/) which has rules, but "prioritized" by ML -- and BSD license.

</comment><comment><USER8> this is a lot like instaparse, which I think has a much better api, but is on the jvm, and may not perform as well. I haven't used it to perform something like a regex capture, but it may not be hard to do so.</comment>


Constructed Worlds (2017) - <AUTHOR> https://www.newyorker.com/magazine/2017/01/23/constructed-worlds <comment><AUTHOR> > "Do you think," the professor was saying, "that you could spend two hours > reading the same passage, the same sentence, even the same word? Do you > think you might find it tedious or boring?"

This sentence remained with me for two days. Then I went back to the article and tried to read this sentence for two hours. But I was bored after reading a few times. I understand why. Because I got its meaning! Once I understood its meaning it makes no sense to read it again and again. So the Prof. must have meant to read a sentence you don't understand again and again until you understand it. Are there such intractable sentences? Or, maybe if I read this sentence for 2 hours I would extract new meanings.

<comment><USER2> Have you listened to the same song over and over again before?

<comment><AUTHOR> I guess the same applies to all repetitions. I thought reading repetitively was different.</comment></comment></comment>


Ask HN: Investment ideas - not-ephemeral

Hello! I'm a software developer working for a very large company. I spend a lot of time working and don't have much time to invest (financially). Apart from company retirement plan, and stock options, I keep all my money in a checking account.
There are loads of information available online but being a cautious, controlling introvert, I'm having trouble starting.
I'm 33, make an average salary, in the bay area, single, have no debt, live within my means and willing to take high risks. About 27% of my income goes to company retirement plan and besides real estate what do fellow programmers recommend/do to grow their money? How would you invest 50, 75, 100k, that you don't need immediately? I'm interested in both short and long term.
Thank You! <comment><AUTHOR> I'm following the boglehead philosophy [http://www.bogleheads.org/wiki/Bogleheads_Investment_Philoso...](http://www.bogleheads.org/wiki/Bogleheads_Investment_Philosophy)

Picking individual stokcs requires a lot of time , energy and knowledge.

Since I need to put my focus on the things that is working and brings income, I do not want to distract myself.

If this method can be broken down into steps, it would be 1\. Decide your Asset allocation. eg : US stocks 20% US bonds 20% Developed market 20% Emerging Market 10% REITS 20% 2\. Pick low MER ETFs for each category. 3\. Check & Rebalance your portfolio regularly. 4\. No matter what happens stick to your asset allocation.

There are many books explaining this. "THe blogleheads' guide to investing" would be good start.

You cannot become like a next Warren Buffett with this strategy. But you can focus on the things you are good at, while your money is growing.

</comment><comment><USER2> None of this is advice. I just like talking about this stuff.

One of the ways to get familiar with investing is to buy shares in an ETF on the S&P 500. ETFs are like mutual funds traded on exchanges; you probably know that but maybe you don't.

I mean, it's not about making money so much as you will get to experience being a part of the American growth machine. S&P down 12 points? Well, how come? Oh, this company tanked it? But these other ones are doing well…is an example thought process on a day as owner of said ETF. Owning stocks and funds holding stocks will change how you think about money and value and companies in general. There is something deeply powerful about having skin in the game with the success of others' companies.

</comment><comment><USER3> "I spend a lot of time working and don't have much time to invest"

vs

"willing to take high risks"

This is only achievable through outsourcing, meaning you'd have to hand you're portfolio to somebody you trust. My advice is to take the little free time you have and shop around for an investment guru you trust.

I have a hard time trusting people with my money so I prefer real estate, it's tangible, it's there, I can see it, only a natural disaster (an act of God) could take it away.

I'm looking at rental property through a real estate management company so that way I don't have to do anything. I think it's a win-win, get some rental income + hold on to real estate over time should go up.

</comment><comment> not-ephemeral Thank You everyone for the comments. The more I think about it, I should have also put, I'm willing to take risks and put more effort into it.

I've been looking at EFTs Vanguard and stocks mainly Tesla, but worried if I'm late

Are there any stocks y'all like these days? Short or Long term.

</comment><comment><USER4> 10% in Bitcoin

</comment><comment><USER5> Buy Buffett's shares. People pay $1M to have a meal with the guy, he might be up to something :)

</comment><comment><USER6> Read 'The Wealthy Barber'

I'll give you a spoiler: compounding interest.

</comment><comment><USER7> wealthfront.com or another such service. Automatically rebalances for you.

<comment><USER8> Do you have an account with Wealthfront? I'm curious to hear about peoples' experiences with it.

<comment><USER7> I don't actually, mostly because I have been in school since I learned about it and haven't made any money since then to put in an account. Realistically, my understanding is that they are essentially using Vanguard ETFs. Their trick is that they actively manage your portfolio. If you are willing to spend the time to constantly rebalance your holdings (and have a good knowledge of ETF betas so you choose them correctly from the outset), then it is definitely better for you to do it yourself. The fact is that most people don't do this -- I know I won't. Not rebalancing can have a MAJOR negative effect long term on your portfolio, so I would rather be guaranteed to give up a small percent of returns than have exposure to future economic/market downturns as I get older.

</comment></comment></comment><comment><USER9> Given your situation, you should not go for short term for sure as you don't have much time to follow it. For long term you should try things like fixed deposit which have sure returns.

<comment><USER10> He did say "willing to take high risks" though.

<comment><USER9> He might be willing now. But I have seen many people interested initially who repented later. Also I gave a suggestion based on his busy schedule.

</comment></comment></comment><comment><USER11> "Hello! I'm a software developer working for a very large company" \--> why not invest in a startup?Or in some good developers who can make a good product. I mean u know software development...why go and invest in domains that you do not know ?</comment>


Your Body Double Could Be This Robot - <AUTHOR> http://blogs.wsj.com/venturecapital/2012/09/10/your-body-double-could-be-this-robot-some-call-facetime-on-wheels/

<comment><USER2> I think they might find Will Wright who was doing this with laptops in Berkeley at the Stupid Fun Club and Trevor Blackwell at Androbot are way ahead of them.

Not that it is a bad idea, its a great idea, but its also a well trod path, so there is a lot of stuff out there to learn from.

</comment><comment><USER3> I think they mean "This Robot Could Be Your Body Double"</comment>


Can screen time replace the warmth of a hug? Prisons make a big push on devices - <AUTHOR> https://www.fastcompany.com/90249550/can-screen-time-replace-the-warmth-of-a-hug-prisons-make-a-big-push-on-devices <comment> crooked-v > Video rates similarly vary: a 20-minute session costs $5 if you're > contacting inmates of the Franklin County Jail in Massachusetts, $10 to > reach the Cochise County Jail in Arizona, and $12.99 for those with loved > ones in custody at the Hinds County Detention Services in Mississippi, > according to Securus price charts. Inmates and their contacts generally also > pay for text and photo messages.</comment>


Ask HN: Is PHP dead for startups? Could PHP revive? - <AUTHOR>

New PHP frameworks like Lithium or Symfony 2 are awesome, but it is hard to see new startups on PHP. Could PHP revive for startups? I would like to know the thoughts of HN community about this. <comment><USER2> I don't have any startup cred but I do fun personal projects. Here's my take ...

I used to code web apps in Python. Started playing with PHP about a year ago and enjoyed it. I had a hard time figuring out the right framework to use. There's just a ton of choices ... each with some good ideas. Perhaps it was that or my own fault, but I would just hack out projects with straight PHP - no frameworks! This wasn't the fastest thing in the world but works well enough.

Two weeks ago, I did a hackathon where my partner did his piece in RubyOnRails and I did mine in straight PHP. Needless to say, I was shocked at our productivity difference. Since then, I've been learning RoR and have been blown away. Why am I okay learning the rails framework as opposed to frameworks in PHP (or for that matter, Python). I think it is because there is just one. It means a more focused community, and gives me more confidence in investing in learning and adapting to the framework.

So ... less choice is good in my opinion (and others - there's even a book about it ... "Paradox of Choice").

<comment><USER3> Choosing rails because there is only one well known framework for ruby seems awesomely flawed for me.

If rails doesn't work the way you want, or makes something unnecessarily difficult/complex, your options are a) bend to the will of rails or b) switch language and framework, which means any existing code is basically useless after switching over.

Choice is not a bad thing. If people are seriously using the lack of choices with ruby as a positive argument there is something truly wrong with the world.

<comment><USER4> You missed the whole point. He explained that productivity was the force that pushed him into Rails, and more focused community on only one framework (actually there are more frameworks like Sinatra for example) is advantage in bigger picture (more mature code, more ppl working on the project, more knowledge resources on the net, less diversification of job market etc).

Having a choice is not bad thing, but having too many choices can be.

<comment><USER3> The claimed productivity boost was between vanilla PHP and Rails, so it's already a poor comparison.

Add to that, the reason he was using vanilla PHP is because he couldn't choose a framework, and his whole argument seems pretty flimsy to me.

<comment><USER4> Vanilla PHP by itself is a framework (as template language for the web) with many API that vanilla Ruby is not providing. If you will compare both in this way it will be poor comparison too right ? My point is that you can't compare PHP with anything on the market in this dimensions.

PHP could be productive in the past, currently PHP frameworks are trying to fix fundamental flaws of language architecture and my subjective opinions is that they are constantly failing, language can't be fixed by building frameworks on top of it. This is IMHO the big win for Rails, Django, Node.js, they don't fix the language, they just don't need to, they extend it and provide productive framework to complete much different task, build end-user application right ?

<comment><USER3> No, PHP is not a framework, it's a language.

<comment><USER5> People say PHP is a templating language because it allows inline code. I think that's what he meant.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Our startup is built on PHP and it's quite amazing how many people look at it and then say "I assume it's build on Rails?". I know a lot of people running new startups and a fair few of them are running on PHP versus something like Ruby.

I wouldn't stay it's dead by any means.

</comment><comment><USER7> I have a full time job, young kids and I work on some small web projects in my spare time. I started on PHP as my first language many years ago and I am at the point where I can get anything done I need to in PHP and I enjoy solving problems with code. I use a lightweight framework (Codeigniter) because it saves me from having to write my own.

For me, exploring different languages, frameworks, platforms etc is a luxury I don't have time for. PHP works for me and on the list of things that are adversely affecting my projects it is way down near the bottom after getting users, revenue, marketing, scaling, one-click deployments, testing, design, databases, backups, security, sleep, motivation, server costs, monitoring etc.

At the end of the day basically every language/framework/server is just spitting out HTML/CSS/JS text to a browser so as long as it does that OK then I am happy to focus on building the business.

</comment><comment><USER8> My startup is built on PHP. I chose to use CakePHP for MVC goodness.

My choice of PHP was due to easy deploy (no heroku when we started). And I was scared off from more glitzy languages/frameworks like Ruby/Rails due to talk about performance issues.

So far no complaints. PHP is one ugly language, but it gets the job done ;)

</comment><comment><USER9> I guess it wouldn't be good marketing to say "hey, here's my new project done in PHP!" so even if you actually enjoy working with PHP you probably end up not talking much about it. I know that's what I do.

I don't see it go away anytime soon but I also don't expect it to grow since most new developers probably run away from it and to more talked about stuff like Ruby. Still, I have recently heard some stories about how Rails is losing its hype.

Finally, when I had to choose a framework to work on I chose to go with CodeIgniter for its freedom (no conventions) while giving you MVC (and models being optional) and the dead simple but complete documentation.

PHP is like C#, startups don't talk about it but it's what the rest of the world use.

</comment><comment><USER10> We use CakePHP. Our MVP was hacked from Drupal, but we trashed that quickly due to performance issues with our project management system.

I think there are plenty of startups using PHP. It just isn't quite as trendy, so you don't hear about it as much. There are many reasons to pick PHP over Ruby/Python. PHP and its frameworks tend to be quicker to start working with, and PHP often executes faster (sometimes much faster) than Ruby or Python ever will. Apps that need to scale would probably do better to use PHP/HipHop than Django or Rails. Plus, there are definitely more PHP programmers out there than Python/Ruby, so there is the added benefit of having a larger pool of talent to hire from.

</comment><comment><USER3> I read an article recently saying that many VCs basically have hard ons for things like Rails etc, regardless of any merits each language may or may not have for the application being built.

Once again, corporate suits are driving technology decisions with little or no relevant experience or training.

</comment><comment><USER11> PHP is a tool. It's neither dead nor alive. Only your startup can be dead or alive. Stop worrying and start writing with whatever tools you like.

</comment><comment><USER12> We're building off of PHP because we feel most comfortable with it. (Framework: CodeIgniter)

Anyone who writes us off for using PHP can get lost.

</comment><comment><USER13> Frameworks are for dummies. Startups should roll their own. On that front, PHP is no better or worse than any other language. It just IS. If you're getting hung up on what framework to use, because you can't roll your own code for a bunch of custom pages, just use a damn CMS and stop pretending to be a coder =)

<comment><USER14> I disagree. Everyone should piggyback on the work done in the past until they need something different. Then with the beauty of open source, they can.

Years ago, I worked with Symfony 1 under a start up brand. As the lead, I extensively re-engineered Symfony to the point where very little of it was left---the router, session software, configuration reader, caching mechanisms were completely changed, and the database ORM (Propel at the time) was extensively refactored.

However, we were in the business of making a product, finding users, and delivering value---not the business of software architecture.

As such, we waited till we hit a pain point in the software before modifying it. If we knew in advance that we needed something custom, we did so. If we didn't then we didn't practice NIH egotism just for the sake of calling ourselves "real coders(tm)".</comment></comment>


Ask HN: Marketing Pros out there? - <AUTHOR> Hey Marketing pros -
What specific pains are being felt by Marketing teams out there?  Companies or even an indie band trying to get the word out.
Everybody needs more customers. Have an idea for an app, that will plug into your social media outlets, auto or manually engage with fans on an event basis (new like, follower, etc..) - and learn over time which actions are increasing engagement.
This tool doesn't just schedule or cross-post, but automatically a/b test and find the interactions that are leading to engagement, lead, sale. <comment><USER2> you need to engage with those that are NOT your fans.</comment>


What is Flask-Admin? - <AUTHOR> http://mrjoes.github.io/2015/06/17/flask-admin-120.html <comment><USER2> The great thing about the Django Admin is that - because it was actually part of the Django itself - there is a whole ecosystem of extensions, add-ons, skins etc for it.

Any attempts to replace it for Django would have an uphill struggle for that reason alone.

This is one side-effect of an opinionated framework - the provision of a default choice facilitates cooperation and prevents fragmentation.

(We recently picked up a Pyramid project and I was rather surprised how big the impact was of the extra choice. Simply in terms of searching for answers to questions - we often had to find an answer from someone who was using the same combination of parts that we were using. And figuring out how to do x often fell into the gaps in the docs between two components and was therefore harder to figure out)

<comment><USER3> Possibly you also ran into the Q/A problem because there are many more people who use Django and common issues/gotchas that people encounter have mostly been explored and documented. I haven't used Pyramid but I would imagine the user base is somewhat smaller.

</comment></comment><comment><USER4> > Yes, default Bootstrap skin looks boring and unprofessional,

Sigh... bootstrap didn't get where it is by looking unprofessional.

I also don't understand wanting every admin interface one comes across to be a special snowflake, the opposite of what should be the case. We've known for at least 30 years (Apple HIG) that a standardized look and feel is a benefit to users, not a detriment. Not to mention dev maintainability.

I suppose billable hours decrease when reinventing the wheel is no longer necessary.

<comment><AUTHOR> Uh, that's typical rhetoric about default Bootstrap interface. Like if someone used default bootstrap skin then he's just lazy and didn't really care. Thus unprofessional.

Personally, I think that Bootstrap interface is good enough, but its widespread adoption lead to the perception I mentioned above.

<comment><USER5> The fact that Bootstrap is widespread, and therefore perceived by some unprofessional, does not make a user using it unprofessional, nor does it make the framework unprofessional.

Are Django or Flask unprofessional since they are widespread?

<comment><AUTHOR> Unfortunately, you can't compare development frameworks to UI frameworks. No one knows that you're a dog on the Internet. But anyone without technical knowledge can see a site that's built with the default Bootstrap skin and say - hey, I saw it before.

Bootstrap is good and clean framework, it is _great_ for developers. But just because it is so widespread and highly visible, there's some of prejudice around it.

Nonetheless, I'm using Bootstrap in my projects and happy with it.

<comment><USER6> I think this prejudice only exists within this community where if you aren't that special snowflake you're not cool. I'd guess 99% of web traffic has no clue what Bootstrap is, what it looks like by default, how it is different when it is skinned. I would guess more than anything that they just think, this is what a website looks like now-a-days.

I'm happy to use it too with very minimal tweaking because it looks good out of the box, way more pleasant than browser defaults, it works well, fairly well maintained.

</comment></comment></comment></comment></comment><comment><USER7> From the documentation at [http://flask- admin.readthedocs.org/en/latest/](http://flask- admin.readthedocs.org/en/latest/)

Flask-Admin is a batteries-included, simple-to-use Flask extension that lets you add admin interfaces to Flask applications. It is inspired by the django- admin package, but implemented in such a way that the developer has total control of the look, feel and functionality of the resulting application.

</comment><comment><USER8> I especially like, that I can use Flask-Admin with Peewee ORM - [https://peewee.readthedocs.org/en/latest/](https://peewee.readthedocs.org/en/latest/) \- instead of SQLAlchemy, because I feel so much more comfortable with Peewee when doing small CRUD projects. SQLAlchemy is a lot more powerful, but the learning curve (at least for me) is steeper than with Peewee. Flask-Admin is a beautiful piece of software to get Flask backends set up quickly.

<comment><USER9> Seconding this. Peewee is a breeze to set up and use compared to SQLAlchemy.

<comment><USER10> I haven't used it myself, but I took a good look at the code for PeeWee for some changes I wanted to make to Django. It's incredibly well written, and weighs in at about 4000 LoC including 3 database specific dialects (pg, mysql, sqlite).

For anyone interested in how an ORM could be implemented, check it out: [https://github.com/coleifer/peewee/blob/master/peewee.py](https://github.com/coleifer/peewee/blob/master/peewee.py)

</comment></comment></comment><comment><USER11> Getting the admin-interface correct is one of those holy grails. The problem I typically run into is adding complex wizards or features outside of the standard crud stack.

When I'm investigating an out of the box admin interface I'm _less concerned_ about how they handle CRUD; that's the easy part. Really I need to know how they handle things that go well beyond their stack.

For example, in one application we need to create events for people (like google calendar). You need to be able to search for people, show the system what they already have assigned at that time and allow you to choose times that are best for everyone in the list. This has been designed as a multi-step wizard and it works great but it was a ton of custom code. Looking at the online documentation of flask I'm not sure how I would go about integrating something like this.

<comment><USER2> To take your example - it's fairly simple to incorporate the standard Django form wizard into a custom admin page: [https://docs.djangoproject.com/en/1.4/ref/contrib/formtools/...](https://docs.djangoproject.com/en/1.4/ref/contrib/formtools/form- wizard/)

There is a large number of fairly clean well-documented extension points in the Django admin. You can override forms, templates, widgets, entire pages, querysets, search logic etc etc.

In the same way that the answer to questions about Django are often answered by "You're over-thinking it. It's just Python" \- many questions about the Django admin can be answered by "You're over-thinking it. It's just Django"

</comment></comment><comment><USER12> I have the feeling that flask has been neglected for a while. The last release 0.10.1 was on Jun 14, 2013. The mastermind behind Flask, Armin Ronacher, is more into Rust nowadays. I once started a big codebase on Flask and had to move away from it because of some really strange bugs and bad interplay of officially approved packages. The idea behind Flask is nice and there are great plugins out there like Flask-Admin but I don't trust that code base anymore. Also I found a weird bug that kept Flask from answering more than about 500 requests per second and nothing happened since then. For me it was the right decision to jump to Go.

<comment><USER13> Agree. Its been 2 years since the last flask release, 1 year since last jinja2 release, as an exception werkzeug had a release 3 months back. But, if we look at pull requests and commits, there has been continuous development in all the repos with new maintainers - [https://github.com/pocoo/metaflask](https://github.com/pocoo/metaflask)

Unlike fullstack frameworks, Flask being a minimalistic framework, needs very little changes to the core, as long as the extensions fill in the gaps.

But still the new commits to the core need to be packaged and released as stable features/fixes. Hope Armin and new maintainers understand importance of releases.

Anyway, great framework.

</comment></comment><comment><USER14> Nice. Definitely something that I miss when using Express for a UI-centric project. Seemed like only the "kitchen sink" frameworks (Rails, Django) had decent CRUD/admin UI options.

</comment><comment><USER15> I use Flask-Admin in production, it is great! It definitely saved me a lot of dev hours. Thanks for this awesome tool.

</comment><comment><USER16> Any comment on the comparison with Flask-AppBuilder [https://github.com/dpgaspar/Flask- AppBuilder](https://github.com/dpgaspar/Flask-AppBuilder) ? I've already made projects with the last one and I think is very nice. Are there any deep diferences, advantages or something I should take into account? e.g. github contributors ;)

<comment><AUTHOR> Flask-AppBuilder is opinionated fork of the Flask-Admin. It follows similar conventions and uses some of the Flask-Admin code, but comes up with non- default skin and a little more batteries (like user management interface out of the box). If compared directly, existing Flask-Admin components are much more featureful that their counterparts in the Flask-AppBuilder.

Flask-AppBuilder API is not compatible with vanilla Flask-Admin APIs, so you won't be able to exchange components between them. And sure, you can build something similar to Flask-AppBuilder on top of Flask-Admin without changing its core. Or maybe someone already built it (like Flask app skeleton with built-in administrative interface).

I explained reasoning behind default Bootstrap skin and lack of built-in user management in the blog post.

I have nothing against forks, it is good to have multiple options to choose from.

</comment></comment><comment><USER17> I recently discovered Flask-Admin via Airflow. I'm quite interested if anyone has any experience with it (or recommendations for alternatives).

For this I'm prioritising development speed over just about anything else, and I'm comfortable in most mainstream languages.

</comment><comment><USER18> > Campus Bubble is a single page app with React.js on a frontend and Python > services on a backend. We use Flask, SQLAlchemy, Tornado (SockJS push > notifications), PostgreSQL, Redis - a pretty standard Flask stack.

Can anyone explain how Flask and Tornado could be used together?

<comment><AUTHOR> They're being used side by side and running in separate processes.

For Campus Bubble, tornado app is a relatively simple push broker. Whenever something happens, Flask app pushes notification to a broker and broker pushes them in fan-out fashion to subscribers.

I even wrote another blog post a while ago about possible approach: [http://mrjoes.github.io/2013/06/21/python- realtime.html](http://mrjoes.github.io/2013/06/21/python-realtime.html)

<comment><USER19> Wonderful article. Btw, you might find the Pushpin project interesting. It runs as a proxy so you don't need to split your app in two.

</comment></comment></comment><comment><USER20> fask-admin (or any decent CRUD interface) is one of my favourite parts of developing a new application backend. The amount of functionality you can achieve without touching HTML/JS is amazing.

Goes a long way in keeping the application modular and maintainable.

</comment><comment><USER21> Maybe lead with that it is a CRUD package for the Python framework Flask rather than expecting readers to be familiar with the Python ecosystem enough to be aware of what it is?

<comment><AUTHOR> Good point, added disclaimer on top.

</comment></comment><comment><USER22> I'm still more in favor of Django. There is more to learn about it, but almost all Flask projects that get beyond the weekend-project stage end up reimplementing stuff that is in Django, or working around that lack.

The interplay between ORM, migrations, admin, CRUD, API, Forms, etc is just beautiful. Doing that with SQLAlchemy and the like is possible, but may create a bigger mess than starting out with a slightly less lightweight Django. project.

<comment><USER23> When using Flask, I like the fact that for form handling with an ORM, there's a flask-wtforms plugin, a wtforms-sqlalchemy plugin, and a flask-sqlalchemy plugin. This is part of the reason why I'm sticking with Django.

<comment><USER24> This makes no sense. You like something about Flask so you're sticking with Django?

</comment></comment></comment><comment><USER25> This looks interesting! I just started playing around with this a bit, and maybe I'm missing something, but it looks like the ModelViews only implement create, update, and delete? Why no read?

<comment><AUTHOR> There were requests to create read-only views, but they're domain specific and can be done with existing machinery.

<comment><USER25> I'd have thought that viewing the details of a model instance (attributes and some relationships) would be very generic use case? But I probably just don't understand how to do this easily with flask-admin as it is. Is there a good place in the documentation/examples to start looking?

<comment><USER26> I think the generic idea is to merge 'update/view' into the same thing so that you "view" by looking at the "update" form without updating anything. I've seen this in several places, though I'm not partial to the idea. I like having a separation between 'I am making changes' and 'I am viewing' just so that you don't end up with accidental updates.

<comment><USER25> Right yeah, that explains things. I don't mind this when it's just for myself, but actual users definitely get scared when they see the editable fields and the submit buttons...</comment></comment></comment></comment></comment>


Effects of Translating an iPhone App - Charts And Graphs, Breakdown by Countries - <AUTHOR> http://www.gaiagps.com/news/article/Effects%20of%20Translation%20-%20Charts%20and%20Graphs I know this data is a bit stale, so if anyone has questions, I'll try and answer them.<p>We're pretty open with our sales data, so ask whatever you want. <comment><USER2> In the PDF it said you didn't notice a change in sales in Belgium. I looked up Gaia GPS in the app store, and the description is still in English...

Perhaps you didn't do a translation into Dutch, and only the French speaking part of the country is seeing the translation?

<comment><USER2> Oh wait, the Netherlands is in the 'improved most' category. Ok, so I guess your translation is just not enabled in (at least the Flemish part of) Belgium.

</comment></comment><comment><USER3> Andrew,

this is cool but the graphs are all spikey; you should probably use either a histogram or a line graph that connects the actual numbers.

By the way, is there a Japanese translation?

<comment><AUTHOR> There is no Japanese translation yet... still looking for a translator. I understand that market is a big one too!

As for the graphs... not much I can do. I just did screen grabs from AppViz. The spike down to zero after each day is a bug too :(

I really should regrab these graphs and repost with the latest numbers. They are more interesting now.

</comment></comment><comment><USER4> Cool, thanks for posting. Given how money you make you might s well pay a professional translator for Japanese - you will be pleasantly surprised.

</comment><comment><USER5> If it's public information, how much did you pay per string in one language?

<comment><AUTHOR> When I first posted the job, I offered $7.00 for what amounted to about 200 words. I later decreased the offer to $5.00 and it seemed to work just as well. I bet even $3-4 would work OK.

I offered people the same amount to edit someone else's translation.</comment></comment>


Reply-all e-mail storm hits State Department - <AUTHOR> http://news.yahoo.com/s/ap/20090110/ap_on_go_ca_st_pe/state_department_e_mail

<comment><USER2> The problem here isn't the users; the problem is an e-mail server that allows "reply all" to have this effect. Modify the server to prevent an employee from sending one e-mail to more than X other employees. You will always have dumb users, but your e-mail policy can be smart.

</comment><comment><USER3> This has been a huge problem across state and federal agencies for quite some time.

One day, they'll discover BCC may be applicable for some of these emails.</comment>


Ask HN: Should You Work for Free as a Freelancer? - <AUTHOR> The idea of this question came after seeing this YouTube video: https://www.youtube.com/watch?v=Bqi62NGdCZw&t where the OP says that it could be beneficial for new freelancers to work for free to get a portfolio piece. I believe that working for free is unnecessary, but I'd like to get HN's opinion on the matter. <comment><USER2> I was able to crush my competition at a very young age by starting out working for free. I just made sure my contract with the business was air tight. After the first few projects where done I was charging $120+/hour before I was 18, and well beyond that after reaching 18 but charging either weekly or by the project with a very tight contract to insure both parties knew the scope of work and the costs and requirements for work requested outside the scope of the contract.

It is hard for someone to pay a 15 year old any amount of money for a site, logo, service or app without them having a portfolio of corporate clients to use for reference, their own sanity and justification to their other business partners. I would say the only way to do it successfully, is to have a contract in place so you can keep the work reasonable for a non paying customer.

</comment><comment><USER3> if your work makes somebody money, then it should never be free.

there are plenty of interesting projects that will never make money, that you can volunteer for if you need work to build a portfolio.

<comment><AUTHOR> That was my thought, too. You can always build a portfolio piece, or construct a case study by having a side project (a good example is Ryan Stewart with LacesOut.com).</comment></comment>


Ask HN: How does HN's auth system work? - <AUTHOR>

The only cookie saved for Hacker News is the "user" cookie, which supposedly is a token that refers to my user in HN's database. The only time this token is regenerated is when I logout, I'm not even sure it expires on the server. I wanted to ask, how is this token generated? Just randomly? Is there a best practice for generating this sort of token? Is it even called a "token"? <comment><USER2> Not the method I use, but people may trust this method simply since its what Rails uses:

* session_id is a 32 hex character MD5 hash based upon time, random number and constant string.</comment>


Apple's iPhone-App-Approval Mouse Falls Off Treadmill - <AUTHOR> http://www.alleyinsider.com/2008/8/apple-s-iphone-app-approval-mouse-falls-off-treadmill-buy-the-1000-app-that-does-nothing-aapl-

<comment><USER2> Well, sure. That app must have taken _seconds_ to approve. An app that doesn't do anything can't do anything fishy!

Besides, it's not as if a bug in that app will bring down a large percentage of the userbase.

</comment><comment><USER3> If anyone is dumb enough to actually buy this the author is a genius.</comment>


Foodzy: Gamifying Eating Healthy - <AUTHOR> http://www.fastcompany.com/1765390/foodzy-making-dieting-a-game-for-you-and-your-friends

<comment><USER2> How can you claim you make people eat healthy when you award badges for BBQ? Seems like it's just like Foodspotting with badges.

Sorry, but this really isn't helping anyone. Looks cute.. but I won't be visiting it after one visit. I mean, there's no practicality.</comment>


"We would like to offer you 7 days to export data and cancel your Hiveage." [pdf] - <AUTHOR> http://s.natalian.org/2015-06-17/7days.pdf

<comment><USER2> I think hiveage acted professionally and remained polite to what, by all accounts, appears to be a bit of a dick with a chip on his shoulder: "Build your product the way I like or I am going to make your life as difficult as possible and give you bad PR"

We get the odd client like that. They get a lot less than 7 days...

</comment><comment><USER3> While it's OK for Hiveage to say no to a feature (that's what I could gather from what's there) the right thing would be to give enough time to export.

Also their road map looks more like "previously on hiveage"</comment>


Cluster? F#*k One machine is all you need - <AUTHOR> https://medium.com/@simiotics/cluster-f-k-one-machine-is-all-you-need-c38105f3cb27 <comment><USER2> Agree 100%.

A 96 vCPU box with > 200 GB of RAM is ~$1.55/hour with an EC2 Spot instance. Back that with a big SSD and you have a data processing monster. Use you some nice Golang with well-formed goroutines to leverage all those cores and a damn good many data processing tasks could be crushed on a single box for sure.

Metaphorically: Every gear you add to a machine (distributed this and that) is a gear that needs to be cared for (configured, managed) and could break the overall machine.

Simpler is better.

<comment><AUTHOR> My favorite recent infrastructure tool is Ansible. Really makes it easy to set those boxes up and derive full utility from them.

Don't know if I hang around the wrong circles, but Ansible doesn't seem to get much love.

</comment></comment><comment><USER3> _Scalability! But at what COST?_ (2015)

from the wonderfully opinionated Frank McSherry _et al_ ,

where 'COST' stands for _' Configuration that Outperforms a Single Thread'._

[https://www.usenix.org/system/files/conference/hotos15/hotos...](https://www.usenix.org/system/files/conference/hotos15/hotos15-paper- mcsherry.pdf)

P.S. By pure coincidence, McSherry's new company is also on the front page today:

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

<comment><AUTHOR> Thanks for the link, I really like COST. Will reference this on technical sales calls.

We've seen a few customers with complex data processing setups using Spark, Airflow, etc. which we replaced with a single threaded python script with better performance.

</comment></comment><comment><USER4> Indeed.

Don't use multiple processes if one will do.

Don't use threads if multiple processes will do.

Don't use some sort of multi-host framework if something dumb driven by ssh (etc) will do.</comment>


Programming Quotes - <AUTHOR> http://quotes.cat-v.org/programming/ <comment><USER2> Missing the Ninety-ninety rule?

 _" The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."_

Tom Cargill, Bell Labs

[https://en.wikipedia.org/wiki/Ninety- ninety_rule](https://en.wikipedia.org/wiki/Ninety-ninety_rule)

NB There should probably be a 90-90-90-90-<recurring> rule... could called the Y-90 rule!

<comment><USER3> Probably because the "and the last 10 is the other 90" quote has existed longer than programming has. It's borrowed.

</comment></comment><comment><USER4> "I should have run off with that hippie girl and started a homestead in Alaska."

Me, every fucking time I look at code.

<comment><USER4> It is funny though. Look at all the physicists and mathematicians in that quote list. Positive, enlightened, a little snark maybe, but generally, moving things forward for the betterment of humanity.

All the programmers, "embrace the suck and the light at the end of the tunnel is an oncoming train".

I picked the wrong career.

<comment><USER5> As an software engineer, NO you did not (unless you actually suck at it). Part of the problem with software dev as a profession is that often the people responsible for resource allocation are out of touch and the overall process is complex enough that you can acquire a lot of technical debt for a short term gain. this makes bad managers look good while creating a lot of problems in long term. Since acquiring technical debt does not really breaks anything in short term its really hard to create a budget line item that allocates resources to it. this continues until something gives and then you have a crisis somebody can fix and take credit.

Until there are leaders 'woke' enough to proactively do the right thing I dont see anything change in computing industry.

<comment><USER4> Lol, dude, I'm 31. I've been doing this for around 10 years now. And I'm alright at it :P

Have you seen how happy homesteaders are?

On a serious note. I'm aware. That's why I did my own company with a friend. It cuts a lot of bullshit out I don't have to deal with anymore. As (essentially) a contractor, it's easy to tear people a new asshole in a meeting and get away with it. I can't imagine an employee being able to.

First off, people need to stop worshiping the ilk like Jobs, Musk and Bezos. They're just money makers. Just like Rockefeller, Morgan and Carnegie. None of them are visionaries as all their ideas are easy to spot from history or other people. Like the hyperloop... just about 80 years too late to call that one unique. Ooooo you put colored pieces of plastic on a computer and made a small digital music player. The Zune was WAY better! The other guy just sold books and moved on to other shit. Congrates on the better mouse trap. But it's not like they did it themselves.

Maybe a homestead on a tropical island... I like coconuts.

<comment><USER6> I think you're trivializing their accomplishments just a tad.

</comment></comment></comment></comment></comment><comment><USER7> I like this one:

"Debugging a program is twice as hard as writing it in the first place. So, by definition, if you write the program as cleverly as you can, you will not be able to debug it."

\- (Maybe by) Brian Kernighan.

<comment><USER8> … and/or P J Plauger.

"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?" in _The Elements of Programming Style_ (p10 in the 2nd edition).

<comment><USER7> Thanks.

I've heard that's a good book, as is _Software Tools_ by Kernighan and Plauger.

</comment></comment></comment><comment><USER9> Missing what I think is the most important quote:

"Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious."

\- Fred Brooks

<comment><USER10> My favourite as well!

</comment></comment><comment><USER11> > If you're capable of understanding `finalised virtual hyperstationary > factory class', remembering the Java class hierarchy, and all the details of > the Java Media Framework, you are (a) a better man than i am (b) capable of > filling your mind with large chunks of complexity, so concurrent programming > should be simple by comparison. go for it.

> ps. i made up the hyperstationary, but then again, it's probably a design > pattern.

            — forsyth

\---

Reminds me of a great deal of programmers in the banking world, especially those who used spring. Their software often failed, but their knowledge of Java design patterns never did!

</comment><comment><USER12> "Walking on water and developing software from a specification are easy if both are frozen."

</comment><comment><USER13> I grouped XML quotes to share with my manager:

 _The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well._

            — Phil Wadler, POPL 2003

_XML is like violence: if it doesn't solve your problem, you aren't using enough of it._

            — Heard from someone working at Microsoft

_XML is like violence. Sure, it seems like a quick and easy solution at first, but then it spirals out of control into utter chaos._

            — Sarkos in reddit

_Most xml i've seen makes me think i'm dyslexic. it also looks constipated, and two health problems in one standard is just too much._

            — Charles Forsyth

Nobody who uses XML knows what they are doing.

            — Chris Wenham

<comment><USER14> What are some _valid_ complaints about XML? I was talking to one of the older IT guys at my company a while ago, and he was all about it because it made serializing data structures very simple. I'm not sure if that's a valid use case or an example of the kind of monstrosity that XML-haters hate.

<comment><USER15> If all you need to do is serialize data structures, we solved that problem 30 years ago—including all the schema-validation and querying stuff—with ASN.1 (and then re-solved it with Protobufs and Thrift, and solved it again in half- assed manners with JSON, YAML, etc.)

XML is a markup format, a regularization/minimization of the syntax of SGML. It's good at being a markup format—the paired named open+close tags allow for corrupted-stream repair in a way that e.g. Markdown just doesn't. XML is great in, say, DocBook.

But XML gets used for pretty much everything _except_ actual markup. And for everything else, it's not solving those problems well.

</comment></comment></comment><comment><USER16> Here's one I've seen around:

 _" Often a few hours of trial and error will save you minutes of looking through manuals."_

<comment><USER17> Seems to be a corollary of Frank Westheimer's "A couple of months in the laboratory can frequently save a couple of hours in the library".

</comment></comment><comment><USER18> Part of why I like Golang as I interpret beauty as readability.

"Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity."

            — David Gelernter

</comment><comment><USER19> One of my favorites:

"If you know what's in it, you don't know when it will ship. If you know when it will ship, you don't know what's in it."

</comment><comment><USER20> There's nothing more permanent than a temporary fix.

<comment><USER21> Basically all the really useful code I've written

</comment></comment><comment><USER22> If you'd like to be drip fed stuff like this, we've been running a programming quotes Twitter account for several years at [https://twitter.com/codewisdom](https://twitter.com/codewisdom)

</comment><comment><USER23> LOL, 40 years later and some things never change :

"The most effective debugging tool is still careful thought, coupled with judiciously placed print statements."

\- Brian W. Kernighan, in the paper _Unix for Beginners_ (1979)

</comment><comment><USER24> This is fantastic. Whenever I'm at work, I always look at deltas on commits to judge personal success. The more lines removed, the better!

> Deleted code is debugged code.

            — Jeff Sickel

<comment><USER25> > The more lines removed, the better

I programmed Perl for a while so I like to make this more about _characters_ removed rather than lines :)

</comment></comment><comment><USER26> Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.

</comment><comment><USER27> Everyone post your favorites.

 _> What's wrong with perl?

It combines all the worst aspects of C and Lisp: a billion different sublanguages in one monolithic executable. It combines the power of C with the readability of PostScript.

> To me perl is the triumph of utalitarianism.

So are cockroaches. So is `sendmail'.

            — jwz [http://groups.google.com/groups?selm=33F4D777.7BF84EA3%40netscape.com]*

     ~ and ~

_If the designers of X Windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principles – but you'd be able to shift gears with your car stereo. Useful feature that. _

<comment><USER8> > _but you'd be able to shift gears with your car stereo._

Many modern cars get pretty close.

</comment></comment><comment><USER28> "If debugging is the art of finding bugs, programming must be the art of creating them."

</comment><comment><USER29> "Given enough thrust pigs will fly" \-- I will use this for my next code review. Gold.

</comment><comment><USER30> Missing the infamous "It compiles! Ship it!" quote.

<comment><USER31> For something like rust or haskell it's not outrageous. But yeah...

<comment><USER32> It's not outrageous _to hear_ from a Rust or Haskell fanatic, in any case.

Given that a subtraction will easily compile where an addition should have been coded, so the content of the remark is outrageous.

<comment><USER33> I'm sure if you _just_ use the right experimental language extensions and strangle your program under a mountain of indecipherable nonsense, performing arithmetic at the type-level, you can trivially prevent that though!

<comment><USER31> > arithmetic at the type-level

See, the whole type-level and value-level is a false dichotomy, that's the whole idea behind dependent types. There shouldn't be a difference between a type and a value.

<comment><USER32> A (data) type is a set, and a value is an element in that set. So you're arguing that set versus element is a false dichotomy, which is preposterous. Even a set which contains just one element is still distinct from that element itself.

Rather, the whole idea behind dependent types (if dependent types can be glibly summarized by a "whole idea") is that logical predicates give rise to sets. E.g. "all integers that are squares" or "prime numbers". Or all points <x, y> such that x^2 + y^2 <= r^2.

A proposition is not the same thing as the domain of that proposition's parameters; but it does denote a subset of that domain.

A dependent type can contain a large number of values and that will often be the case.

If we have a situation in the program where we must calculate a value that is the member of some dependent type that contains billions of values, and only one values is correct, there is the threat that we can calculate the wrong value which is still in that set. That dependent type will not save our butt in that case.

We have to isolate the interesting value to a dependent type which only contains that value. "correct value" is synonymous with "element of that set which contains just the correct value".

Still, that doesn't mean that the set is the same thing as that value.

A big problem with dependent types is that if the propositions on values which define types can make use of the full programming language, then the dependent type system is Turing complete. This means that it has its own run-time; the idea that the program can always be type checked at compile time in a fixed amount of time has gone out the window. Not to mention that the program can encode a self reference like "My type structure is not correct". If that compiles, then it must be true, but then the program should not have compiled ...

<comment><USER34> > A (data) type is a set, and a value is an element in that set.

Nope, a type is not a set. Type theories are separate formal systems designed to be (among other things) computationally aware alternatives to set theory, and they are defined by "terms", "types" and "rewrite rules". The whole point of a dependent type theory is to be able to encode things like sets and propositions in the same formal system.

The rest of your comment is wildly off based on this misunderstanding.

What the GP was probably referring to is the persepctive of dependent types from the lambda cube, where you have three different extensions to simply typed lambda calculus's regular functions from value to value:

        1. Parametric polymorphism, which are functions from type to value
        2. Type operators, which are functions from type to type
        3. Dependent types which are fubnction from *value to type*

Since dependent types allows functions from value to type, it kinda erases the artificial barrier between type-level and value-level. In reality it doesn't really erase it, somuch as replace it with an infinte hierarchy of levels to avoid Girrard's paradox.

</comment></comment></comment></comment></comment></comment></comment><comment><USER35> Ah, quotes, the method of taking wisdom out of context and greatly increasing the chances of incorrect interpretation. The ancient form of twitter.

<comment><USER36> "Epigrams are more like vitamins than protein." \- Alan Perlis

</comment></comment><comment><USER37> > {ajh} I always viewed HURD development like the Special Olympics of free > software.

yikes

</comment><comment><USER38> Obligatory list of some good quotes that are not included:

Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet. \- M.A. Jackson

Never test for an error condition you don't know how to handle. \- Steinbach

Choose mnemonic identifiers. If you can't remember what mnemonic means, you've got a problem. \- perldoc perlstyle

Every program has (at least) two purposes: the one for which it was written, and another for which it wasn't. \- Alan Perlis

Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. \- Stan Kelly-Bootle

<comment><USER39> >Rules of Optimization: Rule 1: Don't do it.

Well that explains the modern web, and a great deal of modern software.

<comment><USER40> There is a huge difference between not optimizing (say, purge formatting white space from HTML) and putting out five megabyte of JavaScript junk for static website.

<comment><USER41> Well, optimization could also mean to remove unnecessary JS.

<comment><USER42> I think removing unnecessary code and generalizing redundant parts should be a given. On the other hand, early optimizations such as caching or in-lining should be avoided unless needed.

</comment></comment></comment></comment></comment><comment><USER43> That's a great collection! Thank you.

<comment><USER43> Downvoter, please get a life. It's hard not to feel soured by such miserable gestures as yours. Mine was the first comment on here, I thought maybe there wouldn't be _any_ comments - it was a great collection and I wanted people to check it out, and express my gratefulness; not sure what else I should've done. I guess I should just accept that such spiteful downvotes happen, but it's shame. Maybe you wouldn't even have seen the page had I not upvoted and commented...

</comment></comment><comment><USER44> Pity the list isn't updated anymore, or uriel would've sure put these gems by Charles Forsyth in it:

 _[B]y treating "compiling C" as a subset problem of "compiling C++", gcc and especially clang are vast whales whistling at the wrong frequency for the problem._

 _Plan 9 C implements C by attempting to follow the programmer's instructions, which is surprisingly useful in systems programming. The big fat compilers work hard to find grounds to interpret those instructions as 'undefined behaviour'._

<comment><USER14> It is interesting that compilers try to be so damn smart. Is -O0 still not faithful enough to the programmer's instructions?

<comment><USER15> Often the generalized parsing/lexing/codegen/etc. algorithm that exists in service of -O1 through -O3 can be turned "down to a trivial level" with -O0, but not "off"—as that would require an entirely separate code-path.

</comment></comment></comment><comment><USER45> I could not find one of mine favorites The two hardest things in programming are: 1\. Naming variables 2\. Cache invalidation 3\. Off by one errors

</comment><comment><USER46> For the sinner deserves not life but death, according to the disk devices. For example, start with Plan 9, which is free of sin, the case is different from His perspective.

            — Mark V. Shaney

Hey, that one's a bot.

I'm also trying to figure out what's left if you take out all the "avoid complexity" and "avoid XML" quotes...

</comment><comment><USER47> There's a lot of negativity here. A lot of these quotes seem to offer more heat than light.

<comment><USER48> I believe a more appropriate noun is "contempt" :-)

I found this page [1] some time ago, maybe someone can find some good quotes in here but the page is kind of long and heavy and not super quotable, maybe some of you will find some gems in there.

Top of the page is Xah Lee, a lovable, and sometimes a bit weird, cranky master of contempt:

        > The basis of computer languages' merit lies in their mathematical properties.
        > It is this metric, that we should use as a guide for direction.
        > As an analogy, we measure the quality of a hammer by scientific principles:
        > ergonomics, material (weight, hardness. . .), construction, statistical
        > analysis of accidents/productivity/… …etc., not by vogue or lore.
        > If we go by feelings and preferences, hammer's future will deviate
        > and perhaps become dildos or maces. (Xah Lee in comp.lang.lisp, July 2000)

I think Xah is cranky but many times on to something. For instance, point 6 in his list of "Python Doc Idiocies" [2] is hard to disagree with :-).

1: [http://www.schnada.de/quotes/contempt.html](http://www.schnada.de/quotes/contempt.html)

2: [http://xahlee.info/python/python_doc_index.html](http://xahlee.info/python/python_doc_index.html)

P.S.: if you enjoy Xah's writing you should pay for his excellent emacs manual [3]. It is actually openly available but he accepts contributions.

3: [http://ergoemacs.org/emacs/buy_xah_emacs_tutorial.html](http://ergoemacs.org/emacs/buy_xah_emacs_tutorial.html)

UPDATE: he actually has a Patreon account too! [4]

4: [https://www.patreon.com/xahlee](https://www.patreon.com/xahlee)

<comment><USER47> I don't value contempt. I don't think that contempt is strongly associated with programming or computer science. I would consider that to be a problem. I can't condone the expression of contempt in the public discourse related to computer science. I do not typically have much free money for donations, but I would on principle refuse to financially support contempt. I would wonder that anyone would consider that a positive trait. I certainly think that this attitude would discourage newcomers to the field, and I think it's worth working to promote a different image and mindset.

<comment><USER48> I'm not suggesting that you support "contempt", but the person behind the writings, and only if you enjoy the writing style.

Also, Xah also has all sorts of other documents were he carefully tries to avoid the mistakes he criticizes in other documents, and were contempt is not the main driver. I'm sure he spent countless hours writing those materials and he's made those documents available for absolutely free! [1]

The best intellectual and artistic endeavors are deeply flavored by the emotions of their authors, which gives the works a measure of authenticity. I personally can appreciate that, the same way I can also appreciate a lot of forms of dark humor.

Also, I'm OK with others not sharing that appreciation.

1: [http://xahlee.info/comp/comp_lang_tutorials_index.html](http://xahlee.info/comp/comp_lang_tutorials_index.html)

</comment></comment></comment></comment><comment><USER49>
      You can't build an airplane from bricks.
        -- Steve McConnell, *Code Complete*

</comment><comment><USER50> "CS can be described as the post-Turing decline in the study of formal systems."

I don't know who said it originally.

</comment><comment><USER31> > A data structure is just a stupid programming language.

> — R. Wm. Gosper

What's this supposed to mean?

<comment><USER51> One interpretation: I think there's a dictum (due to Dijkstra, maybe?) that says something like programming = data structures + algorithms. If you remove the 'algorithms' part, then you're left with data structures on the right, and, presumably, an impoverished programming language on the left.

<comment><USER52> Algorithms + Data Structures = Programs is a book by Niklaus Wirth.

<comment><USER51> Thanks! Wirth was going to be my second guess. For some reason, possibly because I had the order switched (or because the '+' itself, rather than just the words, is key to the phrase), I couldn't find the phrase by Googling.

</comment></comment></comment></comment><comment><USER53> This is an absolute gem.</comment>


Car park app offers users £10 reward to snitch on people parking illegally - <AUTHOR> http://www.independent.co.uk/life-style/gadgets-and-tech/news/new-car-park-app-pays-users-pay-snitch-10-reward-illegal-parking-vehicles-a7560881.html <comment><USER2> _" all correspondence are designed to make the motorist believe they have been caught by a CPM patrol warden"_

That sounds unethical. You should have the right to confront your accuser, especially someone with an incentive to possibly falsify evidence to collect a reward.

</comment><comment><USER3> They should call it the pan-app-ticon</comment>


Ask HN: Why isn't parsed by Hacker News for quotes? - <AUTHOR> Hacker News requires two new lines between paragraphs in order to render a line break. Often times, when copying & pasting from other services which insert a line break after a single newline, and then prepending each line with >, you'll end up with a mess of a message.
> For example, let's say this was my message. > I copy and pasted it from another website. > This is the result.
Therefore, many seem to result to code blocks (two spaces before each line):

  For example, let's say this was my message.
  I copy and pasted it from another website.
  This is the result.
 Then, users on mobile, and even on the web, often times struggle as they have to scroll horizontally through the message.
If Hacker News instead treated the `>` character similarly to `  ` (i.e. pre-formatted text) but without sticking it in a div with a fixed width, this would be much less of an issue. <comment><AUTHOR> Hacker News removed my `>` symbol between the words "isn't" and "parsed" in the title.</comment>


Accesspay – Cash Management Software - <AUTHOR> https://www.accesspay.com/ <comment><AUTHOR> AccessPay provides a next-generation platform for business payments and cash management to meet the demands of today's finance and treasury professionals,</comment>


Why JSON will continue to push XML out of the picture - <AUTHOR> http://blog.appfog.com/why-json-will-continue-to-push-xml-out-of-the-picture/

<comment><USER2> I think this article has done a great job enumerating trends that show JSON is beating XML for data serialization applications. I think these points are evidence of a shift in thinking, but not the reason for shift itself.

Why JSON over XML? Because people need data serialization format and XML is a Markup Language. JSON is gaining widespread adoption for data serialization applications since it's the correct tool. XML isn't.

In a markup language there is an underlying text that you're annotating with machine readable tags. Most data interchange doesn't have an underlying text -- you can't strip away the tags and expect it to be understandable. If you're writing a web page, that has to be read by humans and interpreted by machines... you need a markup language.

By contrast, data interchange is about moving arbitrary data structures between processes and/or languages. JSON's information model fits this model perfectly: its nested map/list/scalar is simple & powerful. As for typing, it found a sweet spot with text/numeric/boolean.

JSON is the right tool for the data serialization problem.

<comment><USER3> This makes sense, but from what I can tell, in virtually no major XML-based systems is the basis for XML files an underlying text extended with markup. Most XML systems, since the dawn of XML, have been top-to-bottom structured data.

<comment><USER4> I may be talking out of my ass here, but isn't OO-XML and whatever Microsoft calls their new Office format exactly that?

<comment><USER3> You're right, I forgot about the "proprietary" document formats that got transformed into "open" (heh) XML formats. Good point. Thanks!

</comment></comment></comment></comment><comment><USER5> For me the single greatest selling point of JSON is that it's just so danged easy to go from json string to a usable map/list/dictionary in every language. Most of the time you can get from A to B in one or two lines of code.

XML always seemed like such a struggle by comparison. Figuring out which parser(s) you've got installed, figuring out their respective APIs -- it felt like total overkill. The only way I could be productive with XML was using Python's ElementTree API because it was so simple.

Some day I'll need my data to be checked against a complicated schema. But until that day arrives, I'm sticking with JSON.

<comment><USER6> XML is a smooth fit on strongly typed languages. You can easily translate an exact type into a corresponding XML encoding and know the type of what you're getting out on the other end. JSON on the other hand is duck typing in web service form. You can shove any data structure in on one end, and get it back out the other end, without writing any custom code, and without actually knowing the type of the data you've sent. You could say that JSON itself is weakly typed.

The popularity of JSON is tied to the popularity of weak typing. You can more rapidly iterate your API design and codebase without those bothersome types getting in the way. The flip side of that is the end result isn't "done done". It lacks full validation of input and it lacks complete documentation. In short it's more difficult to use and more prone to bugs and security issues. I suspect that if you compare "done done" API's JSON and SOAP are probably equally productive.

Having said that, I use JSON myself. It's too easy to get going in.

<comment><USER7> "XML is a smooth fit on strongly typed languages. You can easily translate an exact type into a corresponding XML encoding and know the type of what you're getting out on the other end."

This is a characteristic of the encoding and decoding layer, not the data format. Haskell's aeson library [1] is a JSON serialization library that is perfectly well strongly typed. And yes, that's strongly typed with your local domain datatypes and a relatively-easy-to-specify conversion back and forth, not merely strongly typed by virtue of having a "JSONString" type here and a "JSONNum" type there.

[1]: [http://hackage.haskell.org/packages/archive/aeson/0.6.0.2/do...](http://hackage.haskell.org/packages/archive/aeson/0.6.0.2/doc/html/Data- Aeson.html#g:4)

<comment><USER6> That's an impressively succinct way of mapping types to JSON, but it's still a mapping. There's one step for the developer between obtaining the JSON and using its data. In weakly typed languages there is no such step, the JSON data _is_ the object you interact with in your business logic.

<comment><USER7> There's always a serialization step. The type of the resulting data is a consequence of the serialization technique, not the data format. I demonstrated the part you seemed to most strongly claim didn't exist, JSON <-> strong typing, but I can show you "weakly-typed" XML too. In addition to the DOM, which is a standardized "weak type" XML representation, you also have things like ElementTree <http://effbot.org/zone/element-index.htm> .

It is the case that JSON has a simple default weak serialization in many popular languages, and that it is a great deal of the reason for its popularity, but it is worth pointing out this is a local effect in the Javascript/Python/Perl/Ruby space, and that it hasn't got anything to do with strongly or weakly typed but rather what the target languages shipped with. There is no natural mapping for JSON in C++, C#, Erlang, Haskell, Prolog, SQL, or a wide variety of other languages (and Erlang and SQL are both fairly "weakly typed"), and even in JS/Python/Perl/Ruby there are some edge cases that can bite you if you aren't careful about exactly what the "just_decode_some_json_man()" is _really doing_ with Unicode and numbers that may not fit into 32 bits.

(Also, I scarequote all my "weakly typed" because the term is basically ill- defined. I'm coming around to prefer "sloppy type", which is a language where all values are perfectly well strongly typed but the language and/or library is shot through with automatic coercions and/or extensive duck typing. A sloppy type language considers it a feature that a function may have a a value and not really know or care what it is.)

<comment><USER8> I think part of the reason "weakly typed" is ambiguous is because it's a bit pejorative, and "sloppy type" certainly isn't helping that. Maybe just "less typed" ? It really is an engineering tradeoff of how many assumptions you want to make explicit.

</comment></comment></comment></comment></comment></comment><comment><USER9> Could someone who knows a lot about these things tell me why JSON took such a long time to arrive?

JSON, at its core, is essentially a hierarchy of maps and lists -- which seems a very intuitive and useful way to store data.

XML on the other hand has always baffled me with its attributes and the redundant and verbose tags (why do I need <tag attr="data">data</tag>?). I'm sure there was a good reason at the time for this, so perhaps someone can enlighten me.

<comment><USER10> What took the longest time was for a language to come out with key-value maps as the main core data structure, and a specialized literal syntax. Once that happened, it was relatively quick for that syntax to become a standardized interchange format for K-V data.

Lisp had assoc-lists, but those were a convention, not a specialized structure. Many languages had K-V maps as libraries, but not core structures, and most lacked literal syntax. Eventually most scripting languages starting getting them as native, and even having literal syntax, but they weren't the "go-to" data structure for doing things. In Python, for example, all of its objects are really just hash maps, but when you're working with them you pretend that they're objects and not hash maps, and you use lists more than maps anyways.

JavaScript (and maybe Lua) was the first language to build itself around K-V maps, so it was the first language where idiomatic usage included a lot of map literals. Like Python, its objects were all really just maps, but unlike it encouraged taking advantage of that fact. Also, because it was on the web, there was a lot of need to be serializing data structures and passing them around. Eventually someone realized "this is much better than XML!" and gave it a name, and that's how we got where we are today.

XML's popularity is an accident of history, due in part to the rise of HTML, which is also an accident of history.

<comment><USER11> > Lisp had assoc-lists, but those were a convention, not a specialized > structure.

I'm not sure what you mean by this. What's the difference, syntactically, between a convention and a specialized structure?

XML _is_ Lisp. In fact, the XML grammar and Lisp's grammar are (almost) homomorphic[1]. SXML is a trivial mapping of XML to s-expressions which demonstrates this.

There's no point in comparing XML and S-expressions like that; they're essentially the same thing!

If you're talking about internal representation, well, that's up to the compiler. But since you have to declare the format either explicitly or by context, there's no 'advantage' of XML over s-expressions.

[1] To be pedantic, XML is homomorphic to SXML, which is a subset of the Lisp grammar, but that just means that Lisp recognizes some strings that aren't in the XML grammar, so if anything, Lisp is more powerful, but that's beside the point.

<comment><USER10> > _I'm not sure what you mean by this. What's the difference, syntactically, > between a convention and a specialized structure?_

The big difference is how people look at it, not what it really _is_. JavaScript has a built-in key-value map data structure. An assoc-list isn't a built-in data structure, it's a way of using a more primitive data structure (lists). In particular, assoc-lists don't really _look_ different than normal lists, so it's a slightly larger mental leap to think in terms of them. Furthermore, Lisp doesn't use assoc-lists as often as JavaScript uses key- value maps, preferring flat lists instead, so even if there were a specialized reader-macro for assoc-lists it wouldn't have been as ubiquitous.

I agree that XML and Lisp grammars are basically interchangeable. My comment was answering a question about the emergence of JSON, and my comments about assoc-lists were only in relation to JSON, not XML.

</comment></comment></comment></comment><comment><USER12> Well-written XML that was designed for humans instead of machines is much, much more easier to read than JSON. The primary reason is that unlike s-expressions or xml, there is no block-name. In JSON you loose valuable time figuring out the block context in a hierarchy since this isn't labelled.

The only kind of JSON that is readable is flat JSON that is nested to a maximum of 1 level.

<comment><USER13> Either format can be pretty printed. If you need signposts to figure out where you are, it is a simple manner to add dictionary key names to things.

</comment></comment><comment><USER14> I don't foresee JSON ever replacing XML as a "full-blown successor" in the contexts where XML actually is useful: for marking up documents.

As a general data storage format, XML is certainly going away.

<comment><USER15> It might for non-text document structures, perhaps.

</comment></comment><comment><USER16> JSON is not a silver-bullet. Actually I think JSON-only APIs suck -- an API should have an equivalent XML alternative as well. Let me explain.

Web APIs are not only consumed by client-side Javascript-based AJAX apps -- they are also used by server-side (web)apps where Javascript is much less widespread. If the primary application language is not Javascript for which JSON is a native format, but PHP or Java for example, then its value is much lower.

There are established industries such as publishing that use complex XML workflows -- I don't think JSON will push them out.

XML family so far has much better standard specifications and tool support. Some of the most useful are XPath and XSLT. There are also advanced features -- too complex for some, useful for others -- like namespaces and schemas. If JSON is to expand its use, it will have to go to the same interoperability issues XML addressed, and develop similar features with similar problems. That's why the idea of JSON schemas sounds funny to me.

Let me give an example. I've developed a semantic tool that lets me import 3rd part API data as RDF. If it is available in XML, I can apply a GRDDL (basically XSLT) transformation to get RDF/XML -- and boom, it's there. RDF/XML serves as the bridge format between XML and RDF.

Now if the data is JSON-only, what do I do? I could download an API client, try to write some Java or PHP code, but that would be much less generic and extensible than XSLT. I could probably try a pivotal conversion via JSON-LD somehow, but oh, bummer -- there's no JSON transformation language? Or is there... Javascript? Thanks, I would prefer XSLT anyday since it is designed specifically for these kind of tasks.

My point is, by offering JSON-only you cut off all the useful tools from the XML world, which is pretty well established. I see JSON as an alternative syntax to XML, which is easier to use with Javascript -- but by no means THE "right tool" to all data serialization problems.

</comment><comment><USER17> One of my biggest issues with JSON is it's a lot harder to generate valid JSON as a stream. Granted this may be an esoteric use case, but the quoting rules and type representations seem to require some amount of look ahead which isn't fun when generating that stream.

</comment><comment><USER18> For human readable stuff, I don't know why we don't use YAML more often. The serializer is utterly fantastic, though I don't think JavaScript support parsing it quickly.

<comment><USER19> Poorly implemented parsers, especially in Javascript.

</comment></comment><comment><USER20> > [XML] enabled people to do previously unthinkable things, like exchange > Microsoft Office documents across HTTP connections.

wat

</comment><comment><USER15> I think JSON is more popular than XML for a lot of things simply because it's so much simpler to interact with. No querying attributes, elements, elements inside elements, text inside elements, etc. You just look up the value attached to a key, or look up an index in an array, and that's it. It's simple every level down. And it's also simple to construct.

</comment><comment><USER21> JSON is data. XML is markup. JSON won.

Move on.</comment>


eBay's Chaos Theory - <AUTHOR> http://www.fastcompany.com/magazine/120/ebays-chaos-theory.html?partner=rss

<comment><USER2> I just finished "The Long Tail". A good point Anderson brings up is that more often than not, eBay has no idea what its users are selling. People don't use standard SKUs, etc.

This means they can't build a real recommendation engine, which is needed to deliver the mass of long tail content to users adroitly.</comment>


How to Scale Change - <AUTHOR> http://firstround.com/article/The-One-Thing-Every-Leader-Needs-to-Learn-How-to-Scale-Change

<comment><USER2> Contrasting opinion here: [http://blog.asmartbear.com/delegation.html](http://blog.asmartbear.com/delegation.html)

"The trouble with this form of delegation is it results in a team that is not materially better than the founder"</comment>