New App Prevents Icelanders from Sleeping With their Relatives - <AUTHOR> http://www.newsoficeland.com/home/technology/innovation/item/1124-new-app-prevents-icelanders-from-sleeping-with-their-relatives <comment><USER2> The Appalachian version of this App in one line of javascript: alert("Don't do it, you're related");

<comment><USER3> There should be a tripwire somewhere in HN that detects people who read this comment and failed to flag the story.

</comment></comment><comment><USER4> I recall one of Heinlein's books addressing this problem by a different means: a genetic comparison to determine whether a bad genetic reinforcement might occur, rather than relying on the proxy of relatedness.

For Iceland's case as addressed in TFA, that's perhaps a more relevant metric -- that you might end up "crossing" with someone outside of known family, yet who is still closely related enough to present a genetic risk.

I sense a market for a Square-style "DNA chip on a headphone jack" to augment this app. ;-)

<comment><USER5> > yet who is still closely related enough to present a genetic risk.

Isn't that basically just siblings, and maybe first cousins?

<comment><USER6> Not necessarily. The closer the relation, the greater the probability of bad genes pairing up, but it is, in fact, a probability.

Your fourth cousin might have a copy of the same bad gene as you while your first cousin doesn't.

<comment><USER5> Ah, I see, thanks. It makes sense now.

</comment></comment></comment></comment><comment><USER7> I think it'd be cool just to see how related I am to any given person I meet. I don't know how likely it is that someone would actually use this for its intended purpose though.

</comment><comment><USER8> Wasn't this released about a year ago?

</comment><comment><USER9> I'd use it for creating my family tree

<comment><USER10> The app actually creates it for you.</comment></comment>


My Advice to the Tech Community: Take Vacations. - <AUTHOR> https://medium.com/p/390491f6824

<comment><USER2> I work full-time as a software engineer and in the last 4 years I have taken 4 months of vacation and visited 24 countries. We took some time off when our daughter was born, but she is 9 months old now, and we have a trip to Europe planned for next month. Travel is very important to us so we make sure that we take the time off from work, even if it is unpaid.</comment>


Ask HN:  Should I continue development of my iOS app - <AUTHOR>

I currently have an app on the iOS App Store, that makes me about $30 a month.  It took me quite a long time to make, but I did it half for fun and half for the chance that it might make me some money!
Most of my users feedback has been positive, with requests for additional features, which I try to get in with updates.
The problem is that time is short, and the app doesn't make very much money at all.
I don't want to stop supporting the people who have already bought the app, but at the same time I want to try and do some other more successful apps.
So my question is how should I drop support without annoying current users who have been really positive to me?
The other solution of course is to keep adding features and improve it and hope that one day it kicks off, but it just feels like a waste of time now. <comment><USER2> Unless you promised otherwise, the users bought the application as-is (or as- it-was), without any guarantee of future updates. You are not bound to provide updates. It's a good idea to do so if you can, but perhaps favoring working on new applications for a while would be preferable.

I had several applications on the iOS store, which, after the $100 annual fee, were costing me money! I hate to do it, but I haven't renewed my developer subscription for this year. Maybe someday I will build a new iOS application and try again, but for now, continuing support just makes insufficient sense. I've made lots more money developing applications for other people than selling my own...

<comment><AUTHOR> Thanks for the advice, I think you've just confirmed what I was thinking anyway. I'll probably make one last update and then leave it there.

</comment></comment><comment><USER3> Assuming it's not ad supported and is just a one time purchase I don't see where your motivation would be in free updates unless it was bringing in enough money for you to be living off of.

I'd keep track of user requests and things you've learned from the application, if you ever have enough to justify a new game put out a sequel or a new version. Until then I'd feel free to work on a new project.

<comment><AUTHOR> My reasoning for the free updates was to improve it and make it what people want, which would hopefully increase the paid sales. It hasn't worked!

</comment></comment><comment><USER4> Make it open-source, make the app free (or at least cheaper) and then every so often package it up and deploy to the app-store?

</comment><comment><USER5> Can you post the app?

<comment><AUTHOR> Sure. [http://itunes.apple.com/us/app/charty-stats-for- youtube/id51...](http://itunes.apple.com/us/app/charty-stats-for- youtube/id511711220?ls=1&mt=8)

<comment><USER6> First, fix your app, because the only review I see on the app page is a bad one saying it doesn't work properly. After you fix it, focus on marketing. This is a niche product for people interested in their YouTube channels. Make a YouTube account if you don't have one already and find people that are YouTube partners. I'm a YouTube partner. It used to be a program difficult to get accepted into, but now I believe it's open to everybody. You'll know if someone is a YouTube partner if they have a banner next to the subscribe button above their videos. Subscribe to these people and message them letting them know about your app. Don't give everyone the same cookie cutter message. Try and spark up a discussion and also let them know about the app. YouTube partners make money off their videos, so they will be very interested in your app. I know I am! You can also target people with up and coming videos, meaning videos that you think are about to get popular and possibly viral. Tell them why you think that their video has potential, and then let them know your app can help them track their video statistics.

Once you've done that, spend extra time messaging everyone else on YouTube that has a video uploaded on their account. Choose people that are more active on YouTube, not people that haven't logged on in 3 months. I'd try targeting the demographic of young teens that make Apple related videos (I was once one of them). They usually have iOS devices and will be very interested in not only buying your app, but maybe even reviewing it as well.

As long as you fix your bugs and have a perfectly working product, with a little bit of hard work (in terms of marketing), you could make much more than $30 a month.

You can catch me at firstname.lastname@example.com if you want to talk further.

<comment><AUTHOR> Hey thanks for taking the time to give me feedback I really appreciate it. That review you're talking about is on the US store I think (which is unfortunate since it's the biggest!) Generally though I've been getting 4-5* reviews and the app is mostly working as expected from what I can see with very few crashes etc.

I'm definitely going to contact YouTube partners directly now. I was thinking of doing it anyway, but felt it was a bit spammy.</comment></comment></comment></comment>


Amazon, voice call update to Echo - <AUTHOR> http://www.teknoatu.com/amazon-voice-call-update-to-echo/ <comment><USER2> Yeah, today I received the update.. I was expected Bluetooth based call through the smartphone, but didn't know they had the strategy of providing their own call platform. Anyways good feature.</comment>


How to printing PDF  automatically at a specific time? - <AUTHOR>

I receive orders from the website. An order usually contains an attachment and a PDF file with necessary parameters. I need to print all the files two times a day and then send to other specialists for further processing. There are too many orders now, and it's hard to do this manually. Can someone help automate the task? <comment><USER2> Perhaps stackoverflow is a better place to ask this, but on a Mac this can be done easily.

Off the top of my head, save the PDFs on a folder named by the day, set launchd to run a script twice a day that opens every file on it with the print utility (that will print it).

</comment><comment><USER3> I think you will have a chance to place all the files into one folder on server. Then you can create a script for automatic file printing from the folder. There are specialized software programs that support bulk printing of files of different types. For example, there exists Print Conductor. The instruction here shows that it supports PDF format and [http://print- conductor.com/articles/batch-print-pdf.html](http://print- conductor.com/articles/batch-print-pdf.html). The software has API available. Download it and enjoy.</comment>


The Semiotics of "Rose Gold" - <AUTHOR> http://www.newyorker.com/culture/cultural-comment/the-semiotics-of-rose-gold <comment><USER2> So Apple is selling a pink iPhone, which has "cautionary indications for our current moment...marked by overheated, precarious global economies; injudicious, unsustainable disparities of wealth; and a metastatic consumer culture."

I didn't know colors had that much effect on society.

<comment><USER3> Pink does have a particular set of meanings for people, and gold is ostentatious. That's really all that's being claimed. It's like the assertion that Hello Kitty can tell us something about Japanese society: hard to disagree with.

<comment><USER4> May not be making claims but the author surely abuses confusion of an ostentatious material and the color named after it, although Apple has done the same by introducing a watch made of the material and a phone of the color on the same day. Author also gets the history wrong -- rose gold peaked in the early 19th century not the 20th -- in order to buttress the final point about revolutions.

</comment></comment></comment><comment><USER5> Is "Christina Warren, writing at Mashable," with no link, actually considered an acceptable way to quote an author online? It's sort of attribution, but it feels obfuscating.

The article they're referencing is here [http://mashable.com/2015/09/10/iphone-6s-rose-gold-is-the- ne...](http://mashable.com/2015/09/10/iphone-6s-rose-gold-is-the-new- pink/#UCkJuaUB_Okb)

<comment><USER6> It's perfectly acceptable in print. This article was probably written with print in mind.

<comment><USER7> Except TFA is online, and the source is _only_ online. The New Yorker is a grown-up capable organization; they could somehow handle linking to a _tweet_ two sentences before. (I don't have the print version so I can't say whether the tweet URL/QR/etc is included in that.) SEO love would seem to have been _the least_ they could have offered to little old Mashable for the helpful lead-in quote.

</comment></comment></comment><comment><USER8> Did anyone find a "Sponsored" label somewhere around the article, or is it not obligatory in the US?</comment>


.APP Domain Names Will Create New Naming Opportunities For Developers - <AUTHOR> http://iwantmyname.com/blog/2012/06/app-domain-names-will-create-new-naming-opportunities-for-developers.html <comment><USER2> Does anybody have any idea when .app domains will be available and how we'll be able to go about registering them? I know they're announcing the new top- level domain names in two days, but how long after that can we expect them to be available?

<comment><AUTHOR> Judging from ICANN's current timeline not before late 2013 but my guess would be 2014 so it's still some time away (if .app will be in the first batch of approved TLDs which is very likely).</comment></comment>


Ask HN: Interesting examples of startups breaking into tough industries? - <AUTHOR>

Particularly examples of well-entrenched / monopolised industries being disrupted by startups - and how this was achieved. <comment><USER2> [https://www.opendesk.cc/](https://www.opendesk.cc/) for furniture

</comment><comment><USER3> DuckDuckGo I feel is making a great go of it in a nearly monopolized industry.

</comment><comment><USER4> Tesla, SpaceX</comment>


What's Wrong About Insider Trading?  - <AUTHOR> http://www.cato.org/pub_display.php?pub_id=11816 <comment><USER2> "Professional investors make money because of asymmetries of information. Someone working on Wall Street is almost always going to be better versed on financial issues than a casual investor. People make careers picking up hints and suggestions to use in trading."

Yes, professionals should be better at it than amateurs. However, those professionals are still using public information. Just because they are better at it doesn't mean that it these asymmetries are unfair. Regardless of what the article says -- there is a victim in the form of the other shareholders. The impact of the crime may be dispersed over many people, but that doesn't mean it isn't still just plain wrong to do. All of the owners should have the opportunity to begin selling (or buying) at the same time if they choose to stay on top of the information and to argue otherwise feels foolish. Just because they cannot get insider "not trading" doesn't mean they shouldn't nab insider trading.

</comment><comment><USER3> Didn't the author totally miss out on the most important consequence of a "level playing field"? That is, anyone can feel like they can safely invest. A level playing field opens the stock market to people in rural areas, rather than limiting it to well-connected upper-crust insiders. A lot more money can end up capitalizing innovators and entrepreneurs.

</comment><comment><AUTHOR> Interesting quote:

"People make money by not trading as well as trading. But it is virtually impossible to prove that someone chose not to buy or sell stock because of a legally improper tip. So hundreds, maybe thousands, of people get away with insider "not trading" every year."</comment>


Turn Your Mailbox into Free, Unlimited Cloud Storage - <AUTHOR> http://coffeeforkarma.kinja.com/upgrade-your-mailbox-for-free-unlimited-cloud-storage-510380012

<comment><USER2> Sure, just what everybody wants more of these days, NSA-accessible cloud storage.</comment>


Can Machine Learning Fix a Broken Patent System? - <AUTHOR> http://blogs.scientificamerican.com/observations/2013/12/18/can-machine-learning-fix-a-broken-patent-system/#! <comment><USER2> Can I say just "no"?

As the article notes, no player today an incentive to make patent filings actually useful, especially in software. Patently are generally framed in intentionally over-broad terms with the particular advances buried behind the general idea and offering the least clues possible for those actually aiming to use the information for anything - what else would you expect from a document intended to _keep_ people from using an invention without your permission.

Can we turn a stream of intentionally useless information into something positive? Maybe a super computer genius could? No, a super computer genius would be able to _first_ produce useful stuff from nothing, be already at human+ level _before_ it could pull the "garbage in, diamonds out" trick.

</comment><comment><USER3> This is a tremendous idea and a good implementation. There is a lot of information and ideas locked in the millions of pages of patent leagalese.

The "collection" feature is awesome: it will allow to crowd-source research into niche topics. Here is a notebook that shows a birds-eye view of the "who is who" in the topic modelling patent space: [http://www.lens.org/lens/search/collection/1698/v/analysis#f...](http://www.lens.org/lens/search/collection/1698/v/analysis#f/owner)

Another possibility would be for "sponsor" companies to pay appropriately trained freelancers (lawyers, devs, researchers, ...) to conduct patent research in public. The sponsoring company might not get a "competitive advantage," but it could be a big PR win. The CompanyX which sponsored the 2014 review of patents on TechnologyX.

Can you imagine how powerful the information contained in patents would be in combination with links to the relevant research articles?

</comment><comment><USER4> > "[The U.S. patent system] is not obliged to register change in ownership."

That I hadn't known; the implication being, if you intend to leverage a patent with lawful permission from its licensor, it's _still_ possible to get screwed (by being misled about the rightful owner's identity, for instance).

</comment><comment><USER5> It sounds like machine learning will help unmask patent trolls, but unless you give that machine a gavel I doubt it'll make any difference.</comment>


Crazy Circuits: An Open Source Electronics Learning System - <AUTHOR> https://www.instructables.com/id/Crazy-Circuits-an-Open-Source-Electronics-Learning/ <comment><USER2> Nicely done. The whole Lego thing is pretty powerful. Even Lego thought so and the whole "mindstorms" product line came from that.

However, the really cool stuff as far as I'm concerned is the nylon conductive tape. That is super useful for things like making electrically active textiles and putting circuits into odd places. One ohm per foot isn't too shabby. I ordered a bunch of rolls of that (to make shipping reasonable) and I'm really interested to play around with it.

<comment><USER3> You might also be interested in some of the work that bunnie has done with paper, copper tape, binder clips, and various components in this blog post[1] and also with Chibitronics[2]. That having been said, I'm glad they mention why they didn't use copper tape here before I tried to stick any down on a Lego plate!

[1][https://www.bunniestudios.com/blog/?p=5259](https://www.bunniestudios.com/blog/?p=5259)

[2][https://chibitronics.com/](https://chibitronics.com/)

</comment></comment><comment><USER4> I'm always skeptical of these 'no solder circuits for kids' systems you see everywhere but building them into the LEGO standard is a refreshingly good idea.

<comment><USER5> I'm not sure why Lego themselves didn't make Lego-based breadboards. Seems like a fairly straightforward idea.

Flat breadboard with conductive "lanes". Bricks with electric parts. Flat pieces with conductors. Conductivity in bricks would normally go from top to bottom, so you could easily stack things or connect them from the top side, without adding stuff to breadboard.

Would be great even for "adult" prototyping. No more wire spaghetti or bent pins.

Bonus points for "empty" bricks you could solder your own parts into. You do it once and get a reusable part.

<comment><USER6> Actually... [https://www.bricklink.com/v2/catalog/catalogitem.page?P=4758...](https://www.bricklink.com/v2/catalog/catalogitem.page?P=4758#T=C&C=1)

Before Mindstorms there was a 9V system. It was really basic though: batteries, lights, motors, sirens, and wires.

<comment><USER7> The Mindstorms RCX used that same contact system and had light, rotation, and touch sensors as well.

</comment></comment></comment></comment><comment><USER8> If you really want to learn digital electronics you should learn how to design a very simple CPU from scratch. If you can do that then you can build virtually any digital circuit you can think of. And it is not that hard (although it will take some dedication, months of reading and experimenting) Plenty of resources out there that teach you how to do it from scratch.

When I was a kid I tried to learn electronics by buying these types of kits. They were totally useless, complete waste of money and they only accomplished in making me feel that electronics was way too hard for me. All I could do was assemble the circuits in the diagrams but there was no understanding involved.

The worst part was that they all used some computers chips, like the 555 timer, to do some special effects, etc. When you are starting out any chip is kind of useless in your goal to understanding digital electronics.

<comment><USER9> Do you have any link on how to design a simple cpu from scratch? Or a search keyword for it!

<comment><USER10> Nand2tetris will teach you.

<comment><USER8> Yes, this is what I was thinking about.

</comment></comment></comment></comment><comment><USER11> Fantastic! Who would walk past a project like "squishy sounds", "conductive paint piano" or "ugly holiday sweater" [1] (It's linked to in the article)

1\. [https://browndoggadgets.dozuki.com/c/Project_Guides](https://browndoggadgets.dozuki.com/c/Project_Guides)

</comment><comment><USER12> This is very cool and looks like a lot of fun. The price not so much however. Where does a $200 price tag come from for a pack of parts that should go for around $10-20? Are the PCBs so expensive to create?

<comment><USER13> I'm sure the price comes from a lack of scale.

The creators of this should consider something like massdrop.com to see if they can generate sufficient interest to get the prices within a reasonable range. The "Crazy Circuits Makerspace Set"[0] is just about an order of magnitude more costly than I would consider "cheap" for such a kit.

That said, as someone who had a lot of fun with Snapcircuits as a child, I agree that this would have been a great way to transition from something that is essentially a "toy" to full blown bread-board tinkering.

[0] [https://www.browndoggadgets.com/collections/new-classroom- se...](https://www.browndoggadgets.com/collections/new-classroom- sets/products/crazy-circuits-makerspace-set)

<comment><USER14> Keep in mind the Makerspace kit is ostensibly aimed at arming a whole classroom or workshop full of people, though it looks a little light to me in major components for that. However, it's not meant to be a personal starter kit.

<comment><USER15> Exactly. Schools and libraries like when they can buy one big kit or set, especially with grants. It's not designed for a home user.

</comment></comment></comment></comment><comment><USER16> Do any of these circuit board chips work with the Lego brick separator?

[https://goo.gl/images/PpEujN](https://goo.gl/images/PpEujN)

</comment><comment><USER17> These things always turn out to be every expensive. A breadboard it not much more difficult.

<comment><USER18> Breadboards hide the connections and require a significant amount of thinking in transforming to and from a circuit diagram. This isn't hard once you've mastered it, but I can understand wanting to ease K-12 classrooms into it.

<comment><USER19> Yeah. Connections on heavily-used breadboards can also become very iffy, which is somewhat demoralising: you assemble a circuit on the breadboard and it just flat out doesn't work, or perhaps it works for a bit then dies.

While it seems to be a bit of a dead technology now, something like wirewrap would be a much better way to translate directly from diagram to board.</comment></comment></comment>


I conducted an experiment on the importance of make up - <AUTHOR> https://www.reddit.com/r/muacjdiscussion/comments/4z7gxm/i_conducted_an_experiment_on_the_importance_of/ <comment><USER2> The closest male equivalent would probably be facial shaving.

It's not nearly as historically consistent as face makeup: red lips, smooth skin, outlined eyes. (See ancient Egypt.) There have definitely been strong preferences for male facial hair, but they've varied per culture.

This has changed a little in recent years, but you'd almost never see a male model with a beard.

I'd be very interested in seeing similar experiments in business/social/dating environments.

<comment><USER3> About ten years ago a new razor brand (Ruud and Rye) marketed to young professionals with this angle. Their slogan was "Trust is clean shaven". It always kind of stuck with me.

</comment></comment><comment><USER4> One of the many major male versions of this is height.

You just gotta play the best you can with the cards you were dealt.

<comment><AUTHOR> I don't think height is exactly equivalent because you can't affect your height and you don't have to put in work to maintain it. But in terms of how employers and potential partners judge you, then yes.</comment></comment>


Why So Many Want to Create Facebook Applications
 - <AUTHOR> http://online.wsj.com/article/SB118886348147516379.html

<comment><USER2> The analogy to MS Windows is accurate, and it seems people have forgotten (or are too young to remember?) the downside of writing for a closed platform controlled by one company.

The shift to web applications was supposed to change that (<http://paulgraham.com/road.html>).</comment>


This Is San Francisco's Plan to Get the 1 Percent to Pay Up - <AUTHOR> http://www.bloomberg.com/news/articles/2016-02-19/this-is-san-francisco-s-plan-to-get-the-1-percent-to-pay-up <comment><USER2> > The proposed tax hikes on mansions...

They show an example of a "mansion" later in the article: a 4 bedroom, 3.5 bath house with two car garage.

Without any peg to inflation, everything will fall under the new tax in a few decades.

<comment><USER3> in a dense city that is definitely a mansion

<comment><USER2> No, it's just a 4-bedroom house. This is a mansion:

[http://sf.curbed.com/archives/2014/11/25/behind_the_hedges_a...](http://sf.curbed.com/archives/2014/11/25/behind_the_hedges_and_inside_the_history_of_danielle_steels_spreckels_mansion.php)

But my point is more that they bill this sort of thing as getting the "1 Percent to Pay Up" when it really translates to "getting the 100% to pay up (given some time)."

</comment></comment></comment><comment><USER4> In London I've heard the workaround for a similar tax is to set up a shell company that owns the mansion and then sell the company, not the mansion.

<comment><AUTHOR> Tax authorities now loosely define the sale as "change of ownership". In some other municipalities they have some ridiculously high property tax rates (e.g. NYC's reaches 19.554% [http://www1.nyc.gov/site/finance/taxes/property-tax- rates.pa...](http://www1.nyc.gov/site/finance/taxes/property-tax-rates.page) ), which they then exempt (e.g., Texas homestead exemption), but exemption is only granted to natural persons, not companies, which makes the whole setup costly.

</comment></comment><comment><USER5> And why exactly is high rents a bad thing? San Francisco has dense concentration of some of the smartest people in the world. It's relatively cheap for the immense value you get by living here.

If you can't keep up with the high skill workers that are moving into your neigborhood, maybe, just maybe ask yourself: are they really the problem or is the problem more with your inability to keep up?

It's funny how people think that just because they've lived somewhere for a while, they're somehow entitled to decide who moves in and who doesn't.

<comment><USER6> > It's relatively cheap for the immense value you get by living here.

What value? For a mediocre, provincial city with terrible public transit, crap nightlife, gross streets and a homeless problem? SF isn't that great for the $$...</comment></comment>


Pony is an open-source, actor-model, high performance programming language - <AUTHOR> http://www.ponylang.org/ <comment><USER2> The audience of a programming language are developers. Developers like code, code speaks to us. Actual code samples are a few clicks away: [http://tutorial.ponylang.org/getting- started/helloworld/](http://tutorial.ponylang.org/getting-started/helloworld/)

pony-lang devs: put some examples on the home page!

<comment><USER3> Actually, more example code at [http://tutorial.ponylang.org/examples/examples/](http://tutorial.ponylang.org/examples/examples/)

<comment><USER4> Still don't understand those capability types (iso, trn, ...). Need more tutorials!

</comment></comment></comment><comment><USER5> The papers[1] is where is the meat is.

> Ownership and Reference Counting [...] We propose Pony-ORCA, a fully > concurrent protocol for garbage collection in the actor paradigm

> with shared memory [...] introduces a new form of write uniqueness

> a dedicated actor for the detection of (cyclic) garbage

So, Erlang + shared state? Rust + GC + green threads?

I'm very happy there is activity in this space; I feel like there a whole class of massively online realtime applications just waiting to happen.

5k users first person shooter anyone?

[1] [https://github.com/ponylang/ponylang.github.io/tree/master/p...](https://github.com/ponylang/ponylang.github.io/tree/master/papers)

<comment><USER6>
      > Rust + GC + green threads?

I haven't used Pony much yet, but when I first saw it, this was my first connection. In some, but not all, ways, it is like what Rust used to be at a certain moment in its history. The languages have different goals, so it's not like I think this means Rust is better or something.

<comment><USER7> No, I don't think the similarity is big. Pony is all the way about asynchronous/nonblocking messaging. Rust with green threads was favoring synchronous/blocking calls, just like Go, which probably also suits the ownership model better.

So Pony might be better compared to Erlang with a strong type system and without a blocking receive method than to Rust or Go.

<comment><USER6> Yeah, I mean, this is why comparing languages solely based on feature lists is a bad idea; it's also about things like idioms. It's more like, "in some ways, Rust was trying to be similar to Erlang, and in some ways, Pony is trying to be similar to Erlang, so in some ways, Pony and Rust are kinda similar." Emphasis on the 'kinda'.

(And I'm thinking about Rust _pre_ ownership model, here. And Rust does have non-blocking IO, just not in the standard library. It's not imcompatible with ownership.)

</comment></comment></comment></comment><comment><USER8>
        wget -O - http://firstname.lastname@example.com | sudo apt-key add -

This is not secure. Non https connections cannot be trusted. It is trivial for a cafe owner to MITM this and now he is generally trusted with your apt-get. BAD.

</comment><comment><USER9> This looks interesting.

There are a few things I wonder about. From the first page of the tutorial ([http://tutorial.ponylang.org/](http://tutorial.ponylang.org/)):

> It's exception safe. There are no runtime exceptions. All exceptions have > defined semantics, and they are always handled.

This seems contradictory. Are there exceptions or not? EDIT. Apparently there are ([http://tutorial.ponylang.org/expressions/exceptions/](http://tutorial.ponylang.org/expressions/exceptions/)). But then I don't understand what the above means.

> It's deadlock free. This one is easy, because Pony has no locks at all!

This is nonsense. Deadlock happens when multiple processes/threads are waiting for each other. It is not caused by locks.

From another tutorial page ([http://tutorial.ponylang.org/types/static-vs- dynamic/](http://tutorial.ponylang.org/types/static-vs-dynamic/)):

> There's no such thing as null, so your program will never try to dereference > null.

But there _is_ "None" ([http://tutorial.ponylang.org/types/primitives/](http://tutorial.ponylang.org/types/primitives/)). How is "None" so different from this "null" that we want to avoid?

On the positive side:

As I said this looks interesting. The type system appears to have been well thought out. _Intersections_ look like a sane way to provide functionality that other PLs either implement poorly (perhaps via "multiple inheritance"), or simply disallow.

And if the type system really does offer all the claimed guarantees, then it is a very good thing indeed.

The partial applications, the concurrency model, and the handling of immutability are also clearly features that someone has given a lot of thought to. I cannot judge the results at this point, but I like well-thought-out things. :-) And the notion of "apply", along with the shortcut syntax, seems like it provides a standard, easy to understand way to make lot of code pretty simple.

I hope to be able to look into this PL more closely in the near future.

<comment><USER6>
      > How is `None` so different from this "null" that we want to avoid?

The difference is the defaults. Languages "with null" generally assume that any value can be null. Other languages, like Pony, do not allow any type to be null.

Pony's "None" type is an example of a "unit type": a type with only one possible value. It's a totally different thing.

<comment><USER9> Ah, I guess I misunderstood. From the tutorial:

> Pony often uses the primitive None to indicate that something has "no > value".

So that is not a special value that we can assign to any variable.

"None" would seem to be pretty pointless all by itself, but I guess we could do a union of any old type with "None", to get a result much like Haskell's "Maybe". And then the Pony type system would give us much the same guarantees as Haskell's would; so we get a nullable variable that still allows for typesafe operations -- e.g., dereferencing, if applicable. (I guess ....)

<comment><USER6> Yeah, when I read the parent comment, I thought that None was part of a type like Maybe, but the next sentence describes it as a unit type:

      > Of course, it does have a value, so that you can check what it is, and the value is the single instance of None.

<comment><USER9> Yes, but, as I noted, Pony has type unions ([http://tutorial.ponylang.org/types/type- expressions/](http://tutorial.ponylang.org/types/type-expressions/)). So you can roll your own Maybe types.

From the page I linked above:

> var x: (String | None)

> Here we have an example of using a union to express an optional type, where > x might be a String, but it also might be None.

That's pretty clearly a Maybe.

<comment><USER6> Maybe (at least in Haskell/Rust) is a sum type, not a union type, though.

EDIT: Ugh, sorry, those are the same, I was thinking of sum vs _product_ type, ignore me.

<comment><USER10> Is a union type (at least in Haskell/Rust) structured like a union in C, where alternative types of values (e..g. int, float, char) occupy the same bytes, just not at the same time? Or is separate space allocated for the different types of values? Asking because, if a function returns a union type, with one type within it representing an integer (which can have any value), and if the function also wants to return an error condition, then no valid integer value can be used to indicate the error, because all integer values are valid return values from the function. In this case I would think that a union type should have separate space allocated for the integer value and the error-signalling value. (Something like what golang does with its return values?)

<comment><USER6> There are two major forms of sum type implementations that I'm aware of: tagged and untagged. What you're describing is a tagged union, for exactly the reason you state: there's an extra field for a discriminant which lets you choose the tag. Untagged unions are C's unions, where there's no discriminant, and you just have to know which type is valid at a given time.

Rust supports tagged unions, but can also optimize them to untagged in certain circumstances. We will probably add some kind of untagged union as well, mostly for FFI, but they're very unsafe, for the above reasons.

<comment><USER10> Got it, thanks. Interesting about Rust's design goals and tradeoffs.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Whence the high performance claim? I tried finding some benchmarks, and apparently they used to be on the home page since this was on HN about a year ago, but I didn't find any recent ones. It would be nice to see it compared to, say, Rust, Nim, Haskell, OCaml, C...

<comment><USER9> That's a good point.

But I do see where the claim is coming from. Pony is aimed at the same kind of compile-to-bare-metal that we do with C, C++, Fortran, etc. Furthermore, Pony's design explicitly deals with many of the issues that get in the way of aggressive optimization in other PLs: pointer aliasing, dynamic type checking, data races, etc.

So Pony was clearly designed with high performance in mind. And it seems likely to me that the efforts made in that direction are practical, workable ones.

But that is not the same as saying, "We can write a Pony compiler that generates fast code." And it is certainly not the same as, "We _have written_ a Pony compiler that generates fast code."

<comment><USER12> Looks like they use LLVM backend, so they'll get low level optimisation for "free". The GC is also interesting: fully concurrent and lock-free.

</comment></comment></comment><comment><USER13> I find this interesting, but a bit too complex.

As a hardcore JavaScript programmer I make use of clusters or spawn child process to handle "actors" and I think that is much easier to reason about.

I would be happy if Pony had some examples of how to manage "world" state. For example if two objects in a 2D world intersects, or when one actor fires a laser, decide if another actor was hit by it.

I'm writing server code for MMO's and it seems like Erlang, Pony, etc would be the magic tool for such systems, but I never seem to "get it".

<comment><USER14> Erlang is far from "a bit too complex": it's just not.

What is difficult from devs coming from the imperative world is getting recursion & bind-variables-only-once (what is commonly known as "the syntax is ugly").

Please, have a look at [http://learnyousomeerlang.com/content](http://learnyousomeerlang.com/content)

</comment></comment><comment><USER15> I think it is fair to say that developers don't have most sensibility when it comes to UX, and often UI, so I think let's allow Pony Lang maintainers to make site a little bit easier to read and attract us.

Honestly, these days, we have a lot of choices, you really need to woo us, show us why would we want to program in this language.

</comment><comment><USER16> Definitely seems more practical than the other pony language, FIM++</comment>


What tech stacks are indie hackers using for their apps, and why? - <AUTHOR> https://www.indiehackers.com/round-table/what-tech-should-you-use-in-2018 <comment><USER7> Python for the code, Postgres for the backend, Markdown for the frontend. Because I am too lazy to reinvent the wheel, and most of that is good enough.

I would have much preferred to use Perl, R, dotnet, or just about anything else, but there was an already made library in Python that was good enough for 90% of my needs, and 100% with some elbow grease, so my lazyness made me learn Python instead!

But wait- it gets dirtier than this! The code is done is Vi, with no care in the world about version control (rsync does most of what I need: backups), and deployed to servers by manual SCP, with no automatic tests, no care about CD or automatization - yet: as I need more and more servers, I realize I have to spend time learning say ansible to provision them faster than a copy paste of bash (I have low standards but I won't do curl|bash, just... no) but I am delaying that as much as possible to concentate on implementation.

The servers are on Debian VMs on Azure, just because they gave me free credits and do not perform as bad as AWS. When the free credits run out, I will move to DO. Then I will see what else I can use, and that will be the right time to care about ansible or whatever.

It is as ugly as I can get away with to get my MVP out, using tech from 1996 lol.

<comment><USER8> People saying they wouldn't use git don't know git. I admit it does take investment to learn but once you are over the hump it is insanely easy and useful (yes even easier than rsync and 10x more useful). Especially when you consider that using rsync precludes your from collaborating even with one other person which is crazy easy if you use github (for example). People not using git: get over the hump, it is worth it, even on little side projects.

<comment><USER9> Git's UX is horrible for people who don't know git, i.e. git beginners. All the documentation and error messages are written as if the user is already intricately familiar with the inner workings of git. As a result, it's very hard to learn because you don't know what you're about to do without hours of googling cryptic error messages.

Perfect example that happened to me today:

        $ git push
        fatal: The current branch insert_branchname_here has no upstream branch.
        To push the current branch and set the remote as upstream, use

        git push --set-upstream origin insert_branchname_here

What does it mean to "set the remote as upstream"? That phrase makes no sense to me. Is that going to overwrite master on origin? I have no idea, but I'll be damned if I am going to hit enter and risk overwriting my upstream branch, so I Ctrl+C out of there and had to read a bunch of awful reference docs posing as a tutorial.

Git is just plain terrible in almost every way. It just happens to be less terrible for certain workflows than CVS/SVN/mercurial/whatever.

<comment><USER10> To save you some time and unhappiness:

Yes, git's UX is absolutely terrible. It is an abomination. It is the worst command line tool I've extensively used in that regard. For a long time I stubbornly used mercurial, which is vastly superior.

But, it has become a de facto standard. This is a tragedy. But it is a fact.

So it is best just to spend time learning it, find a subset of commands and make a cheat sheet you can refer to, and accept that the world is imperfect. Hopefully at some point in the future git will die and we will transition to the next big thing, and they will get it right that time.

There are many such things in the world of tech, and in most cases it is best to say "yes, it's awful, but no, I can't change it, and rather than expending energy on hating it (which is totally justifiable) I will expend the energy on minimising its damaging impact to my productivity and focus on accelerating my work elsewhere."

I say this because I have spent so many hours ranting about git and every time it gets in my way (git submodules anyone?) I used to get so stressed by its design that it would hurt my productivity.

Be the Zen Dev: acknowledge it, isolate it, keep it at arms length.

Tips: Make a cheat sheet, use a minimal feature set, don't try to do anything clever with it, and always have a way out (eg backups! Take copies of your directory before dealing with lesser know commands! Try things out on dummy repo's before breaking your own, etc.).

<comment><USER11> > But, it has become a de facto standard. This is a tragedy. But it is a fact.

I feel this sentiment so often in this field. It's really distressing.

<comment><USER12> Are you familiar with "worse is better"? Sometimes what makes a technology a pain to use is also what makes it competitive.

</comment></comment></comment></comment></comment></comment><comment><USER13> I'm working on a new project as a solo developer.

I'm writing it in Elixir and Phoenix (Elixir's goto web framework) with PostgreSQL to back my data. For the front end, I'm using good old fashioned server side rendered templates and Turbolinks with sprinkles of Javascript where needed.

Despite having worked with Flask and Rails for the last 6-7 years I'm going for Elixir this time around because there are aspects of the app that lend itself well to what Phoenix has to offer and I'm using this as an opportunity to grow as a developer. Every time I learn a new language / framework I find myself leveling up in other technologies I know.

So far I'm super excited with the way things are turning out. I'm still pretty early on in the project but I've gotten a decent amount of functionality implemented already.

I'm really surprised Elixir isn't more popular. The language author and the supporting community is awesome, and I've been the happiest I've ever been working with this tech stack. Of course I'm still drinking the "omg this is new and awesome" kool-aid, but even without really knowing everything too well, I'm able to accomplish real world tasks and that's all I care about in the end.

<comment><USER14> I'm using exactly this stack for my current personal project - Elixir/Phoenix and Turbolinks.

Sprinkling in either Elm or Vue for the one or two complicated widgets I'm going to need, but I haven't committed to either one yet.

<comment><USER15> I've settled on Elixir/Phoenix for the backend.

On the front-end I might still experiment, but I think I'll settle for at least a decent chunk of time on this:

1\. React + Styled Components (so html/css/js is finally no longer decoupled in a way that just makes no sense) 2\. Page.js or something similar for routing, because I've been bitten too often by react-router and like, and the idea that routing is it's own thing makes sense to me. 3\. Baobab.js or something similar for state management: basically, A. a single state object with B. a kind of cemtralized action-flow to change this state, and C. listeners of sorts within various components that trigger a re-render (cursors in the case of Baobab). I could go full-on redux, but it doesn't seem, necessary and I kind of relish running into the situation where, as my apps grow, it turns out to be immediately obvious why Redux does what it does.

I'd be very curious to get some feedback on my choices, and/or alternative suggestions. In particular regarding 3.

EDIT: to be clear, this is for full-on SPA's with no kind of crawling/SEO needs.

</comment></comment></comment><comment><USER16> Go and, honestly, sqlite with backups written to S3. It's the absolute cheapest. I can run multiple apps on a t2.nano (t2.micro if I am feeling fancy). My apps cost something like $1.50 to run a month, and they can easily handle medium-sized traffic, plus Go is just so dead simple to deploy. scp a build binary, and boom I am done. Once the app grows and more collaboration/developers/requirements call for it, I will add more infrastructure.

<comment><USER17> Do you use a framework? Do you do everything server side with Go or do you have a JS library on the front-end?

<comment><USER16> net/http and REST api all the way down, I for the most part try to stick to the stdlib as much as possible. The few exceptions are logging (I like zerolog) the sql driver, and auth. I do keep the front/backend separation because doing site hosting in S3 with a cloudfront cache is pennies on the dollar (.63 cents a month) and I tend to lean towards using vue.js more these days. I have been known to just serve the html statically directly from go as well, and use go templates in the past, and use minimal jquery where it's needed (I still like jquery :-/, not everything needs to be full-blown SPA- mode)

</comment></comment></comment><comment><USER18> Not that I'm counting, but there are 20 mentions of React, 13 mentions of Vue, 10 mentions of Python, 9 mentions of Go, 8 mentions of rails. The OP had a couple mentions of Wordpress.

AND Zero mentions of Meteor, lol!

I think I'm the only indie developer using Meteor and Blaze, but I have to say they make my life WAY better. Granted, it took some time to figure out exactly how to optimize the stack to make it scale correctly, but NOW Meteor is the only solution I've heard of that does this:

 _Meteor now automatically builds two sets of client-side assets, one tailored to the capabilities of modern browsers, and the other designed to work equally well in all supported browsers, so that legacy browsers can continue working exactly as they did before. This "legacy" bundle is equivalent to what Meteor 1.5 and 1.6 delivered to every browser, so the crucial difference in Meteor 1.7 is simply that modern browsers will begin receiving code that is much closer to what you originally wrote._

The apps I build now run like native apps in a modern browser. Laser fast. It's beautiful, like the first time using broadband.

After everyone and their mother proclaimed Meteor to be dead, they rose from the grave and locked in like Godzilla. I don't begrudge anyone their choices, but if you haven't taken a look at Meteor lately, having used Wordpress, Rails, Ember, React, and vanilla JS with node in the past, I'm very grateful Meteor's development team is STILL knocking it out of the park.

<comment><USER19> I can assure you that you are not alone. I am developing meteor with react. I took the clever beagle pup as the base. My app is a working smoothly and meteor does a lot of things which I don't completely understand, but it just works.:)

<comment><USER18> Clever Beagle is a great starting point as it's optimized to how Meteor works. Ryan Glover, the brains behind CB and Meteor Chef, is both generous and smart.

</comment></comment></comment><comment><USER20> It's not cool anymore but I use PHP and MySQL with a $5/mo inmotionhosting account. This is after I decided to not take on the overhead of native with multiple code base and App Store deployments. Good ol' webapp it is.

However every single day I do wish there was a solution for my webapp to get access to contacts on the phone and of course notifications. It would have been a game changer given the nature of the product. Currently it is a world of compromises for hobby developers (shameless plug: [http://ping3.com](http://ping3.com))

<comment><USER21> I use the lamp stack too, hosting on scaleway nowadays; aws is great but for my own non critical hobbiest projects scaleway is hard to beat. Having said that, cpanel is great on shared hosting with the ability to specify your PHP version and modules.

As a language PHP can be a mess but the ecosystem is fantastic; the release of PSRs, composer and 7.x have been great.

</comment></comment><comment><USER22> For getting web apps up fast, React, Firebase, Git, and Heroku. It's a well trodden path so the tooling is simple and the components are reliable.

For my VR stuff... Unity is really the only choice that's fast to get off the ground, so Unity it is.

For hacking together backend heavy stuff, Python. Flask if I need to expose an API endpoint. Postgres if I need a real database, sqlite if I don't. Deployed to my evergreen playpen virtual instance via Docker containers because it's, once again, a well trodden, simple, and undramatic path.

<comment><USER16> Do you use firebase auth? It looks really good. I just had a heck of a time implementing user management and a couple oauth2 flows and it looks like it could have saved me a bit of time. My only concern is their plans are a little weird, it just jumps from free tier to jumbo size, wish there was something a little in between for less money.

<comment><USER22> Yup, I do use it. From a security and convenience standpoint it's just so much easier than whatever I could have come up with myself. But yes, the pricing sucks. I don't have a good answer there unfortunately.

</comment></comment></comment><comment><USER23> I built FormAPI [1] with Ruby on Rails. I used plain Rails views for most of the CRUD things, and used React/Redux to build the template editor [2], which is pretty complex. I've been extremely productive with Rails, and the performance has not been an issue at all. My plan is to rewrite the API and workers in Elixir when it will save me $2,000 per month on hosting costs. And even then, I would probably be making so much money that it wouldn't matter.

I started on Heroku, but I had a lot of free AWS credits from Stripe Atlas that I wanted to use. So I moved to Convox [3] on AWS, and it has been absolutely awesome. I have a rock-solid cluster across 3 different availability zones, and I'm also running Postgres with high availability (RDS).

I haven't had a single second of downtime since I migrated [4] (I up the status dashboard a few months ago, but moved to AWS earlier than that.) Convox supports auto-scaling and rolling deploys. It waits for the web process to be healthy, and if something crashes it rolls back the deploy without any downtime. I can also terminate any instance at will, and another one will pop up to replace it with zero downtime. After using it for the last ~6 months, I feel confident enough to start offering a 99.999% SLA.

[1] [https://formapi.io](https://formapi.io)

[2] [https://formapi.io/templates/tpl_DEMO42TmQjTgsQ7q/edit](https://formapi.io/templates/tpl_DEMO42TmQjTgsQ7q/edit)

[3] [https://convox.com](https://convox.com)

[4] [http://status.formapi.io](http://status.formapi.io)

</comment><comment><USER24> Flask (hosted by pythonanywhere) and Neo4j from Graphene.

Chose both because I wanted consistency between the abstraction of my business logic, and the spec of my implementation.

I get some chippy guff about using graphs, but by taking the time to define my business logic as a grammar, expressing that grammar as a graph, then implementing it directly into the model, I get a lot of "aha," moments from potential customers.

Graphs can be analogous to functional languages in that if you are using them, there is a higher likelyhood you've reasoned something through before implementing it.

<comment><USER25> Can you provide more info about your graph approach? Thanks!

<comment><USER24> [https://en.wikipedia.org/wiki/Ontology_(information_science)](https://en.wikipedia.org/wiki/Ontology_\(information_science\))

</comment></comment></comment><comment><USER26> I actually wound up building most of my current project in Rust, on top of actix-web.

Partly because I'm apparently a masochist, but also because... I mean c'mon, modern architecture is CRUD and job queues. Rust can do that fine if you don't get distracted by the bells and whistles.

I ripped out and open sourced my user-module stuff for authentication handling, if anyone's interested: [https://github.com/ryanmcgrath/jelly](https://github.com/ryanmcgrath/jelly)

</comment><comment><USER27> My stack: Gitlab CI/CD, deploying using Ansible to Docker Swarm, running Keycloak for auth, RabbitMQ for messaging, Postgres, Elixir/Phoenix for the API server (GraphQL), Apollo + React Native for frontend and mobile apps.

Why? For me it's best of breed vs simplicity. OpenID Connect is the most mature auth, rabbitmq very good messaging, elixir a lovely language, graphql the most programmer-friendly connection between frontend and backend, and react native allows 90% code sharing between web SPA and mobile apps.

And if you combine all of these (I mean if you finally set it all up), it's a low number of lines of code environment.

</comment><comment><USER28> Speaking for myself: mainly Groovy and Grails, with a little Java mixed in. Postgresql when I need a relational DB. Bootstrap for basic CSS, and jQuery to add AJAXy bits. I have not yet adopted a JS framework like React or Vue, although I've been looking at giving Vue a shot. I use Ansible for automation, Git for version control, Eclipse as an IDE. Deploy to CentOS linux mostly. Just starting to go down the path of adopting Docker and (probably) Kubernetes. Cloud infrastructure is either Linode or AWS.

All of that said, I'm a big believer in "use the right tool for the job" so if something comes up that requires C++, I'll use C++. If something needs Python, then Python it will be. If Prolog is right for something, I'll use Prolog. Or COBOL, or Erlang, or Ruby, or CL, or Perl, or SNOBOL, etc., etc, yadda, yadda, ad infinitum...

</comment><comment> duncan-donuts My side project is using Rails, React, Postgres, and deployed to heroku. There's nothing flashy but I can prototype quickly and it's easy for 2 people to manage.

<comment><USER29> Same here.

</comment></comment><comment><USER30> My software dev path: Didn't know anything serious about web dev/software systems 12 months ago. So if my stack seems shiny, I just picked what many people on Medium/Hacker News were talking/raving about.

Front-end: React SPA (Via Create React App),Redux, React-Bootstrap Why: I had no prior framework experience, single command setup, and plenty questions on Stack Overflow and Medium articles to learn with. Going the plain Javascript route with no frame work,seemed like I would be on a slippery slope for spaghetti code down the line. React's one-way data flow and component architecture made things incredibly easy to mentally digest. I found React's documentation VERY well organized and explained, and Vue's documentation was intimidating when compared to React.

Version Control: BitBucket Git Why: Free private tier for solo use and enjoyed previous experience with Atlassian products

CI/CD: BitBucket Pipelines Why: Already using Bitbucket, this just worked seamlessly with it. Only $10 for 1000 more build minutes.

Firebase: Hosting/Cloud Functions/Firestore/Auth Why: Everything is automagical HTTPS static website hosting for the create-react-app (This is what first got me started) Then came Storage,Firestore,Cloud Functions, and Auth. Wish it had an automagical SQL product. Low Entry Cost

Cloud Provider: Google Cloud Why: Had no experience with any cloud provider. I found the pricing/product offerings really easy to digest and interpret when compared to AWS.

Email Sender: Sendgrid Why: Good starting free tier. Decent Docs. Easy to setup.

Backend Compute: Google Compute Engine +Docker+Python-based API app Why: I can do local dev easily with Docker, push the image to Google Container Registry, then pull the image to the VM. It's easier to do than learning to setup a CI/CD piped GKE cluster Eventually I want to pay the "tax" go to a GKE CI/CD Kelsy Hightower setup,so I can git push/PR/merge a change, and it's in production. I don't do enough changes to the backend right now to justify a CI/CD piped GKE setup.

Other: Email Client: Gsuite Why: Custom Domain Name I'm already familiar with Gmail

Project Management: Trello Why: Integrates with Bitbucket Multi Device Support (Phone,Tablet,Desktop) Easy to mind map and organize features

What I value: Good Docs Free tier for solo devs/low use, and progressive options for paid plans (Gives me breathing room on cash while I figure things out) Lots of questions/answers on Stack Overflow or in-depth Medium articles.

</comment><comment><USER31> Currently been working on a web app for about 8 months.

Python for the backend under the argument of "build using what you know". ReactJS for frontend development because Python for frontend work I find very antiquated.

Architecture wise I'm hosted in AWS. Data is stored in MySQL and Redis. All self hosted because I'm to cheap to pay per request pricing and the overhead is very minor when done right when rolling my own

<comment><USER32> How much RAM do you allocate to Redis?

<comment><USER31> My current indie web app is still in development so final numbers for prod are TBD. However I'm using it for

* Storing time counters on user actions (timestamp of last time a user posted/edited X, meant to be a throttling mechanism against abuse)

* Site content caching, around 20-50kb per page, each page being user generated content

Sizes will obviously vary on traction so not sure about the final numbers.

\----

My last 9-to-5 employer was a very well known and my largest caching tier in Redis there was 512GB in a cluster configuration. I'm using the same server configuration and sharding logic for the indie thing, just on a smaller scale

</comment></comment></comment><comment><USER33> I use multiplatform Kotlin to compile shared business logic to JVM and Javascript. The frontend then uses Typescript+React/Redux while the backend is a Kotlin Spring app with Postgres.

<comment><USER34> How are you handling authentication? OAuth 2 with Spring Security, or something else?

<comment><USER35> Not the OP but I started with cookie based auth and Spring Security and then moved to OAuth 2 - it's extremely painless to setup (100 lines of code at most) but it did take a while to understand it all.

The Baeldung Spring Security course helped a lot.

If in a hurry though you can always use an external service like Auth0. I had that setup in an afternoon whereas understanding OAuth 2 and Spring Security took a week.

<comment><USER34> Thanks! I'll check that course out.

</comment></comment></comment></comment><comment><USER36> For the backend I start with Node, then get tired of the runtime errors and switch to Go. Go is cool but soon I get tired of writing "if err == nil" so I switch to Haskell. Haskell is nice but soon I get tired of not finding decent libraries for some not very popular things that I use, so I say fuck it and go to rails. Ruby is nice and Rails feels well thought out and solid, but then I can't help be annoyed that it's not fast, so fuck it, I switch to Rust. I get tired of lifetimes and wrapping everything in RefCells so I switch to Erlang. Erlang is cool and all, but no fucking meta programming. Sucks, let's try Lisp...

I am not making fast progress, I think the problem is my keyboard, I should try buying that Ducky one I have been eyeing for quite a while.

<comment><USER37> Just pick something and stick with it, every technology has its problems.

<comment><USER36> You are right! I should stick with Scala. It will also give me the opportunity to learn a new language!

Play looks good, but maybe I should go with Scalatra instead? Should I be using Slick? It's quite different than any ORM I used so far, maybe I should bake my own Scala ORM. OK then, here we go. One more decision, REST or GraphQL? GraphQL seems to be the future. Let's go with that. Man, types are nice and Scala's type system is powerful, but sometimes I wish I had the flexibility of a dynamic language. It would make prototyping much faster.

Fuck it, "git checkout -b node_v2"

<comment><USER38> This is an example of some of the best performance art on hacker news

<comment><USER39> Although I love it and upvoted both comments, it's also an example of why straightforward comments waste much less time/text than jokes/satire (on HN)

</comment></comment></comment></comment></comment><comment><USER40> Over and over again I keep hearing the advice to "build using what you know."

How do I separate what might be a side project to learn a new stack from a side project that might eventually make money?

<comment><USER41> I had to make this decision recently and my conclusion was if your goal is to build something that makes money, do it with what you know. Why? Because you can spend 100% of your time building instead of 50/50 learning/building (or worse). Projects with the goal of being a business should iterate and fail fast. If you win the app lottery and actually build something people will pay for, they won't want to wait for you to learn while you build it out. Someone else will do it with some "old" tech like ruby on rails and take your customers and revenue. Spend your time working on the business, not the tech. Developers think code is important but the reality is that it almost doesn't matter. You can build something successful with the worst tech decisions imaginable. I know it's hard to accept but it's true. I've personally witnessed an absolute frankenstein's monster app, made of a mish-mash of what are now considered the worst technologies, get sold for $30+ million and the founders retired to the Caribbean where the build a mansion and an upscale restaurant just for fun. I pity the people devs who have to inherit that, but the value wasn't in the tech and it almost never is.

<comment><USER42> If you're spending 100% of your time building you're doing it wrong anyway.

I feel like this is just missing so much conte xt.

If you are working full time and can hack in your after hours to learn a new tech stack first and then start your project there might be an aggregate benefit over just starting the project right away using what you know.

Context matters to a huge degree in these kinds of discussions. I feel like people just like to give blanket statement advice.

</comment></comment></comment><comment><USER43> C++/Qt for GUI, Go or Python for backend, Python for misc scripts/prototypes, C for uCs. They are all well trodden paths with plenty of good libraries available, and good tooling available. I have spent a bit of time playing with Zig most recently, it could finally replace C for me!

</comment><comment><USER44> Web: typescript frontend and phoenix (Elixir) backend is My new setup.

Apps: Flutter and if I need it switch to native. But flutter is really good for my simple needs!

</comment><comment><USER45> React/Redux frontend and .Net Core for backend API. The site takes advantage of Server-Side Rendering and Lazy Loading based on Routes/components. Authentication is built into the App with JWT and Authorize attributes on controllers.

</comment><comment><USER46> I use Go, Vue.js, Postgres, NATS, Redis, Keel, and deploy everything Kubernetes.

So far I am super happy with the stack, runs cheaply and requires pretty much no maintenance. Just tag a release on GitHub, Google Cloud Builder builds the image, Keel updates deployments and in a few seconds I have updated production with zero downtime.

While some people are happy with their copy/paste binaries/code to remote servers, I think a good pipeline to release and run your workloads makes working on side projects a lot more pleasure where you can focus on code and features. It also provides you with a valuable experience that can make you more money than the side project itself :)

</comment><comment><USER47> I've a small side project I'm working on. I am writing the backend in Clojure and then deploy with Jenkins using the Groovy DSL — it's useful that everything runs on the JVM. The Jenkins code calls Terraform to set up the servers, drawing on optimized AMIs I set up with Packer. I avoid Docker for all the reasons I've written about elsewhere (you can Google if you're interested). Packer does everything that people would otherwise use Docker for. For now the frontend is plain HTML and jQuery. I haven't done the mobile app yet so no need for Angular/Cordova or React.

<comment><USER48> Link for others: [http://www.smashcompany.com/technology/docker-is-a- dangerous...](http://www.smashcompany.com/technology/docker-is-a-dangerous- gamble-which-we-will-regret)

It was a great--thanks.

</comment></comment><comment><USER49> On the backend my API is using node+koa and postgres+postgis. Front end is vue. Koa is amazing, and there's a postgis package for knex (a SQL query builder) that lets me do geospatial stuff right in node, which is a game changer. Backend is deployed in containers, Google container registry builds the images for free on every git push and custom bash scripts deploy on the digitalocean instance. Front end is deployed with Netlify, also on the free tier, and also amazing. It's incredible how cheap (and mostly free) it is to deploy side projects these days!

<comment><USER50> Thanks for sharing your stack here!

How do you deploy your backend containers without downtime?

Do you host your Node app and PostgreSQL on the same machine?

I understand your frontend is hosted on Netlify and your backend on DigitalOcean: are they accessible under the same hostname (using Netlify proxy for example), or do you use CORS requests?

<comment><USER49> I do have a slight downtime (1 second or so) when upgrading containers since the bash scripts just pulls the new image, stops/rm the container and start up the new one... Although my project is for an enterprise customer who works 7am-5:30pm so I just do it outside of those hours. Each end point is it's own instance too, which minimizes the likely hood of anyone knowing.

It was all designed to run on kubernetes which would allow rolling updates with zero downtime, but I can't justify the cost of a cluster at the moment.

The node app and postgres are on different instances. They could easily be on the same, though. Postgres is open to the world since GIS analysts need to be able to connect to it with QGIS. The API is also open to the world using CORS for the same reason (a custom GIS collection tool accesses the REST API).

<comment><USER50> Interesting!

I think a 1 second downtime when deploying a new version of the backend is tolerable if the app is a single-page application, because the app can implement a retry logic client-side. This is possible only if the backend can be stopped and restarted really quickly. Otherwise, a rolling update or green- bue deployment is necessary.

Another question: do you expose your Node service directly to the Internet, or is it behind a reverse proxy?

</comment></comment></comment></comment><comment><USER51> Python for control software, C++ for LED drivers, OSC (Open Sound Control) for communication.

[https://www.youtube.com/watch?v=kG4xvTjzRwo&t=27s](https://www.youtube.com/watch?v=kG4xvTjzRwo&t=27s) [https://www.youtube.com/watch?v=jZVFdqyaKug](https://www.youtube.com/watch?v=jZVFdqyaKug) [https://github.com/jdblair/MegaPrayer- oscled](https://github.com/jdblair/MegaPrayer-oscled)

</comment><comment><USER52> Django, Postgres RDS on elastic beanstalk, with some SNS use.

Vue+vuex on the front end.

Gitlab CI/CD for deployment

Extremely fast dev/deployment turnaround time with Django and Beanstalk.

Vue/vuex is simple enough for me to understand and build SPA

<comment> bash-j Is there a guide on the internet that would help me figure out how to use Vue with Django? I tried a couple last month but they were poorly structured or didn't explain enough about what they were doing, and since I'm not great at JavaScript I gave up..

<comment><USER52> I've completely separated it out. Except for some authentication pages, it's all JSON APIs. Django project does not have any frontend assets of Vue/vuex

</comment></comment></comment><comment><USER53> C++, Qt and some OS API.

I'm not in web apps.

<comment><USER54> Same stack ! happily hacking on a DAW for interactive art - [https://ossia.io](https://ossia.io)

</comment></comment><comment><USER55> Wow, lots of Vue mentioned! I was expecting mostly react, but surprised to see there was actually some pushback against it.

> I've heard React described as "10 times as much work for a 20% better user > experience", and I think that's about right (maybe not 10x, but probably 2x)

I thought this was a gem.

</comment><comment><USER56> For [https://gridgenerator.com](https://gridgenerator.com) I am using:

      - Tachyons CSS
      - <USER2>
      - <USER3>
      - Node.js (with express and postgraphile)
      - <USER4>
      - <USER5>
      - <USER6>

<comment><USER57> Are you using Typescript for frontend or backend (or both)?

<comment><USER56> Mostly front-end:

[https://github.com/HugoDaniel/gridgenerator](https://github.com/HugoDaniel/gridgenerator)

But the video producer/converter is also in TS (in that same repo). It produces your making-of videos like these:

[https://gridgenerator.com/static/37.mp4](https://gridgenerator.com/static/37.mp4)

</comment></comment></comment><comment><USER58> I'm not sure why people connect success with the language something is written in..?

<comment><USER59> Because that's the only only thing they have control over. It's at least possible to imitate someone's stack or basic idea.

</comment></comment><comment><USER60> React + Django hosted on Heroku. Why? Because I'm most the productive with it.

</comment><comment><USER61> For my recent projects, I've used Go + DynamoDB for a GraphQL backend, and Next.JS with SSR on the frontend. Deploying both to lambda with Apex Up. Stripe for billing, SendGrid for transactional email.

<comment><USER62> Any tips on the go/dynamodb side of things? I've looked at it and experimented a little and it seems quite easy to get data into dynamodb and quite convoluted to get it out.

<comment><USER61> I'm using [https://github.com/guregu/dynamo](https://github.com/guregu/dynamo) for the data reading/writing. In my experience, the trick with Dynamo is the schema design. I haven't had problems with the libraries/queries as long as the schema made sense for how I'd be accessing the data.

</comment></comment></comment><comment><USER63> Elixir, Phoenix and Postgres. I like a lot about Elixir and find it's a great solution for many of the soft-realtime apps that I've been building lately.

Standing up a CRUD app in Phoenix is dead simple as well.

</comment><comment><USER17> I haven't done an official count (comments plus the site) but a very strong showing for full stack Rails or Django, and when people do stick in a front end it is usually React or Vue.

</comment><comment><USER64> Thanks for the featuring my side project [https://www.inviewapp.com](https://www.inviewapp.com) Channing!

</comment><comment><USER65> Vue.js on the front end with MongoDB Stitch handling authentication and database storage. Deployed to AWS but started using Netlify and loving it.

</comment><comment><USER66> Firebase suits my needs almost perfectly for projects where I'd rather focus on the front-end and design than maintaining a back-end, since I'm only using it for very small apps and sites.

Past that, I'm fond of Node, but that may be an unpopular thing to say on HN. :)

</comment><comment><USER67> Anyone knows of similar kits/packages to Laravel (PHP) and RailsKits (RoR)?

Something that will let you focus on creating the part that's unique to your project rather than having to build everything (or a lot) from scratch? (Rails/Django/etc are not enough).

<comment><USER68> Use Laravel Passport for OAuth. Use the Vue Cli to create your SPA. Then just write a class in the Vue app to store the bearer token and send it through on each request.

I'm on mobile so going into detail is difficult. If it would be useful I'll write a guide for you.

</comment></comment><comment><USER69> Surprised no ones talking GraphQL with as much coverage as it gets on this site.

I'm running my newest solo project on Prisma with GraphQL Yoga as the backend and React + Apollo as the front end. It's really quite something and allows for extremely quick development.

</comment><comment><USER70> Python, Django/WagtailCMS, React+Redux, Redis and RedisQ, Postgres, Kafka, Docker + Compose for local dev. Visual Studio Code.

Tempted to learn a 2nd language well, thinking Go but curious about the experience of Kotlin + IntelliJ

</comment><comment><USER71> I'm sticking to standardized languages/tech with multiple implementations to keep control and deployment options: JavaScript, C, SQL, HTML and SGML, and Prolog, plus standardized APIs

</comment><comment><USER72> I'm using c++17 with Conan and cmake, plus SQlite/Qt.

I managed to run the deploy using terraform on AWS free tier and Azure msdn account

</comment><comment><USER73> F# on .NET Core with PostgreSQL, written with JetBrains Rider, running on Ubuntu on AWS.

</comment><comment><USER74> Swift Vapor + PostgreSQL and you're done.

</comment><comment><USER75> Python and Cython, flask, gunicorn, various ML frameworks, Postgres for web services.

Python with Cython because this allows extremely nice flexibility between concise, expressive code and low-level targeted performance optimization.

Flask with gunicorn has scaled extremely well for us, but there are many good alternatives. Postgres because flexibility with customizations and data types in the database has been the most important thing for us.</comment>


Are teachers underpaid? It depends. - <AUTHOR> http://jseliger.com/2011/07/10/are-teachers-underpaid-it-depends/ <comment><USER2> My wife is a high school English teacher. The ongoing joke with teachers is they get 3 months a year off. What other profession gets that, right?

Speaking from experience, she generally brings home work every night (grading, lesson planning, etc). Weekends too. This fluctuates based on time of year (grading a round of research papers, preparing new lessons for a new quarter, etc).

Summers off? Kinda. New lessons and curriculums often have to be prepared for the following year. She's been doing that for a bit already whenever our little guy naps.

The other part of overlooked is the emotional toll. In my wife's case, she's dealing with high school freshmen, juniors, seniors, all who are one hell of a handful most of the time. Last year, she had a class that had her crying more than a few times. The kids were literally trying to make her cry.

But besides all that, teaching is a profession that is charged with preparing and educating our youth for tomorrow. Obviously, teachers go into it knowing this, and often for that very reason. But in my eyes, that's quite a responsibility. There are plenty of better paying jobs out there with less vacation that, at the end of the day, don't make much of a difference.

(For the record, my wife's district actually pays pretty well, so I don't think she's underpaid).

<comment><AUTHOR> "Speaking from experience, she generally brings home work every night (grading, lesson planning, etc). Weekends too. This fluctuates based on time of year (grading a round of research papers, preparing new lessons for a new quarter, etc)."

That might be true for her. Nonetheless, the plural of anecdote is not data; as I observe in the post: "According to Bureau of Labor Statistics (BLS) data, the average teacher works slightly less than 40 hours per week. If you have better data, I'd like to see it. Note too that people getting teaching degrees at the graduate level get substantially lower GRE scores than those in almost all other disciplines. This will come up later."

<comment><USER3> The BLS data being based off the survey question "How much work did you do yesterday" and extrapolating from that, instead of something more direct like "how much work did you do last _week_ ". Anyway, Google is loaded with heaps of research into teacher workloads, this line "if anyone has better data, I'd like to see it" is just a handwaving throwaway line.

But if you really do have a problem with anecdotal data, why do things like bring up Bill Gates, who is not only an anecdotal point, but an obvious outlier at that?

</comment></comment></comment><comment><USER4> When I was in college several of my friends majored in early childhood education.

Without a doubt it has to be the easiest major out there. While I was writing papers, my friends were learning how to make name tags with construction paper and crayons, and learning kiddy songs (this is not an exaggeration).

The problem is that once you get the degree and jump through the hoops, you're in. That's all there is to it

If any idiot can become a teacher, and a bad teacher makes the same a great teacher, then the pay is going to end up as the average of what you'd pay a bad teacher and great one.

Side-note: my mom, who also has a degree in early childhood education, tells me that when she was there 30 years ago it was much more academically rigorous.

<comment><USER5> I gather it depends on how you're entering the field. My mother studies early childhood _development_ with a focus on how it can go wrong (I forget the technical term, but things like severe autism)

It doesn't seem to be a 'hard' science, but it's still a science. As such, there's no glitter and construction paper involved, except when they are interacting with the children!

<comment><USER4> I think that vast majority of aspiring elementary teachers are not going to pursue a degree focusing on developmental disorders.

<comment><USER5> Certainly. I actually kind agree with your original point, from what I've seen of education majors. I took an education class in college, aced it and got rave reviews on my papers, and I barely even tried. Made me a little concerned about my fellow students in the course.

</comment></comment></comment></comment><comment><USER6> It's not hard to believe that the average teacher is paid about what they're worth.

The more important question is whether the pay is competitive to attract teachers of sufficient quality.

<comment><USER7> There is an interesting proposal to get more teachers of better quality for American schools.

<http://edpro.stanford.edu/hanushek/files_det.asp?FileId=258>

[http://edpro.stanford.edu/hanushek/admin/pages/files/uploads...](http://edpro.stanford.edu/hanushek/admin/pages/files/uploads/Hanushek%202009%20CNTP%20ch%208.pdf)

The proposal considers issues of pay, but crucially it also considers issues of other working conditions, including the issue of whether working teachers who do better quality work than other teachers are recognized for that achievement.

<comment><USER8> Very interesting -- thanks for the reference! Will read through it this evening. I sincerely hope it proposes good methods of improving teachers, ones other than the horribly flawed method of judging teachers based on student test scores.

</comment></comment></comment><comment> T-R I just want to say thanks for the great post. I thought your comment on the other thread was particularly good, I'm glad to see you expand a bit more on it. Honestly, I was a little disappointed to see patio11 reference yummy's comments, since they really leave the impression that he has a horse in this race - it's nice to see a more even handed treatment of the matter.

</comment><comment><USER8> > "The first time you teach a class, it's incredibly hard and time consuming, > but the difficulty drops like a logarithm to a relatively low plateau after > you've done it a few times. This appears to be reflected in data."

I'm not entirely sure if this is a good reflection of the teaching role, or at least what it should be. Also, this statement to me gives the impression that teaching is a fairly static or fixed process -- once you've done it a little, your subconscious can take over. Sadly one can get by with that mindset (and unfortunately I've had plenty of teachers who act like they believe this), but any good teacher would be saddened by this. Proper teaching is so much more than just knowing the subject, or the routine. The amount of effort and thought involved in skillfully and effectively teaching any idea or concept to a wide range of different people with different backgrounds and knowledge and world views isn't a task that I believe can become automatic. Good teaching involved understanding your students and understanding where they're coming from and what they know, and tailoring everything you do to get each individual student deeply involved in the subject at hand. That's no easy task, even for seasoned teachers!

I'm not suggesting you necessarily are part of this mindset, however sadly so many in the US have such an obscured view of what teaching truly is. In my opinion, that is one of the core problems with education in the US.

> "Note too that people getting teaching degrees at the graduate level get > substantially lower GRE scores than those in almost all other disciplines."

Sorry I don't understand -- what's your point with this, what is this supposed to prove, or how does this contribute to the argument?

<comment><USER9> As another graduate student who teaches, I can confirm jseliger's claim. Teaching difficulty drops of insanely fast. Don't think of it as making the task automatic, but rather having familiar territory off of which to base the things you say.

After one semester teaching a class, you discover what ideas the students tend to find most confusing and what types of errors are the most common.

Having leftover notes from the last time you taught saves you you most of the planning work, too.

<comment><USER8> Perhaps we need to talk in scales or include some comparators here. I completely agree that difficulty does drop some with more subject knowledge, teaching experience, and familiarity with the subject and types of questions and students, but by how much really? To me it sounds like it's being suggested that teaching becomes "easy"? Effortless? Not necessarily mentally taxing? Not necessarily time consuming? I can't see how one could _effectively_ teach and think this.

Again, I don't see teaching as simply "transferring" facts/knowledge. Students can test well and have no conceptual understanding whatsoever. Or, students can show understanding but have underlying mental models untouched (making them even more confused than previously). Both of these cases are failures.

The book "What the Best College Teachers Do" has amazing insights on how involved, dedicated, knowledgeable, and wise very successful and effective teachers are. The amount of thought and effort they put into their courses is staggering, so I'm approaching this discussion from that frame of mind, rather than what the average teacher (or student teacher) does.

<comment><AUTHOR> "To me it sounds like it's being suggested that teaching becomes "easy"? Effortless? Not necessarily mentally taxing?"

I doubt teaching will ever be "effortless," at least if you're any good or aspire to be any good, but the idea that you have to spend five hours of prep (or some ridiculous number) for every hour of class; I probably spend ~15 minutes prepping for a 50 – 75 minute class if I've already read the material a couple times, have a loose lesson plan, and, as one of the above posters mentioned, know where the likely trouble spots are going to be.

If you're good or want to be good, I don't think you ever just phone it in. But these stories of hero teachers spending 12 hours a day, every day working to prep for class sound highly improbable to me, based in part on experience and based in part on the aforementioned BLS data.

Teaching can also be hugely mentally taxing _while you're in the classroom_. That's when I'm most on my toes and most ready to follow where the class goes; if a bunch of people want to discuss a subject, or unexpected questions arise, or whatever, you have to be ready to roll with it. Those are often the most satisfying classes. Most of the time I go in with a loose plan that'll cover whatever I'm shooting to cover that day, and if the class goes in another direction that's still productive, I'm ready to roll.

<comment><USER8> > "But these stories of hero teachers spending 12 hours a day, every day > working to prep for class sound highly improbable to me"

The stories I hear about are the ones of teachers working ~12 hours a day because they teach several different subjects a day and constantly have mounds of documentation the state requires of them on every student. In addition, they have large classes and spend hours and hours grading and providing valuable feedback on homework/projects and exams.

For the sake of the discussion, some sample thoughts about what the "good" teachers think about:

What about considering the larger questions? Why are the students in the course in the first place? Throughout the course, are they being inspired to continue their studies outside of class? Why is the material on the syllabus actually on the syllabus -- what purpose does any of it serve the students? Is this purpose taught in such a way that it is understood by the students? Are they often intrinsically motivated to learn or are most of them just seeking a good grade? How can you structure each activity, lecture, and exam to ensure or encourage students to be intrinsically motivated and care about their learning and development? How can you help students desire the knowledge long- term, rather than just for the course or for their studies...? Are the students learning to think about the subject at a deeper level -- more like the experts? How can you encourage such thinking? Is the learning environment or atmosphere itself safe and welcoming -- encouraging students to ask questions without fear of failure or looking dumb, and is free from stereotypes and negative expectations -- does it encourage free-thinking, discovery, negotiation of meaning -- does the teacher feedback encourage all this? Is the learning functional or is it just leading to correct answers? Do the students to the proper extent have control over their own education/learning? Are the expectations in place to encourage this? Is it thought about what should be expected of the students once they complete the lesson, section or course? What deep mental models does it appear the students have that prevent them from learning to their fullest? How could those be tackled? How can it be encouraged to collaborate on finding answers? How can the course be taught by having the students asking the proper questions rather than being told what to think?... and so on.

Taxing...

</comment></comment></comment></comment></comment><comment><USER10> First observation: geez teachers in the US don't get paid "that much". In Ontario (province in Canada), teachers can max out after 12 years at > 100K a year, it's not at all unheard of. The teacher's union here is _very_ powerful, for better or worse.

I think deciding on how much a teacher "should" earn simply based on the time they put in and then compare it to another profession misses a valuable point - teachers can make a _huge_ difference in the life of a human being. What's that worth to society? If a great math teacher encourages 3 kids to become engineers, then his salary is much less than it should be.

I saw a post on HN the other day about a teacher who told an otherwise disillusioned student that he was "gifted". Simply by being told so (he wasn't giften in the traditional sense) completely changed his perspective on school. If he goes on to become a contributing member of society, a good father, and good role model for others, then that teacher is probably worth more than 70K a year.

<comment><USER4> I agree that a great teacher is worth a substantial sum of money, but in order to pay it we first have to work out some objective metric.

It's relatively easy to become a teacher, so if we just start paying every teacher more money we just attract more substandard candidates.

<comment><USER2> It's easy to become a teacher but not as easy to stay a teacher.

<comment><USER4> Where did you get that information from. In most districts it's nearly impossible to fire teachers.

<comment><USER2> It's nearly impossible to fire teachers, but staying a teacher is tough in terms of dealing with the emotional and mental stress (or simply wanting more money).

[http://www.timesdaily.com/article/20090222/articles/90222032...](http://www.timesdaily.com/article/20090222/articles/902220325?Title=Teacher- dropout-rate-higher-than-students-)

</comment></comment></comment></comment></comment><comment><USER11> There's something uniquely American about bitching whenever someone has something you don't have. Most people have shitty benefits and 2 weeks off. The rest of the world has free healthcare and double the vacation days. But the problem isnt that our employers are cheap bastards, its that the teachers' unions are too strong. Right.

</comment><comment><USER12> I keep hearing from die-hard conservatives that teachers make "exorbitant" salaries with "unbelievable" benefits, and that they are a drain on our society. On the other hand, every single peer/friend I know who went into teaching is pretty much lower-middle class.

</comment><comment><USER13> The article's comparison to teaching undergrads is just sad.

</comment><comment><USER5> This seems to be sort of a catch-22.

If the quality of teachers was uniformly high, we could pay them all what they deserve to be paid and not have to worry about leeches so much.

If good teachers were paid what they deserve, the quality of teachers would be uniformly high.

</comment><comment><USER14> The reason teacher's salaries are set incorrectly is because supply and demand has been pushed out of the equation.

1\. some teachers can't be laid off.

2\. schools don't get proportionally more money for exceptional work.

3\. most parents are indifferent to maxing out their child's education quality.

4\. most of the teachers effort must be applied to the hellions and problem- makers. optimization for max output requires removing the bottom 20% that cause 80% of the problems.

If you want teachers to be paid what they are worth, you have to take the Communism out of the school and replace it with that evil Capitalism thing that makes salary tied to how much a worker is worth.

<comment> T-R I agree with your overall points, but sarcasm and characterizations of those who disagree with you as communists isn't conducive to conversation.

<comment><USER15> Couldn't agree more. The nonsense at the end is a disappointing postscript to an otherwise thoughtful comment.</comment></comment></comment>