How Much Money Do You Save by Cooking at Home? - <AUTHOR> https://priceonomics.com/how-much-money-do-you-save-by-cooking-at-home/ <comment><USER2> This looks like an advertisement for Wellio.

The linked article, links to a Wellio page with the same content verbatim. [http://www.getwellio.com/ranking-least-nutritious-meal- dolla...](http://www.getwellio.com/ranking-least-nutritious-meal-dollar-2/)

The information may be useful still, but it should presented as long form advertising

<comment><USER3> > but it should presented as long form advertising

Yes. I think these are usually tagged or labelled as "Sponsored Posts".

</comment></comment><comment><USER4> >However you can easily make these meals at home.

As someone who cooks a lot at home I call this an overstatement. Cooking a restaurant quality food is anything but easy for a non-professional cook. It took me months if not years to learn how to not overcook meat, and yet I still can't achieve the same level of juiciness and softness I see in meat cooked in restaurants.

You will also need to invest in good quality kitchenware if you're going to cook at home.

The article also completely ignores the other costs of cooking at home such as utilities, food waste, and your time which used not just for cooking, but also for shopping groceries.

<comment><USER5> Sous vide machine + better meat will help you get juicy, reproducible steaks.

</comment></comment><comment><USER6> "Beef Wellington" price per meal is $4.53, their first example. This is not even close to anything realistic, even just for the beef and not including the spices/sauces/etc that one would need.

<comment><USER7> I stopped reading after seeing the pricing tables. I really question their data source and calculation quality with items like this:

Chicken Tacos Restaurant Price: 18.94 Cook at Home Cost: 1.14

</comment></comment><comment><USER8> They're failing to factor in time it takes to shop, cook, clean, food waste, and they barely mention nutritional diversity. As a frequent meal kit subscriber I get great food that I can cook quickly, I get diversity, faster cleanup, little to no food waste, and I don't have to take on the additional cognitive load of "what are we going to cook tonight" which is actually a main reason you might go and eat out.

</comment><comment><USER9> I think this analysis is a little flawed. I can understand their argument against factoring in opportunity cost as this will vary widely from person-to- person (and is pretty easy to consider on your own), but they also don't factor in waste or cost of the tools necessary to prepare food.

For example, the article mentions that they used the cost for only 1/2 of an onion if the recipe called for only 1/2 an onion, but what happens to the other 1/2? Depending on how often you cook at home, how often you go out of your way to use existing ingredients, and how much time you spend meal- planning, you'll either manage to use the rest of the onion (which is pretty easy for something as common as onions), or it will go to waste. Personally, since I'm typically just cooking for 1, most of these end up going to waste unless I want to be eating the same thing for several days in a row.

This analysis would be more useful and interesting if it came with multiple "waste factors" for the remaining ingredients, from "completely used" (which is what this article assumes) to "completely wasted". It'd also be more useful if it factored in the amortized cost of maintaining a kitchen that's stocked well-enough with tools and spices to regularly prepare a variety of recipes.

For me personally, the difference in cost is much closer than this article. I will typically use all of the "main" ingredient, but additional (yet expensive) ingredients, such as spices, cheeses, etc. often go bad before I have a chance to use them again. I've also spent a significant amount of money acquiring the kitchenware required to cook at home. I typically don't eat extravagantly when I eat out; most meals are ~$15-$17 (incl. tax and tip). For some meals, I buy pre-made food at the grocery store (e.g. salads, wraps) that also come MUCH closer, if not cheaper, than preparing it at home would cost me if waste is included. Some of these can be very close to restaurant quality.

<comment><USER10> _" For example, the article mentions that they used the cost for only 1/2 of an onion if the recipe called for only 1/2 an onion, but what happens to the other 1/2? Depending on how often you cook at home, how often you go out of your way to use existing ingredients, and how much time you spend meal- planning, you'll either manage to use the rest of the onion (which is pretty easy for something as common as onions), or it will go to waste. Personally, since I'm typically just cooking for 1, most of these end up going to waste unless I want to be eating the same thing for several days in a row."_

You can freeze a lot of fresh food for later use. That's what I use with a lot of the fruits and vegetables I buy, and then use them in smoothies. Cookies can be frozen. Bread can be frozen.

Often I'll save time and effort by buying frozen fruits and veggies. They're often fresher than "fresh" produce, as they're usually frozen immediately after they're picked rather than sitting around unfrozen in transport and then on the store shelf who knows how long before you buy them.

For example, you can buy frozen, chopped onions, and save yourself the time, hassle, and tears of chopping them yourself. I buy frozen fruits and berries, and "triple washed" kale and throw it immediately in to the freezer for use in smoothies. Lots of time saved and it's very economical. Nothing goes to waste.

</comment></comment><comment><USER11> > "To be clear, this is an analysis of your costs and isn't about looking at > opportunity costs of time associated with cooking."

Pointless then. This is part / mostly what you pay for when ordering / eating out. That is, you sit and relax while someone else's time is invested in your meal.

</comment><comment><USER12> Great article. Hope the authors extend this comparison with more information about how much time you spend to get those savings.

Restaurants are interesting because you're not really saving much time, but you're converting shopping/cooking time into socializing time.

Delivery via uber-eats type services is nice to get good food without spending time, but it isn't cheap.

Fast food is quick and cheap if you're already driving somewhere, but it isn't healthy or high-quality.

So what is the optimal choice for saving time and money while still eating well?

<comment><USER13> _So what is the optimal choice for saving time and money while still eating well?_

Personally, I'd say just developing everyday food shopping and kitchen skills is a good start.

Learn to recognise good ingredients when you're shopping. Finding fruit and vegetables at the right level of ripeness or choosing a good cut of meat will improve your meal quality, reduce your waste, and save you time and money. Buying very cheap cuts of meat or clearance produce is often a false economy, as the quality is often so low that you'll waste much more and what you keep will be less healthy and less tasty.

Knowing where to go shopping for the best ingredients is helpful too. Independent local stores, farm shops or markets might have fresher and less modified products than a big chain store or home delivery service, and you might have more flexibility to get exactly the amount you want instead of a pre-determined pack size. Sure, it takes some time to buy fresh ingredients in person every few days, but probably only a few minutes.

Speaking of time, the amount I have saved over the years by knowing how to prepare different fruits and vegetables efficiently must far outweigh the relatively small amount I spent learning. (Seriously, if you don't know the easy way to slice a bell pepper or dice an avocado, go to YouTube right now and spend a few minutes finding out how professional chefs do this kind of thing. You'll thank me later.)

It's also important to have the right tools, and this is about quality, not quantity. Non-stick pans, good sharp knives and the right utensil for the job can all be big time savers, as well as often being safer than inferior alternatives. And get into the habit of always cleaning as you work, instead of stacking up some huge pile of dirty cookware, utensils, knives and boards to wash later.

Ultimately, it's hard to beat a decent home-made meal with good ingredients for cost, and unless you're talking about a nice restaurant it's going to be hard to beat it significantly on quality either, but you can certainly do a lot to reduce the amount of time you have to spend making one.

</comment></comment><comment><USER14> This assumes home cooking for 6 people each meal. The economics are very different when cooking for less.

</comment><comment><USER15> They haven't heard of the $5 footlong?</comment>


Implement arrow functions in v8 - <AUTHOR> https://code.google.com/p/v8/issues/detail?id=2700#c45

<comment><USER2> Do we just link to random commits now? I have no idea what arrow functions are or why it would even matter to half the people who visit this site.

edit: after following 4 links I finally found the bug report about it

[https://code.google.com/p/v8/issues/detail?id=2700](https://code.google.com/p/v8/issues/detail?id=2700)

<comment><USER3> They are a compact way to write anonymous functions in Javascript, so instead of

        var square = function (a) { return a * a;}

You can write:

        var square = a => a * a;

<comment><USER4> So basically, a useless hipster fashion lead fluffy syntax change, which mainly makes code harder to read, and makes typos more common.

      // foo takes a function, and a boolean.
      // foo(a=>7, a>=2);

Really? That's easy to read is it? Eugh count me out.

<comment><USER5> Verbosity is not clarity.

        list.map(function(x) { return x * 2; });

verses

        list.map(x => x * 2);

The actual functionality of the first is swallowed in visual noise (function, return). Yes, it's something new to learn for Javascript programmers, but it's useful and makes the meaning of code clearer.

That's not even touching on the this-binding element, which is also incredibly useful in common Javascript code.

<comment><USER6> Just eliminating the words "function" and "return" doesn't make the code clearer. Anyone competent with Javascript can easily read the first form. The difference in time to read the expression may not even be measurable. If you want to argue that it makes the code neater that's fine, but the meaning is not made clearer by the substitution of sigils for words.

<comment><USER7> > Anyone competent with Javascript can easily read the first form

And anyone competent with _any_ language implementing map can easily read:

        users.map(user => user.name);

...without having to do any "skimming over" the noise. It's not a big difference, you're right, but it's the kind of little thing that, when you let it build up over time, gives you the "write-everything-in-triplicate" feel of Java 6.

Further, you have to be _intimately_ familiar with Javascript to understand why this is necessary:

        function fetchUserData(){
            var self = this;
            userService.fetchAllUsers()
                       .then(function(fetchedUsers){ self.users = fetchedUsers; });
        }

or even this:

        function fetchUserData(){
            userService.fetchAllUsers()
                       .then(function(fetchedUsers){ this.users = fetchedUsers; }.bind(this));
        }

as opposed to simply writing:

        function fetchUserData(){
            userService.fetchAllUsers()
                       .then(fetchedUsers => this.users = fetchedUsers);
        }

<comment><USER8> Did you know you can do this!?

      someObject.foo = function() {
        someObject.bar = 123;
      }

      function Foo() {
        var Foo = this;
        Foo.bar = 456;
      }

Pro tip: Always do asynchronous operations Before presenting the object to the program state. Or you will see "undefined" bugs in production!

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'm glad it's finally arriving, it been working in Firefox for quite a long time and I'm happy to see v8 implementing this ! Arrow functions are so much nicer to read and use.

<comment><USER4>
      a=>b<=7
      a>=b<=7

Can you not see the typos possible with this? The less characters you use for something, the more error prone. There's a reason we don't write in regular expression syntax.

Maybe I'm just getting old!

<comment><USER10> Who on earth would really write that? Surely you'd use the optional braces to make it clearer:

        a => { return b <= 7; }

Sure you can write it without that, but only if you want to write willfully unclear code to annoy people, like writing an entire function body on one line. Just because you _can_ do that doesn't mean that functions are inherently unclear.

<comment><USER11> More who on earth would really write a function that took a named argument, ignored it, and compared a value in the outer scope.

All of the examples that look confusing are artificially simple and doing things you wouldn't normally try to do.

</comment></comment></comment></comment><comment><USER12> Now read the blog post about it! Andy Wingo is a great compiler hacker and he writes about a lot of things that he works on. [http://wingolog.org/archives/2015/06/18/arrow-functions- comi...](http://wingolog.org/archives/2015/06/18/arrow-functions-coming-to- chrome-45)

<comment><USER13> Totally agree. Wingolog is an amazing blog and anyone curious about compilers and v8 in general should check it out.

</comment></comment><comment><USER13> Anyone have any idea when destructuring assignment is going to make it into v8?

That is one of the features my colleagues most cite as justification for using babel.js (I wouldn't mind destructuring assigment either). I would love to be able to avoid transpilation since it adds overhead from making out our toolchain more complex and makes debugging more difficult because stack traces and line numbers don't necessarily match up.

<comment><USER14> It's in the works: [https://code.google.com/p/v8/issues/detail?id=811](https://code.google.com/p/v8/issues/detail?id=811)

You can tell by the number of CLs that a lot of work has been done already but there are a few more still in progress. It's probably still a few weeks out.

Disclaimer: I don't speak for the V8 team, I'm just an interested onlooker.

</comment></comment><comment><USER15> It has been reverted[1] now. History repeats itself.

[1] - [https://code.google.com/p/v8/issues/detail?id=2700#c47](https://code.google.com/p/v8/issues/detail?id=2700#c47)

</comment><comment><USER8> If you use an anonymous function instead of a named function you'll probably end up writing a comment to clarify ... :P

Sometimes the code explains itself though!?

      allowed = members.filter(member => member.age >= ageLimit);</comment>


Show HN: Instapaper for Video - <AUTHOR>

Pause for Later. Inspired by Instapaper. But for video.
http://pauseforlater.com
Tutorial
http://pause.ly/66 <comment><USER2> <http://pauseforlater.com></comment>


Modeling How Programmers Read Code - <AUTHOR> http://synesthesiam.com/posts/modeling-how-programmers-read-code.html <comment><USER2> This highlights how "good" programmers are simply those who are most able to think like a computer. The article's language further reinforces this (perhaps intentionally), e.g. the reference to "compiling" functions.

I find this contraint interesting - I don't know if computational thinking is a strength or a weakness. Increasingly, it seems that computational models occur naturally and therefore the ability to think in such a manner would have inter-disciplinary value.

If we deem it a weakness, then programming becomes a UX problem rather than language one. The lack of change both within and across programming paradigms would suggest that many don't believe this to be a fundamental issue.

<comment><USER3> I'd place my skill bars higher: "thinking like a computer" seems fundamental: I don't think one can even be a mediocre programmer without it, and it's not enough to make you a good programmer.

A good programmer also needs to be able to effectively communicate through code to both others and themselves, know how to design maintainable programs, how to preemptively avoid bugs by making their code harder to misuse, and too many other skills to list here -- and not all of those naturally flow from knowing how to think like a computer.

</comment></comment><comment><USER4> With more research along these lines, we may have a day when a programming job interview will consist on interacting with some codebase for 10 minutes, and the model will spit out our normalized scores on syntax comprehension, algorithmic thinking, library familiarity, etc.

<comment><USER5> I wonder if when we get that far the computer is able to write the code for us anyways and programmers will be redundancies. Its just a matter of if, not when. Understanding human cognition well enough to evaluate it is a good indicator that the singularity is near.

<comment><USER6> Computers already write code for us, they just need to be told what we want them to write. The question is if we can design a programming environment where the computer can understand 'natural' human specifications and compile that, instead of needing to have a trained human compile the natural specifications into source code, which the computer can compile into a program.

<comment><USER5> Sure we could. This is just like Siri, you tell it what you want, she asks for clarifications, a conversation you have with the computer until...bam, you get what you want.

I would think we could do much of this already if we tried, but there are a lot of things on my list to do until I get to that.

<comment><USER7> Your optimism on this seems unfounded in my opinion.

When there are no domain restrictions, computers have not proven very capable of comprehension. Look even at the comparatively simple domain of handwriting recognition.

More importantly, you entirely miss the problem that many times the human doesn't know exactly what he wants until he sees it.

As a software engineer, I have no fear my job will be replaced by computers talking to product managers.

<comment><USER5> That's why the program should be expressed as a conversation! We don't know what we want so we should start vague, get feedback, provide clarifications, and so on. The conversation with the computer must be a two-way thing!

<comment><USER8> That's brilliant. Not in terms of some AI working out what a silver haired old grandmother meant but in terms of talking to clients - they could imagine talking to a computer and I am just providing that feedback.

Daily or weekly, feedback nice and quick

<comment><USER5> The thing is, we probably don't need hard AI yet to do some of this. Yes, it must be a dialogue system, but we have those today. We already saw the movement in this direction with Hugo Liu's concept.net work, but for some reason no one has followed up yet. We are getting to the point with speech rec/understanding technology that someone is bound to try again soon.

<comment><USER9> In general, we don't need Hard AI for much anything, and usually don't want it. Any _specific_ problem you want solved will require some specific solution method or algorithm rather than the whole and entire "make a computer hold an adequate water-cooler conversation" thing.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I would love to see this kind of study done comparing different programming paradigms (i.e. functional vs. procedural vs. OO vs. logic). Some concrete cognitive data on how lisp-like languages may or may not actually make programmers more productive would be quite fascinating I think.

<comment><USER11> I'm not aware of many eye-tracking studies specifically, but there has been a lot of research done on the general subject of how we read and understand code. Search for papers on "program comprehension".

To address (some of) your specific point, I suspect part of the appeal of functional programming languages is that they naturally promote describing the data flow of the code. In contrast, imperative languages inherently dwell on control flow, even though it's often an unimportant implementation detail. It turns out that even when we're reading imperative code, we're trying to figure out the underlying data flow anyway, so why not cut out the middle step?

I also suspect part of what holds back functional programming languages from wider acceptance is that when you're modelling something where time/order matters, the control flow is _not_ an unimportant implementation detail. You have to work harder to describe it in a functional language where you get a lot for free with an imperative programming language.

<comment><USER6> > You have to work harder to describe it in a functional language

This isn't necessarily true. In Haskell you can use do blocks like:

main = do

action1

action2

...

and your actions will happen sequentially. This is just syntactic sugar behind "action1 >> action2". The real reason for the special syntax is when the actions also return a value you can do "x <\- action1", and use the variable x. This is still just sugar, but the unsugared version gets messy pretty quickly.

The big difficult in going from imperative to functional languages is thinking about data structures as immutable. You go from asking how do I change the value to asking giving this value, how do I construct a new value.

<comment><USER11> _In Haskell you can use do blocks like:_

Monads in Haskell were exactly the example I had in mind when I wrote my previous post. As you say, you can use 'do' notation in simple cases, but it's just syntactic sugar and the unsugared version quickly becomes unwieldy if you need more flexibility.

Edit: A good case study is the not-quicksort quicksort that gets used all over the place as a demonstration of Haskell's elegance. Something closer to a real quicksort is rather less tidy: [http://www.haskell.org/haskellwiki/Introduction/Direct_Trans...](http://www.haskell.org/haskellwiki/Introduction/Direct_Translation)

 _The big difficult in going from imperative to functional languages is thinking about data structures as immutable._

That's certainly one of the big jumps, but I don't think it's the whole story. You can do a lot with purely functional data structures, given a bit of time to get your head around them, but sometimes you might still have good reasons to work with mutable data instead. That can be very clumsy when shoehorned into a primarily functional programming language.

I'm hoping that one of the next big steps forward in programming language design will be providing much better control of externally observable behaviour, but _without_ forcing a purely functional style or requiring prohibitive amounts of boilerplate code. I'd like to program in a style that is declarative by default and provides powerful tools for working with functions, but also with the ability to break out of that immutable world in controlled ways as easily as writing imperative code and as safely as writing code with a good type system today.

<comment><USER12> > As you say, you can use 'do' notation in simple cases, but it's just > syntactic sugar and the unsugared version quickly becomes unwieldy if you > need more flexibility.

I've actually found that it's much better to compose monadic functions with (<=<) than use long do blocks. It forces you to structure your code much more appropriately.

</comment></comment></comment></comment></comment><comment><USER13> I see how this is interesting but I can't get over how the author says, "When contrasting this with Eric's video", but "Eric's video" is a different program than the novice programmer. Maybe this is me being too pedantic.

<comment><USER14> Not just a different program, a better one, and easier to understand.

It especially annoyed me when he praised Eric for going back to understand the function first, when that function isn't even present in the novice's program.

</comment></comment><comment><USER11> Previous related discussion:

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

</comment><comment><USER15> In light of recent mass surveillance uproars, the possibility of remote eye tracking technology is what really scares me. While the technological usage could be limited or masked, such attention detector and analyzer could give enourmous powers to those who have the behavioral models.

Very interesting reserach though.

</comment><comment><USER16> > he "compiled" the between function in his head

Really? How about "adequately understood the function and did not have to reread it". We are humans, not compilers. ;)</comment>


Bitcoin bad boy Charlie Shrem is attempting to buy up Michigan's waste industry - <AUTHOR> http://motherboard.vice.com/read/bitcoins-first-felon-charlie-shrem-wants-to-use-ethereum-to-buy-up-michigans-waste-industry <comment><AUTHOR> For those wondering why Michigan? Shrem's partner is a member of a family that is prominent in the waste management business in Michigan.

[https://www.grangernet.com/](https://www.grangernet.com/)</comment>


Mark Zuckerberg: An Entrepreneur's Perspective - <AUTHOR> http://roachblog.com/2010/05/31/why-mark-zuckerberg-is-a-hero-an-entrepreneur%E2%80%99s-perspective/

<comment><USER2> _While I understand that this is a serious debate, I have but one suggestion: If you don't like Facebook, don't join it! I'd like to remind you that Facebook is both completely free and voluntary. If you don't like the Privacy Policy, delete your account._

You know, if I had a dime for every time someone responded to a similar discussion by saying "well, if you don't like it, don't use it, 'cause nobody's forcing you to", I'd probably be a lot better off than I am.

It's not that it's an incorrect statement. On the contrary, it's almost always true. What bothers me is that it doesn't really contribute anything to the discussion. Is Apple doing the right thing with their anti-Flash iPhone policy? Who cares, nobody's forcing you to use iPhone or develop for it. Is the privacy of an average Facebook user steadily eroding or not? If so, why is Facebook doing this? Who cares, if you don't like their privacy policy, don't use Facebook.

 _Enough people doing that is bound to draw some of Mark's attention._

Why do you think so many people are making a fuss over Facebook's privacy issues? It's not just about one's own privacy settings, it's also about raising awareness. Sure, if I had real use for my Facebook account I could keep fiddling with my privacy settings until they're just right, instead of deleting my account. But just because those details will probably go over my 60+ year old mother's head, doesn't mean she will want everyone to have access to what used to be private or to what she expects to be private.

</comment><comment><USER3> TLDR: "Zuck is a cool guy. He's rich, too. Some people don't like him, but they're being silly. You should go read about him on Wikipedia."

<comment><USER4> This post has no real insight, and is written by a 5th grader for a weekend research project. I'm on the edge of my seat for the others.

Reddit has had more intelligent discussions. How is this on the front page of HN?

<comment><USER5> It's a low hurdle. Here's a front-pager written by a guy whining that his friends send him email with unpleasant fonts and colors.

<http://news.ycombinator.com/item?id=1395410>

</comment></comment></comment><comment><USER6> I think the worry is that we are already locked in and Facebook will turn into a Microsoft type company we'll be stuck with a system where it's very hard for anyone to compete effectively and innovate.

You have to least have an account to find out what most of friends and family are doing, so not having an account is not really a viable option for most. Saying you won't have an account on Facebook, at this point is like saying you won't have phone because you don't like the phone company and that's ok because you can use some alternative that not connected to the system everyone else uses.</comment>


H-1B Visas: Changes Coming with Donald Trump - <AUTHOR> http://blogs.wsj.com/indiarealtime/2017/01/24/h-1b-visas-how-donald-trump-could-change-americas-skilled-worker-visa-rules/ <comment><USER2> Many companies were founded by immigrants. First they have a student visa and then a work visa. Without that they just go back to their home nation and make they company there.

<comment><USER3> It's hard to imagine Sergey Brin founding Google in Russia or Jerry Yang founding Yahoo! in Taiwan.

</comment></comment><comment><USER4> > Eric Ruark, director of research at Arlington, Va.-based NumbersUSA, which > advocates for limited immigration, said Mr. Trump could use an executive > directive to tighten the U.S.'s Optional Practical Training, or OPT, > program.

> The OPT program gives foreign graduates in fields like science, technology, > engineering or math the right to find jobs in the U.S. for up to 36 months, > depending on their degree subject.

> Mr. Trump could roll the time limit back to the original 12 months, the > threshold until it was expanded under President George W. Bush in 2008, and > tighten the eligible fields of study.

Come study here, then GTFO.

> In addition, Mr. Ruark said the president could end a provision announced > under President Barack Obama in 2014 that allows spouses of H-1B visa > holders to work in the U.S.

Sigh.

I don't think the solution is "lets make lives shittier for skilled immigrants". Just end the visa at that point.</comment>


Designing a Good DSL - <AUTHOR> http://tonsky.me/blog/dsl/ <comment><USER2> Claiming that regular expressions are too terse is a bit much. There are only three (!) fundamental operators in basic regular expressions (four if you include parenthesis), with all other non-language specific operators being derived from that (ignoring precendence rules):

1\. concatenation, to append regex A or regex B: AB

2\. alternation, to select between A or B: A | B

3\. kleene star, to repeat A zero or more times: A*

4\. parenthesis allows specification of a sub-expression: (A)

The following are all derived/syntactic sugar:

[ABCD] -> (A | B | C | D)

A+ -> AA*

A{2} -> AA

A{2,4} -> AA(|A|AA) or A(A|AA|AAA)

A? -> (A|)

Just about everything else is implementation specific (if choice of special characters and available operators isn't already). That means you either need to be using the features regularly to remember them, or you have to look them up anyway.

Regular expressions are terse not because they are badly designed, but because by definition the description of regular languages is inherently minimal. It is part of their beauty. Without this minimalism, every tidy little one liner we have to perform some simple match becomes a multi-line specification in Backus-Naur form.

The world needs to get over this fear of regular expressions from ignorance and continued misinformation. They are not magic or impossible to understand. They are an elegant description of a very simple state machine which steps through a string one character at a time, nothing more.

Edit: corrected derivation of A{2,4} a la Twisol and jbnicolai.

<comment><USER3> Agreed. The problem is the risk of small, relatively hard to spot & nearly impossible to properly debug mistakes.

> A{2,4} -> AA(A|AA)

<comment><USER4> And this is why we have the syntax sugar.

<comment><USER5> That introduces problems too. If you try to use sugar like '+' with an implementation that doesn't support it, you don't get any sort of error. Instead you get a different expression.

Unfortunately, there's an inherent tradeoff between encoding efficiency and error detection. Notice that with the VerbalExpressions it would be trivial to return a useful error message if the 'at_least_one' pattern did not exist.

<comment><USER6> Perl 6 regexes attempt improve upon this situation by making regexes more like a regular programming language. That is it errs on the side of error detection rather than encoding efficiency. (It also adds features that would be difficult to add to Perl 5/PCRE regex design)

For a start if it didn't support using `+`, then any attempt to use it would generate a compiler error because it is not alphanumeric. (regex is code in Perl 6)

All non-alphanumeric characters are presumed to be metasyntactic, and so must be escaped in some way to match literally. Arguably best way is to quote it like a string literal. (Uses the same domain specific sub-language that the main language uses for string literals)

        / "+" + /   # at least one + character

It really is a significant redesign.

        /A{2,4}/    # Perl 5/PCRE
        /A ** 2..4/ # Perl 6

        /A (?:BA){1,3}/x
        /A [BA] ** 1..3/ # Perl 6: direct translation
        /A ** 2..4 % B/  # Perl 6: 2 to 4 A's separated by B

        /A (?:BA){1,3} B?/x
        /A ** 2..4 %% B/   # Perl 6: %% allows trailing separator

        /\" [^"]* \"/x     # Perl 5/PCRE
        /\" <-["]>* \"/    # Perl 6: direct translation
        /「"」 ~ 「"」 <-["]>*/ # Perl 6: between two ", match anything else
                           # (can be used to generate better error messages)

        ---

        # Perl 5
        my $foo = qr/foo/;
        'abfoo' =~ /ab $foo/x;

        # Perl 6
        my $foo = /foo/;
        'abfoo' ~~ /ab <$foo>/;
        # or
        my token foo {foo}     # treat it as a lexical subroutine
        'abfoo' ~~ /ab <&foo>/;

        ---

        # Perl 5
        my $foo = 'foo';
        'abfoo' =~ /ab \Q $foo \E/x; # treat as string not regex
        # Perl 6
        my $foo = 'foo';
        'abfoo' ~~ /ab $foo/; # that is the default in Perl 6

</comment></comment></comment></comment></comment><comment><USER7> I'd add a few extra points:

1\. Don't (unless there's an extremely good reason to do so). Ask yourself: is there a net benefit gained by forcing a developer to learn and use your DSL, ignoring their likely familiarity with general purpose languages that could solve the same problem? For starters, any application where humans won't be reading/writing a large amount of the DSL is probably out.

2\. Avoid anything that resembles natural language. If you're writing a true natural-language interpreter, you're not writing a DSL. If you're writing a DSL that looks like natural language, people will be tempted to apply the grammar rules they already know from that language, rather than the strict grammar of your DSL, resulting in frustrating errors. It's a whole lot easier to memorise the rules in a language of keywords and symbols, because you don't have to first banish your existing knowledge of natural language.

3\. Don't try to accomodate "non-technical" users performing intrinsically technical tasks. There's no point creating a "friendly" DSL over HTML and CSS if the people authoring in the DSL still require an in-depth knowledge of the box model, responsive web design etc. All you've done is kicked the can down the road and created a false sense of capability.

<comment><USER8> > 3\. Don't try to accomodate "non-technical" users performing intrinsically > technical tasks. There's no point creating a "friendly" DSL over HTML and > CSS if the people authoring in the DSL still require an in-depth knowledge > of the box model, responsive web design etc. All you've done is kicked the > can down the road and created a false sense of capability.

Should be #1 in the OP. So underrated.

</comment></comment><comment><USER9> Perl6 goes far beyond regular expressions.

[https://docs.perl6.org/language/grammar_tutorial](https://docs.perl6.org/language/grammar_tutorial)

[https://docs.perl6.org/language/grammars](https://docs.perl6.org/language/grammars)

Even with Perl5, if you're using too many regular expressions, you might want to check CPAN.

[https://metacpan.org/search?p=1&q=parse&size=500](https://metacpan.org/search?p=1&q=parse&size=500) (over 4k results searching for "parse")

In particular, Parse::RecDescent, Parse::Yapp, Parse::Lex, Parse::Flex, Regexp::Common, Net::IP, NetPacket::IP, ... really most of the things you'd want to parse from Apache::ParseLog to Parse::DNS::Zone

The inclusion of (not so) regular expressions in a language doesn't mean one needs to abuse them.

</comment><comment><USER10> Interesting article, though the title should perhaps be `How not to design a Bad DSL` since the vast majority of the advice is apparently what NOT to do.

<comment><USER11> If the no-go space is larger and easier to fall into, it makes sense to have a more detailed danger map. It might stop a lot of folks from even taking the journey, which unlike real journeys is proper choice. If you are making a DSL for your own enjoyment, don't transmute your joy into someone else's pain. If end users have real issues that your DSL will solve, by all means, make it.

</comment></comment><comment><USER12> Would anybody mind sharing links to good DSLs?

From Clojure I think hiccup is a good example.

[https://github.com/weavejester/hiccup](https://github.com/weavejester/hiccup)

<comment><USER13> Embedded DSLs for:

* implementing other DSLs - [https://www.red-lang.org/2013/11/041-introducing-parse.html](https://www.red-lang.org/2013/11/041-introducing-parse.html)

* description of visual interfaces and specification of 2D drawing operations - [https://www.red-lang.org/2016/03/060-red-gui-system.html](https://www.red-lang.org/2016/03/060-red-gui-system.html)

* low-level programming - [https://static.red-lang.org/red-system-specs.html](https://static.red-lang.org/red-system-specs.html)

</comment></comment><comment><USER14> I'd like to see a parser-generator built using these principles, as most of the DSLs for building DSLs are "bad DSLs", by this definition.

<comment><USER15> Arguably parser combinators satisfy the author's requirements, e.g. [https://github.com/Geal/nom/](https://github.com/Geal/nom/)

</comment></comment><comment><USER4> (EDIT: I replaced asterisks with <AST> in the pattern below, since HN doesn't have a convenient way to escape asterisks last I checked.)

> First, most of its syntax beyond the very basics like "X+" or "[^X]" is > impossible to remember. It'd be nice to know what "(?<!X)" does without > having to look it up first.

I realize regex can be hard to remember, but I think this is a little overblown. "(? ...)" is the general form of an extended group -- something for which "special behavior" occurs. The character sequence following that determines what the special behavior is. In this case, "<!" means "negative lookbehind": "<" for "lookbehind" and "!" for "negative". Compact, but mnemonic.

> [a-z]{3,10}://([^/?#]<AST>)([^?#]<AST>)(?:\?([^#]<AST>))?(?:#(.<AST>))?

Yes, this is very dense. But it's not really meant to be read at a glance -- URLs do not have an exceptionally simple pattern, and they have multiple parts, many of which are optional. You could write a recognizer for URLs explicitly, but I doubt it would be as immediately recognizable in full. I consider it more important to obtain a high-level understanding before a low- level understanding, and (for me at least) I can see that this regex matches URLs up front, setting my expectations for the details later.

I think a PEG or combinator parser would be more self-documenting, so I'm not saying regex can't be pushed too far. But it isn't nearly as unstructured as it looks.

> Many DSLs were designed to reduce amount of non-DSL code to the absolute > zero. They try to help too much.

I 100% agree here. A DSL should be laser-focused on doing one thing well. Any language should be composed of orthogonal features, each laser-focused; a DSL is just a language with a very small handful of features geared toward a specific domain. (Of course, ideals are rarely realized in full.) I particularly like GraphQL as of recently; it has a really nice feel to it.

I found an interesting paper [0] on design principles for DSLs while composing this comment. I've only skimmed it, but it looks quite nice.

[0] [https://arxiv.org/abs/1409.2378](https://arxiv.org/abs/1409.2378)

<comment><USER4> Incidentally, here's how I might write that URL regex with comprehensibility outweighing all else. Notice that I enable free-spacing [0], which can usually be enabled by passing a flag rather than embedding it in the regex. In Python, the re.X (or re.VERBOSE) flag does the job.

        (?x) # free-spacing
            (?P<protocol> [a-z]{3,10} ) ://  # http://
            (?P<domain>   [^/?#]* )          # google.com
            (?P<path>     [^?#]* )           # /path/to/resource
        (\? (?P<query>    [^#]* ))?          # ?id=123
        (\# (?P<fragment> .* ))?             # #section

[0] [https://www.regular- expressions.info/freespacing.html](https://www.regular- expressions.info/freespacing.html)

</comment></comment><comment><USER16> > Another non-verbose DSL example is Java date and time format string:

> "YYYY-MM-DD'T'HH:mm:ss.SSSZ"

Oh that crazy Java formatting date times using ISO 8601!

Although the author didn't really mention any good DSLs I do appreciate the tips in the second half.</comment>


Ask HN: How does one start and scale an open source project? - <AUTHOR> I'm a graduate neuroscience student, and while teaching myself JavaScript I'm starting to create a library for computational biology simulation. I have no doubt that building it on web technology can be useful to someone, and can benefit from other's input, but I'm very new to open sourcing? Any tips, guidance, or readings you can direct me to? <comment><USER2> I'm sure other people will be able to give better tips for doing the open sourcing and scaling up, so I'm not gonna touch that. I'll start with a different approach. I think the first important part is to forget the "scale an open source project" and just focus on "start".

Build a software that solves a problem you have. Preferably a single problem. Then make it good. Give it out to people you know in the same field or post it to relevant forums online.

After that, "open source" it. (You can put the code publicly on Github from the beginning but here I mean start promoting it to get users and collaborators.)

The motivation behind this sentiment is that all the extra stuff around this (maintaining the community of collaborators, replying to bug tickets, checking out pull requests) takes a lot of time that you should use in building the library first.

</comment><comment><USER3> Hey, what kind of neuroscience functionality is it? Because I am curious about what you said about having no doubt it will be useful to someone. Thanks

</comment><comment><USER4> Step 1. Post about it on HN Step 2. Include a link to your source code (through GitHub or something similar)

That seems to do the trick! I would also advise sharing it with your research colleagues, and those at other institutions. Consult them for feedback particularly because they have domain-specific knowledge.

</comment><comment><USER5> [https://liorpachter.wordpress.com/2015/07/10/the-myths-of- bi...](https://liorpachter.wordpress.com/2015/07/10/the-myths-of- bioinformatics-software/)

<comment><AUTHOR> thanks for the link. really useful insight</comment></comment>


Ask HN: Higher IQ? What are your hacks for assimilating? - <AUTHOR> There was another NH thread:
"People with unusually high IQ, why are you still unsuccessful?"
https://news.ycombinator.com/item?id=20722716
That links to:
https://www.quora.com/People-with-unusually-high-IQs-why-are-you-still-unsuccessful/answer/Susanna-Viljanen
It's a great, thorough and helpful answer. Understanding helps (e.g., alone in a crowd). But now what? How do you assimilate without selling out and dumbing yourself down?
For example, when I was younger I never read the sports page. I couldn't be bothered; until I realized such info gave me common ground with others, other I would normally effectively ignore.
But the struggle is real. It continues. What are your life hacks (?) for being more accessible and less island-y? <comment><USER2> I've seen people with high IQs be arrogant because they believe they are better. I've seen people with high IQs be extremely humble.

Guess who was better at getting along with others? Getting along with others has little to do with intelligence and a lot to do with attitude, which requires controlling yourself. Treating people with gentleness and kindness requires humility.

If someone really is highly intelligent, they should use that intelligence to first control themselves instead of blaming others for holding them back.

</comment><comment><USER3> Humility is a great start!

Humor, also. Amuse others with your wit. Don't be insulting, it's not necessary

Be willing to have your opinion discounted for a while (see, humility). When you turn out to have been right often enough they will come around. If it doesn't work out that way, hmmm, maybe you lacked some necessary knowledge.

Actual knowledge can often trump an ability to figure it out quickly. Pay attention to people with experience in a new situation, even if their CPU clock is running slower than yours. Respect their database.

</comment><comment><USER4> I've high IQ but I don't struggle neither I've difficulty dealing with anyone, even toddlers are very interesting to me.

Also i don't see IQ is as good metric to gauge anyone's intelligence. It measures something but that's all about it, it doesn't measure intelligence as whole.

There is no special knowledge being fed to me automatically other than recognizing some common patterns across varied things which i do often.

I don't think IQ makes me any different than any other person.

I am pretty well off yes, not super successful like many others but I've easy life.

I moved from South East Asia to US to India. Despite average IQ difference between these countries, I don't feel it as personal level even when I interact with random people on street.</comment>


Unifying the Value Universe - <AUTHOR> http://onthespiral.com/unifying-value-universe

<comment><USER2> Who else read this as "Unifying the Valve Universe" and got excited about a post to explain exactly how the Portal and Half-life timelines merge?

Good article, though.</comment>


Startups Must Hire The Right People And Watch Every Penny. Or Fail. - <AUTHOR> http://www.techcrunch.com/2008/03/08/startups-must-hire-the-right-people-and-watch-every-penny/

<comment><USER2> Necessary but not sufficient conditions. To get the complete recipe you need to add one more thing: to make something customers actually want.

</comment><comment><USER3> In a lot of cases you can partner with great people instead of hiring them.

To enhance ourdoings.com with online photo editing I just had to read Snipshot's API docs. To enable a super fancy comment system I just integrated with Disqus. I stopped hating slideshows when I tried piclens, and they're integrated too.

So follow his advice that the first employees must be perfect. If you can't hire perfect, find an alternative to hiring.

</comment><comment><USER4> Couldn't agree more.

The point about how some startups go from launching on 200k to raising 5mm and then spending 200k a month was right on. After closing a big round of vc funding it's so tempting give yourself a huge raise etc....and so deadly.

</comment><comment><USER5> I agree mostly but just want to add:

If your entire company is going to fail from just one bad hire, you need to re-examine your processes.

It's the nature of the game. Some people are more capable than others. Of course try to get the most capable people you can, but in between superstar and loser, there are a lot of people who can create more value than the total cost of hiring them. (counted in terms of compensation but also training time from other employees, botched tasks while they are learning the ropes, etc etc)

<comment><USER6> When your company has hundreds of workers, you're right it isn't going to fail because of one bad hire, although one bad hire can lead to slow bozofication of your workforce, I know companies where you can quite accurately predict how many years ago a person was hired based on his competence (there are obviously exceptions but as a rule the better an employee is the earlier he was hired).

But when your team is 2-5 people you just can't afford to hire people who have a relatively small positive net value you need the superstars or at least rock solid developers, anything else will hurt your startup. Productivity is diminished in large teams, so don't add a body to your count if isn't going to make a difference. Building a startup is hard enough don't hurt your chances by settling on anything less.

</comment></comment><comment><USER7> I strongly agree with 99% of this post. But I don't agree with the:

"Three weeks vacation? Not going to happen."

It doesn't cost you anything to offer a decent amount of vacation. That's probably the best way to avoid burning out your highly motivated hackers. Give them some time off when they need it and they'll come back with even more energy and drive.</comment>


Social Skills Bootcamp - <AUTHOR> http://justinmares.com/social-skills-as-exercise/

<comment><USER2> I think learning to tell stories is a huge leap forward. I used to have no idea about this, but over time have noticed that effective leaders can rewrite history or light up the path through the future with an effective story.

(On a side note, I'd totally pay for a social skills bootcamp! I bet there are a ton of tiny improvements they could teach most people within the first 30 seconds of observing them)

<comment><USER3> How much would you pay? Let's say something that taught you how to effectively enter and leave conversations in a positive light, basic body language reading to gauge your audience's interest, and maybe 10 or so basic conversational tools?

<comment><USER4> I would pay a grand or so a month if not more</comment></comment></comment>


The NASA Studies on Napping - <AUTHOR> http://priceonomics.com/the-nasa-studies-on-napping/ <comment><USER2> _But what data is this conclusion based on? One important study by NASA for the most part._

This is bollocks, for the most part. There have been plenty of studies done on naps, powernaps, short term sleeps. When I was going through uni in the 90s, the motor vehicle registry agency in my state was doing a lot of research in the area of powernaps. Later on I spent some time in sleep medicine myself, and studies here and there would filter through. This is not a notion reliant on one study with a small n.

I would have thought that a startup founder who bases his company on the premise of napping would have read more on the topic.

<comment><USER3> > This is bollocks, for the most part. There have been plenty of studies... my > state was doing a lot of research... studies here and there would filter > through... this is not reliant on a single study with a small n.

There is a missing piece of information in your comment. Does this mean the studies you've seen were contradictory? You mention there have been a lot of studies done about the subject but not the results. Can you elaborate on why you reached this conclusion?

I'm genuinely curious about what makes you think so -- the research I've been able to find all seem to corroborate the benefits of napping [1], and I've always been under the impression power naps were effective myself.

I wrote another comment here about how a small n can still produce surprisingly statistically significant results, but besides that it also looks like there are many more than one study on the topic.

> I would have thought that a startup founder who bases his company on the > premise of napping would have read more on the topic.

There is no reason to assume this article contains the entirety of the founder's knowledge about the topic. I for one think this write-up makes a much more compelling read than a comprehensive review of the academic literature. Of course, none of this prevents him from selling and marketing his product anyway...

[1] [http://en.wikipedia.org/wiki/Power_nap#Benefits](http://en.wikipedia.org/wiki/Power_nap#Benefits)

<comment><USER2> The author is making it sound like the entire notion of the benefit of power naps is based on a single NASA study. This is what I am railing against - it's not one 'landmark' study which suggests the benefits of power naps.

There's also been crossover study of naps and shift workers. The world of scientific napping is not underpinned by one NASA study, not even 'for the most part'.

 _There is no reason to assume this article contains the entirety of the founder 's knowledge about the topic._

Having had minor formal training and then employment in the sleep industry, both as a medical technician and later as an equipment supplier working with in-house clinical specialists in the field, I find it hard to fathom that someone who had a ton of relevant knowledge would characterise the conclusion that 'napping is good for you' as 'coming from one NASA study for the most part'.

<comment><USER4> But is it, or is not?

<comment><USER2> I don't understand what you're asking. Are you asking if the studies I've seen are contradictory, like pyduan first said? I thought it was relatively clear when I was saying that the science of napping isn't underpinned by one NASA study that there's more support than one 'landmark' study.

</comment></comment></comment></comment></comment><comment><USER5> This is interesting, but I wouldn't consider it a conclusive study. According to the original paper, the sample size is only 21 (12 napping pilots, 9 no- rest pilots).

<comment><USER6> Are pilots representative of the population? You could have 1000 pilots and it still wouldn't be conclusive...

<comment><USER7> True, but this isn't necessarily a showstopper. Unless you think pilots react to sleep differently or are grossly more/less sleep-deprived than everyone else, it's not _implausible_ to assume it generalizes. Every study has flaws, but rarely are they so awful the entire result should be discarded.

</comment></comment></comment><comment><USER8> The unit of performance in these studies is reaction time, which isn't a useful measure in a field like programming or design.

<comment><USER9> That is incorrect. There are also metrics regarding "microevents", which are points in time during which brainwaves momentarily exhibit the characteristics of the first stages of sleep. This is effectively a measure of how often the subject is starting to "nod off". The napping group showed far fewer of these events.

</comment></comment><comment><USER10> Does anyone find it surprising that the napping group had performance improvements _BEFORE_ they took their nap?

What's going on here?

[http://s3.amazonaws.com/pix- media/blog/539/Untitled.png](http://s3.amazonaws.com/pix- media/blog/539/Untitled.png)

<comment><USER11> Maybe because they knew they were going to rest soon, they could be more prone to be fully alert, a bit like the sprint runners do during the final lap, because they know they'll rest soon.

</comment></comment><comment><USER12> The easy way to avoid nap grogginess is to limit then to under twenty minutes.

<comment><USER13> How do you guys time this? Whether napping or sleeping it often takes me at least 30 mins to even fall asleep lol (sometimes longer). I will say though that I do get a good 9 hours sleep 95% of nights, so I haven't often felt a need to nap.

<comment><USER14> I was thinking the same. It takes me 30-40 minutes to fall asleep. When they are referring to a nap in these studies, does it mean full-blown sleep?

<comment><USER15> This post has a good explanation and some advises:

[http://danieltenner.com/post/32895447025/0017-how-to-nap- htm...](http://danieltenner.com/post/32895447025/0017-how-to-nap-html)

</comment></comment></comment></comment><comment><USER16> Interesting article. Cheers for sharing! A brain reset (power nap) should today be accepted / common knowledge as eating healthy food to stay healthy.

For power naps stay within your REM sleep. The duration varies from person to person tho. You don't need any sophisticated monitoring device whatsoever. When the down slope hits, do a Caffeine Nap - a cup of tea/coffee right before your powernap and in 20 or so mins when the caffeine hits you will be wide awake.

</comment><comment><USER17> But what about those of us who doesn't know where we are and what year it is, when we wake up from a nap? Does the results still hold for us? I am so disoriented after a nap that I am borderline deranged for several minutes.

</comment><comment><USER18> I've found that often when I feel groggy during the day. Taking time out to do 5 to 10 minutes of deep twisting back stretches will revive me almost as well as a power nap.

<comment><USER19> That's pretty interesting. These pilots, and I suspect most of us, spend almost all of their working time seated in a chair. I'd be curious to see a study of people whose jobs require a lot of physical activity, or even just standing and walking. Would a nap be as beneficial or as necessary? (I'm guessing yes, but that their alertness doesn't get as low to begin with.)</comment></comment>


First 4 bytes of the MacOSX Python binary spells 'CAFEBABE' - <AUTHOR> http://paste.pm/4eh.js 00000000  ca fe ba be 00 00 00 02  00 00 00 07 00 00 00 03  |................| <comment><USER2> yep. That's the magic number for "Fat" (multi-architecture) binaries. They contain a number of individual object files, which have the magic number FEEDFACE. /usr/include/mach-o/fat.h, if you're curious.

<comment><AUTHOR> I was curious actually, thanks for the insightful answer :)</comment></comment>


Why we procrastinate - <AUTHOR> http://nautil.us/issue/9/Time/why-we-procrastinate <comment><USER2> (January 2014)

More recent articles of the same title are different.</comment>


Show HN: Lama.io – Adblock Creative Manager - <AUTHOR> https://lama.io/faq <comment><AUTHOR> Hi hn, I've built this as a side project. It's still in early stage and yes, I know it's a controversial subject and these types of systems are often frowned upon here and in more technical corners of the web. This is basically just a simple tool to manage several creatives instead of set it and forget it "you're using adblock" type messages or other more complex ad-replacement or acceptable ads services that have been increasingly found across the web. It's mostly for hands-on publishers that are looking for new or better ways to engage their adblock traffic. I can answer any questions about the service or website.

<comment><USER2> How are you going to sidestep the first thing that will happen. That is your messages getting adblocked in the main lists themselves?

<comment><AUTHOR> Hi, not sure I understood what you meant by "messages" in this case but there are no predefined messages, customers can choose to show or write whatever they want. The system does use regular html classes to define zones and those could potentially get blocked on a list. The system allows customers to change those classes as needed.</comment></comment></comment>


CSSDesk: Dynamic CSS Sandbox - <AUTHOR> http://cssdesk.com/

<comment><USER2> Nice work Josh!

<comment><USER3> Agreed, and thanks. Two ideas:

\- A downloadable zip file for off-line work.

\- A 'save-this' button (bit of a frill, but ...)

P.S. and please take credit - no link I could see in the page, nothing obvious in the source ... ("thanks, mysterious stranger" ;-)

P.P.S. Ah - the subtle icon, bottom right: <http://pixelmatrixdesign.com/>

</comment></comment><comment><USER4> The first thing I tried to do was disable a css line a-la firebug. That did not work which saddened me. This is still pretty neat, and would be a cool way to do a mock-up. Very excited to see how (if) it progresses in terms of functionality.

</comment><comment><USER5> Yeah, this is super-impressive.</comment>


Facebook rolls out a new "Order Food" option in its main navigation - <AUTHOR> https://techcrunch.com/2017/05/19/facebook-rolls-out-a-new-order-food-option-in-its-main-navigation/ <comment><USER2> wonder when it becomes just a "buy" button.</comment>


If the Moon Were Only 1 Pixel – A tediously accurate map of the solar system - <AUTHOR> http://joshworth.com/dev/pixelspace/pixelspace_solarsystem.html?utm_source=digg&utm_medium=email <comment><USER2> Nice of them to add comments and not make the ride so boring. Scrolling speed is nice with the arrow keys.</comment>


Universal basic income and the end of the republic - <AUTHOR> https://thehill.com/opinion/finance/497244-universal-basic-income-and-the-end-of-the-republic <comment><USER2> My thought: Author pretends inequality wasn't a problem, paints UBI as connected to covid as a response. Has no comprehension of cascading feedback. Im not sure what the true solution is but UBI is the closest and best attempt, the virus has only accelerated the trajectory of the systematics at hand. UBI unlike other wellfare commodifies any instance and also puts pressure to generate more capital(it's a growth based economic mechanism rather than degrowth). Empowerment may be a side effect that people are banking on and not even comprehending how it may be beneficial to the ahuman sustainment of the market at this point.</comment>


Worth Seeking a Non-Technical coFounder? - <AUTHOR>

I am nearing completion of the technical & design aspects of my startup; something in the personal-growth space. I'm not starving, but not long on cash either.  The particular startup is really targeted at generating revenue, not growing fast and flipping.
I can think of a few reasons why bringing on a partner would help.
Moral support Share the financial burden Possible expertise in marketing or the self-help market Extra pair of hands dealing with customers and marketing tasks
On the down side, as a revenue startup the lighter the load the lower the bar for success needs to be. And to make it worth their while I'd have to give up quite a lot of equity.
Opinions? Alternatives? <comment><USER2> Moral support _and_ Share the financial burden are very strong reasons to give up quite a bit of equity.

The nasty problem I see here is the same as the usual big one for those seeking a technical co-founder: if you don't already know this person, what are the odds you're going to find a right one? This is something like a marriage without the usual benefit of dating etc. ahead of time and if you pick wrong it's very unlikely your venture will survive.

</comment><comment><USER3> Can you do some outsourcing for things like marketing expertise or help dealing with customers? Can you cut costs to address the financial "horizon" issue?

Using the marriage analogy, "shotgun weddings" sometimes work because the baby keeps people together. If this is not their baby (ie they weren't in on it from the get go), well, it looks a lot tougher to me to make it stick.

Good luck with this.</comment>


Good website idea someone should build - <AUTHOR> http://www.fivethirtyeight.com/2009/01/webpage-someone-else-should-start.html

<comment><USER2> whats the point? 6 months ago 90% of those big wig economists were saying everything is great and that you are a moron if you think there are any problems.

What would be better, is a site that tracks a person's prediction over a life time, so that people can know who to listen to

</comment><comment><USER3> It is a nice idea. Probably wrong for this crowd since it is mostly manual labor, i.e. collecting the info. It would be nice to collect statements etc. and then freeze the website, and then publish a retrospective in 4/8 years.</comment>


Google Options Put Masseuse in Crowd of Multimillionaires - <AUTHOR> http://www.nytimes.com/2007/11/12/technology/12google.html

<comment><USER2> Right place, right time.</comment>


Findings, August 2012 - <AUTHOR> http://harpers.org/archive/2012/08/0084022

<comment><USER2> And not a shred of scientific evidence to prove any of it!</comment>


Why Zynga's Success Makes Game Designers Gloomy - <AUTHOR> http://www.wired.com/magazine/2010/09/pl_games_zynga/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+wired%2Findex+%28Wired%3A+Index+3+%28Top+Stories+2%29%29&utm_content=My+Yahoo <comment><USER2> So I used to be a game designer in the very hardcore PC MMO world. I now work as a Lead Game Designer at Zynga. You know what? I'm not gloomy in the slightest. If I stayed in the MMO space, I'd be making the same games that I'd been making for the past 10 years, chasing WoW because that's where publishers want to throw their money. Facebook games on the other hand offered a different audience and a different set of rules to design against. It's MORE interesting work, to be honest. The are new and interesting challenges in terms of both gameplay and scale ("raid encounters" for 20? try upping that a few orders of magnitude!)

The whole "Oh god, Zynga is morally and creatively bankrupt" line is at least 6 months old at this point (and for a company that's only 3 years old, that's a pretty long time). Look at the recent acquisitions and releases... FrontierVille was made by Brian Reynolds's team (you know Civ 2, Alpha Centauri, and Rise of Nations, right? Yeah, that Brian Reynolds.) and is by all accounts quite successful. Zynga just bought Bonfire (ex-Ensemble, responsible for Age of Empires and Halo Wars). "Good" (more interesting, fun, higher production values, etc) games are slowly cropping up on Facebook, and more people on getting on board, not just because it's a perceived money train, but because it actually allows you to do something new as a designer.

For the first time in 12 years, my mother understands and enjoys the kinds of games I make. My aunts hassle me to add particular items to my game. Granted, I still haven't figured out a way to tell people what I do without them narrowing their eyes at me... (Previous: "You work on video games, huh? Like Grand Theft Auto, that game is so violent and bad for society!" Now: "You work on FarmVille!? I [love|hate] that game!")

Incidentally, two of the people quoted (Jesse Schell and Daniel James) both make very similar social games on Facebook.

<comment><USER3> To be honest, it doesn't really matter what personnel you have on board or whether you feel there's some moratorium on bad press (I don't know why the other commenter got down-voted, because you do really state that), it's about the games Zynga produce. The games that Zynga are designing are pretty much bankrupt in terms of enjoyment in and of itself. They're a Korean MMO grind, with the key difference that you have to force your friends into that grind, or pay up.

I really did enjoy Frontierville for the first week or so. There was something therapeutic about tending to my farm, hitting snakes, adding some new trinkets. It's the same pleasure centers as Animal Crossing hits. Then I need to build a building, which requires all sorts of tools, which you can either buy with real money, or get from friends. Those took a couple of days to acquire from my friends. "I'm glad I don't have to do that again" I exclaim. Lo and behold, it's revealed to me that if I want the next building, at my rate of tool acquisition, building the house would take _months_. My choice was "Pay up, spam more friends, or I dare you to quit." I quit.

Does it matter that a game designer I greatly admire was putting me in this ridiculous situation in his game? Actually, yes it does. It makes it burn _more_ when a man I respect is telling the press how great Zynga is and how much freedom he has, and then he's producing games like this. It's hard not to feel he's simply happy cashing pay checks, players be damned.

I'm not adverse to the idea of paying for games that are Freemium, I put a decent amount of money into Free Realms. But FR was careful to make the transactions in there not required: much of the game (apart from some jobs) was available to you, and that game design didn't require a microtransaction sword or whatever to progress. No money was required, which is the difference with Zynga's games.

Facebook games are a great new place to be. I have no chip about Zynga's Scrooge McDuck money bins, and respect them for their success, the metrics- based technology they have at the backend, and the amazing team they've managed to put together. But the products they produce are cynical and anti- player. And that's why people hate them.

</comment></comment><comment><USER4> Game wise, Farmville has the feel of nickel slots. You give up something of value, your spare time, for a chance at a reward. Since many view their time as low value, the reward is worth it. The interaction is based solely on luck. The buying of virtual goods helps people justify the time they waste on the game because it shows them that in game rewards have cash value.

I would really love to read a full blown social psych journal article on Farmville.

</comment><comment><USER5> Zynga depresses them because they don't make games to be fun, amuse, educate, or tell a story. It's all about the addiction and funneling factor to get users to pay. The 'normal' rules for app developers also do not apply, the founder even admitted to abusing every FB feature possible to grow.

<comment><USER6> You are just not the target audience. If Zynga games were not fun to everyone, no one would play them. Just because you do not find them amusing does not make them bad games.

I don't like the My Little Pony games aimed at 6 year old girls, but I won't say they are bad because I know I am not a 6 year old girl.

<comment><USER3> They're "bad games" by any usual metric bar with which games are critiqued, unless your metrics are "money made" and "addiction." But they're businessmen metrics, not the ones a game designer would use.

PopCap are definitely the company to look at here. They spent a decent number of years cloning smaller games, which was not to their credit. In the last 4 years or so, they've been creating amazing original IP. And those games are doing gangbusters with all sorts of audiences. You don't have to create bad games in order to engage new audiences, you just have to tap into what they are interested in.

<comment><USER6> What is the "usual metric bar with which games are critiqued"? I am pretty sure that is your opinion because there is no metric bar that all games are measured against.

Game reviews do not use a good game checklist to explain why a game is good or bad, they give their opinion. You can say Zynga games are bad, but supposing that your opinion should apply to everyone is arrogant.

<comment><USER3> There are plenty of metrics, like engagement, enjoyment etc. etc., but there is some very tangible metric bar by which games are measured, it's called peer approval.

By what metric are other art forms judged? How are the Oscars awarded to movies? Who chooses the winner of the Booker prize? Or the VMAs? Peer approval.

Zynga doesn't have peer approval from many game designers. This article highlights some dissenting opinion, but there's plenty more out there. Just Google it. Their infamous speech speech at GDC Awards show doesn't help their cause either. [1]

Note I am careful not to say "games reviewers" because reviewers are writing for their audience, and that core game audience usually does not intersect with Zynga.

[1]: <http://news.cnet.com/8301-13772_3-20002221-52.html>

</comment></comment></comment></comment></comment><comment><USER7> My favorite quote about Zynga, relevant to this discussion, is that "their motto is the exact opposite of Google's 'Do No Evil'". That's what makes me gloomy. They're like the spoiled love child of EA and Microsoft.

They have no scruples or creativity and no apologies to make for it.

<comment><USER3> Oh yes, that reminds me how much of Zynga's properties are ripped off from existing games. Farmville was a straight-up clone of Farm Town, PetVille was a clone of Pet Society... The properties that Zynga are most proud of are the same as the ones they didn't design.

<comment><USER8> Farming games actually have a pretty long history: <http://www.chinasocialgames.com/?p=400>

I think this type of game has occurred to many people. Back when I was doing coding for a MUD I was considering adding farming mechanics, because I thought it would be fun to come back later to the game to gather and sell the plants. More fun than the mining mechanic they had, which consisted of basically moving around the map and just typing "mine" over and over again.

But then I figured, who would care about farming when you can already kill monsters in battle. Instead I created a virtual sauna.

</comment></comment></comment><comment><USER9> Let me fix that for them:

"We're afraid because we make big-budget games, and Zynga has made people pay for low-budget games."

I've thought for quite some time that game budgets in the millions are getting out of control. (And movies, too, for that matter.)

Good controls, decent visuals and audio, and great plot and/or mechanics. That's what makes the best games. Big-budget games ramp up the visuals and skimp on the rest. I'm sick of that.

Not that Zynga has plot (at all) or mechanics, mind. But they're cheap enough and they make you happy, so it works. I broke my Facebook games habit about 6 months ago. Prior to that, I did 'donate' way more than I should have to a couple (non-Zynga) games. Eventually, the repetitive mechanics palled and I broke free of it.

Big-budget game companies need to learn from Zynga. They need to use the same techniques that compel people to play Zenga games, but in bigger, better games that actually have more. Instead of being scared or saying Zynga is breaking their market, they should learn and improve.

And some have been doing it for years. Achievements, collectables, upgrades, bonuses... Pokemon even has it as the slogan: "Gotta catch 'em all!"

Any game designers that are 'gloomy' over Zynga's success are flat failing to learn from the situation.

<comment><USER10> Not all of them make big-budget games - at least, "puzzle pirates" doesn't scream high-end 3D gameplay to me.

Also, there's a distinction between fun and addictive.

Finally, I'm not sure they are actually losing all that many sales - how many people playing Farmville would have paid for Neverwinter Nights?

<comment><USER11> _how many people playing Farmville would have paid for Neverwinter Nights?_

You just stumbled onto the real issue right there. All these people have been making amazing games, but they all appeal to the _gamer_ market. Zygna has found out how to reach the the traditional _non-gamer_. It might be a hard pill to swallow, but the truth is that games like Farmville appeal to the majority of people who would never really pay for games before.

<comment><USER10> > stumbled

Well, no, I was well aware of that argument. But I'll take it in the spirit it was intended. ;-)

</comment></comment></comment></comment><comment><USER12> Game developers hate Zynga for the same reason that real comedians hate Dane Cook: Uninspired, unoriginal (borderline theft), and a dilution of the craft.

Sure, you could chalk it up to jealousy of success, but the reality is that there are people out there who are in it for more than money, and sometimes it hurts on a visceral level to see mediocrity succeed wildly.

<comment><USER13> "Sure, you could chalk it up to jealousy of success, but the reality is that there are people out there who are in it for more than money, and sometimes it hurts on a visceral level to see mediocrity succeed wildly."

Mediocre is a relative term. What is this based on? To you it might mean graphics to me it might mean the storyline.

This happens in more than just the gaming industry. Look at how much attention instant youtube got a few weeks ago. The developer just slapped together some ajax using a pre-built API. As a developer, I could have written the same thing in a relatively short amount of time. Yet, it got him lots of attention and a job offer.

I also say the same thing about things like Django. Rather than knowing how everything works, developers are putting blocks of pre-built code together to build applications. I am almost certain the assembly guys were saying the same thing when C became popular.

</comment></comment><comment><USER14> I suspect many of the game designers quoted here actually have somewhat more nuanced views on the subject. Chris Hecker complained that his quote was taken out of context from a 1.5-hour interview: <http://twitter.com/checker/status/25917674678>

It's pretty lame tabloidish reporting, really. There could've been an article about this, and if the reporter actually conducted 1 hr+ interviews, he had the material to write one. But instead he cherry picked four quotes, slapped on a big image, and hit publish.

</comment><comment><USER15> As in many creative fields, a common goal for many game designers is to create a thought-provoking work of art that's also a runaway commercial success. Who wouldn't want to create the next SimCity, Minecraft, or Civilization?

But the harsh reality of the game industry often dictates that designers must choose between the two goals. And the harsh reality of having to eat and pay rent often dictates that one must prioritize the latter.

Zynga's success puts this tradeoff in the starkest possible relief.

</comment><comment><USER16> _In Zynga games, you're just trying to get more stuff. You're caught up in this junkie behavior, and you have to keep upping the dose. That has me terrified._

This exactly is what playing most MMO games is all about: the grind for stuff. I don't see a reason this should be considered that threatening to anything. The draw of MMO Games is the sense of accomplishment (next level, next piece of gear), and in any games now that've implemented achievements (Modern Warfare 2, Left 4 Dead, Quake Live, Starcraft 2 the list goes on forever) it's the same feeling of accomplishment when you get your 500th midair knife kill.

That's just the direction games are going. Give the user a a feeling of accomplishment.

I don't see anything warranting a gloomy outlook on games because of farmville, especially, since I don't see a huge overlap in target markets.

<comment><USER17> The level of actual social engagement in a game like Left 4 Dead (between the four human players) far surpasses that in a game like Frontierville, even if they both have achievements. Likewise, the level of depth and sophistication in something like Starcraft 2 is virtually impossible to compare. One could argue that Frontierville and the like are simply serving people's need for a simple, relaxing pastime - that's probably true - but as games, they still fall short. Facebook games, for the most part, exist as a space with the sole purpose of creating reasons to spam your facebook friends. I applaud Zynga for adding things that actually resemble game mechanics, but it's still kind of insulting to call them 'social games' when they're not particularly social and still barely games.

</comment></comment><comment><USER18> Talk about sour grapes. Industry standard game design has been terrible for many, many years and it's not Zynga's fault.

</comment><comment><USER19> It makes me gloomy because of the incentive advertising they included to drive traffic to affiliate offers. From what I remember, Mafia Wars had teeth whitening, diet pills and dating sites.

</comment><comment><USER20> Listening to Zynga execs talk, they don't really consider their products as games, but rather 'social experiences'. They rely on having people you care about playing the games and enabling communication between players through self-expression, gifting and other mechanics. They constantly compare themselves to email and other communication channels. A lot of that is obviously feel good fluff, but at some level, I think its based in fact and a lot of the opportunities they have to materialize rise out of this too.

</comment><comment><USER21> TL;DR - designers who have been making games for themselves lament that someone started making games for everyone else.

</comment><comment><USER22> c'mon, people. Classic music is less popular than pop-music. Hollywood movies frequently gather more monies than supposedly more highly sophisticated and artful ones. So what? Zynga isn't the first (and isn't the last) to make money off mindless simplicity of the populus.

(just don't get me wrong - i like Hollywood, especially "governator", and it isn't Bach that is in my earphones - pop-culture has it for each of us, i'm just too old for Facebook/Farmville)</comment>


Show HN: AlephBet – open-source JavaScript A/B test framework for developers - <AUTHOR> https://github.com/gingerlime/alephbet

<comment><AUTHOR> Author here. I realize this might cause a "yet another framework" reaction, but I tried my best to explain the rationale on the README and the related blog post, so please bear with me.

Would genuinely appreciate some feedback and happy to answer any questions.</comment>


The Truth About IT Consultants - <AUTHOR> http://www.pbs.org/cringely/pulpit/2008/pulpit_20080418_004737.html <comment><USER2> News at 11: Witless, soulless corporate management seduced by consulting firm. "I really liked the cool golf shirt and the free lunches," said Jerry from middle management, "but we really need to blame our failure on someone outside of the company. It didn't take long to realize consulting firm X was only interested in our money and this very cool golf shirt is still not worth the couple million dollars we spent [on consulting firm X]. I'm still trying to come to terms with the concept of a 'free market.'"

</comment><comment><USER3> Great parody of this column at <http://cringelysucks.blogspot.com>. Sure, lots of IT consultants suck. But Bob's thinking is, as usual, really lame. Read Cringely first, then read the parody.

<comment><USER4> I liked both of the lists. As usual, both of the articles could be elided and the lists would do the trick (of communicating 99.9% of the information present)

I'm tempted to hand Cringely's list (with "find yer best nerd" precaution prepended) to every last one of my clients. And then up my rate a little.

There are companies with whom I work where I would dearly love to implement a big-data-on-the-server, pay-as-you-go service model (eg. digesting microarray data, normalization, preprocessing, PCA) talking via HTTP (as deltas/resultsets) to a lighter-weight client. It's got to the point where any implementation of consequence basically has to be like this given the amount of processing required. I'd do it for free, for fun, if it weren't for the fact that I need that time to work on papers and other paying jobs... plus I like spending time with my daughter. It's one of those "shit, if I knew back then what I know now" situations that I figure old people find themselves in all the time. (Because I am now over 30 and, therefore, _OLD_ )

Once upon a time, I hated my job(s) and needed to be paid exorbitantly just to show up. Now I need to be paid exorbitantly to turn down the 'other' jobs that pay well but are less interesting. I guess that is a good thing. I guess it also means that I am no longer an 'IT consultant' because the 'IT' part of what I do is ancillary to the meat, which is algorithmic and (multi-)domain- specific. Hmm.

<comment><USER5> Are you working on data mining algorithms or the supporting infrastructure?

<comment><USER4> Both. I prefer the former; the latter pays better at the moment, I'm sorry to say. That may just be a reflection of the fact that I'm not yet where I'd like to be WRT the former.

<comment><USER5> _I prefer the former_

Don't we all...The latter is a solved problem with a million variants, the former is new ground.

Would you recommend any papers/books in that area?

<comment><USER4> In my area the most recent terribly-interesting paper was by the deCode people re: genetics of gene expression and inferring network 'modules' from patterns of activity. There are more theoretically-interesting methods to deduce such graph-based causal networks (eg. Bayesian networks sampled via Metropolis- Hastings MCMC, or the paradoxically 'dumber' but more viable-in-the-cloud methods using MLEM, of which I am a proponent) but the deCode guys have the advantage of actually producing useful results _right now_.

Overall (i.e. not restricted to my field of expertise) I would suggest that the biggest trove of ready-to-be-applied material on the Web is Andrew Moore's site at CMU: <http://www.autonlab.org/tutorials/index.html>

Possibly the worst-kept secret on the Web :-)

</comment></comment></comment></comment></comment></comment><comment><USER6> I love the Dilbert where Dogbert becomes a consultant when he figures out that it means you _con_ the customer and in _sult_ him.

</comment><comment><USER7> IBM rips a company off? Well _there's_ a surprise!

<comment><USER8> I. B. M., Watson men, partners of T. J.

In his service to mankind -- that's why we are so gay. Hey!

</comment></comment><comment><USER9> "I'm a consultant, aren't you?"

No.

<comment><USER10> Maybe you should start - it's easy money

:-)

</comment></comment><comment><USER11> I'm not sure this is news. Maybe outside of the industry.

When I was at Oracle, about 12 years ago, they used to take the poor performers that they didn't fire and send them to the consulting division.</comment>


Robert Haas: MySQL vs. PostgreSQL, Part 2: VACUUM vs. Purge - <AUTHOR> http://rhaas.blogspot.com/2011/02/mysql-vs-postgresql-part-2-vacuum-vs.html

<comment><USER2> The style of tradeoff taken, in both cases, really exemplifies the difference in engineering priorities for MySQL and PostgreSQL. MySQL optimizes for reads, at the expense of a higher write load. PostgreSQL optimizes more for writes, at the expense of in-line bloat and reads.

When you go to scale out a RDBMS, traditionally you do it with single-master multi slave replication, to scale reads. Today, that's not an inordinately hard task. Scaling writes is a LOT harder, and I think PostgreSQL made the better choice, in the end.

<comment><USER3> Plus, PostgreSQL built in master-slave streaming replication in release 9, so scaling out reads is even less of an issue.</comment></comment>


Show HN: Clean Up Your Mess, a Guide to Visual Design for Everyone - <AUTHOR> http://www.visualmess.com

<comment><AUTHOR> This is my 9-month project. From idea to product in only nine months! My hope is that it's useful for developers, as well as anyone else who thinks he/she doesn't have the design gene.

It's on github, too: <https://github.com/flyingmachine/clean-up-your-mess>

</comment><comment><USER2> I found this pretty helpful. I especially liked this part:

> If there's one thing you should have learned by now, it's that small, > unintentional visual differences are like sand in the engine of your visual > brain.

Are you going to continue adding to this?

<comment><AUTHOR> Yep I am. Next I will probably add a walkthrough, going through the process of improving a design. I also want to add more resources. I could also expand it to include info on color, balance, etc. For now I'm listening to feedback to see what it's really missing.

</comment></comment><comment><USER3> This reads like a distillation of years of "desktop publishing" articles I encountered in the early 90s. Good work.

<comment><AUTHOR> Thank you.

</comment></comment><comment><USER4> Great Read.Very Helpful.</comment>


Bitcoin could soon be in the museum of illusions: ex Director-General ECB - <AUTHOR> https://eng.ambcrypto.com/bitcoin-could-soon-be-in-the-museum-of-illusions-ex-director-general-ecb/ <comment><USER2> I think its high time we recognize bitcoin for the failure it is. I mean it was created ostensibly as a response to the perceived instability of reserve banking such as the fed. But it is far more unstable. There are many reasons for Bitcoin to be as unstable as it, including but not limited to, the fact that it is not a currency but a commodity, it lacks liquidity, its fungibilty is a huge problem, and the concept of PoW is incredibly flawed. The only thing keeping the experiment running is the village people who are afraid to admit they aren't as pure in their libertarian ideology if they admit that the emperor is fucking naked.

<comment><USER3> I don't think anything has been proven yet, and it won't be unless Bitcoin is widely adopted at some point. The naysayers calling it a failure are as misguided as the fanatics who claim it's going to replace gold.

We just don't have enough data yet.

</comment></comment><comment><USER4> Wait until the depression.</comment>


Show HN: The Sustainable List – all the good fashion brands at a glance - <AUTHOR> https://thesustainablelist.com/ <comment> Pete-Codes Nice list!

I might make the sustainability categories more prominent and have the filters closed as standard? It took a bit of scrolling to see the sustainability filters. Still, good work!

<comment><AUTHOR> Thanks a lot for your feedback! I'll add that to our backlog. We're aware of a few UI-related issue already and will hopefully be able to tackle them next month.</comment></comment>


Temporary code never is - <AUTHOR> http://troy.yort.com/temporary-code-never-is <comment><USER2> Fits with my experience: So I appreciate having it stated so succinctly and pithily - anything that helps me stay "on the wagon" of good (if not speedy) practices.

Just to add to his three good reasons one "bad" (but motivating) reason for not writing "disposable crap": you save the embarrassment of having someone else read the "stuff you never meant to leave in."</comment>


Ask HN: Where is a good place to pitch your idea and get feedbacks? - <AUTHOR> <comment><USER2> pioneer.app</comment>