GPL and the Wordpress x Thesis theme issue (Why Chris is right) - <AUTHOR> http://fseek.me/2010/07/gpl-and-the-wordpress-x-thesis-theme-issue/

<comment><USER2> It looks like quite a bit of GPL code is used in Thesis [http://drewblas.com/2010/07/15/an-analysis-of-gpled-code- in-...](http://drewblas.com/2010/07/15/an-analysis-of-gpled-code-in-thesis/)

<comment><USER3> looks like one api function is used with normal naming

</comment></comment><comment><USER4> For some historical context: The debate over whether using the publicly advertised functions of a GPL library makes your code GPL too is an old one, the best and early example of this was the CLISP v.s. FSF debate, which the FSF won: [http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/doc/Why-...](http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/doc/Why- CLISP-is-under-GPL) in particular Stallman said:

        I say this [that using the readline API makes your code GPL too]
        based on discussions I had with our lawyer long ago.  The issue
        first arose when NeXT proposed to distribute a modified GCC in two
        parts and let the user link them.  Jobs asked me whether this was
        lawful.  It seemed to me at the time that it was, following
        reasoning like what you are using; but since the result was very
        undesirable for free software, I said I would have to ask the
        lawyer.

        What the lawyer said surprised me; he said that judges would
        consider such schemes to be "subterfuges" and would be very harsh
        toward them.  He said a judge would ask whether it is "really" one
        program, rather than how it is labeled.

Later, Linux under the direction of Linus Torvalds did the opposite the other way by looking the other way when nVIDIA and others distributed binary blobs that directly interfaced with the kernel. Some people now point to this as an example of why this sort of thing is just fine by the GPL, but in fact it's a very grey area. It's likely that if the Linux kernel had been run by the FSF that nVIDIA's actions would have resulted in a lawsuit.

However, as pointed out by others this doesn't appear to be a case of using a public GPL API at all, but rather case of code being copied. See [http://drewblas.com/2010/07/15/an-analysis-of-gpled-code- in-...](http://drewblas.com/2010/07/15/an-analysis-of-gpled-code-in-thesis/) specifically this comparison: <http://drewblas.files.wordpress.com/2010/07/diff.png>

</comment><comment><USER5> Regardless of whether or not Thesis and other WP themes are actually legally required by the GPL to be distributed only under the GPL, if one believes at all in the concept of copyright, it's ethically, if not necessarily legally, important to consider the intentions of the developers of WP in using the GPL.

It's clearly the case that both Wordpress and the FSF believe that programs which link or include GPL-ed works are derivative works. Even if they're wrong, isn't it somewhat unethical to agree to an agreement and then violate what the other side of that agreement have told you from the beginning they believed it means?

</comment><comment><USER6> It's hard to judge this without understanding how a theme integrates with WordPress and I suspect the author of this post thinks this is just a mater of calling an API or two.

The way it works is by overriding the behavior of WordPress, both integrating in internal filtering of input/output, reacting on actions/events, integrate with the admin interface of WP and calling APIs.

If this is not a derivate work, nothing is.

</comment><comment><USER7> Though I'm not familiar with Wordpress and it's theming system, this argument has indeed puzzled me. This article is spot on: why would a theme be beholden to the software's license?

That said, maybe Wordpress themes are much different than normal themes, and are much more tightly coupled? That WP would pursue this if not puzzles me.

<comment><USER8> _maybe Wordpress themes are much different than normal themes, and are much more tightly coupled?_

They can be made to be tightly coupled, but they're not necessarily intended to be. A lot of themes override core WordPress functions via a functions.php in the theme root directory. You don't _have_ to include any core WP code in your theme, but WP provides an easy way to do it if you need to.

 _That WP would pursue this if not puzzles me._

IMHO, Mullenweg comes off looking like a brat in this whole mess. Regardless of the legality of the whole thing, this seems to be a straddling-the-line kind of situation, which makes it feel like there's some kind of ulterior motive at play.

 _Edit:_ This link from elsewhere in the thread totally changed my opinion. [http://drewblas.com/2010/07/15/an-analysis-of-gpled-code- in-...](http://drewblas.com/2010/07/15/an-analysis-of-gpled-code-in-thesis/) Seems like Thesis should pretty clearly be GPL.

<comment><USER7> I was unconvinced by that one, if only because I don't really agree that just because it calls your functions, it's a derivative work.

I feel like interpreted code is pretty hard to make derivatives of, honestly, though it seems like a fairly large number of people agree with you on this one.

</comment></comment></comment><comment><USER9> I just wanna point out that Matt Mullenweg used to have a much more logical, awesome, and superior stance before he decided to go all Richard Stallman on the non-GPL developer community.

<http://ma.tt/2009/10/matt-qa-wordpress-gpl/#comment-469692>

</comment><comment><AUTHOR> To summarize:

Thesis integrates with Wordpress, it is not derivative from it. Same way Linux modules integrate with the Linux kernel (and many of them are closed source).

If someone is using a public/open API, and not distributing any part of the software, it means they are not based on the other.

<comment><USER10> If that API is under the GPL then isn't use of it a derivative work? If the API is a GPL implementation of a standard API, e.g. the JDBC API, then it wouldn't be a derivative work, not sure if Themes call a wordpress specific API or not though.

<comment><USER11> I think that's a great question, and one that could probably spawn a ton of interesting legal/logical arguments.

At what point does dynamic linking make something a derived work - and how is dynamic linking fundamentally different, than, say, a remote procedure call (or SOAP or REST or whatever) over a network? The interface is different, but the principle is the same.

Also - the GPL does state that it's okay to link against things that are "standard parts" of the target system....

</comment></comment></comment><comment><USER12> Isn't this whole issue why the LGPL exists?

<comment><USER13> That depends entirely on the goals of the original author (Matt and the Wordpress team, in this case). Judging from Matt's reaction, I suspect the LGPL would have produced the opposite result they were looking for.

<comment><USER14> You miss the point. The LGPL was created to allow people to do what Chris wants to do. The GPL was created to prevent people from doing the same. If Chris is actually right, the GPL and LGPL are equivalent. In that case, damn! I should have used GSL instead of rolling my own numerical methods for a closed source project. And I should sell a GUI frontend that links against GNU Octave.</comment></comment></comment>


A123 sale to Chinese firm gets US approval - <AUTHOR> http://www.csmonitor.com/Environment/Energy-Voices/2013/0129/A123-sale-to-Chinese-firm-gets-US-approval

<comment><USER2> I think it's unfortunate that much in the way of technology and infrastructure to manufacture products from that technology, is being treated as something we can assume we'll always have access to in the future. The fact is that just because the world is a place today where there are sufficient incentives for products made in one jurisdiction to be available in another does not mean it will always be the case. Indeed this has not been the case for most of human history.

There are many reasons a fair-minded person could accept as plausible for believing that the coming decades could see a rise in conflict in the world rather than a continuation of trends towards more international co-operation. Some might argue this has process has already begun. Peaking of resource availability including energy resources; impacts of climate change.

In a world of increased conflict having strategic competitors controlling the only realistic and timely access to technology and production is indeed a matter of national security, and a risk which we are likely to regret not taking seriously at some point in the future, IMHO.</comment>


The irony is strong on this one  - <AUTHOR> http://geektechnica.com/2010/06/the-irony-is-strong-on-this-one/ <comment><USER2> _How ironic is it, that a design blog with an opinion piece on why web designers shouldn't use Ad blockers and yet the site is flooded with ads and has zero content above the fold?_

That is not ironic at all...they obviously support ads (since they have lots of ads on their site), and therefore they oppose ad blockers (as expressed in the opinion piece).

</comment><comment><USER3> It's like rain on your wedding day.

<comment><USER4> <http://www.youtube.com/watch?v=nT1TVSTkAXg>

Edit: While we're on the subject, here's one for the fans... sell-out much? <http://www.youtube.com/watch?v=ar7afdfBHj4></comment></comment>


Invitation to the SETL Language - <AUTHOR> https://www.linuxjournal.com/article/6805 <comment><AUTHOR> Also, see SETL Documentation [1] and GNU SETL Library [2] Reference for more details.

[1] [https://cs.nyu.edu/bacon/setl-doc.html](https://cs.nyu.edu/bacon/setl- doc.html)

[2] [http://setl.org/setl/doc/setl-lib.html](http://setl.org/setl/doc/setl- lib.html)</comment>


Show HN: Integrate your app using simple JavaScript Widget - <AUTHOR> http://www.elastic.io/blog/80061660580

<comment><USER2> What is the data record that is mentioned in the pricing?

<comment><AUTHOR> We count number of records we transfer between two systems. For example in case of contact import one data records === one contact record that is imported into your application. In case of File Exporter one data record will be one single file, but in this case you might guess that 'bandwidth' limits are more critical than 'data records' :)</comment></comment>


Intel Trusted Execution Technology, Open-Source Now - <AUTHOR> https://9esec.io/blog/first-open-source-drtm-implementation/ <comment><USER2> The title seemed misleading. Intel TXT, the hardware, can be used by any open source project. It's just not been a priority for open source BIOS projects. I was hoping that the source code for the ACMs or the FSP had been made available.

The Authenticated Code Modules (ACMs) needed for TXT are software blobs, but you can disassemble them if you want to find out what they do.</comment>


Rails Server Throwdown: Passenger, Unicorn or Puma? - <AUTHOR> https://www.engineyard.com/articles/rails-server

<comment><AUTHOR> This comparison is not very in depth, I wonder if they benchmarked Passenger on NGINX versus Puma behind NGINX.

I also am not very sure why they are so negative about Unicorn, I haven't heard such bad reports about it before.

What setup do you guys prefer, and why?</comment>


Show HN: Klaviyo - a new kind of CRM (not just for sales) - <AUTHOR> https://www.klaviyo.com/feature-tour

<comment><USER2> I think one of the more interesting bits is how you integrate via a javascript snippet

<https://www.klaviyo.com/docs/javascript-api>

It seems like you could tag events quite easily on your site [customer logged in, customer performed action, etc] quite like mixpanel - and then use the rest of the system to perform actions in responses.

It would be super simple to set up a "Haven't seen you in a while" email without having to do any extra work. Lots of companies build nice products but don't put any effort on customer success, past conversion to sign up.

I like it. A non-technical could add a lot of value to an existing site.

</comment><comment><USER3> I like it.

There's an interesting question of scale that comes up: this tool helps me understand the behaviors of a handful of named users. Is that best for high- margin businesses with only a few users or for the most-valued users of systems with tens of thousands of users.

Given the fact that the big claim at the top is that you triage CRM, I assume the latter. In a way, this is kind of applying the Klout methodology to CRM (impose some sort order on "importance" and use that to triage personal attention).

What do the hooks look like for a developer?

nit: the blue circles are visually confusing until you realize they represent popup comments.

<comment><AUTHOR> Never thought of the Klout point, but it's a good way for us to think about it.

Good question. Our current focus has been on high-margin businesses with relatively few (hundreds to tens of thousands, not millions) customers, primarily because they seem to really feel this problem.

Integrations is both through 3rd parties (for things like Mailchimp, Zendesk, etc) where it just takes a couple of clicks and no development and through our API - we have both a javascript and HTTP API. Our javascript snippet gives us a logins per user, but you can really pass us anything you want (has this user finished setup, have they used feature x, etc)

</comment></comment><comment><USER4> $49 /mnth at entry level seems a bit steep. Perhaps your CMS is more robust or more user-friendly, but I think you may be pricing yourself out of the market.

<comment><AUTHOR> Helpful feedback. For most of our current clients, we find that the amount of value we generate / cost of what we replace (lots of engineering work and excel usage) is a lot higher than this.

That said, I think our sense is that for startups / newer firms it would be great to come up with some sort of plan that makes this more feasible. We'd love to hear thoughts and we're certainly glad to figure out something that works based on specific needs of people. Email me at firstname.lastname@example.com and glad to chat.

<comment><USER5> The issue for us is trying it out. We've dropped Highrise already, and are probably going to drop our current CRM soon as they just don't fit our needs. We really feel the need for a CRM but we don't want to commit to one till we're ascertained it can really do what we want. A limited trial plan would be good for this. We're a startup (mynaweb.com)

HTH.</comment></comment></comment>


Carbon nanotubes embedded in leaves detect chemical signals - <AUTHOR> https://phys.org/news/2020-04-carbon-nanotubes-embedded-chemical.html <comment><USER2> > Plants use hydrogen peroxide to communicate within their leaves, sending out > a distress signal that stimulates leaf cells to produce compounds that will > help them repair damage or fend off predators such as insects. The new > sensors can use these hydrogen peroxide signals to distinguish between > different types of stress, as well as between different species of plants.

> "Plants have a very sophisticated form of internal communication, which we > can now observe for the first time. That means that in real-time, we can see > a living plant's response, communicating the specific type of stress that > it's experiencing," says Michael Strano, the Carbon P. Dubbs Professor of > Chemical Engineering at MIT.

Amazing stuff.

<comment><USER3> I agree, totally fascinating. I've also heard numerous times now that oysters and other mollusca feel less than plants, which they could probably quantify better with this approach.

Also interesting to read what one of their research goals seems to be:

>One problem they hope to address is shade avoidance, which is seen in many species of plants when they are grown at high density. Such plants turn on a stress response that diverts their resources into growing taller, instead of putting energy into producing crops. This lowers the overall crop yield, so agricultural researchers are interested in engineering plants so that don't turn on that response.

I don't know much about agriculture (especially not at massive scales), but the end goal is to completely manipulate the plant for maximimum crop yield. If researchers are only now finding out about the communication pathways of plants, I'd assume there is a lot we don't know about plants and the chemical algorithms orchestrating them for almost 500 mln years. Just seems kinda naive to remove one "feature" without expecting something to malfunction at some point.</comment></comment>


Show HN: Master in AI – Get an Unaccredited Master in AI - <AUTHOR> https://www.masterinai.com/ <comment><USER2> Having an about page that only says "This page left intentionally blank. Feel free to add your own content." does not inspire confidence.

</comment><comment><USER3> scam!</comment>


Introducing the HelloSign API: Hassle-free eSignatures (YC W11) - <AUTHOR> http://www.hellosign.com/info/api

<comment><USER2> Wow! This might have deeper implications than you imagine.

Have you guys thought about the outcomes for ballot initiatives, or for enterprise sales?

In particular, this kind of tech might have a disruptive impact on the initiative process in California (which costs around $1M-10M in signature- gathering costs to bring something to the voters), and on the enterprise sales cycle (which involves exchange of PDFs between multiple parties, at a lower conversion rate than a streamlined web process).

<comment><USER3> I doubt a cheaper, easier system for filling the California ballot with propositions will improve things.

(There's a good case much of the current budget mess and general non- accountability of elected officials is the result of constraints added by prior populist initiatives.)

</comment></comment><comment><USER4> This looks awesome, and something we'd love to have in Zenbox. To that end, just two requests:

1.) Any chance of OAuth support? Our users are in general not technical, and in any case they all appreciate one-click integrations over copy/paste API- key, or even worse, username/password ones.

2.) Can we retrieve a list of documents that have been signed (or sent to be signed) given an email address?

<comment><USER5> 1) Absolutely. We'll be adding OAuth support shortly. 2) We don't have any filtering by signer's email address at this point but I like the idea.

<comment><USER6> Zapier seconds both of ZenBox's requests! :-)

</comment></comment></comment><comment><USER7> Just some friendly feedback that I found it hard to discover what this service is all about. I hit the index page to get an overview, but it took clicking through to the Real Estate and Mobile sections to piece it together - I would normally not do that, but I was extra curious in this case. I think you might want to make some of the overview/intro content available on the index page.

Also the FAQ has a very prominent "How does HelloSign work?", but doesn't seem to answer that question. (ie: "HelloSign lets you upload your signature and quickly apply it to documents", or whatever it actually is)

</comment><comment><USER8> We use HelloSign at your company for easy contract signing - best of all it's free.

The ONE thing that I feel is missing is letting people use a purchased certificate from a trusted provider. We need that little extra "formality" before we use this for actual legal documents.

</comment><comment><USER9> Besides being a well-established startup in the digital signature space and writing all their software in Haskell, Scrive has a good API. I have used it myself for a small project, to build a petition service, and it was very straight-forward. Of course, their typical API user is a large organization with a lot more complex requirements.

Fancy marketing presentation: <https://scrive.com/gb/en/scriveapi>

Documentation for devs: <http://api.scrive.com>

<comment><USER5> Scrive looks like a good product but is not free after the initial 3 documents. HelloSign is completely free.

I believe the HelloSign API also covers most, if not all, of the same use cases.

NOTE: I am a HelloSign co-founder

</comment></comment><comment><USER10> I'd avoid it.

I tried using HelloSign and HelloFax to take care of some contracts while travelling, but the messages sent look like spam (heavily branded, with almost no control over the content of the message), and the document is not sent as an attachment but requires the recipient to register and login to the service.

They're so focused on their viral coefficient that the service is miserable to use.

I dont mean to be so critical, but I exchanged a number of messages about this with their support line, and all I got back was bullshit answers, such as requiring a login gives "better security!" and so forth.

EDIT: The key word I'd use is that the messages are unprofessional. If you're trying to conduct serious business, it's not really suitable, because of their attempts at virality. When it comes to using an API, do you trust these guys to make customer-centric decisions or will you get stuck with something else?

<comment><USER11> Hi Paul, I'm sorry if you felt my answers were insincere. Many of our users are dealing with their client's confidential information so security is a big issue for us. I get several questions about this everyday.

We realize that the need for custom branding is great, and have plans to give our users control over of that, it just hasn't happened yet.

</comment></comment><comment><USER12> Here's the blog post announcement: <http://blog.hellosign.com/?p=65>

</comment><comment><USER13> Hey guys,

I would love have your API on Mashape! We have a lot of queries for signature APIs

</comment><comment><USER14> Thanks guys. I am definitely going to use this, provided it is indeed a simple and straight-forward API. Much better than having to deal with existing solutions, trying to build HelloSign from scratch.

</comment><comment><USER15> Be careful your icons background don't match the website background color

</comment><comment><USER16> I've now used HelloSign for client SOWs, tax stuff and divorce paperwork. Absolutely awesome service and I can't recommend it any higher. Crazy that it's free.

</comment><comment><USER17> I think you desperately need a quick video demoing this service w/o having the users jump right into API reference. Neat idea, btw.

</comment><comment><USER18> How are you going to make money? Edit: I ask because it says that this is a free service on the site.

<comment><USER5> We'll eventually add in more advanced API features like embedded signing, customizable branding, etc. We may charge for some of those advanced features.

</comment></comment><comment><USER19> ick. I don't love the send workflow. Lets say I send I need to send a course override form to my academic advisor and she opens the document and all of a sudden has a "hellosign" account? That download link is a little misleading.

</comment><comment><USER20> Awesome! I'm going to put this to use for the contracts for my convention :)</comment>


Rich Tax Breaks Bolster Makers of Video Games - <AUTHOR> http://www.nytimes.com/2011/09/11/technology/rich-tax-breaks-bolster-video-game-makers.html

<comment><USER2> The article is a bit complicated, centering on an array of tax provisions that favor EA, but there are some fascinating tidbits:

> In 1981, as Americans worried that Japan's growing dominance in the auto > business would be followed by a decline of the high-tech industry in the > United States, Congress added another research and development credit, this > time specifically for companies that increased their R.& D. spending from > the previous year...

> Within a few years, the credit was being claimed by businesses with little > technological background — fast-food restaurants, hair stylists and fashion > designers. So Congress tried to restrict what research would qualify. The > credit was denied for social science research and marketing...

> The failed attempts to restrict the R.& D. credit to basic research have > been a boon for video game companies. Even when companies are merely > creating new versions of existing games — conducting research that would > have little value to anyone but themselves — their development processes > usually involve enough experimental uncertainty to qualify for the tax > break.</comment>


Can a universal basic income work? Another country is giving it a go - <AUTHOR> https://www.weforum.org/agenda/2016/11/can-a-universal-basic-income-work-another-country-is-giving-it-a-go?utm_content=buffera5f4b&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer <comment><USER2> "while poverty itself is reduced and work is encouraged"

Neither of these things are true with UBI. Not everyone is ambitious or has career goals. Giving out free money will encourage many to not look for work and continue to barely scrape by. The end result will be future generations of more poverty.

We should abolish welfare (except for the small percentage of people that physically can't work) and turn UBI into a government jobs program. You will need to work every day picking up garbage, answering the phones, or working on infrastructure jobs assigned to you to get money from the government.</comment>


Are Cities Too Complicated? - <AUTHOR> http://www.citylab.com/tech/2016/09/are-cities-getting-too-complicated/496556/ <comment><USER7> This is the fundamental premise that object oriented thinking was created to solve. You cannot understand a sufficiently advanced system from both an overview and granular view. You have to either see the overview and trust the granular objects, or specialize in one granular object and then trust your adjacent objects.

Its a problem written about in detail by Marcus Aurelius in Meditations when he comments on running an empire. He notes that the most difficult part is not having information in a timely fashion at scale -- you can either have timely information about a single place, or out of date information about the entire empire.

They key part in both is trust and responsibility. You must trust that granular objects can take responsibility for themselves. If each one requires knowledge of the entire system to function, then the weight of that will overburden any system over time.

<comment><USER8> > If each one requires knowledge of the entire system

The general problem is the growing number of dependencies. James Burke in "Connections" warned that civilization is an interconnected web of _technology traps_ [1]. We survive as long as everything works (or "mostly" works), but there is a risk of cascade failure.

More recently, Dan Geer warned[2] about the same type of problem:

        In the last couple of years, I've found that institutions that I more
        or less must use [...] no longer accept paper letter they each only
        accept digital delivery of such instructions.  This means that each of
        them has created a critical dependence on an Internet swarming with
        men in the middle and, which is more, they have doubtlessly given
        up their own ability to fall back to what worked for a century before.
        [...]
        Everything in meatspace we give over to cyberspace replaces
        dependencies that are local and manageable with dependencies that are
        certainly not local and I would argue much less manageable because
        they are much less secure.  I say that because the root cause of risk
        is dependence, and most especially dependence on expectations of
        system state.
        [...]
        Accommodating old methods and Internet rejectionists preserves
        alternate, less complex, more durable means and therefore bounds
        dependence. Bounding dependence is *the* core of rational risk
        management.

[1] [https://www.youtube.com/watch?v=lKELMR6wACw](https://www.youtube.com/watch?v=lKELMR6wACw)

[2] [http://geer.tinho.net/geer.blackhat.6viii14.txt](http://geer.tinho.net/geer.blackhat.6viii14.txt)

<comment><USER9> I don't think it matters too much that most institutions no longer accept paper since paper is just the external interface. You get no more reliability if they did when all critical processes rely on technology.

In other words, you aren't walking your check to the IRS, the postal service couldn't deliver it, your bank couldn't cash it even if they did, and WTF would the IRS do with a billion checks?

<comment><USER8> The point isn't really that paper is _better_. It's that we had systems that worked for a long time and we _removed_ them. We shouldn't need to walk lots of checks to the IRS, that's the point of modern tech.

However, the IRS maintaining the capability of using old, simpler methods should be retained because it serves as a backup for (hopefully rare) situations where the primary infrastructure fails.

<comment><USER10> > The point isn't really that paper is better. It's that we had systems that > worked for a long time and we removed them.

Because we have better ones, that are less expensive, in many (but not all, due to excessive design rigidity in some cases) cases cheaper to adapt to change, and provide more value. That benefit is significantly limited if you bear the cost of maintaining (across requirement changes) the old processes (or analogs to them reliant on similar infrastructure) as well as the new processes, especially if you have to maintain the infrastructure (including the _human_ infrastructure -- e.g., for the IRS, of people trained to process tax returns by hand) they rely on.

> However, the IRS maintaining the capability of using old, simpler methods > should be retained because it serves as a backup for (hopefully rare) > situations where the primary infrastructure fails.

Certainly, functions that are short-term critical need some fallback. Functions that aren't, it may be more efficient to devote resources to restoring the primary infrastructure rather than burning them executing inefficient backup processes in the absence of primary infrastructure.

</comment></comment></comment></comment></comment><comment><USER11> > The Entanglement is a term from the computer scientist Danny Hillis, > referring to a new era of technology that we find ourselves in, where no > single individual can possibly understand what we ourselves have > constructed. In other words, when even the experts are unable to fully grasp > a system that they might have been themselves involved in the construction > of, we are in a new era of incomprehensibility.

This is not a phenomenon of just cities or other large societal systems. In my experience, this is already true for many a single company.

<comment><USER12> It's true for life in general. It is a rare luxury to have and understand all of the information before being asked to make a decision. This is why fields like economics have traditionally been poor predictors of actual human activity, they assume an ideal that is rarely true.

<comment><USER13> Reminds me of the trope that the choice should ALWAYS be left with consumers. Every consumer is a 'rational actor'. Reality is most humans have too many things going on, too many choices with not adequate info and are emotional actors.

<comment><USER14> Yet solutions emerge, even if individual agents have zero intelligence

[http://www2.econ.iastate.edu/tesfatsi/Gode%20and%20Sunder- JP...](http://www2.econ.iastate.edu/tesfatsi/Gode%20and%20Sunder-JPE.pdf)

Your lack of belief in the force of the free hand is troubling, especially when it can be proved by computer models and reality.

<comment><USER15> To clarify for the person you've responded to: the problem with humans isn't exactly that we individually have _too little_ intelligence, it's that the heuristics we have evolved to use for compensating for missing information include a great deal of bias. This results in the very-well-documented lack of rational actors in the real world.

</comment></comment></comment></comment></comment><comment><USER16> Cities have a dark side. I think that most people who grew up in a small town and later moved to a big city have gone through a period of disillusionment.

<comment><USER17> I don't want to seem mean, but you're like a caricature of a country person. People are living things which grow to suit their environment, everyone thinks their way is the best way and that their hometown is the coolest. When you say things like "city people care more about money" and "city people are mean" you sound like a bumpkin.

<comment><USER18> Maybe he's a caricature, but he's 100% right.

I grew up going to school in the burbs, all summer in a small home-town - <USER3> have lived in several major cities.

'City people' are definitely more about the money.

Small towns are communities. Everyone knows everyone - often for multiple generations. Families have ties - not just people. You can't 'not care about' someone you've known for 40 years, even if you don't know them that well.

In cities, people are exposed to a lot more people, they have tons of 'associates' but very few friends. People come and go - and they get individualist.

I find city people, having been exposed to 'more kinds of people' tend to be more 'tolerant' in the modern sense of that word, but have absolutely no idea what community means and are far more judgemental, ideological, selective in everything. City people walk and talk with a kind of 'facade' \- they are trying to project an image - almost all of them. In a small town - this would seem ridiculous.

Also in small towns - when people speak to you - they are _speaking to you_ then are 'present'. In the city, people are usually polite - but conversations (and relationships) 'transactional'.

My brother (small town) threw a big bar-b-q for his friends birthday, and invited a bunch of people. Some really odd red-necky types showed up - <USER3> don't mean negative - just poor. They were welcome. Old guys in wheelchairs. Young partiers. It was an unbelievably mixed crowd. I don't think my brother would have preferred they came - but there is no way on earth anyone would say anything - after all 'it's joe from the corner store' \- and 'Mary, Sean from across the streets Aunt'. When you go to social gatherings in urban areas - they tend to be hyper-specific in terms of social groupings.

Even the near-homeless/poor people in small towns 'know someone' and most people 'know them' by name. Down the street from where I live (urban) - <USER4> are a couple of completely 'nameless' homeless people.

Also - small town people tend to have a lot of gatherings where it's mostly family. In the city, often less so. When you hang around mostly your family and extended friends, it's a completely different world from 'people your age in your clique' etc..

The craziest thing about this - is 'city people' often have absolutely no idea what a community actually is. They make all sorts of crazy assertions, but have no clue.

You call this guy a 'bumpkin' because - no offence - you might not know what he is talking about - also - your comment might be a kind of bigotry.

In the suburb where I grew up - I don't know anyone. They've all moved. I have some contact - but the people, stores, restaurants, neighbourhood - <USER5> unrecognizable. My 'hometown' \- I still know some people, epc. through family. It's incredibly boring, and would be nary impossible to live there (it would be nice if it were a commute from a city), but if I don't go back often enough, I go crazy.

To someone from a small town, living in a city often feels like 'living in a corporation' \- and to some extent they are correct.

<comment><USER19> > Some really odd red-necky types showed up - and don't mean negative - <USER6> > poor. They were welcome. Old guys in wheelchairs. Young partiers. It was an > unbelievably mixed crowd.

And had a trans person showed up, how would that have gone? A Latinx person? A queer couple?

Had the opposite experience moving from a suburb to a major metropolitan area.

There's a level of community here (not all communities are communities that straight white tech workers are involved with or are welcome in) that is unparalleled.

It may cause the hyper privileged to become more individualistic but for everyone else we have thriving communities with true friendships and support networks.

<comment><USER20> I believe the term is "communities of choice". In a small community there is only one community and everyone has to be in it, for good or ill. In a city you _can_ make a much better community suited to you - but it requires active effort to maintain that link, so it's much easier to fall off and become invisibly alone.

<comment><USER18> I agree - except that 'communities of choice' are far more fleeting than otherwise. In 'communities of choice' \- nobody cares about old people, for example.

'Communities of choice' work when you're young OR when you're part of a specific ethnic group (say Somalis in Philly or whatever) - which is in many ways like a 'small town' within a city.

</comment></comment></comment></comment></comment></comment><comment><USER21> Another word for complexity is diversity. Resilience comes from that complexity. Very much like biology.

NYC (where I live) is wildly inefficient, except at delivering benefits that millions of people consider worthwhile.

<comment><USER22> Your point is a step in the right direction. Life is complex and diverse. Cities serve as models. Daily life is a test of the inputs and results. Every day they can be reconfigured and the data analyzed.

</comment></comment><comment><USER23> The article doesn't answer the question stated in the title.

<comment><USER24> I see statements equivalent to these in the article:

\- Cities are inefficient Rube-Goldberg contraptions

\- Portions of city systems are too complex for one person to understand

\- We see evidence of complex, unpredictable systems when things go wrong

\- Cities have multiple complex systems that can and do produce unpredictable failures

\- Methods inspired by scientific study may help us improve city life

I'd summarize it as: Here are some problems caused by complexity, and here are some (vague) ideas for how to fix them. From the article's content, I think there's an implied "yes" answer to the title.

</comment></comment><comment><USER25> John Edgar (former VP Strategy at DigitalOcean) and his team are working on and writing about this extensively >> medium.com/city-as-a-service/

<comment><USER26> Just being helpful: [http://medium.com/city-as-a- service/](http://medium.com/city-as-a-service/)

</comment></comment><comment><USER27> _Use the right kind of probe to see the right level of detail._ \- Mark Burgess

 _Make our comprehension of the world more manageable by limiting the amount of information we have to interact with at any time. Our experience of the world can be made comprehensible, or incomprehensible, by design._ \- Mark Burgess

 _The effect of limited information is that we perceive and build the world as a collection of containers, patches or environments, separated from one another by limited information flow. These structures define characteristic scales._ \- Mark Burgess

 _The more details we can see, the less we have a sense of control._ \- Mark Burgess

 _Separation of concerns ... a necessary consequence of loss of resolution due to scale ... a strategy for staying sane._ \- Mark Burgess

These quotes are all from _In Search of Certainty: The Science of Our Information Infrastructure (2013)_ , via my fortune database [https://github.com/globalcitizen/taoup](https://github.com/globalcitizen/taoup)

</comment><comment><USER28> Can anyone with access to the book please answer whether or not Geoffrey West, Joseph Tainter, or W. Brian Arther are among the cited references?

I'm flipping quickly through a copy of Arbesman's _The Half-Life of Facts_ and am disappointed to see that he (or his editors) have fallen prey to the gross misconception that numbered footnotes and bibliographies somehow diminish a book's value. Quite the opposite. (THLoF has end notes, but they're not indicated within the text, and insted reference pages and passages, which is a form of torture to be included in a future revision of the Geneva Convention.)

</comment><comment><USER29> I don't know how useful biological ideas will be to urban planning, but this sentence tickled my brain:

"...This can include such things as cataloging bugs and unexpected behaviors in our infrastructure (like how a naturalist might collect insects)"

This sounds like what anybody working on a computer can use at a place like Stack Overflow. People have problems, post a description of it, and somebody else who happens to know helps them. The result of this process is available to others on the web who might have a similar issue.

<comment><USER20> e.g. [https://www.fixmystreet.com/](https://www.fixmystreet.com/)

</comment></comment><comment><USER30> Joseph Tainter has done some interesting work on the relation between societal complexity and collapse[1], here's a recent(ish) paper of his on the subject [http://wtf.tw/ref/tainter_2006.pdf](http://wtf.tw/ref/tainter_2006.pdf)

[1] [https://www.amazon.com/Collapse-Complex-Societies-Studies- Ar...](https://www.amazon.com/Collapse-Complex-Societies-Studies- Archaeology/dp/052138673X)

</comment><comment><USER31> They are often overcomplicated due lack of planning(environmental, ergonomics/accessibility), ad-hoc building design driven by commercial interest and persistent ignorance of users(cities are user-unfriendly) needs. Unless the bureaucrats are faced with public anger/complaints they would defer to major companies and investors opinion of what the city needs. While some problems like fracking are really noticeable(creating wide-spread publicity), the corporate power creep seems invisible to average joe who blissfully thinks the city is made for him. Infrastructure is not actually people-centric, its built to maximize utility/efficiency providing minimum standard that is "acceptable" instead of striving to improve the city(solving the problem the quick way).

</comment><comment><USER32> _Cities have developed in a complex and often fascinating manner, but along the way, we have portions of these systems that are more complex than any single person can understand._

Just like life itself.

</comment><comment><USER33> Betteridge's law is fumbling here: yes, perhaps they are. Big, old cities are full of ancient infrastructure that slips through the cracks. People depend on it, and nobody knows exactly where its networks are routed; then when it breaks, it's a big disaster.

<comment><USER34> On the other hand, perhaps the answer is that they're just complicated enough. If the big, old cities didn't provide a unique economic advantage through their increased interconnectivity then no one would stick around to tolerate that ancient infrastructure.

<comment><USER14> Huh, path dependance. By virtue of existence and being big enough, they are worth sticking to.</comment></comment></comment>


Technology Makes Car-Pooling Safer and Easier - <AUTHOR> http://www.nytimes.com/2012/07/05/technology/technology-makes-car-pooling-safer-and-easier.html?hp&gwh=656068FF9F08B1F45E8E12D4CD4E68DF

<comment><USER2> Question (on Quora) that is related to this article: "What are the regulatory/legal problems that ride-sharing startups face?": [http://www.quora.com/Ride-Sharing/What-are-the-regulatory- le...](http://www.quora.com/Ride-Sharing/What-are-the-regulatory-legal- problems-that-ride-sharing-startups-face) \-- I am especially interested in what is preventing P2P Taxi services from popping up. You know, all SoMoLo map real time virtual taxi meter reputation trust bitcoin payment platform wallet HipAirTaskRabbitBerg. Thks :)</comment>


Ask HN: Hosting with good upload and download speeds - <AUTHOR>

Hey all,
Working on a project at the moment that involves processing large files downloaded to the server. We usually use OVH but are investigating alternatives that have better upload speeds. Has anyone any suggestions?
Thanks,
j <comment><USER2> Check with Fastmail, I know they use fast Intel X25-E SSDs for their email backend, but I don't know what they use for their file storage side. Shoot an email to email@example.com & ask what you could expect in terms of throughput, I've always had good experience with them, technical & service-wise; but haven't ever had the kind of bandwidth to ever really put the file servers to any speed test before.</comment>


Show HN: Velocity.js – Accelerated JavaScript animation - <AUTHOR> http://VelocityJS.org <comment><USER2> It depresses me to no end that even with impressive engineering advances like this, any modestly graphical intensive app on the browser redlines my dual- core Intel laptop.

Similar graphics effects in QT or other native technologies not only do not redline my laptop, _they don 't even raise the core temperature a single degree_.

I get enthusiastic about cool JS technologies just like most devs, but I feel like we're moving backwards.

<comment><AUTHOR> I agree. The issue is the DOM. (For contrast, I've seen highly performant 3D worlds rendered in the browser via WebGL that don't bring my computer to its knees.)

We've been layering on years of HTML/JS additions that aren't allowed to break backwards compatibility. (Google's Blink project is one example of an effort to try to undo some of this.)

</comment></comment><comment><USER3> Dont forget that CSS based animation is a declarative based animation framework while Velocity.js is using imperative code to animate (while the calls look declarative, the code in the framework has to be bundled with your js).

The advantage of the declarative approach, is that browser can improve the CSS animations in every browser update. Also, in theory, browsers could improve CSS animation in such a way that is is always faster than velocity.js.

You could for example make a CSS-animation to velocity.js compiler. Browser do this compilation (not to velicity.js but to native code/operations) already. Thats why it surprises me that velocity.js is saying its faster than pure CSS animations.

Can somebody enlighten me on why this is the case?

<comment><AUTHOR> Yep, I authored an article on CSS vs. JavaScript performance here: [http://davidwalsh.name/css-js-animation](http://davidwalsh.name/css-js- animation)

</comment></comment><comment><USER4> Wonderful.

This is one of those things that dogs me as a developer - accepting things _as they are_. It's something we should all look out for.

If you've ever just tacitly, passively accepted something as potable if not ideal, you need to develop an internal "Complacency Alert" alarm. I know I do. For too long I've accepted that you either have to reinvent the wheel with javascript animations or accept what jQuery has to offer.

Hats off here.

<comment><USER5> > accepting things as they are

really? as opposed to innovating?

<comment><USER4> Are you attempting to do a Cliff's notes of my comment?

</comment></comment></comment><comment><USER6> I'm really impressed by the level of documentation in the code[0]. Makes it fun to read.

[0][https://github.com/julianshapiro/velocity/blob/master/jquery...](https://github.com/julianshapiro/velocity/blob/master/jquery.velocity.js)

<comment><USER7> Well documented sure, but man are there some long lines in there. I get that 80 char width can be a bit limiting, but several of those are 200+.

Still, I'll take the documentation. :)

<comment><USER8> 2000 lines of code in one file is too much, should be broken into 4-5 files at least.

</comment></comment></comment><comment><USER9> We had Julian come by and demo this to our team a few weeks back. Totally awesome work he's doing here. Great job Julian.

</comment><comment><USER10> This blew me away. Never thought JS animations could be faster than CSS.

I'll use it in my next project.

</comment><comment><USER11> Shouldn't your comparison widget also have a pure CSS option?

Maybe I'm missing something, but I'm not seeing anything to back up the claims that this is more performant than pure CSS animations?

<comment><AUTHOR> Transit doesn't incur much overhead: [https://github.com/rstacruz/jquery.transit/blob/master/jquer...](https://github.com/rstacruz/jquery.transit/blob/master/jquery.transit.js)

Either way, there'd need to be some sort of chaining implementation for the sake of the demo -- and at that point you might as well be using Transit.

As for performance vs. CSS transitions, try out the Performance Comparison #1. Select Transit as the engine and run it at high element counts. It chokes pretty quickly. These effects tend to be exacerbated on mobile.

I'll note that Velocity also combines features from jQuery, jQuery UI, and transitions -- so it's a feature play as well as a performance play.

</comment></comment><comment><USER12> how does performance compare with famo.us? they're also css haters, to quote

> "We saw Javascript could do a raw game rendering engine, but we found a way > to render an app and pass that render to the GPU, skipping all the things > that we were waiting on the browser companies to fix. We found a way to > bypass it by having a direct mathematical conversation with the GPU."

IMHO famo.us seems more oriented toward taking over the whole app and providing a view-level API, where velocity is more for animating page DOM elements? For some basic things like delay: the velocity API [1] seems a lot simpler than the equiv [2] with famo.us, whereas famous has things like a "Grid" or ScrollView out of the box.

[1] [http://julian.com/research/velocity/#delay](http://julian.com/research/velocity/#delay) [2] [http://stackoverflow.com/questions/23330771/how-to-add-a- del...](http://stackoverflow.com/questions/23330771/how-to-add-a-delay-to-a- famous-transition)

<comment><AUTHOR> Exactly right -- Velocity is a jQuery plugin and jQuery UI/CSS transitions replacement whereas Famo.us is a full-fledged app framework built around a physics engine.

As for a performance comparison, their demos have crashed my phone. So I have no idea. Looks like they've also pulled their demos link for now: [http://famo.us](http://famo.us). It's a pretty awesome concept though. I hope they succeed.

</comment></comment><comment><USER13> Congratulations:

         	Content Blocked (content_filter_denied)

      	Content Category: "Suspicious"

Any idea why? (I'm fairly sure my organisation doesn't curate the blocklist, only purchases it)

<comment><AUTHOR> Thanks for the heads up. Julian.com is currently hosted on GoDaddy -- so nothing would surprise me :) Switching to AWS later in the week.

</comment></comment><comment><USER14> I wonder if other people also see the jitters in this demo when the box is returning to left? [http://cdpn.io/pLAxF](http://cdpn.io/pLAxF) (click the red box)

</comment><comment><USER15> JQuery should just implement velocty.js' animation functions?

<comment><AUTHOR> I so thoroughly circumvented their CSS and animation codepaths that they would have to house a lot of redundant code to incorporate Velocity.

But a boy can still dream :-D

</comment></comment><comment><USER16> Can I just get a link to the demo please? There's no reason I should have to watch a youtube video in order to see a javascript demo.

<comment><USER17> It's the link right after the link to the youtube video: [http://julian.com/research/velocity/demo.html](http://julian.com/research/velocity/demo.html)

</comment></comment><comment><USER18> I am definitely going to use it on my next project that needs any animation at all. Nice work.

</comment><comment><USER19> Should the 3D demo work on IE11? It started fine but then broke, on desktop and wp8.1.

</comment><comment><USER20> Any reason you can't just overwrite .animate and have existing code use it?

<comment><AUTHOR> It's generally considered bad practice to overwrite existing functions that other code relies on -- you can never be sure that your replacement is 100% compatible.

</comment></comment><comment><USER21> any thoughts on how it compares to the CSS transitions polyfill [1], speedwise?

[1] [https://github.com/rstacruz/jquery.transit](https://github.com/rstacruz/jquery.transit)

<comment><AUTHOR> I provide a direct comparison against Transit in the top-right corner of the documentation.

<comment><USER21> ah sorry, missed that. Transit is much smaller though if you dont need all the features or extremely high perf.

EDIT: looks like Transit introduces hz tearing in perf demo, might be a bug in lib or demo?

<comment><AUTHOR> Yep, Transit is super small. Velocity still gets quite small though -- about 7Kb when zipped.

As for Transit's tearing and banding at high element counts -- that is indeed the performance bottleneck of CSS transitions shining through. If you're interested, you can learn the technical reasons behind Velocity's speed increase over CSS and jQuery here: [http://davidwalsh.name/css-js- animation](http://davidwalsh.name/css-js-animation)

<comment><USER21> nice. i never understood why jquery never adopted RAF. back compat prolly with their apis.

</comment></comment></comment></comment></comment><comment><USER22> The playground seems broken (stuck on "Let's play...")

<comment><USER23> You need to click on "Let's play..." for it to start.

<comment><USER24> Interesting. I wonder if the ellipsis (…) changes how that wording is being interpreted by the user. Maybe we've been accustomed to the idea that … indicates an action is being performed by the application (Loading… — We need to wait.), whereas ! expects us to perform an action (Let's play! – The app is waiting.) The UX of punctuation…

</comment></comment></comment><comment><USER25> Thanks for proving what I long suspected.

</comment><comment><USER26> Nice, how does this compare with Greensock's performance? Is it better, or about the same?

<comment><USER27> it says in the upper right hand corner. It out performs green sock on higher workloads.

<comment><USER28> One of the nice things about green sock is that it doesn't have any dependencies. That is more important to me than a little bit more performance (since green sock is already pretty fast).

<comment><AUTHOR> GSAP is awesome. They proved to me that Velocity was a worthwhile pursuit.

</comment></comment></comment></comment><comment><USER29>
         "Because transitions aren't natively controlled by JavaScript (they are merely triggered by JavaScript), the browser does not know how to optimize transitions in sync with the JavaScript code that manipulates them."

The above voodoo talk is quite a disservice. It's immediately obvious that the dev does not know how v8 and the dom/CSS/rendering engine are tied together. The fact that the CSS transition is triggered by JS has no bearing on speed or optimization.

Secondly, most importantly, JS based fps-style animations eat CPU, and battery power of portable devices. On the other hand, CSS transitions are only getting better. Most CSS transitions are GPU optimized and light on CPU usage. A web page should not be strangling the v8 engine for graphical animation that could instead be GPU-bound. This library is clever but a step in the wrong direction. The dev could have contributed to WebKit CSS key frame animation acceleration instead.

Thirdly, JS animations cannot handle the sheer amount of particles that CSS transitions can. For instance, take Ana Tudors box-shadow particle hack, and look at how performing it is through GPU acceleration.

[http://codepen.io/thebabydino/pen/shtGe](http://codepen.io/thebabydino/pen/shtGe)

<comment><AUTHOR> You misread my quote entirely.

If you read further down the article you're referencing (davidwalsh.name/css- js-animation), you'll see an example of how Velocity caches values between consecutively chained calls. THAT is an example of the browser not knowing when to optimize transitions in sync with JS code. Another example from that same article: Caching unit conversion ratios (e.g. px to %, em, etc.) across sibling elements in the same call.

Further, JS animation does not eat up mobile devices. You're conflating concepts.

I know that HN can be a stomping grounds, but there's no need to be rude.

<comment><USER29> Caching values is an obvious and necessary optimization.

The claim that the CSS transition cannot know when the property changes due to JS, therefore cannot optimize, is total fluffery. The main loop is render, JS, and never at the same time. That is why a JS loop will freeze the browser. Have you no idea that it's all single threaded?</comment></comment></comment>


The Rust SQL Toolkit 🧰 - <AUTHOR> https://github.com/launchbadge/sqlx <comment><USER2> Please don't use emoji (especially colored ones) in titles. I didn't even think HN allowed that. It's distracting and ruins the clean text aesthetic.</comment>


Show HN: Lokalized – Expression-language-driven localization with CLDR support - <AUTHOR> https://www.lokalized.com <comment><USER2> This seems similar to Mozilla L20n and fluent except with more emphasis on power that simplicity and fault tolerance. Empowering translators seems like the future of localization but everything about the file formats and tools matters a great deal.</comment>


Show HN: Astroflow – Fast elegant, structured, isomorphic logging for JavaScript - <AUTHOR> https://github.com/astroflow/astroflow-js <comment><AUTHOR> Hi, author here :)

The mission of Astroflow is to provide a unique, superior experience of logging among all programming languages.

You can find the motivation and explaination here: [https://kerkour.com/post/logging/](https://kerkour.com/post/logging/)

The Go version here: [https://github.com/astroflow/astroflow- go](https://github.com/astroflow/astroflow-go)

And the website here: [http://astroflow.io/](http://astroflow.io/)</comment>


Lessons in Technology and Innovation from the iPad 3 Graphics and Display - <AUTHOR> http://www.realworldtech.com/ipad3-graphics/

<comment><USER2> Not many people believed me when I told them iPad 3 will actually be slower than an iPad 2 when all apps become "retina-ready". They were too excited hearing about "quad core graphics" in all headlines, to pay attention to that. And with iPad 4, Apple barely reached the performance of iPad 2.

Another thing that got affected was storage space, with apps becoming 2-4x larger, yet Apple keeping the $500 iPads with only 16 GB, even with the latest generation.</comment>


Ask HN: When should you reinvent the wheel? - <AUTHOR> <comment><USER2> I think reinventing the wheel is only worth it when you are trying to learn some core details.

If your goal is to launch something, you are better off using something that already exists.</comment>


Web.go – Web applications with Go - <AUTHOR> http://webgo.io/

<comment><USER3> This doesn't look like it expands much on what the Go web server does and it also looks like it's been abandoned. Last commit was ~5 months ago from today, with most of the rest being 7-8 months ago and 40-something issues piled up. For some better web experiences in Go I'd check out revel[1] or gorilla[2]

1\. [http://robfig.github.io/revel/](http://robfig.github.io/revel/)

2\. [http://www.gorillatoolkit.org/](http://www.gorillatoolkit.org/)

<comment><USER4> web.go is definitely pretty old/semi-abandoned.

I wouldn't recommend Revel to many (it's Play heritage isn't well suited to Go, IMO) but the Gorilla toolkit—a collection of useful packages that extend net/http, rather than a full-blown framework—is _exceptional_. mux/pat, schema and sessions are all such useful tools and I've been working with them for a couple of months [in my spare time] as I build a web app w/ Go as a non- programmer.

Some other solid Go web packages/tools:

• beego ([https://github.com/astaxie/beego](https://github.com/astaxie/beego)) - a well-maintained, active project if you want to head down the framework route. Closer to Sinatra/Flask than Django/Rails.

• "Bones" ([https://github.com/peterskeide/bones](https://github.com/peterskeide/bones)) - a useful template for an application/some good design patterns

• nosurf ([https://github.com/justinas/nosurf](https://github.com/justinas/nosurf)) - CSRF middleware that plugs into net/http (and therefore works with gorilla/mux or pat)

• gorilla/context ([http://github.com/gorilla/context](http://github.com/gorilla/context)) - request context. Great for passing per-request variables (i.e. CSRF tokens, saved forms, etc) between your middleware and your wrapped handlers. Set up some Get and Set wrappers around your specific keys so you can avoid writing out type assertions every time you want to retrieve the stored object.

• go.stripe ([https://github.com/drone/go.stripe](https://github.com/drone/go.stripe)) - <USER2> fairly complete Stripe library.

• blackfriday ([https://github.com/russross/blackfriday](https://github.com/russross/blackfriday)) - Markdown processor.

Obviously, frameworks (and ecosystems...) like Flask, Sinatra, Django and Rails have an advantage in that you can get stuff done today: they do a lot for you. And, for many use-cases, performance will never be a problem.

Saying that, writing HTTP logic in Go has been surprisingly easy, and the small amount of extra boilerplate you have to write (if you're sans-framework like me) is nice when you realise how darned fast your application is. Being able to deploy a single binary and front-end it with nginx also reduces a ton of complexity.

PS: Once I finish this thing off over the Christmas break, I'm hoping to write up a few articles on the bits-and-pieces that took a bit of time to "get right". Also have a minimalist (i.e. wraps HandleFunc, not Handler) CSRF package in the works.

<comment><USER5> > _Being able to deploy a single binary and front-end it with nginx also > reduces a ton of complexity._

Just wondering, how is that different for other compiled languages, like Java/Scala (Play) or C#? You copy all jars over, optionally put an nginx in front, and off you go. And is it really that different for Ruby or Python with virtualenv? What's the added complexity there, in terms of deployment?

Note, I don't really mean to be critical or something, rather I wonder whether there's some advantage of Go that I've not understood.

<comment><USER4> > What's the added complexity there, in terms of deployment?

You need to install the interpreter/runtime (and sync versions/use rbenv/etc) + you need to install your libraries + ensure that they are kept up to date (i.e. virtualenv or bundle install).

A lot of this is shortcut these days thanks to rbenv, virtualenv, etc, but it's still not automatic.

I can import a ton of libraries into my Go project on OS X, cross-compile a binary (`$ GOOS=linux go build`) and upload it. If I update the packages on my dev machine, it doesn't matter. Recompile, upload, restart. This goes for many languages that compile native binaries, but Go does make it really easy.

<comment><USER6> Don't you also have a load of static content (js, css, etc), templates, and configuration files to upload / sync as well?

But yes, it does sound a bit easier.

<comment><USER7> With some clever compilation stuff, you can also pack most static assets directly in your application (see [https://github.com/jteeuwen/go- bindata](https://github.com/jteeuwen/go-bindata) ). This gets even more magic...

</comment></comment></comment></comment></comment></comment><comment><USER8> Wow, I didn't expect this to make the top of Hacker News :)

Web.go is a wrapper on top of Go's net/http standard library. The authors of Go aren't from a web programming background, and the net/http server interfaces was a bit more clunky than I'd like, which is the main reason web.go exists. It's not really designed to be a full-fledged web framework.

I used it to build a few apps. There's an old article about one of them here (although the app has since been taken down):

[http://blog.golang.org/real-go-projects-smarttwitter-and- web...](http://blog.golang.org/real-go-projects-smarttwitter-and-webgo)

I don't program Go day-to-day any more (Meraki uses Rails and Scala), but it's still my language of choice for personal stuff.

</comment><comment><USER9> It's also worth checking out the gorilla library: [http://www.gorillatoolkit.org/](http://www.gorillatoolkit.org/)

One thing I really like about gorilla is that it's broken up into pretty sensible packages so you can pick and choose what you'd like.

</comment><comment><USER10> web.go is old and not maintained. If you're new to Go and wants a framework check out beego ([https://github.com/astaxie/beego](https://github.com/astaxie/beego)). The other popular framework is Revel which I think is "too heavy" and not my cup.

beego, revel are adaptation from other languages/framework, beego is Python/Tornado inspired and Revel is Scala/Play inspired. beego is closer to idiomatic Go than revel, i'm not expert but feel their MVC based structure might not be "congruent" to Go's interface/composition construct. Sorry I can't really explain what I meant, maybe Im just anti everything Rails like MVC for web framework.

Many Gophers prefer to use light libraries such as Gorilla to assemble their web apps, as Go already has basic http covered in standard library. Having said that it is good idea in Go land to have a recommended template/structure based on these light libraries for a best-practice web app that covers standard web components that are outside of standard libraries such as session, context, user auth etc. This is to make it quick to assemble an web app with all essential, and a common code structure that makes maintenance easy -> the advantages of a framework. Or maybe we do need to use a web "framework" for Go after all. Similar reasoning on why people are using Symphony/Laravel for PHP now.

Go is highly recommended for coding server backend components, the processing and brain of app. But should one use Go for web front end? Go web libraries/framework (beego/revel included) is not as matured as Rails/Django, so you do need alot more of your own coding for a complete web ui front. Let me break down:

* If you're are more business oriented and would like your web app up as fast as possible, use Rails/Django. I would still use Rails/Django even if your web app is only Rest API for a Angular/Ember app. You can then use Go to optimise your backend.

* If you would like to brush up your resume, by all means dip into Go for web app. As I predict it will help you 2/3 years down the road. I just noticed that irc #go-nuts has more members than ruby/rails. But then so is #haskell and yet Haskell is not as mainstream as PHP/Python/Ruby/Java.

* If you are already Rails/Django expert and am choosing between NodeJS and Go: keep on choosing as there is no clear advantage of one over the other. And you should also consider Clojure or even Scala. OK about Node vs Go for web app: NodeJS/ExpressJS has has more than a year advantage thus you see more NodeJS/ExpressJS projects. I think both are on par for time-to-market if you're developing a REST API.

* If you are novice programmer and new to web app, learn something like Rails/Django for web best practices. However because Go web library is close to metal, you will understand in greater detail on how web/http actually works by coding a web app and reading Go standard http library. You might heard that Rails/Django is passé and you might not want to waste time for something with "no future". But don't. Those are someone else opinion and Rails/Django will be around for many years to come. In fact Rails/Django is the top choice of many programmers who want to leave PHP/Java web. It is quite difficult nowadays to be a one language programmer. So pick up as main one that is current mainstream web technology (PHP, Rails/Ruby, Python/Django) and bet on one for future that is not as mainstream (Go, Clojure, Scala). It is harder for new programmer to pick up newer tech as far as learning materials go.

* If you are a superstar programmer, yes you do need to pick up Go, in addition to Haskell, Clojure, Scala, Erlang, Fortran, Basic and ARM assembly. Please do not learn go if you're a Javascript programmer who wears a Javascript t-shirt and has a Javascript soft toy (whatever) in your bed.

My 2.5 cents. To go or not to go?

</comment><comment><USER11> What, a new framework in a new language? I haven't even learned ruby on rails yet.

<comment><USER12> Hahaha join the club, I neither know Ruby nor Rails. Don't know Go either, or Node, or Angular....I'm a dinosaur :)

<comment><USER13> me too!

Still making living from good old C.

"go" is just one letter too many to remember. :-)

</comment></comment></comment><comment><USER14> I love Go, but it seems like just about every HTTP request router is designed around abuse of global state.

<comment><USER15> It's not _designed_ around global state. It's true that just about every HTTP router has this "feature", but all it's doing is allocating a "global" server object by default and adding the module-level helper functions. In other words, if you only want a single server object and don't need to configure it, or if you just want a quick hello world example, you don't have to allocate the server object yourself. Without those extra convenience methods, this would be hello world's main:

        s := web.NewServer()
        s.Get("/(.*)", hello)
        s.Run("0.0.0.0:9999")

Same goes for net/http and gorilla. net/http calls it the "default" server, web.go calls it the "main" server. I blame the influence of Sinatra etc.—the examples (for all three libraries) don't make it clear that this is what's going on and don't encourage making your own server objects to minimize global state.

<comment><USER14> Right, "designed" is probably a misleading way to put it. I just wish, like you say, that libraries would stop supporting and encouraging use of global routers.

</comment></comment></comment><comment><USER16> I'm not sure I see what this adds to the Go standard library and things like Pat.

<comment><USER17> Agreed - if you're new to programming in Go, I'd recommend using the standard library (supplemented by Gorilla[0] once you get the hang of things).

 _If_ things start getting unwieldy as your app grows, you can always try out something like Revel, but by starting with the standard library (which already has a very clean web server built-in), you'll get a sense for the way things work "under the hood" early-on.

If you want to see how a Go web server built with just the standard lib + Gorilla looks, I wrote a simple sample application a while back: [https://github.com/ChimeraCoder/go-server- bootstrap](https://github.com/ChimeraCoder/go-server-bootstrap) . The most verbose part is the oauth2 callback.

I should get around to updating it (it still even uses a Makefile! Eek!), but it gives the basic idea.

(Sidenote: When did Github stop supporting the ".markdown" extension instead of just ".md"?)

[0] [http://www.gorillatoolkit.org/](http://www.gorillatoolkit.org/)

</comment></comment><comment><USER18> Has anyone any tips on any frameworks for building JSON RESTful services? I have been using [https://github.com/ant0ine/go-json- rest](https://github.com/ant0ine/go-json-rest) and it works as a great building block. Is there another great lib I have missed?

<comment><USER19> I took a look at a few of the go rest frameworks and settled on [https://github.com/emicklei/go-restful](https://github.com/emicklei/go- restful). It seems like it's the most feature complete and mature of the pack. I'm playing around with a go-restful and gorp (orm-ish library in go) combination at the moment.

I found this project ([https://github.com/jmcvetta/lgtts](https://github.com/jmcvetta/lgtts)) that has managed to integrate go-restul/gorp and is also setup so it can be deployed to heroku.

<comment><USER18> Thanks, go-restful looks awesome. Definitely going to play around with it!

</comment></comment></comment><comment><USER20> One thing I don't like about these packages is the use of map[string] string to represent dynamic url parameters. The conversion into a useful type seems like something that could (and should?) be automatic.

Shameless plug: for my own use I wrote [https://github.com/0xfaded/rhttp](https://github.com/0xfaded/rhttp) which is used with (not a thin layer over) net/http. There is a draftish blog post to go with this [http://blog.0xfaded.com/](http://blog.0xfaded.com/).

As a side note, I use an unusal pattern of passing an empty struct as a function arguement for the sole purpose of being inspected using reflection. Undecided if this is good or bad. Thoughts?

<comment><USER21> Nice package. I like the fact that it's limited in scope and actually does some work for you. There's a trick you're missing though - you require the user to pass in their expected params struct explicitly so you can reflect on its type, but you _could_ just reflect on the handler function type itself.

Then a handler function could look like this:

        func Do(w http.ResponseWriter, r *http.Request, params *DoParams) {
             w.Write([]byte(params.Var))
        }

No need for any dynamic type coercion - it can all be checked up front when the handlers are registered. The down side is that the signature of Handle would become more opaque (its argument would just be an interface{}) and you'd probably want to lose the Handler type.

FWIW, passing an empty struct for the sole purpose of being inspected using reflection is not unusual (see for example gob.Register).

<comment><USER20> I'm aware of this, however there is a pretty serious downside: function decorators (currying, whatever you want to call it) become difficult if type information is encoded in the function signature. For example, I mark handlers for logged in users by:

      handle(..., User(F))

The prototype of F and User might be

      func F(w http.ResponseWriter, r *http.Request, s *Session, i interface{})
      func User(...type of F...) func (http.ResponeWriter, r *http.Request, i interface{})

User() would do some preprocessing on the request and produce a Session for F. The problem is that User accepts ...type of F...; although it could accept an interface (of a function) but doing everything by reflection becomes cumbersome.

This is one of the things I don't like about go but really you need a type system like haskell's to achieve what I want here.

<comment><USER22> You could create a dummy interface which all your DoParams-like types could implement:

        type Params interface { IsParams() }

Also, you can get away with passing a nil pointer for reflection rather than allocating a nil struct:

        fmt.Printf("nil pointer to DoParams: %T", (*DoParams)(nil))
        fmt.Printf("pointer to nil DoParams: %T", &DoParams{})

(Which isn't going to be a source of gc pressure in this instance, but still...)

</comment></comment></comment></comment><comment><USER23> I'm in a position where I've learned the basics of rails (can make very primitive apps now!) and have completed the go-lang tutorial.

I love Go as a language and am itching to do something with it. Thing is, my personal project is a webapp. I'd like to use Go for it but rails just seems so much easier to make it happen.

Anyone have any thoughts or experiences actually making webapps with Go? It feels like I'd be better off making tooling or API wrappers with Go rather than the core webapp...

</comment><comment><USER24> As a newish Gopher, I really appreciate resources like this. It's especially welcome after grokking The Way To Go (which is a great resource as well). Great work!

<comment><USER25> Also be sure to check out [https://gobyexample.com/](https://gobyexample.com/) It's so helpful!

</comment></comment><comment><USER26> Is this the one that was inspired by web.py? When I started playing with Go, I played with one called Web.Go, which was inspired by web.py.

<comment><USER8> Yes, it was definitely inspired by web.py (tornado, actually). I loved tornado but didn't like the fact that there were no asynchronous libraries for it.

</comment></comment><comment><USER27> What I want to see from go are more fleshed out frameworks like Rails, Express, webapp2 etc. This still feels like a lot of boilerplate design is left up to interpretation which is fine if you have a small time, but considerably more frustrating as you scale and have to bring on new team members.

</comment><comment><USER28> It would be really useful for someone with experience developing in Go to explain the pros/cons of using Go over alternatives. Why should I develop websites in Go over Node or Python?

</comment><comment><USER29> Will be interesting to see the difference in how Go and Nodejs grow considering the module system and time of reaching popularity will be similar

</comment><comment><USER30> It's the improvement of Go, isn't it?

</comment><comment><USER31> Does anyone know a simple way to get a go file webserver with traditional auth (plain/digest) ?

<comment><USER32> For the file server use the built in FileServer:

[http://golang.org/pkg/net/http/#FileServer](http://golang.org/pkg/net/http/#FileServer)

For authorization:

        var siteAuth = base64.StdEncoding.EncodeToString([]byte("USERNAME:PASSWORD"))
        func handle(w http.ResponseWriter, r *http.Request) {
            auth := r.Header.Get("Authorization")
            if auth != "Basic "+siteAuth {
                w.Header().Set("WWW-Authenticate", "Basic realm=\"REALM\"")
                http.Error(w, "Not Authorized", 401)
                return
    	}
        }

No real need for a library.</comment></comment>


Google offers Search, Feed, and Translation APIs to Non Ajax Usage - <AUTHOR> http://ajaxian.com/archives/google-offers-search-feed-and-translation-apis-to-non-ajax-usage

<comment><USER2> I am so making a rebranded google search engine when I get home.</comment>


Why I Ditched Rails for Octopress for my Company Website - <AUTHOR> http://www.grayducklabs.com/blog/2012/introducing-the-new-gray-duck-labs/

<comment><AUTHOR> TL/DR: I probably shouldn't have used Rails in the first place, but it was too tempting to roll my own blogging engine. Octopress/Jekyll is a better fit for now, but I do have concerns about future problems this choice may cause.</comment>


How Tealeaf Academy increased student engagement 3x - old-gregg http://blog.mailgun.net/post/40719408774/how-tealeaf-academy-increased-student-engagement-3x

<comment><USER2> I've implemented similar systems twice before (social media at frid.ge - <AUTHOR> S'10, b2b adtech at ADstruc) and think that if you are doing onsite messaging, reply-by-email should be a core part of your messaging implementation. Users, especially non-technical ones, have an expectation that you can reply to any email (set the reply-to on your outgoing message to a mailbox you monitor if you want a cheap test). Depending on your product, reply-by-email can give you a fairly competent mobile experience on the cheap.

Highly recommend mailgun for this, since the routes + email cleaning (removing signatures, replies, etc.) makes this super simple to implement. At frid.ge we used sendgrid (mailgun didn't exist at the time) and spent a lot of time dealing with problems that mailgun has already solved (at least better than we ever did - stripping signatures without destroying the message body is very difficult).

</comment><comment> old-gregg This is basically a nice tutorial on implementing two-way email messaging between machine and humans. Kudos for creative use of our "Email Routes" feature (disclaimer: I work for Mailgun).

</comment><comment><USER3> Former and continuing student of Tealeaf here.

The mailing list idea was a great idea. It helps a lot and makes me feel more comfortable when someone of similar skill level is able to help tackle a tough problem.

<comment><USER4> Your cohort was pretty active, and I think a lot of it had to do with the reply-by-email functionality. For example, I was able to just reply while on my cell without fumbling with mobile Safari. You should've seen earlier cohorts, a lot less discussion (sorry guys, if any of you are reading this!).

</comment></comment><comment><USER5> Author of the blog here. In my opinion the inbounding email workflow is very under-utilized. Email is one of the best user input channels - while most people do not keep a web page open all the time, they do check emails very often and knows how to use it. Posterous and TripIt are great examples of using this well when collecting user input/data is a high priority for their apps.

Let me know if you have any questions, or Mailgun in general - I have looked into a few different email service providers and happy to share perspectives

<comment><USER6> Couldn't agree more. We don't currently do nearly enough with email, but we have big plans for the future.

What are your opinions on the other email providers? I've glanced at a few but Mailgun seems by far the most developer friendly.

<comment><USER5> Typically there are 3 use cases for email services - transactional emails, campaign emails and receiving emails. You have the most options with it comes to sending transactional emails. But pay attention to some of the lower priced providers because they only help you to "send" emails, but not putting much effort that the emails are actually delivered - it is hard engineering with all the email provider's spam rules etc. The ones I recommend in this area are Mailgun and Postmark. Both have good reputation doing this well.

Then you have inbounding emails, which is newer and less providers do that. Both Mailgun and Postmark have it, and there are some newer players like cloudmailin, which I haven't used.

On the campaigning side, the biggest player is MailChimp with good reputation. I have used their service, but it feels like it's mostly built for marketers - Nice UI, a lot of templating choices, and your workflow is mostly in the browser. If that's your use case, they should serve you well.

As for as I know, Mailgun is the only email provider that has all 3, plus Mailing Lists and Storage (you can create mail boxes.. or basically build your own version of GMail on top of Mailgun).. For Tealeaf Academy (<http://www.gotealeaf.com>), we use delivering, receiving, mailing lists and campaigning, so Mailgun is what we picked. It also has a "closer to the metal" feel with their lower level APIs, which we like a lot.

I'd also recommend Postmark, if your app focuses on delivering and receiving transactional emails, and their pricing makes sense to you - I have seen some of their developer's posts and they know this stuff very well too.

I'd avoid some of the cheaper options, especially on transactional email delivery - it's a big deal (sending people receipts, notify credit card expiration, resetting password etc) and you want to stick with people who know how to do this.. don't cheap out

</comment></comment></comment><comment><USER7> To someone from the UK, 'Tealeaf Academy' implies that it's a school for thieves.

Tealeaf being Cockney rhyming slang for 'thief'.

<comment><USER4> Seems appropriate since we let you steal our knowledge :)

disclaimer: I'm an instructor at Tealeaf Academy.

</comment></comment><comment><USER8> Surprised they didn't use a mailgun ruby wrapper <https://github.com/HashNuke/mailgun>

<comment><USER5> The MailgunGateway class is kind of an application specific wrapper, with out account info and only with the functions we need.

</comment></comment><comment><USER9> Good advice, we're going to try and do the same.</comment>


Show HN: Moover: request a move - <AUTHOR> https://business.moover.co/welcome?autologin <comment><USER2> So, do the "OO"s in the name look to anyone else like they were intentionally styled on fake boobs?

I guess that's one way to get the attention of a lot of likely male computer geeks....

</comment><comment><AUTHOR> React app, based on Firebase db, would love any feedback.

<comment><USER3> Definitely doesn't display correctly on an iPhone 6S in Safari. The white text blends into the background making the header unreadable.

<comment><USER4> Our first attempt at a consumer product. Not mobile first obviously. Check in over the next few days.</comment></comment></comment>


Russia has the corner on guns in space - <AUTHOR> http://www.nbcnews.com/id/23131359/#.Ul2W51B7KSo

<comment><USER2> I'm not sure that I love that the stock doubles as a shovel... I can only imagine grabbing the barrel of a long arm and pushing the stock hard into the ground as a dangerous experience. (All guns are always loaded; especially when they aren't.)</comment>


Pixar opens a free Khan Academy course on storytelling - <AUTHOR> https://www.engadget.com/2017/02/16/pixar-free-courses-khan-academy/?sr_source=Twitter <comment><USER2> sharks with free khan laser beams. (sry for the OT comment.. but the phonetics of the headline cracked me up)</comment>


Ask HN: Any Twitter engs in the house? We need help fighting bots in ZA - nevi-me Hi,
I'm from South Africa, and we have bad propaganda and lots of malicious Twitter accounts making Twitter an unsafe place.
Are there any Twitter engineers that can fix Twitter's manual block list upload? It's been broken for months, at least when you upload a CSV with a large enough list.
We're using various techniques to spot 'Gupta' (accounts we believe are being sponsored by one of the families complicit in large-scale looting of our resources) Twitter accounts.
Some accounts are automated, we suspect being run from India (various mistakes by authors of tweets exposing their location), while some seem to be run by South Africans that are being paid by this family.
We've struggled to get Twitter Support to help us, with a friend of mine losing it a bit on the DM [https://twitter.com/Arfness/status/934850071367168000].
We're training a TF model to detect these accounts, and we tweet their activity under #GuptabotKPC, but all of this doesn't help if users are unable to block these accounts.
Please help <comment><AUTHOR> Are you sure it's broken and that you're not just trying to upload too many users at once? I think there's a max of 5000 per file.

[https://help.twitter.com/articles/20172663?lang=en](https://help.twitter.com/articles/20172663?lang=en)

You can also create blocks via the API.

[https://developer.twitter.com/en/docs/accounts-and- users/mut...](https://developer.twitter.com/en/docs/accounts-and-users/mute- block-report-users/api-reference/post-blocks-create)

I think it'd be pretty straight forward to build a microservice that makes API calls from a list you keep in a database as well.

<comment> nevi-me To your first question: The list in question, has 50 items actually. [1]

To second one: we're avoiding having to get authorisation from users to read/write from their accounts. Twitter also won't hesitate to revoke our API access when we start automatically blocking accounts on behalf of hundreds/thousands of users. Also, imagine if the Russian botfare targets us, they're more sophisticated. We would have to keep users' tokens somewhere, in the wrong hands that's one propaganda machine. We think their time's coming, because our delinquent president is pushing through a nuclear deal that's going to cost our grandchildren dearly.

I use their API a lot, and would love to do that, but at this point it might not be the most practicable option for us. Perhaps @Twitter staff could advise us ...

[1] [http://blocklistza.000webhostapp.com/](http://blocklistza.000webhostapp.com/)

<comment><AUTHOR> That makes sense. What's the issue you're seeing with a list of 50?

There's a guy @levelsio on Twitter who made a similar project but for crowdsourcing block words at [https://mute.life/](https://mute.life/). I'm not sure whether he's tried to automate any of it yet.

So you don't want to use the API but you do want to keep the list up-to-date for all users kind of like sources for an ad blocker. Am I understanding your use case right? I've been looking for / to make a Twitter blacklist service for companies that get too spammy.

<comment> nevi-me The list wasn't 50, my mistake. It's a few hundreds.

I saw mute.life, thanks for that.

Yes, don't want to use the API. We can set up a small script as part of our workflow, that updates the latest blocklist, and then people can download it and import it.

The blacklist service would be interesting, although I think Twitter would 'crack down' on it if it becomes too successful.

</comment></comment></comment></comment><comment><USER2> Thank you for your efforts.</comment>


Urban Outfitters rips off indie jewelry designer - <AUTHOR> http://imakeshinythings.tumblr.com/post/5855716317/not-cool-urban-outfitters-not-cool

<comment><USER2> The assertion is plausible, but the original work doesn't seem obviously novel or creative enough to conclude that it was clearly copied by UO. Having come up with the idea: "necklaces with pendants consisting of metal outlines of states with hearts punched through them," their product is pretty much exactly what we would expect to see. There is some variation in the manner of construction, and hearts are punched in different locations (see e.g. New York).

Even if they copied the idea, it does not appear that there is any legal recourse, as the idea is not protected by copyright. I'm not very familiar with copyright as it pertains to art, so I may make some error in separating idea from execution here.

Note that while copyright law does protect the original work, "A second work, identical to an earlier copyrighted work, does not infringe, if it is, in fact, independently created." <[http://law.unh.edu/thomasfield/ipbasics/copyright-in- visual-...](http://law.unh.edu/thomasfield/ipbasics/copyright-in-visual- arts.php) > Thus even if they stamp some of their pendants so as to be identical to the original works, this is not infringing, so long as the design is independently created.

</comment><comment><USER3> Copyright infringement?

</comment><comment><USER4> This is shameless and despicable. I'll go out of my way to never buy anything from them ever again.

<comment><USER5> Agreed-- they didn't even bother to change the name. That to me just seems like the ultimate insult to the designer. After some quick Googling, it looks like they've been doing this for a while now, too. Definitely never buying anything from them or their other retail brands again.</comment></comment>


Ask HN: Will software engineer salaries go up, down or stay the same? - <AUTHOR> Recent shakeups at large companies going remote first and the ensuing discussions have me thinking about this. I've mostly heard that "we are paid too much" in my career and this is in a lower cost of living area where we aren't paid anywhere close to silicon valley salaries.<p>Are my skills going to be more or less valuable ten years from now? <comment><USER2> Within 10 years, all kids will learn basic computational thought in school, and some will continue down that path to apply that knowledge to specific use cases. Coding in and of itself won't be so special, which will drive down the salaries for entry-level pay. However, being good at it is different than just having the ability to do entry-level work, and the best engineers still can deliver extremely high value to a company.

I personally believe that the salary ranges will follow a shallower bell curve, with lower starting pay, a lower median, and a much smaller group at the top making huge bank.

As to where any specific individual falls on that curve... that will depend entirely on your talent.

<comment><USER3> They were saying this ten years ago...

<comment><USER2> But we didn't have school districts actually incorporating it into their curriculum and standards 10 years ago. 5 years ago is when the efforts really got rolling, and I remember talking to many district leaders who were excited to see change coming to education... the first new core subject area in decades. More school districts are bringing the programs online every year.

It isn't just talk anymore.

</comment></comment></comment><comment><USER4> Probably a better question is "Will the demand for software developers outpace the supply over the next 10 years?" Perhaps the looming failures of universities I keep reading about will mean less degreed professionals. I think the demand will increase as more industries become automated, but the supply is the big question.

</comment><comment><USER5> I will say it will go up. Software Engineering will end up meaning different things. For example, couple of years ago web dev was all the rage but these days web dev has a certain band of salaries with great people being paid a lot and others just scraping by. I believe software creates a lot of value when applied properly and I don't see this going down anytime sooner. Whether the field itself become easier is a different thing. Maybe people who work at a skill level where a bootcamp is okay to start a job will face a pay cut simply because barrier to entry is low but that will just be one end of a spectrum.

<comment><USER6> This is probably the harsh truth. The lower tier is having an influx, and real wages will reflect that. While some aspects of the work can seem arcane or even complex, the results are not out-sized, so business will optimize costs there continually.

</comment></comment><comment><USER7> The "we are being paid too much" sentiment is mostly a US thing. In Europe the salaries are nowhere nearly as high.

<comment><USER8> You cannot compare EU and US salaries easily.

The protection of employees, heath care system, pension, holidays, the social safety net and cost of living, to name of few are too different.

In general you need to multiply your EU salary x2 to get a comparable US salary.

<comment><USER9> > pension

In many European countries (e.g. UK), the pension contributions are a form of income tax (i.e. proportional to income), while the pension is a fixed sum that barely allows you to survive - regardless of how much you've paid in contributions. I don't know how SS works in the US, but it's hard to imagine a worse system.

> cost of living

I've compared two random third-tier cities in US and Western Europe:

[https://www.numbeo.com/cost-of-living/in/El- Paso](https://www.numbeo.com/cost-of-living/in/El-Paso)

[https://www.numbeo.com/cost-of- living/in/Bordeaux](https://www.numbeo.com/cost-of-living/in/Bordeaux)

The costs of living are actually really close within each other.

<comment><USER7> And it's similar for big cities - local purchasing power in London is lower than New York, San Francisco and LA.

</comment></comment></comment></comment><comment><USER10> It depends on supply and demand for skills. If you have average skills that a hundred thousand other people have, then your skills are less valuable. If you have expert skills in a high demand area, then up. So building websites and most apps is flooded with people. Autonomous cars, some AI/ML security, VR / AR, vision, even COBOL, have fewer people, high demand. Just become very valuable to your potential employer. (Think about debugging autonomous cars, what would you make if you were great at that!)

There are online courses, some free, for those topics. There are open source projects on many of those topics.

</comment><comment><USER6> It depends on the standard software users have. Salaries went up because the standard for software went up in a few places - user experience, scale.

If we're fine with the same shitty technology 10 years from now, then salaries will stagnate.

But what do I know, game developers continually make amazing stuff and somehow that industry found a way to squeeze them. Tough to say how it all will play out.

</comment><comment><USER11> It depends on your skills. Focus on more than just hard engineering skills. If you position yourself as an effective remote engineer who deliver value consistently, then you can command value.

</comment><comment><USER12> The only risk in my opinion is AI and the possible automation of development. The curve to being an efective software engineer is too steep.

</comment><comment><USER13> They will hopefully go down</comment>