My Internship Experience as a 13-Year-Old - <AUTHOR> http://www.shalinshah.me/my-internship-experience/ <comment><USER2> Man when I was that age, my only concern in the world was trading Pokemon cards after school. I wouldn't have given up that carefree experience for the world.

I don't know how I feel when I read about things like this.

It starts off as jealousy that the kids started their "career" at such a young age, then respect towards them for the same reason, but then I feel sad because at the end of the day I feel like they're being robbed of a childhood in some ways.

Then I go back and read, and it seems like the kid had a lot of fun, and maybe _I 'm_ the one who's lacking perspective.

I don't know. I think it's great at the end of the day. Obviously smart kid, and he'll go places, but I just don't want him to miss out on the more lighthearted times in his life.

<comment><USER3> > I wouldn't have given up that carefree experience for the world.

How do people get that feeling? I don't remember being carefree ever in my life. I can imagine being carefree but I also can imagine taking a walk on the surface of Mercury. Childhood is such a crappy time filled with school, illness taking forever, boredom taking forever, being tired, hurt and in pain. Each time I finished some school I felt awesome because I knew I won't have to deal with that crap and those teachers anymore. Best thing about school is that when holidays come you can forget all you learned last year. No-one will ever examine you on that. I remember growing up as progressing freedom to not do the stuff I don't want to do. Life was definitely easier as it went.

The joy I remember from childhood was reading books about physics and chemistry and running experiments in my head. I'd be delighted if someone gave me internship in some lab where I could help with actually performing them.

<comment><USER4> Interesting perspective. I had the luck, in hindsight, to have ridiculous amounts of freedom until the age of 16. I was homeschooled with my brothers (and eventually two close friends of the same age) and a fresh-out-of-teacher- school 'teacher' who wasn't very good, but was our friend. We had school at her apartment and then all had lunch at my house.

Then from age 13 on I was allowed to work at home, where I would usually either skip my homework or use the answer booklet to do it quickly. On a given day, I would spend at most four hours on 'school' and then do whatever I wanted. At first I probably abused this freedom, which led to boredom. So very soon, I started reading every book I could get my hand on, learned some programming and spend most of my early afternoons to evenings playing with kids in the neighbourhood.

Then at the age of sixteen I returned to 'normal' life and had massive difficulties adjusting to the regular school system, but I made it through and went on the university.

Experiences such as yours solidify my view that the school system we all grow up with is flawed. It teaches us that learning isn't fun, and makes us do silly things and jump through pointless hoops.

To be fair, school has to deal with all sorts of kids. If others had been given my freedom they might not have gravitated towards learning, and failed horribly upon returning to regular life. But I'm sure there are many like me, and I hate the thought that they had to put up with the kind of stuff you describe.

</comment></comment></comment><comment><USER5> Please, go outside, play and run around. Learn to skate, get a boyfriend/girlfriend. There will be so much opportunity for work later on in life. Definitely spend time coding if that's what you love but don't make it your everything. Develop other aspects of your personality/intelligence/body equally. Best wishes!

<comment><USER6> As a 19 year old software engineer who started writing code when he was 13 _because it was fun_ , I don't think this quite hits the mark.

I didn't give up everything in life to be a programmer, but it was my passion (and it looks like it's this guy's passion as well). It _is_ fun. I still played outside, had friends, and lived a childhood. What I got out of it are skills that are in demand, a head start on life, and adult, mature friends who kept me out of trouble and helped me build a fun, happy life for myself.

I owe _everything_ to programming. I was a kid from a small town in Alabama and now I'm a happy software engineer in Los Angeles. I got to go to the first Clojure Conj conference when I was 16, speak at the second at 17, and get an internship that led to a job at around the same time. I met the best friends I could have ever met through it and have had more fun that I could have ever imagined having as a direct result of it.

That said, we're not entirely at odds. It is important to keep yourself healthy and such and not let it completely take over your life. I just felt it important to provide a different perspective on the matter.

<comment><USER5> Different perspectives are definitely useful and thanks for taking the time to share yours. It sounds like you have figured out the priorities in your life and have balanced things out. That's really all I was advocating for, balance.

</comment></comment></comment><comment><USER7> It's amazing that the culture can be so different. Going to college in a European country, I never did an internship. I barely even worked summer jobs, I did maybe one summer's worth of work spread out over a few years, just to get some money. Even college summers were spent LANing with friends, fishing, watching movies, swimming, traveling, reading, some recreational coding etc. Just enjoying the summer, not worrying about my future career. It was great. Honestly, even though I could've spent my summers doing internships, I think it would have been rather pointless. I was already working 110% during the school year and still learning basic math, science and related theory. Whatever work I would've put in would have been sub-par. And that time was great to unwind.

Imagine my astonishment when I first came to the US and kids in the first and second year of college were doing internships at Google, Amazon and Microsoft. Good on them I suppose, especially getting paid well to do it, but I can't see how it helps much. Seems mostly like a way for Google et al to fish for young talent before they graduate.

Anyway, being as excited about coding as this kid is, maybe this is the best way for him to use his time, but the culture difference is just amusing to me.

<comment><USER8> _> even though I could've spent my summers doing internships, I think it would have been rather pointless._

 _> I can't see how it helps much. Seems mostly like a way for Google et al to fish for young talent before they graduate._

There is tremendous value in summer internships. You get to "test out" companies to work for after graduation. You get to learn _a ton_ about actually using technologies in production and/or at scale. You get to learn from engineers who have years of industry experience. You get to work on technologies you would otherwise never work with (e.g. big data) by yourself. By the time you graduate, you will already have 9 months work experience, rather than 0, which makes starting a startup a more feasible option than before. I'm a little bewildered as to why you (or the culture in Europe?) find these internships pointless.

If what you say about the culture in Europe is true, I find this to actually be a competitive advantage for students/companies in the US.

</comment></comment><comment><USER9> This is a sweet experience, but I think it's more accurately described as 'programming camp'. A company that has a business of teaching kids to program games advertised for some kids to come in during the summer and be taught to program games as guinea pigs. Of course, I can see why the company and the kids involved would all be more excited to describe it as an internship, but that doesn't mean everyone needs to let them get away with redefining the word.

</comment><comment><USER10> You've got a real nice sense of design: in general, and _especially_ for a 14 year old!!

And keep doing what you love. Don't worry about the SAT's your sophomore summer. [http://www.paulgraham.com/hs.html](http://www.paulgraham.com/hs.html)

<comment><USER11> I second this. Summers should not be spent studying for the SAT.

Also, a good internship will look much better on a college app than a few extra points.

<comment><AUTHOR> I think I should study for the SAT, because I'll only be giving up one of my summers (I can intern during my Freshman, Junior and Senior summers)

<comment><USER12> I'm looking to go to Stanford upon graduating high school (like you also expressed an interest to do), and from what I have heard, they definitely value SAT scores very high, but if there isn't anything besides that (like your development/internship experience), they honestly don't care much about your scores. And also, I'm pretty sure the SAT takes place senior year, unless of course you are going to be using your genius capacities to do it earlier :)

<comment><USER11> Most people will take their SAT at the beginning of their Junior year. This way they have ample time to retake if they're not happy with their scores.

Stanford, MIT, and the Ivies see the SAT as more of a threshold score. I.E. there's not much difference between a 2300 and a 2400. As long as you have above a certain range, you should be fine. The SAT doesn't make or break people.

</comment></comment></comment></comment></comment><comment><USER13> I think what you're doing is really neat. I'm also a high school student and I'm always excited to meet others my age. I'd love it if you could shoot me an email over at firstname.lastname@example.com.

<comment><USER14> Thinking about it, we should probably make up a high school-age HNers group.

My email is firstname.lastname@example.com for more details.

<comment><USER12> I've already been working on a community for high-school coders at [http://www.teen2geek.com](http://www.teen2geek.com), and so once we launch (beta will be out in January 2014) I would really love it if some more guys like you could come over and contribute to the discussions. My email address is email@example.com in case anyone wants to talk :)

</comment></comment></comment><comment><USER15> We need more kids like you! I see kids these days with their heads down in their mobile device playing games, facebook, instagram, snapchat and what not! They are wasting precious time. Time that will never come back!!!

<comment><AUTHOR> Most of the kids my age are doing exactly what you just described above. I want to be the person making games and apps that other teens get addicted to.

<comment><USER12> Yeah, and its really ironic how despite our generations addiction to such games, very few of us actually know the code that goes behind it

</comment></comment></comment><comment><USER16> Keep on trucking. I started working full time as a SE when I was 16. The job provided a nice relief from highschool and helped build up good working habits before I left for college. If you are interested, see if your school would be willing to allow for a work study so you would be able to pursue such things during the school year.

</comment><comment><USER17> Hey Shalin, wonderful to hear from you. It's lovely to see your passion and focus.

I'm curious to hear about your peers. Do you have a group of friends your age that you hang out with, or do you spend most of your time with older people?

Also, random, but what kind of music do you listen to?

<comment><AUTHOR> I have a group of friends that are all my age. Also, at the school I go to, no one really knows how to code.

I usually listen to the billboard playlist while coding. [http://www.billboard.com/charts/hot-100](http://www.billboard.com/charts/hot-100)

</comment></comment><comment><USER18> I would've loved to be able to be given the opportunity like this. I live in Perth and apart from mining the IT industry is non-existant. There are no internship and mentoring program. I say grab the bull by the horns and do as much as you can.

</comment><comment><USER19> I think it's still better than those kids who get pregnant at 13...

Everything can be seen as work and fun. If you do something for fun it doesn't feel like work anymore.

I started coding with 15 and it was a good time.

</comment><comment><USER20> That's amazing, I am really happy about the founders getting teenagers as interns. Those are life long memories for them.

<comment><USER21> I thought the entire point of "interns" was to give young people (i.e. teenagers) the chance to work in a real company and get experience, usually over school holidays etc.

I think SV (and maybe modern capitalism) has corrupted the term "intern" to be "an excuse for us to not pay you" without the other benefits experienced by the "intern".

[EDIT] I should clarify that I am a Brit and never heard the term "intern" used outside of my above definition until I started reading US tech news where it seems to be applied to older people as well.

<comment><USER22> Not really true. There is no corruption. White House internship doesn't pay anyone and is one of the hottest place to work for since days. It's entirely a decision people make. You don't want the money but the experience, you can go for it. No one is forcing you to take a job without salary.

<comment><USER23> Internships are also good at keeping out the wrong sort of people. Lets face it - if you can't afford to go to work and not get paid then you're not really from a good family, and we don't want the wrong sort of people invading our jobs. Someone with a few internships is obviously from the right stock and we can safely employ them, providing of course they go to our club.

</comment></comment></comment></comment><comment><USER24> Very well done to both intern and MGWU!

<comment><AUTHOR> Thank you!

</comment></comment><comment><AUTHOR> The IdeyaApp link is now fixed for my portfolio page... Sorry!

</comment><comment><USER25> Thats excellent. Keep going!

</comment><comment><USER26> Man. You are going places. That's all I want to say. Good luck to you and I will remember your name for the future.

<comment><AUTHOR> Thank you very much! I appreciate it!

</comment></comment><comment><USER27> Excellent and I hope you acquired Proxima Nova legally. If not, better make that right.

<comment><USER27> I find it funny that this was downvoted into oblivion. It's valid advice, especially considering this person is young and needs guidance/advice for best practices.</comment></comment>


Show HN: Motif – Scala-like pattern matching with Java 8 - <AUTHOR> https://github.com/johnlcox/motif

<comment><USER2> The Cambrian explosion of java 8 functional libraries like this is fun to watch. Others I've come across:

\- [http://javaslang.com/](http://javaslang.com/)

\- [https://github.com/aol/cyclops](https://github.com/aol/cyclops)

\- [http://totallylazy.com/](http://totallylazy.com/)

\- [https://github.com/poetix/octarine](https://github.com/poetix/octarine)

\- (good ol') [http://www.functionaljava.org/](http://www.functionaljava.org/)

The syntax for these libraries is always a little wonky though. If only these libraries also had some sort of syntax preprocessor to make it more palatable. You could call it, I don't know, Scala, or something.

<comment><USER3> Exactly. I want to like these things, but they're just way to painful on the eyes.

<comment><USER4> whoosh?

[http://www.scala-lang.org/](http://www.scala-lang.org/)

<comment><USER5> He said he wanted something that's not painful on the eyes.

<comment><USER6> I hardly see how Scala is more painful on the eyes than good old Java.

<comment><USER5> Random example from a popular project:

         def bimap[C, X[_, _], D](g: Bijection[C, D])(implicit F: Bifunctor[X], evF: F[B] =:= Id[B], evG: G[A] =:= Id[A]): Bijection[X[A, C], X[B, D]] =
            bijection(
              F.bimap(_)(to(_), g.to(_)): Id[X[B, D]]
            , F.bimap(_)(from(_), g.from(_)): Id[X[A, C]]
            )

<comment><USER6> And I could cherry pick something just as hideous out of Java. Congrats.

<comment><USER5> Nobody disputed that but that's off topic. We're discussing the fact that Scala can be pretty ugly too.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Hard to read in comparison to Scala. It's impressive that it was accomplished but some things just aren't meant to happen in Java 8.

<comment><USER8> If you've ever endured the compilation time of a Scala codebase that has more than, say, 2000+ classes, then you might think that some things just aren't meant to happen in Scala either.

I used Scala for 4+ years at a company that spent a non-trivial amount of time and resources speeding up its Scala builds (way more than 2000+ classes), sometimes doing sadly controversial things[1] to achieve that speedup. It was a real quality-of-life issue, and one of the reasons that compelled me to leave.

I'm using Java 8 now, and yes it has its warts and is nowhere near Scala wrt functional goodness, but I'm glad to be compiling and iterating a lot more quickly with the ability to use even a subset of the Scala stuff I missed.

[1] [https://groups.google.com/d/msg/pants- devel/mcdllXQsYNg/96ZG...](https://groups.google.com/d/msg/pants- devel/mcdllXQsYNg/96ZGYu2fT0MJ)

<comment><USER8> As a point of reference, compiling ~200 Scala classes at a time would take ~2.5 minutes on average. At my last job, compiling >2000 Java classes took about 10-15 seconds with an ant script doing a top-down build. Unfortunately I don't remember LOC, but I don't remember the average Scala file being overly large at my Scala job, or the average Java file being unusually short at my Java job.

<comment><USER9> > As a point of reference, compiling ~200 Scala classes at a time would take > ~2.5 minutes on average.

Odd... I just did a full compile of a Scala project I work on which has:

\- 259 source files

\- Contains dozens of macros[1]

\- Results in 2097 classes (includes companion objects and anonymous types)

And it took 75 seconds on my laptop. As I mentioned in another reply, doing a full recompile is rarely needed but was done now to provide quantified metrics.

1 - [http://docs.scala- lang.org/overviews/macros/overview.html](http://docs.scala- lang.org/overviews/macros/overview.html)

<comment><USER8> In Java, I compile around 250 classes in about 6 seconds on my laptop. It results in around 250 class files being generated because no filea for anonymous inner classes are created from the lambdas in the code. I don't need a full recompile either. An incremental compile in Java is measured in milliseconds. IntelliJ is usable to its fullest instead of being a fancy editor that just autocompletes and jumps to symbol definitions.

You may not be using all of scala's language features. I'm using java's features to the fullest. I compile in 6 seconds. You compile in 75 seconds. You may still prefer that trade off. After working with thousands of scala files (you have 259 source files? That's cute! I wish I could pinch your cheeks!) where a 75 second compile sounds like a fail-fast error, I think I will live happier with what Java 8 has, limited and warted though it may be.

<comment><USER9> You have no idea my background, how I use Scala, and assume that the small project I reference is the only project I _could_ reference. It was chosen due to being near the size of the situation you describe as "compiling ~200 Scala classes at a time would take ~2.5 minutes."

Being a condescending asshole doesn't help you communicate with others. Frankly, it strengthens my opinion that you don't know how to organize a medium-sized project, since being able to do so obviates requiring to compile 2000+ files for each build _in any language_.

</comment></comment></comment></comment></comment></comment><comment><USER10> Funny, I happened to code something just today very similar, but a lot lighter (just two classes, Match for consuming only, and MatchMap for mapping the optional. No when/get, just a when taking two parameters : the predicate and the mapping function.

      public class MatchMap<T, U> {

        private final Optional<T> opt;
        private final U defaultValue;
        private final AtomicReference<U> result = new AtomicReference<U>();

        private MatchMap(Optional<T> pOpt, U pDefault) {
            super();
            opt = pOpt;
            defaultValue = pDefault;
        }

        public MatchMap<T, U> whenMatch(Predicate<T> pPred, Function<T, U> pMapFn) {
            if (result.get() != null) {
                return this;
            }
            Optional<T> lFiltered = opt.filter(pPred);
            if (lFiltered.isPresent()) {
                result.set(pMapFn.apply(lFiltered.get()));
            }
            return this;
        }

        public MatchMap<T, U> whenEquals(T pExact, Function<T, U> pMapFn) {
            return whenMatch(t -> pExact.equals(t), pMapFn);
        }

        public U resolve() {
            return Optional.ofNullable(result.get())
              .orElse(defaultValue);
        }

        public static <T, U> MatchMap<T, U> of (Optional<T> pOpt, U pDefault) {
            return new MatchMap<T, U>(pOpt, pDefault);
        }

      }

The class Match is very similar, but takes consumer instead of Function and has some logic to allow several matches to be executed (if several predicates are ok), or only allow the first match to be executed.

<comment><USER11> You can simplify your code a little bit and add some wildcards :)

[https://gist.github.com/anonymous/7d45e0f746b46684ec45](https://gist.github.com/anonymous/7d45e0f746b46684ec45)

<comment><USER10> Indeed, thanks!

</comment></comment></comment><comment><USER12> [https://en.wikipedia.org/wiki/Motif_(software)](https://en.wikipedia.org/wiki/Motif_\(software\))

</comment><comment><USER13> The javaslang library has a similar construct:

[http://javaslang.com/javadoc/1.2.0/javaslang/control/Match.h...](http://javaslang.com/javadoc/1.2.0/javaslang/control/Match.html)</comment>


Learning new languages makes you a master of none? - <AUTHOR> You frequently hear you should learn a new language every year or so, or have a variety of languages at your arsenal to use in different situations, but won't that make you a jack of all trades and master of none? <comment><USER2> I try to learn a new language every 2 years and learn the basic principles of at least 3-4 each year. I still have 1 or 2 languages I do almost all my work in, but knowing other languages has made me much better in those 1 or 2. You learn new idioms, new ways of thinking etc.

Most programmers come from an imperative background. Something in the Algol family. Learning a scheme/lisp, a functional language like Haskell, a stack based on like Factor or any of the numerous other types of languages is only going to make you a better programmer.

Think type languages are awful? Maybe its just the type systems you've encountered ( see haskell for a type system that I would call non-broken ).

Think OOP languages are garbage? Maybe encountering something like Self will give you a different view of OO than what you get from C++ or Java. Maybe encountering CLOS will open your eyes to a different way of doing OOP.

Another bonus via anecdote:

I don't use Ruby anymore, but I still follow the community because people are doing interesting things, things I might want to steal an idea from and use in my language(s) of choice.

</comment><comment><USER3> You're not trying to be the master of a programming language. You're trying to make solutions happen in the best, quickest way possible.

Seriously. I could care less the order of constructor evaluation in a multiple inheritance language. If that becomes a problem, I'll look it up.

This isn't like school where you try to pick one subject and become the complete overlord of it. This is about building a toolbox: learning how different tools work and being able to switch instantly between them when the time is right. The meta knowledge of languages is infinitely more important than the abstract details of a particular one. If you're a good programmer, you'll naturally optimize the code you write.

Thinking about writing a solution in an imperative language is fundamentally different than thinking about one in a functional language. Thinking about a web solution in terms of Javascript/client-side/jsonp is fundamentally different than in terms of client-server, or in terms of post-response. It's the _thinking_ about those problems, before you start hacking, that gets you the most mileage. And the best way to learn how to think using those paradigms is to write solutions using them.

</comment><comment><USER4> You don't use the new language exclusivity, it's just an extra tool in your toolbox. You just use it to expand your horizons. Knowing even a little Haskell will show you that a little type inference can go a long way. Or that reasoning about correctness is easier in a purely functional language.

I think the primary advantage of knowing many languages is knowing when you're using the wrong tool for the job.

</comment><comment><USER5> One new language per year is too fast a rate. And it's really about learning new perspectives, not so much about the language themselves.

It would probably make you a better programmer to master all of purely functional programming, syntaxic abstraction, pattern-matching and logical inference, distributed and fault-tolerant computation by message-passing, stack-oriented programming, etc.

It just happens that some languages are predominantly based on each of those principles so the act of learning those languages in depth make you master those useful principles for free.

      Haskell = Purely functional programming
      Lisp = Syntaxic abstraction
      Prolog = Pattern-matching and logical inference
      Erlang = Distributed and fault-tolerant computation by message-passing
      Forth = Stack-oriented programming

(completely unexhaustive list of language/specialty mappings)

</comment><comment><USER6> There's a difference between learning a language and mastering it.

Every little bit helps. Read one book and you've learned a new point of view. Read that book and build a sample project and you've learned more. To really understand a language or framework requires still more work. To _master_ it might take years.

You should master one or two things (or more, if there are enough hours in the day or if you are superhumanly good at mastering languages). But that doesn't mean that you shouldn't _also_ have lower levels of expertise in a broad range of other subjects. Half the battle in life is knowing _what_ to master at any given moment, and the only way to figure that out is to sample a lot of things.

</comment><comment><USER7> Some people have already mentioned that learning a new language often makes you a better programmer in other ones. I don't have any experience in improving skills that way (I started learning Haskell, but it's too early to see whether it's making my Erlang better or not), but what I've learned is that unwillingness to learn new languages makes you a fanboy of language(s) you already know. Being a fanboy of any language is what I'm actually afraid of (just because I know what it is to be a fanboy =)

Suppose, there is a guy (I will name him "Poluekt"), who is a master of Foo language (sounds like "a master of kung-Foo!"). Foo is a really good functional language having active community, excellent runtime and good libraries; Poluekt is good at writing in Foo but isn't brave enough to say "I'm not a Foo, I'm a programmer who wants to choose between languages when it comes to solving non-trivial problems".

What will happen with such a guy when he hear of nice features a new language (say, Bar) offers to solve problems in domain where Foo is (was?) the language of choice? Oh, it will be _very_ offensive for our guy to hear that Bar beats Foo in some cases or even is press it. It will make Poluekt so unhappy, irritable...

Nobody knows how many Bars there will be on the Poluekt's way, but learning them seems a good way to become a good specialist.

</comment><comment><USER8> Learning lisp or any other language in which closures are a common idiom should be a prerequisite for building anything of any size out of Javascript. An understanding of closures will aid in a big way in figuring out why your browser rapidly grows to 1 gig when running your applicatiion.

</comment><comment><USER9> A language is a tool, not the end in itself. We need to be, or strive to be, masters of computer programming, not of computer languages.

Of course, a master knows its tools. He has many tools in his toolset and chooses the ones that better fit the task he is working at. Sometimes he may need to use a new tool, which he learns and adds to the toolset.

New languages rarely introduce substantially new concepts, mostly new ways to represent those concepts and put them together in a better way. However, if we are talking about new concepts, not just new languages, that is different. Other commenters have mentioned functional versus imperative programming style (enforced, or at least suggested, by the language) and so on. Learning new concepts makes us better programmers in older languages too.

</comment><comment><USER10> If you mean by mastering that you never have to look at the API documentation, then more languages can have a negative impact. I'd concede that.

But that is comfortably offset by the advantages you gain from seeing through the syntax to the language concepts. It is not even the correct question to ask really. Because mastering of a language might be a secondary goal.

A more interesting question might be: do I know at all which language I should strive to master? And that will require you to look at a few.

</comment><comment><USER11> This may be the case for natural languages, but is simply not the case with programming languages. A natural language is evolved over thousands of years and contains cultural nuances and hundreds of thousands of words in the vocabulary. A programming language is engineered to be simple and concise, containing a grammar that can fit in a few pages of BNF and at most a few hundred words in the vocabulary.

</comment><comment><USER12> The quick and dirt: your mileage may vary.

It's probably worth mentioning that the reality is that not every developer is of equal ability, nor has the same level of potential ability.

I've met many developers that clearly don't have the same capacity for learning and applying languages to problems as well as others. Do what works for you based on your own perceived capabilities.

</comment><comment><USER13> I find learning each new language is easier than the one before it; the concepts of software development are largely the same from language to language and are often transferable from language to language.

Then again, I started out on C, so pretty much everything besides Haskell seems like a piece of cake.

<comment><USER14> I started out with Haskell and now C is killing me. The cognitive distance between the two is enormous.

</comment></comment><comment><USER15> Wonderful question, I have an interest in new languages all the time and I worry weather I'm wasting my time when I should be focusing.

</comment><comment><USER16> Nonsense. Learning Python helped my JavaScript and PHP, and learning JavaScript in turn has helped my Python. Learning Erlang has helped both. PHP didn't help anything.

By making you approach the same problems in different ways, new languages make you a more versatile programmer less tied to a particular technology while improving existing skills.

<comment><USER17> Upvoted for "PHP didn't help anything". I'm pretty pragmatic about language selection (I've used Perl, Python, Tcl, C, C++, sh, and probably others over the years, and all have had their nice qualities), but I've been lightly working in PHP now for a couple of years for maintaining our company website, and I've never once thought, "Hey, that's neat! I wonder if I could do that in JavaScript/Perl/Python/Ruby."

It's a subtle but very depressing aspect of working in PHP. I just feel sad working in PHP, in a way that I've perhaps never experienced in any other language. Maybe I'm just getting too old to read more crappy code, and it would improve if I started working on better written code. And maybe I was lucky enough to mostly work with good code in the past in those other languages.

To be fair, there _are_ some things about PHP that are surprisingly good and worth looking to for inspiration: Ease of app deployment, marketing for a "good enough" product, allowing a very large community to contribute without muddying the waters _too_ much (comments on doc pages, for example, rather than a wiki), solving the right problems at the right time (even poorly), etc. None of these are aspects of the language itself, only the resulting full experience that is PHP.

</comment></comment><comment><USER18> I guess to be a master you need to focus a lot, so it takes much hard focused work. The time you spend with other languages could be used to go more deep in at just one. So the point is

HOW FREAKY ARE YOU READY BE TO GET THE POINT OF MASTERING 2 OR MORE LANGUAGES ?

Most part of programmers are good at some languages, but not masters ... being a master of one is difficult, what if master of two or three.

So the answerer is : depends of the freaky behind the try !</comment>


Girl Scouts Shut Honey Boo Boo down for selling cookies online - <AUTHOR> http://www.foxnews.com/entertainment/2013/03/01/thin-mint-mess-honey-boo-boo-banned-from-selling-girl-scout-cookies/ This is not the first time. Girl scouts also shut down a 11 year-old from using Paypal. It's ridiculous how these organizations self sabotage  by resisting technology. I'm a former Girl Scout, and we've built a solution to teach kids how to hustle and raise money online. www.piggybackr.com <comment><USER2> real friends dont link friends to fox news articles...</comment>


Google buys music service Songza to take on Apple and Beats - <AUTHOR> http://www.theverge.com/2014/7/1/5861864/google-acquires-songza

<comment><USER2> Well shit. Much like 90% of their acquisitions (Sparrow, Simplify Media, etc) this means the death of a great and popular service which will no doubt be shut down by December, or at best on life support, with the engineers raided to build stupid G+ features nobody wants.

I hate Google.</comment>


Mike the Headless Chicken - <AUTHOR> https://en.wikipedia.org/wiki/Mike_the_Headless_Chicken <comment><USER2> The BBC did a report on this, and it got posted here (with some discussion) [https://news.ycombinator.com/item?id=10200625](https://news.ycombinator.com/item?id=10200625)

<comment><USER3> Most unexpected dupe of the day.

</comment></comment><comment><USER4> >the chicken earned US$4,500 per month ($47,700 today)[5] and was valued at $10,000

Not a very generous multiplier, but then again, the actuarial tables for a headless chicken wouldn't be all that favorable.

<comment><USER5> Maybe it would make for some interesting taxidermy post-mortem... though I suppose it would be difficult to differentiate between "this chicken whose head I just cut off" and "this one lived for 18 months"!

</comment></comment><comment><USER6> Reminds me of this story about using headless chickens for meat production:

[http://www.wired.com/2012/02/headless-chicken- solution/](http://www.wired.com/2012/02/headless-chicken-solution/)

<comment><USER7> That's horrifyingly nasty. Between this, the cowspiricy documentary, new studies surrounding meat consumption and cancer I'm strongly considering becoming a vegetarian again.

<comment><USER8> This sounds a lot more humane than current practices. I would be much more inclined to eat meat grown without a 'brain' to suffer with.

<comment><USER7> I see the illogicality in my reaction but it still makes me nauseous - I can't quite put my finger on why.

<comment><USER9> It's a visceral reaction, I wouldn't be surprised if it were related to the psychology behind the uncanny valley.

</comment></comment></comment></comment></comment><comment><USER10> Why is this on HN? i just read it and now feel... well i'm not sure but it's different than before when i read this article and the comments. And its not even lunch time yet. Back to work for me.

<comment><USER11> > _now feel... well i 'm not sure but it's different than before when i read > this article and the comments_

That's the feeling of learning a new incredible science fact!

Also, if you feel that you died a little inside then, as a quote attributed to /b/ goes, "That was the weak part. Now you're stronger."

</comment></comment><comment><USER12> I know someone from this town. They are still proud of their chicken.

<comment><USER13> I grew up there... The Mike the Headless Chicken festival was always a highlight of my youth!

Also worth noting, Frozen Dead Guy Days are pretty awesome too:

[https://en.wikipedia.org/wiki/Frozen_Dead_Guy_Days](https://en.wikipedia.org/wiki/Frozen_Dead_Guy_Days)</comment></comment>


Josephine is closing its doors - <AUTHOR> https://blog.josephine.com/josephine-is-winding-down-d1a4feb5837e <comment><USER2> > We will also be sending our cooks off with a transition packet, which will > include their business data, customer contact info (for those who opt-in), > alternative business proposals and recommendations, tool/service > recommendations for replacing our platform functionality, and other general > resources. We hope that these personalized packets, along with community-run > versions of our cook community forums and groups, will be a stepping stone > for folks who would like to continue making income through their cooking > skills.

That is actually really impressive. I hope other companies have the forethought and compassion to remember that their responsibilities lie with everyone who comes to depend on them -- not just those to whom they have a legal duty.

<comment><USER3> I agree. That shows some real care about seeing their community propser in the long term. I'd never really known anything about the company (maybe their name, though I couldn't confirm) but this speaks volumes to the type of company they likely were.

</comment></comment><comment><USER4> Two sided market business are burn barrels for cash until you hit crazy scale. The ambition and idea was great, but actually pulling this off at some sustainable model would be incredibly difficult with all the moving pieces. Loved what they did around the brand, but the idea is so high on the difficulty of execution scale, how this played out is unsurprising.

</comment><comment><USER5> I like the idea but I think the food safety/perishabiliy/logistics challenge is too much.

Personally I would like something like a "social buying" restaurant delivery app, where you can vote on what you'd like made in a centralized kitchen and then place an order to be delivered if whatever you voted on was chosen by popular vote.

Recipe holders could submit recipes to be voted on and make a commission from sales if their recipe is chosen.

<comment><USER6> Don't restaurants already effectively do this? Although voting doesn't happen in the traditional sense people will vote with their purchasing choices. The restaurant will offer certain things on the menu and ones that don't get ordered will likely get eliminated (assuming the restaurant wants to make money). From what I've read most restaurants in America tend to offer many choices compared to countries like Japan where much more specialized places can prosper so your idea could be much more efficient but I'm not sure how practical it is to get people to agree on anything.

<comment><USER5> Not really. I mean this would be more like Top Chef on demand with no fixed menu. There's an inventory of non-perishable/perishable ingredients available in a commercial kitchen. If a lot of people want to order some meal then that gets made with some scheduled delivery time.

Surprised no one's attempted the "Uber for whatever meal your heart desires prepped by a personal chef." It'd be expensive, yes, but I could see that being a luxury food delivery option that would be appealing to someone with money but no personal chef.

<comment><USER7> It simply can't be done on demand. I have first hand experience: I work with a chef who spends a day to create a week's worth of meals for me but smaller chunks are not feasible as you need to prep, cook etc and it takes hours -- even if some of the work can be done in parallel while one dish is cooking the other can be prepared etc but still you just can't have a meal ready in 45 minutes after you click order. Quite a few meals actually need to be started the previous day so the dish or parts of it can marinade / simmer / slow cook / set / etc overnight. (I think you meant private chef -- those are employed by the super rich, a personal chef works for multiple clients.)

Also anyone like him will strive to have his schedule full for a few weeks ahead.

So no, this is not Uberable. But, if you are in Vancouver and want good food, drop me an email I will connect you with Michael :)

<comment><USER8> It can be done if you don't let the client choose the meal or the delivery moment. If the menu is chefs choice and designed for ease of production and you deliver daily at a scheduled time, it can be done affordably.

There can be no "I'd like pad Thai in an hour and can you make it gluten free?"

<comment><USER7> But GP said

> Surprised no one's attempted the "Uber for whatever meal your heart desires > prepped by a personal chef."

Where I presumed "Uber" meant "on demand right now".

Yes, daily at a scheduled time might work.

</comment></comment></comment></comment></comment></comment><comment><USER9> It was good until it lasted.

Although it was a bit inconvenient, I had a chance to try out a few homemade ethnic meals that I have no chance of finding in a restaurant. Eating strangers' meals was strange, but I bet it will become a thing in increasing sharing economy.

</comment><comment><USER10> Ouch. And they had just had a big win with their microkitchen bill passing the California State Legislature:

[https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml...](https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=201720180AB626)

<comment><USER11> Did it pass the Senate or just the House? I can't tell from that page.

<comment><USER12> What's the difference between passing in senate and the house?

<comment><USER13> It needs to pass in both

</comment></comment></comment></comment><comment><USER14> This is pretty shocking and sad. I really loved the idea of this company. I don't see this as the 'end' of this idea.

</comment><comment><USER15> The site doesnt really explain what they did....

<comment><USER16> I believe they allowed people to cook and sell meals in their neighborhood.

<comment><USER17> ...with an huge amount of touchy-feely "empowerment" messaging larded on top of the whole thing.

<comment><USER18> Well yeah, I don't expect every business to be 'Very Good Building & Development Co.'. Why would you even start the business if you didn't buy into all the touchy-feely stuff? It's not like there aren't better paying super serious dev jobs out there.

</comment></comment></comment></comment><comment><USER19> I had never heard of them before, the idea is really interesting to me. I went to their website to see if there were any cooks in my area to see if it was worth trying out. It looks like I have to sign up before I can even see any of that :( I am skittish about giving out my contact information, I don't want to deal with throwaway accounts either. I wonder how much growth they missed because of that.

<comment><USER20> Are you by chance in the Los Angeles area? If so maybe there are some of our cooks in your zip code: [https://www.dishdivvy.com/](https://www.dishdivvy.com/)

</comment></comment><comment><USER21> Huh, interesting. I wonder what happened, after reading this: [https://email@example.com/why-i-left-google-to-join- gr...](https://firstname.lastname@example.com/why-i-left-google-to-join- grab-86dfffc0be84) (Steve Yegge talking about joining Grab, and the meal- delivery boom)

<comment><USER22> I wondered why Steve Yegge stopped blogging. I really enjoyed his old blog, hopefully this will see him back at it!

<comment><USER23> In the blog post your parent linked, he spoke about it.

"I have a lot of good stories saved up that I'd love to share. Google corporate didn't much care for my blogging, and even though they never outright forbade it, I received a lot of indirect pressure from various VPs. So eventually I stopped. Sad."

</comment></comment></comment><comment><USER24> What was Josephine? I've looked at their homepage but I still have no idea what they did. Was it a restaurant? That served home made food?

<comment><USER25> Did you look at josephine.com, rather than blog.josephine.com? IMO the former does well at explaining itself. The latter seems to be rather stupid in being a pure social media thing.

<comment><USER24> Ah, I actually didn't there was another "main" website - I just clicked on "home" in the corner, and that only shows stories about food, not what Josephine does. But now with this and other replies I can see it's a food sharing-like service, thanks :-)

</comment></comment></comment><comment><USER26> I don't know what the final outcome was, but there was a charity that would provide food for the homeless by having volunteers bring home-cooked casseroles. After operating for over a decade, the county health board shut it down because publicly serving food not made in a certified kitchen was illegal.

I moved away from there, so never found out if they were able to resolve it, but that wasn't that long ago and was a push in the opposite direction of what Josephine would need.

</comment><comment><USER20> Equally sad for this.. but Josephine is doing a great job handling the transition. My company just launched in this space (DishDivvy) and are truly appreciative of the work they've done on the legislative front, for bringing opportunities to homecooks. We are working with their COOK alliance and making sure AB 626 gets through the senate as successfully as it did the CA Assembly.

</comment><comment><USER27> My wife visited Israel and told me about the concept of Kibbutz. Since then I have been thinking about it and it is such a great concept. May be someone can borrow some aspects of the kibbutz and invent a business model. A big communal kitchen for the neighborhood where professional chefs make food for the community, but costs are kept low by households volunteering in prep work and clean-up. Everyone subscribes to the communal kitchen like an HOA. Would be great for the neighborhood community to better know each other and also access healthy "home cooked" meals.

<comment><USER28> Here in the USA I believe it's called co-housing. I have some friends who live in such neighborhoods and they love it.

More here: [http://www.cohousing.org/](http://www.cohousing.org/)

</comment></comment><comment><USER29> I coached two startup founders looking at this exact model (there were about five founders plus one Startup Weekend team that attempted this all around the same time). Josephine became my go-to "this appears to be working, let's try and work out why..." model. I never could work it out.

Shame they couldn't get it to work. As far as I can see, the whole niche/model is fubar'd. Good try, though, and great community attitude :)

</comment><comment><USER28> Here's a take from the CEO of a competitor of Josephine: [https://medium.com/@ashleycolpaart/saying-farewell-to- joseph...](https://medium.com/@ashleycolpaart/saying-farewell-to- josephine-7fbab778b2a3)

(full disclosure, I'm her co-founder.)

</comment><comment><USER30> Dang. It seemed like a great thing, never became available in my neighborhood. I know there are informal unpermitted food sellers all over the place, but this seemed like a nice balance between getting ceviche from a random person off Facebook (real example) and a full-up restaurant.

</comment><comment><USER31> Nooooooooo! I never managed to try the service but their team and mission was awesome.</comment>


The insecurity of OpenBSD (2010) - <AUTHOR> https://allthatiswrong.wordpress.com/2010/01/20/the-insecurity-of-openbsd/ <comment><USER2> I'd be interested to hear the author's opinion on pledge.

Also, this article repeatedly points out that OpenBSD did not invent memory hardening techniques, but fails to acknowledge that they were by far the first to ship many of them in a base system by default. As I recall they were the only ones willing to break binary compatibility. Was Openwall was shipping with such protections enabled by default when OpenBSD released W^X? Certainly no other Linux distros were.

<comment><AUTHOR> I found this HN discussion from just under a year ago on pledge(): [https://news.ycombinator.com/item?id=10537268](https://news.ycombinator.com/item?id=10537268) (which lists this presentation: [http://www.openbsd.org/papers/hackfest2015-pledge/mgp00001.h...](http://www.openbsd.org/papers/hackfest2015-pledge/mgp00001.html))

I couldn't help wondering that the author had somehow been bitten by something OpenBSD-related, or that he had some kind of spat with some developer(s) somewhere. I wouldn't quite call this FUD, but I don't think it has enough bullet points for the amount of "this is the end of the world" it has in it.

That said, the point about China settling for FreeBSD instead of OpenBSD for their secure computing environment is very interesting. I wonder that OpenBSD may possibly be being distracted by trying to hit some kind of academically "cute" model of functionality, instead of staying grounded and realistic. Or maybe OpenBSD is trying to stay out of the commercial limelight, so is deliberately sidestepping the mainstream enterprise ideas about MAC and so forth?

In any case, I was mildly perturbed to realize that OpenBSD's author also maintains OpenSSH, which has only just now been shaken out of its disturbingly complacent development mindset ([http://lwn.net/Articles/702751/](http://lwn.net/Articles/702751/) ); OpenBSD is likely to never experience something similar, which is sad - it would be truly interesting to see the level of scurrying and fixing that would happen (and just how much OpenBSD really deserves its security track record)...

For a counterpoint, I also read this nice and positive argument recently: [http://cfenollosa.com/blog/openbsd-from-a-veteran-linux- user...](http://cfenollosa.com/blog/openbsd-from-a-veteran-linux-user- perspective.html)

And I found this page a while back, on OpenBSD as a router: [http://www.skeptech.org/blog/2013/01/13/unscrewed-a-story- ab...](http://www.skeptech.org/blog/2013/01/13/unscrewed-a-story-about- openbsd/)

<comment><USER3> OpenSSH is not OpenSSL. OpenBSD had nothing to do with the trainwreck that is OpenSSL.

<comment><AUTHOR> Unless I'm mistaken, Theo de Raadt was the author of both projects.

<comment><USER3> > Unless I'm mistaken

Indeed.

<comment><AUTHOR> ...I am not having a good brain day today.

1\. In my previous comment I meant OpenSSL, not OpenSSH.

2\. So I just established that Theo is the author of _OpenSSH_ , while _OpenSSL_ is the large pile of fail. I certainly recognize the difference between the two, but failed at reading while researching about OpenBSD.

Thanks.

And now my view of OpenBSD is a bit more positive :)</comment></comment></comment></comment></comment></comment>


Epic Marketplace caught stealing history by Stanford Security Lab - <AUTHOR> http://cyberlaw.stanford.edu/node/6695

<comment><USER2> For those that were confused by the title (like me), here's the TL;DR:

Online advertiser, Epic Marketplace, is using a very sophisticated javascript script to do "history stealing", where they iterate through thousands of URLs to determine if a user has visited them. With this data, they can serve highly targeted ads. It's highly shady at best, and illegal at worst.

<comment><USER3> Very sophisticated is almost an understatement.

<comment><USER4> Not really. The Javascript loads an array of links to check against, builds a 1x1 pixel iframe, puts all the links in there (with styles applied to hide visited links), then it checks to see which links disappeared.

Browsers are securing against this by limiting styles that can be applied to the :visited pseudoclass to just color, then it serves back the default color if a script ever tries to check.

</comment></comment></comment><comment><USER5> How come it's illegal for aaronsw to steal thousands of documents from a document repository, but it's not illegal for advertiser to steal thousands of history entries from my browser? If anything, this sounds significantly more illegal: code that I don't want to run is injected into my browser, and then it steals personal information that I make an effort to keep secret. If this isn't unauthorized access to a protected computer system, what is?

</comment><comment><USER6> Interesting to see how they've used it. I remember seeing a proof of concept a while back checking the most popular sites against your browser history and pointing this flaw out. Now it will be interesting to see the repercussions of actually abusing this.

</comment><comment><USER7>
      The script sets a cookie indicating when it was last run;
      it will not history steal more than once every twenty-four hours.

Wow. Pretty kind for an otherwise evil script!

</comment><comment><USER8> so what would block this?

noscript would, but (imho) it's too intrusive.

would adblockplus have blocked it? what about ghostery, disconnect, et al?

<comment><USER9> The browsers are fixing this; no plugins should be needed.

<comment><USER10> Is there actually a legitimate use for 0x0 iFrames that can't be easily replicated some other way? Why do we allow them?

<comment><USER6> Where do you draw the line? 0x0 doesn't work. Let's use 1x1 and blend it in somewhere. 10x10? Probably can find a square somewhere to hide it. Or a long rectangle at the bottom perhaps with a solid color. I don't see blocking 0x0 as a real solution to the problem.

<comment><USER11> Same problem with setting the position off screen or 0% opacity. There is a lot of ways to hide an iframe</comment></comment></comment></comment></comment>


Show HN: Bringing your favorite suppliers in one place - <AUTHOR> http://www.mylmp.us/

<comment><USER2> Maybe there is some lingo I don't understand, but I'm going to assume these words all mean what I think they do. If so:

This is an extremely neat idea that, if legit, would make billions of dollars and many people happy.

Unfortunately, it has a zero percent chance of succeeding. How on earth do you think you can pull this off?

<comment><AUTHOR> Sorry for the lingo. I had hoped to change it but been away from my computer. The idea is basically that: you invite your friends who are suppliers (legitimately) they might range from selling cars, electronics or real-estate. If they start listing on the site, you recommend their listings to other users around you. Hope you get the brief explanation.</comment></comment>


The Year(s) of the Growing Startup - <AUTHOR> http://blog.uservoice.com/entries/the-years-of-the-growing-startup

<comment><USER2> Thanks for all the support and upboat love. Happy to answer (almost) any questions. :)

Richard White, Founder/CEO, UserVoice

<comment><USER3> Congrats! What exactly did you mean by "correct hiring mistakes" -- hire missing people, or did you change the team through deletion and replacement as well?

Very minor nit: Is the big red "feedback" floating button on the side something you think is generally the best way to deploy the product? (I mean, I can see why you'd emphasize it given that it is your own product, but it both occluded content and was visually distracting as I scrolled).

<comment><USER2> A bit of both actually. There was only one truly bad hire. The rest was a result of good people being put in positions that weren't optimal for their skillset.

We do think it's one of the better way to deploy the product because one of the biggest challenges is breaking people's expectations that you don't care about their feedback. Having said that your concern is on point. We've got something on the way to address that.

<comment><USER3> Do you think you could have worked effectively out of a 3BR apartment type place as live/work? Or does having a genuinely separate home vs. work make a big difference?

I'm seriously considering doing a 5-7BR house in the Peninsula for one or more security/enterprise/government startups -- with people either living there part-time or not at all. I just like the "villa" style environment, with nice kitchen, residential bathrooms, etc., for <20 people. For this space, avoiding becoming "corporate" and boring for an extra year or two is probably worth it -- for a consumer or even consumer-business company, maybe that is less of a concern.</comment></comment></comment></comment>


How They Hack Your Website - <AUTHOR> http://www.cmswire.com/cms/web-cms/how-they-hack-your-website-overview-of-common-techniques-002339.php

<comment><USER2> SQL injection? Password cracking? That's not how they do it! They have a long straw that reaches across the Internets and start drinking your milkshake. THEY DRINK YOUR MILKSHAKE!

<comment><USER3> My milkshake brings all the 1337 h4x0rz to the yard....

</comment></comment><comment><USER4> That article is a bit too beginner-grade for my (our?) taste.

</comment><comment><USER5> For a more "developer" oriented discussion of the same topics, I recommend the OWASP Top 10:

<http://www.owasp.org/index.php/Top_10_2007>

another great resource is RSnake's blog:

<http://ha.ckers.org></comment>


Valve Finally Brings SteamVR to Linux as a Developer Release - <AUTHOR> https://uploadvr.com/valve-finally-brings-steamvr-linux-developer-release/ <comment><USER2> Finally I was waiting for this news

<comment><USER3> Truly, very excited as Linux being a first-class citizen for new tech and games is very important for the ecosystem.</comment></comment>


T-Mobile closing 7 call centers, cutting 1,900 jobs - <AUTHOR> http://www.slashgear.com/t-mobile-closing-7-call-centers-cutting-1900-jobs-22219666/ <comment><USER2> I'm a little surprised they are still a service provider. I mean I would think they would have changed there model to be more of a service for those who do "Pay as you go". Hmmm.</comment>


Undergrad researcher comes up with new equation in gaseous thermodynamics - <AUTHOR> https://www.academia.edu/30504157/A_New_Equation_in_Thermodynamics?auto=download <comment><USER2> "Undergrad researcher comes up with..." uggh you're gonna sell it like that?

<comment><AUTHOR> just choosing 10% of the words from the arxiv fb page post ¯\\_(ツ)_/¯

<comment><USER3> This arXiv Facebook page does not look official.

</comment></comment></comment><comment><USER4> Is there anything in here that's not bogus, because if so I'm not seeing it.

</comment><comment><USER5> please someone teach this student LaTeX.</comment>


Godaddy no longer offers free domain privacy (which is a bad practice anyway) - <AUTHOR> http://www.godaddy.com/domainaddon/private-registration.aspx

<comment><AUTHOR> In general domain privacy benefits registrars more than it benefits registrants. If you are worried about spam simply setup a separate gmail account which isn't a bad idea anyway for security purposes.</comment>


Haskell Problems for a New Decade - <AUTHOR> http://www.stephendiehl.com/posts/decade.html <comment><USER2>
      Most undergraduates take a compiler course in which they implement
      C, Java or Scheme. I have yet to see a course at any university,
      however, in which Haskell is used as the project language. [...] The
      closest project I've seen to this is a minimal Haskell dialect
      called duet.

Ben Lynn has been working on such a Haskell compiler[0], self-hosting and with IO too. It's a little unusual in its approach to compilation (targets combinatory logic and executes via graph reduction), but it's a great example nonetheless, from which one could build an undergraduate course.

Code generation is a difficult issue, compiling a lazy functional language to assembly could easily fill up two semesters of classes alone.

The VM in C is really small and the compiler can be built up incrementally[1].

[0] [https://github.com/blynn/compiler](https://github.com/blynn/compiler)

[1] [https://crypto.stanford.edu/~blynn/compiler/quest.html](https://crypto.stanford.edu/~blynn/compiler/quest.html)

<comment><USER3> > Most undergraduates take a compiler course in which they implement C, Java > or Scheme.

Is that true? I thought those compiler courses typically implemented some toy language.

Maybe "in" is misplaced and the following was meant instead?

"Most undergraduates take a compiler course which they implement in C, Java or Scheme."

<comment><USER4> I think you're essentially right, but the "toy language" is often a subset of some real language. in my compilers course it was a subset of pascal, which targeted a very friendly IR. there's no inherent reason why the same couldn't be done for a subset of C, Java, or Scheme. in particular, Scheme has a relatively simple syntax to parse. C is fairly difficult to parse, not sure to what degree the grammar can be simplified by removing features.

</comment></comment></comment><comment><USER5> This post highlights my biggest problem with the language: it's about the _how_ , not about the _why_. For example, dependent types. They add significant complexity to the language and are intended to help with correctness. But are they an effective way to achieve it compared to alternatives? The fact that even current formal verification _research_ is mostly looking elsewhere seems to suggest that the answer is likely negative, so why focus on them now? Or algebraic effects, about which the article says, "These effect-system libraries may help to achieve a boilerplate-free nirvana of tracking algebraic effects at much more granular levels." But is that even a worthwhile goal? Why is it nirvana to more easily do something that might not be worth doing at all?

Researchers who study some technique X ask themselves how best to use X to do Y, and publish a series of papers on the subject, but practitioners don't care about the answer to that question because they don't care about that question at all. They want to know how best to do Y, period. One could say that every language, once designed, is committed to some techniques that it tries to employ in full effect. But any product made for practical use should at least strive to begin with the _why_ rather than the how, both in its original design and throughout its evolution. I work with designers of a popular programming language, and I see them spending literally years first trying to answer the why or the what before getting to the how. So either Haskell is a language intended as a research tool for those studying some particular techniques -- which is a _very_ worthy goal but not one that helps me achieve mine -- or it's intended to provide entertainment for practitioners who are particularly drawn to its style. Either way, it's not a language that's designed to solve a problem for practitioners (and if it is, it doesn't seem that testing whether it actually does so successfully is a priority).

I think it's important to have languages for language research, but if that's what they are, don't try to present them as something else. And BTW, at ~0.06% of US market share -- less than Clojure, Elixir, Rust and Fortran, about the same as Erlang and Delphi, and slightly more than Lisp, F# and Elm -- and little or no growth ([https://www.hiringlab.org/2019/11/19/todays-top-tech- skills/](https://www.hiringlab.org/2019/11/19/todays-top-tech-skills/)), I wouldn't call Haskell a "popular language," as this post does, just yet.

<comment><USER6> Which is why although I see these kind of languages quite relevant to advance the state of the art, the industry belongs to impure multi-paradigm languages.

Like Brian Goetz puts it, it is not FP vs OOP, rather combining FP and OOP, using the best of each to solve different kinds of problems with the same tool.

<comment><USER7> I'm not so sure a multi-paradigm language is truly the ideal alternative. Languages that brag being multi-paradigm, such as Python or Javascript, in the end offer very few facilities for actual functional programming. It just doesn't feel idiomatic with them.

FP and OOP are both well tested design patterns. Mixing them up in an incoherent way just makes the whole software architecture somewhat unpredictable.

<comment><USER8> One could perhaps draw a distinction between languages that were designed from the ground up as multiparadigm, such as OCaml, and languages that originally targeted one paradigm and then became multiparadigm by katamari-ing up a bunch of extra features, as Python did.

FWIW, I also don't know that Python officially conceives of itself as multiparadigm so much as as a procedural language with classes. Kids these days forget that higher-order programming has a long history in procedural programming, too. ALGOL was doing it in the 1960s, after lisp but a good decade before Backus published _Can Programming Be Liberated from the von Neumann Style?_.

<comment><USER9> For what it's worth, despite the O in OCaml, in practice the object layer isn't used that often. However, that's because the ML module system serves many of the same use cases that objects and classes do in other languages. People do use objects in OCaml occasionally if they need the dynamic dispatch.

I'd say that OCaml blends imperative and functional programming cohesively and fairly equally, though.

</comment></comment></comment></comment></comment><comment><USER10> > " Many of the large tech companies are investing in alternative languages > such as Swift and Julia in order to build the next iterations of these > libraries because of the hard limitations of CPython."

I would be interested in evidence of this. I work at a big tech company in ML and scientific computing, and have close peers and friends in similar leadership roles of this tech in other big companies, FAANG, finance, biotech, large cloud providers, etc.

I am only hearing about the adoption of CPython skyrocketing and continued investment in tools like numba, llvm-lite and Cython. At none of these companies have I heard any interest in Julia, Swift or Rust development for these use cases, and have heard many, many arguments for why Python wins the trade-offs discussion against those options.

In fact, two places I used to work for (one a heavy Haskell shop and one a heavy Scala shop) are moving away from those languages and _to_ Python, for all kinds of reasons related to fundamental limitations of static typing and enforced (rather than provisioned) safety.

I mean, Haskell & Scala are great languages and so are Julia & Swift. But even though in some esoteric corners people have started to disprefer Python, it's super unrealistic to suggest there's large movement away from it. Rather there's a large move _to_ it.

It reminds me of the Alex Martelli quote from Python Interviews,

> "Eventually we bought that little start-up and we found out how 20 > developers ran circles around our hundreds of great developers. The solution > was very simple! Those 20 guys were using Python. We were using C++. So that > was YouTube and still is."

<comment><USER11> I work in HFT and now use Julia for all my research, and a couple of my colleagues now do too. Personally I'd rather retire and farm goats than go back to having to write Python professionally: there's just soo much that can go wrong that doesn't happen in a typed language, so much unnecessary stuff you have to keep in your head when coding. It also seems incredibly counterproductive to use a language that's 100x slower than necessary just because it's the only language some people know; the difference in research speed between having to wait one second for a result and ten minutes is massive.

Of course, HFT is a somewhat different usecase than pure ML, as we work with data in a format that's rarely seen elsewhere (high-frequency orderbook tick data). Python's probably less painful for working with data for which somebody else has already written a C/C++ library with a nice API, as then you don't need to write your own C/C++ library and interface with it. My choice is either: write Python, and the research will take 100x longer, write Python and C++, and the development will take 2-4 times longer, or write Julia, and get similar performance to C++ with even faster development time than Python.

<comment><USER12> Is it just performance that puts you off Python? If so, did you try writing a native extension to accelerate it?

Where i work, we also have analysis work which involves sequentially reading gigabytes of binary data. We came up with a workflow where a tool written in Java runs a daily job to parse the raw data and write a simplified, fixed- width binary version of it, then we have a small Python C extension which can read that format. We can push a bit of filtering down into the C as well.

This has worked out pretty well! We get to write all the tricky parsing in a fast, typesafe language, we get to write the ever-changing analytics scripts in Python, and we only had to write a small amount of C, which is mostly I/O and VM API glue.

The Java and C parts were both written by an intern in a month or two. He's a sharp guy, admittedly, but if an intern can do it, i bet an HFT developer could too.

<comment><USER11> >Is it just performance that puts you off Python? If so, did you try writing a native extension to accelerate it?

This is what I did originally, but it was way slower to have to write and maintain C++ and a Python interface for it than to just write Julia. Particularly because the some of the business/trading logic basically has to be in the native layer (can't backtest a HFT algo without running it on HFT data, and that volume of high frequency tick data is too slow to process in pure Python).

</comment></comment></comment></comment><comment><USER13> > If you look at the top 100 packages on Hackage, around a third of them have > proper documentation showing the simple use cases for the library.

This is still very very poor, and one of the biggest problems faced by newcomers to the language (speaking as one myself...)

<comment><USER14> Which library in the top 100 that you used had documentation (or lack thereof) that wasn't sufficient to understand how to accomplish the task at hand?

<comment><USER15> Some of the libraries need you to click into the docs for specific modules to get the full documentation for them. This confused me when I first set out.

eg. Postgres Simple. This is the page you get to at first when you search for it:

[https://www.stackage.org/lts-14.21/package/postgresql- simple...](https://www.stackage.org/lts-14.21/package/postgresql-simple-0.6.2)

It looks like there is no documentation, just a list of modules.

Clicking on the Database.PostgreSQL.Simple module gets you to the docs:

[https://www.stackage.org/haddock/lts-14.21/postgresql- simple...](https://www.stackage.org/haddock/lts-14.21/postgresql- simple-0.6.2/Database-PostgreSQL-Simple.html)

<comment><USER16> This is pretty standard practice. The landing page for a package is never where examples live (except for the README). Haddocks are used for examples & tutorials, and the top-level module or a documentation-only module ending in ".Tutorial" are often provided.

<comment><USER15> Sure. It just took a bit of getting used to, but could be the reason why a lot of casual developers looking at the language have the impression that the documentation is poor.

<comment><USER16> That's fair I guess but if someone just looks at a single landing page and draws a conclusion without even clicking around idk what to say

</comment></comment></comment></comment></comment></comment><comment><USER17> I'm going to give the same Haskell hot-take I gave on Twitter while at NeurIPS in December: the problem with Haskell is that you can port the awesome parts of pure, compositional abstractions over to Python, far more quickly than you can port really good domain-specific libraries and applications over to Haskell. My experience was that porting some nice ADT-based machinery to Python, using an available ADT library, took roughly one weekend, whereas porting the major domain-specific package I needed from Python to Haskell would take months to years.

I love Haskell. I prefer to use Haskell when I can. Haskell is a language in which I can Achieve Enlightenment. But apparently, God help me if I need to do some heavy graph processing or CUDA numerics in Haskell.

<comment><USER18> So, uh, I was looking through past threads (this one in particular [https://news.ycombinator.com/item?id=21578769](https://news.ycombinator.com/item?id=21578769)) and I came across your comment:

"I might be spat at or beaten up in the street for being Jewish - that happens in Brooklyn or LA anyway these days."

And I was wondering, how has it been for Jews in the US in the past few years up till now? When did things start to get noticeably worse?

I know about the rising Anti-Semitism and the particular incident in NY about a month ago.

<comment><USER17> If you want to talk about that, you should contact me privately. I don't want to derail a nice thread.

<comment><USER18> I'm totally fine doing that but I don't know how. Can we private message?

<comment><USER17> My profile on here links to my Github Pages site, which has an email address on it.

</comment></comment></comment></comment></comment><comment><USER19> Great forward thinking wish list!

I have a strange relationship with Haskell. I love Haskell repl driven development of pure code for playing with algorithms and ideas. I use Haskell in this use case much like I use Common Lisp and Scheme languages. However, I am not very good at writing impure code and the interfaces between pure and impure code. To put it more plainly, I enjoy the language and I am productive, but I suffer sometimes figuring out other people's Haskell code.

</comment><comment><USER20> Despite the positive tone, what really struck me in this article was that they struggle with getting people to work on the compiler because it is too complex.

It just confirms my main criticism against advance statically typed languages: They are simply too complex.

It is why I have more faith in languages like Julia, because you can achieve a tremendous amounts of power, expressiveness and performance in a relatively simple language.

Dynamic typing gives you simplicity in the type system which is impossible to achieve with static type checking.

Long term this has profound implications. People can keep hacking on and expanding Julia because they can wrap their head around the language. You don't need to be Einstein to grok it.

I think you may also see Clojure overtake Scala for the same reason. The simplicity of Clojure may in the long run overtake Scala although Scala benefits a lot from similarity to Java at a superficial level.

<comment><USER21> > I think you may also see Clojure overtake Scala for the same reason. The > simplicity of Clojure may in the long run overtake Scala although Scala > benefits a lot from similarity to Java at a superficial level.

Correct me if I'm wrong, but didn't Scala overtake Clojure some years ago as the second most popular language on the JVM (second to Java ofc). From my point of view it rarely happens that these trends reverse.

Scala has the advantage that it allows OOP or Functional Programming, which Clojure does not.

But I do get your point about simplicity. I tried 3 times to learn functional programming by learning Haskell and it never clicked. Then I learned Clojure and who would have thought, functional programming is actually not as hard as Haskell makes it out to be.

<comment><USER22> I work in a JVM shop and I don't see Clojure making much head way. Unlike say, Apache Spark, there's no killer app (datomic notwithstanding) that requires Clojure over Scala.

Scala also offer the advantage of static type checking, and a less alien syntax. Yeah, I know Clojure is just s-expressions, but all the brackets don't help its uptake.

Oh, and Clojure stack traces make Scala stack traces look positively brief and informative.

<comment><USER23> Scala's syntax for (generic) type declarations is super alien, and you can't avoid it because it's a big part of why you'd use Scala in the first place.

</comment></comment></comment></comment><comment><USER24> Big issue with Haskell adoption is the number of hoops you have to jump through to write efficient code in it. Haskell abstracts away the idea of a procedural VM implementing the code underneath, but you often need that exposed to finagle your code into a form that's efficient.

Haskell programming ethos is opposed to that, the language wants people to focus on the semantics of computation not the method. Yet we must be able to specify computation method if we want our programs to operate efficiently.

The truth is that the Haskell compiler will never be able to automatically translate idiomatic Haskell code into something that's competitive with C in the common case. once you start finagling your haskell code to compete with C you've negated the point of using Haskell to begin with.

<comment><USER25> > _The truth is that the Haskell compiler will never be able to automatically > translate idiomatic Haskell code into something that's competitive with C in > the common case._

Is this something you have experience with, or are you just theorizing? I know there are pitfalls to Haskell development, but to assert that "the common case" has uncompetitive performance seems wrong to me.

My problem with this kind of assertions is that often -- not saying it's your case, that's why I'm asking -- they come from people who _imagine_ how it must be (or read it in a blog), often coming from a place of never really having tried to solve something with the language, and this sadly percolates into popular wisdom ("Haskell is not good for this or that"). Something similar happened to Java's allegedly "poor" performance, way past the point Java software sometimes outperformed C in many areas.

<comment><USER26> I think it's a common problem with almost all, if not all, languages that come to us out of the 1990s that they are fundamentally built on the presumption that "someday" compilers may save us. Well, "someday" is pretty much here, and they've all failed, as far as I'm concerned. (If you're happy with 10x-slower- than-C and substantial memory eaten to get even that fast, YMMV, but it's not what was hoped for. No sarcasm on that, BTW; sometimes that's suitable, just like sometimes 50x-slower-than-C is suitable. But it's not what was hoped for.)

Haskell can do some pretty tricks with specific code if you tickle it right, but if you just write general, normal code, it's faster than Python (a low bar, Python _qua_ Python is nearly the slowest language in anything like common use) but not a generally "fast" language. "Someday" is here; if it's not "generally C-fast" today, I see no particular reason to believe it will be in the future either, especially since GHC seems to have spent a great deal of its design budget.

It would be interesting to see someone's take on Haskell, but where they write the language from the very beginning to be a high-performance language. There's probably multiple points in this design space that would be possible. Arguably Rust is nearly one of them, and getting even closer in the next few years.

<comment><USER27> You might be interested in Cliff Click's aa[0].

It's still under development but intended to be a high performance functional language.

The author has substantial experience in JITs and compilers.

[0] [https://github.com/cliffclick/aa](https://github.com/cliffclick/aa)

</comment></comment></comment></comment><comment><USER28> Haskell's main problem is that it is over-zealous, and built on axioms that make it a poor fit for real people writing real code. Everything else flows from that core issue. Functional purity and lazy evaluation are interesting, but when you can't toss a printf debug or log statement into a function without changing function signatures all the way up, it's not going to be popular.

Pragmatic, sloppy languages will always be more popular, because they are more forgiving.

<comment><USER29> To be fair, you can printf debug anywhere (Debug.Trace module). I'm the "print to debug" kind of guy, and I can debug in Haskell just like in Python using this.

I think the issue you have stems from the fact that people can't transfer the knowledge from C/C++/Python/wtv _directly_. One of the standard way to build programs in Haskell (mtl-style) allows you to perform IO actions almost anywhere, provided you're willing to play with monads. But this is so different from anything most people have ever seen that I understand why it can be frustrating.

<comment><USER28> Any idea when this was added? I am relatively certain that it was not possible in Haskell 98, and admittedly most of my Haskell experience is a decade old.

I have picked up three well-regarded Haskell books over the past decade trying to get back into the language, and don't recall any mention of this capability.

That's another issue, the dearth of anything like tutorials or books on how to do something practical with Haskell, rather than the whirlwind tour of language features. I keep being told that serious software is being built in Haskell, but the knowledge of how to get from university-grade code to production-grade code is an unmarked wilderness that everyone must apparently navigate on their own.

<comment><USER30> Looking back on historical GHC releases, the earliest one available on the web page is version 0.29, released in July 1995, and it already has the trace function. I would guess has been there for a long time.</comment></comment></comment></comment>


IPhone's Standalone Business Worth More Than All But 8 Companies in the World - <AUTHOR> https://www.trefis.com/company?article=27467#

<comment><USER2> What is trefis?

I can't figure out where they came up with the $391B market cap number, much less why they came up with that estimate?

It's certainly not based on the current stock value.

<comment><USER3> This link has their methodology and price estimate.

www.trefis.com/company#/AAPL

looks like a sell-side research house

</comment></comment><comment><USER4> We're extrapolating market capitalization into the future within a model. If we applied a similar model for the rest of the top 25 corporations by market cap on the S&P 500, we probably find that the iphone won't be worth more than all but 8 companies. This is given the model is accurate, and the pricing method is accurate of the iphone is accurate.

</comment><comment><USER5> Events that are just part of our generally-interesting day to day tech landscape will probably be analyzed for decades by future historians.</comment>


ComVeriCast: Internet Freedom - <AUTHOR> https://comvericast.com/

<comment><USER2> This isn't how it will happen. The basic package will give you access to these sites, but crappy access. Youtube, Netflix, et. al. will skip, webpages will load more slowly, etc. Meanwhile sites owned by the parent company of the ISP will be as smooth as butter.

That way it's not people calling up their ISPs saying "Why can't I access youtube?" instead it's people saying "I watch comvericastTube since it's so much faster than youtube"

<comment><USER3> ah you kind of said similar things to me while i was typing another comment.

I think it's dangerous to be too sweeping with things like, "sites owned by the parent company of the ISP will be as smooth as butter."

Let me explain by talking about a net neutrality problem my clients and I had when I operated a small business, supporting small businesses.

We installed VoIP systems, hosted at Rackspace, communicating over services like Time-Warner Cable. We were pretty sure that TWC had specially prioritized their packets, but we also could not get the most reliable performance without installing a router at our customer site, and dedicating a portion of bandwidth to communicating with a single IP address. QoS sounds great when you're talking about it, but not when you are talking VoIP over it, in my experience.

So, stick with me here for a sec, pls - I still oppose TWC prioritizing their own traffic, but only in a way that I can't do for mine. So here comes my disagreement with the word 'neutral'. I do not want a neutral network. I want a fair one. It's subtle, but a valuable distinction IMO.

So, people keep telling me that "A good neutrality implementation won't outlaw prioritization", but is that true? If I'm a voter, and I am not an engineer, does that make any fucking sense to me?

Confusion is extremely bad for democracy.

Anti-competetive capitalism certainly also is.

<comment><AUTHOR> > A good neutrality implementation won't outlaw prioritization

I think to have true net neutrality, the provider needs to make no distinction about the traffic that's going through it. People pay for access to 1s and 0s at a certain bandwidth and that is provided without prioritizing one type of traffic over another (save for upload/download speeds). At least, this is how I hope it works. If you want QoS, you'd do so on your own network with your own router.

> Anti-competetive capitalism certainly also is.

Free market and democracy are two separate issues, although it would be my argument that they are in constant disagreement with each other...at least in the case of American Capitalism. In the US, you have large corporations lobbying for less and less regulation generally at the _expense_ of the citizens (and thus the republic).

When something becomes so pervasive that society as it exists _cannot live without it_ (like the internet), it's my belief that it's in the hands of government to regulate it ferociously so that it's not at the whim of a company which doesn't have your best interests in mind. This is especially true, in the case of internet, in places where only one ISP exists and the usual ridiculous argument of "Just switch providers!" doesn't work. Even if there _are_ two providers, they are generally both terrible anyway.

There comes a point where people in the US need to realize that yes, free market is great, but it doesn't mean that the citizen's best interests (or customer's interests, even) are represented by <insert corporation here> and this is where regulation comes in.

There's a balance. Anti-competitive capitalism can, in moderation, be absolutely _great_ for democracy. The free market is not the ultimate oracle of truth, it is yet another weight on the scale of a free, open, and intelligent society where common good is the ultimate goal.

</comment></comment></comment><comment><USER4> The best gallows humor has the hint of truth in it.

<comment><USER3> totes.

I really think this perfectly illustrates why I have issues with the coinage "Net Neutrality".

I currently pay Comcast an additional amount for an additional amount of bandwidth, over the minimum they offer. Before I go further, let's clarify that I am not defending Comcast, and that Net Neutrality is not the "Fuck Comcast" law. My old AT&T account that PG&E, oddly, sold me when I moved to Oakland was only 1.5mbit, and it was enough for Netflix, but you could expect Netflix to perform as it performs with 1.5mbit of bandwidth.

Certainly, I agree that on a lower-cost plan, services that may be hungry for bandwidth should not be allowed to be blocked, that's silly, and while noone has really ever substantially done anything like this, I agree that there is a very real risk of business interests being presented with such an opportunity.

What this humor kind of fails to address is the fact that, some people will use more internet, maybe a house with 5 roommates needs more internet than an individual - this is actually a way that tiered power billing hurts poorer folks, because 1 rich person gets the same alottment as ten poor people at one address, so using even 5 times as much power costs, oh, ten or twenty times as much. The law that forces power costs to be tiered is good, and it is motivated by the right reasons, but the way it is implemented puts no pressure on the actual people who waste the most power.

I think a more interesting argument would be to say, the free plan has facebook, and facebook subsidizes your internet (something AT&T is already doing with ads), and the median plan has twitter, and you can only use VPN to connect to your office on the highest plan, even if you use almost no bandwidth.

If we're going to have a conversation, let's talk about something of substance.

<comment><USER5> > I think a more interesting argument would be to say, the free plan has > facebook, and facebook subsidizes your internet (something AT&T is already > doing with ads), and the median plan has twitter, and you can only use VPN > to connect to your office on the highest plan, even if you use almost no > bandwidth.

Here's the problem. Any such regime will be structured with _incumbent_ use cases in mind. What if a new VPN-like protocol emerges that can be used to ensure more privacy (e.g. TOR). Now only those who can afford the highest tiers of service will be able to access it. Basically the internet rich get richer because they have access to technology that a family subscribing to mid-tier do not.

The other problem is that ISPs are not interested in the cutting edge of the internet. If this was 2005, your plan would have the mid-tier selling us MySpace access and Facebook would only be on whatever tier above that gives "neutral" web access - how does that not skew the market forces that pushed Facebook to the top of the heap and why should an ISP be allowed to skew them in this way?

<comment><USER6> Telcel in Mexico allows unlimited access to Facebook and Twitter while the rest of the internet is bounded by whatever data plan you have.

Not sure if Facebook and Twitter pay Telcel for the bandwidth you consume.

<comment><USER7> It's known that Zuckerberg is approaching some not developed countries to do that. India is on the top of my head. And this has been categorized as a practice againts Net Neutrality. Chile, IIRC, banned it.

</comment></comment></comment></comment></comment><comment><USER8> wow. A hammy over the top dystopian style website on a technology rights topic that ISN'T made by the EFF!

Amazing!</comment>


Dark Patterns: User Interfaces Designed to Trick People  - <AUTHOR> http://www.slideshare.net/harrybr/ux-brighton-dark-patterns?from=ss_embed

<comment><USER2> Accompanying website:

<http://darkpatterns.org/>

<comment><USER3> I wish they would of just linked to this site. as a side note, I hate slides because I have no idea of the slides context in the presentation. Usually during a presentation, a slide is only complementary to what the actual presenter is saying, so why present just the slides. Also google indexes slides so high in search. I've never found a any good content out of just slides.

</comment></comment><comment><USER4> See previous discussion: <http://news.ycombinator.com/item?id=1511201>

</comment><comment><USER5> I like how this talk on dark UI design is hosted on a site that tried to open a pop-under ad (kudos to Chrome for not allowing suchness).

<comment><USER6> Well, browsers have prevented that for years. More to the point, whatever evils UI design is capable of are certainly being committed by that catastrophically disarrayed mess of a website. Maybe a few more irrelevant widgets, tactically-place banners, out-of-sync but identical flash movie ads, and thumbnail-jammed iframes would do the trick...?

</comment></comment><comment><USER7> Is this ethical?

<http://dl.dropbox.com/u/404957/donorschoose.png>

The opt-in is for an extra 15% of your donation to be "optionally" donated to the charity. Because it is "optional", this 15% doesn't count towards the official "% of donations used for operating expenses" metric used to gauge charities, of course.

<comment><USER8> It's going to get their merchant account blocked if and when it reaches the card companies.

Such 'stuffing' of charges is a long time trick used to push the total charge volume so the chargebacks are reduced. Nobody is going to charge back $15 sent to charity.

So 200 charges at 150, 2% chargeback rate, vs 400 charges, 200@135 and 200@15, 1% chargeback rate.

Some billing companies that have since gone under used to do this with a 1$ charge added to every sale.

This practice has been banned for years and I'm quite surprised to see it revive.

<comment><USER9> I had to read and re-read this post before I grasped what you're trying to say here. There is no "stuffing" of charges going on here, whatsoever. The donor's credit card is only charged once, for the entire amount of the donation, including optional operating expenses donation. If the donor donates to 10 proposals, it still results in only one credit card charge.

It just seems bizarre to me that, simply by looking at a screen shot of our checkout cart, that you'd make some bizarre assumption that DonorsChoose is doing what you describe. Come on, at least do some research before posting things like this.

<comment><USER8> One charge with two beneficiaries?

<comment><USER9> I don't know what you mean to imply with this question ---- when you donate to any non-profit, the money might be spent on any number of things, including overhead, as well as money sent on to beneficiaries. The only difference with DonorsChoose is that we actually give donors a say in how we spend their donation: on overhead, on materials sent to a specific classroom, or a combination. (Donors can decide to send a donation specifically to cover DonorsChoose overhead, in which case all the money goes into our general fund). The donor may also decide to donate to more than one proposal --- it could be two or three or five or ten proposals at once. That is also one credit card charge.

I really don't see why you assume that because the money being donated is spent on multiple things that would be separate credit card charges. That makes no sense, who does that? I can't think of any e-commerce site either in the commercial or non-profit space that would do this for no apparent reason.

I might add that, though I think this is more or less irrelevant, DonorsChoose does not send the money directly to teachers, but instead purchases the materials itself and has them shipped to the teachers (this is to reduce the incidence of fraud, and to make sure the money is spent on the materials the teacher said they would spend the money on --- the specific materials are chosen by the teacher, but we actually do the purchasing). If a donor specified all their donation go to the teacher and students, then the money they donate goes only to the vendor(s) for that proposal, who then ship goods to the teacher at their school, and the money we spend on staff expenses, web hosting, etc., etc. has to come from donations earmarked for overhead (including the optional donations).

</comment></comment></comment></comment></comment><comment><USER10> There's a lot of HN posts about A/B testing, I'd love to see someone test out these techniques and see just how much of a difference they make.

</comment><comment><USER11> Is it ethical to link to facebook and require flash to show a few images?</comment>


By monopolizing rare-earth metals, China could dictate the future of high-tech - <AUTHOR> https://foreignpolicy.com/2016/07/12/decoder-rare-earth-market-tech-defense-clean-energy-china-trade/ <comment><USER2> No, it can't. We went through all this in 2010: there are tons of rare-earths globally which simply can't compete with Chinese dumping, embargos hurt the Chinese economy, rare-earths can easily be economized on if there is any demand, recycled, or simply not used in electronics designs, and having done it once already makes it more difficult to do it in the future.</comment>