Don't ask me for advice; buy me lunch instead - <AUTHOR> http://thenextweb.com/entrepreneur/2011/12/05/dont-ask-me-for-advice-buy-me-lunch-instead/ <comment><USER2> Arlo Guthrie tells a famous story about being accosted after a concert in 1972 by a skinny short guy who wanted to play him a song. Arlo said "How about you buy me a beer, and as long as I sit here drinking my beer, you can do anything you want?"

The skinny short guy was Steve Goodman, the song was "City of New Orleans", which became Arlo's biggest hit.

"That turned out to be one of the better beers of my life."

<comment><USER3> Great example. Would've done well as an example in the post.

</comment></comment><comment><USER4> I may be in the minority here, but I've received more than a few of these emails (people offering to buy me lunch to discuss an idea) and I always turn them down. Here are my reasons:

1) I typically go to lunch with my friends/coworkers and talk about projects we're working on together, and usually we come up with some deeper insight than we have together in meetings. I'd miss this.

2) My lunch time is my personal time during the day where I unwind from the morning's activities and take a break. If my brain has to "be on" for a deep conversation, I wouldn't get much of a break and might a) get tired, b) get sloppy, c) lose motivation later in the day.

3) Lunch is what, $20 tops? Closer to $10? My time is worth more than $10-20 for an hour's worth of conversation about someone's project. Say I have some interesting idea/insight/solution and we talk about it, and that idea/insight/solution ends up being really important to them. I ended up getting free lunch, they could end up making a bunch of money. The scales are not even.

I'm fully aware that other people (maybe most people?) would be excited about getting free lunch, so maybe I'm an outlier, but I thought I'd drop my two cents in.

<comment><USER5> His intention was to get people to be a little more considerate when asking for people's time, not turning relationships into dollar-per-hour transactions. We in the nerd community often have problems empathizing with others, and thinking more about turning a request (check out my new startup) into a nice experience for the other guy (how about free lunch?) would go a long way toward getting people to hear us out.

</comment></comment><comment><USER6> This is mind numbingly obvious. I'd even say that it doesn't really come to the best conclusion, because going out to lunch takes far more time than lunch at your company if they cater. Skype is the clear winner in efficiency.

Want to have more efficient office hours? Split an hour into three parts and post the times to ohours.org or any of the other such sites. I did this when I had a bit more time a few months ago and loved it.

A side note: one of my favorite social dances is knowing that the other person is going to pay for lunch or coffee but reaching for my wallet anyway. I'm happy and capable to pay for myself - hell I'd buy your meal if It makes you happy. But that moment when you start a lean and reach is the trigger to hear "oh, it is on me!" and it is golden

It is similar to bending forward when with a group of people at lunch to imply everyone should now stand and leave.

</comment><comment><USER7> This is a really interesting take on the subject.

I am almost completely opposite in how I evaluate these emails, phone calls and messages.

I was raised with an "I can do anything" mentality and so i reached out to probably dozens if not hundreds of people when doing my first couple businesses as nothing but a kid.

Truth be told the only real thing I had going for me is that I was too dumb to know I should have failed and too stubborn to give up when for all intents and purposes I already had.

When I get emails these days asking for help I usually try to gauge one thing.

How bad does this person want it?

If they truly care it comes off in their tone and if there is passion in what they are doing they are very likely to succeed whether the odds are stacked against them or not.

If they seem less passionate I typically dont really bother meeting with them or discussing anything much further.

But in kind of a pay it forward mentality I realize that I could never give back to the people that gave to me at least to the extent some of them contributed. So the best I can do is help those who are in need now.

Often someone will ask me to go to dinner and pick my brain about certain things or get my opinion on a subject, some just simply ask for help, but when I take those dinners I usually buy.

And then I spend the time with them telling them everything that other people spent their time telling me and some things I wish I would've been told.

What the author of this post should know is that you get out of life what you make. and sometimes the obvious answer to "What's in it for me" is the least helpful part of that entire equation.

I have learned so much by giving others advice and learning from their downfalls and strengths. Most of us can.

But some of us never will if we walk around worrying about what we will get out of it.

</comment><comment><USER8> Mark Suster's advice is directly contrary to this - he says to NEVER ask a busy person to lunch, since that's a large chunk of wasted (and in my experience, if the conversation isn't well, essentially captive) time.

[http://www.bothsidesofthetable.com/2011/10/13/never-ask-a- bu...](http://www.bothsidesofthetable.com/2011/10/13/never-ask-a-busy-person- to-lunch-heres-why/)

Where they crossover, obviously, is emphasizing making a request that considers the other person's schedule and needs when you are asking for something.

</comment><comment><USER9> Somebody should start a website were interesting people could sign up for free lunches and startups could pick and choose who they wanted to get feedback from.

<comment><USER10> That's an interesting idea, why don't you buy me lunch and we could talk about it some more? :)

</comment></comment><comment><USER11> The reason why I maintain a solid circle of honest friends in my tech community is that we exchange services and gifts rather than money.

I frequently tell oblivious entry level developers and aspiring musicians to show respect to those who consult them as friends and associates by giving back to people who give them substantial advice...

You would think this was common knowledge -- We have no problem in going to College and paying 100k+ for an education, but when someone mentors you or gives you honest feedback that greatly will or does immediately impact your success, it shouldn't be taken likely, nor overlooked as their obligation to teach us. Show people your thanks for honest help, its one of the primary rules in being successful.

</comment><comment><USER12> How cool that would be! To be a respected blogger, and get paid for my leads via lunch too. Instead of having to do footwork, interview startups, come up with inside information worth blogging about by talking to all those boring people.

<comment><USER13> So what? I don't know about others, but my parents are theater actors and the critics that go to their plays certainly don't pay the ticket price.

Just like the engineer gets paid $1 for the chalk and $49999 for knowing where to put it, he supposedly worked to be a respected blogger and now he's rewarded for that.

<comment><USER14> >he supposedly worked to be a respected blogger and now he's rewarded for that

Supply and demand makes that the situation that he can tell people if they want his attention they need to buy him lunch, what it doesn't do is make him any less of a douche for doing so.

<comment><USER13> But isn't that like saying an experienced software developer is a douche for asking for a salary higher than minimal living wage?

He brings value to the startups, seems perfectly OK to me to ask them to pay him back for his time, and a lunch is hardly expensive in exchange for the publicity.

Maybe it's some social convention I'm missing, but personally I have no problem with what he's doing.

<comment><USER15> I would put it in another context. It's like giving your developers a room to play games, read books and relax. You are basically attracting them by cool/nice things that aren't really expensive.

</comment></comment></comment></comment></comment><comment><USER16> There is this video of Kevin Rose advising startups on how to hack the attention of the "top guys" at conferences.

Instead of paying a fortune and getting 5 mins with say a Fred Wilson, Scoble or Mark Suster; you and your pals can club together and offer to buy them breakfast/lunch/dinner. You will end up having almost an hour having a decent conversation which they will almost remember.

The idea is not that they need your lunch money, but that you were smart enough to fit yourself in the context of pleasant things they still had to do.

Brilliant advise I would say.

Here is the video: <http://vimeo.com/6905398> (taking your site from one to one million)

</comment><comment><USER17> I want to +10 this. I get asked for advice/my feedback on lots of local startups and turn them down often because of the inconvenience to me. I'd go to a free lunch though most of the time.

</comment><comment><USER18> I've done this with a twist -- I prepare the breakfast myself. I've never had someone tell me that my French toast isn't the best they've ever had.

<comment><USER19> So do you invite them over to your house? Or do you bring breakfast to their workplace?

<comment><USER18> Only done it once professionally, at my house, which was convenient to them.

</comment></comment></comment><comment><USER20> In short: the corporate wining-and-dining culture we like to shun as corporate-fat-cat-ism otherwise? Obviously very practical and even hackers want to be wined and dined...</comment>


TED: Jorge Soto – The future of early cancer detection? - <AUTHOR> http://www.ted.com/talks/jorge_soto_the_future_of_early_cancer_detection

<comment><AUTHOR> Link to the product page: [http://miroculus.com/](http://miroculus.com/)

Another article: [http://www.wired.com/2014/10/miroculus/](http://www.wired.com/2014/10/miroculus/)

The TED talk claims it is open source, I am still looking to verify that.</comment>


Ask HN: What are the best strategies for a new grad engineer to build wealth? - <AUTHOR> I know about a few finance blogs but most don't address folks like me - single, no debt, but crushed by high rent and a mediocre 401k match.
I currently put in 28% of my pretax income into my 401k and have been for 4 months now (only started using it in December 2018). So far it is not much and I have a similar amount in my mutual fund portfolio, but I'm concerned I bought in at nearer to the peak of the market.
Since my net worth is already pretty mediocre, what can I do to increase it more quickly? I've considered switching jobs but I'm resigned to the fact that I can't get into Google or FB, and my current total compensation is unlikely to rise even to new grad G/FB levels.
Is it hopeless for me or should I keep pressing? <comment><USER2> 28% is huge. Good job for doing that. Not many more options here. Reduce expenses or increase income, but remember to live a little! Also noticed your username and your thinking that you "can't get into FAANG." A lot of interesting work is being done at companies that aren't Internet company superstars, and if you enjoy what you're doing, you shouldn't be so hard on yourself. Just my $0.02.

<comment><AUTHOR> I already work at a FAANG, the problem is my rent is absurd (~3k all in) and I have a higher tax burden than HQ. Also I work at the FAANG that isn't respected and pays poorly - feels like reading HN is just a series of microaggressions some days.

<comment><USER3> What are you renting for 3K? Seems to me your rent is your biggest problem here.

<comment><AUTHOR> A < 500 square foot studio. It's close to work at least.

<comment><USER4> Consider a room in a share instead? There's a reason that's the norm for the first 5+ years or so of a new grad's life in a major city.

<comment><AUTHOR> That's basically my only limit. I refuse to have a lower standard of living than my parents did when they immigrated to this country. And at best, I'd save $12k more a year, which is good, but that's like half of a FANG bonus.

</comment></comment></comment></comment></comment></comment><comment><USER5> From the tone of your responses in this thread, you are definitely comparing your financial situation with your peers of the same age but at the same time you aren't getting paid like them and you have given up pursuing similar opportunities like your peers (or you missed the boat..)

There are a few ways to increase your net worth:

Spent less, move outside bay area.

Go work at Faang, but make sure you a++ the interview to negotiate higher pay and make sure you have competing offers as well. Kinda like hoping the stars align.

You can work day job and make money after work. Consulting, babysitting, dogsitting, sell cracks, online business, mlm, sell dreams (buy my interview preps to score 6 digits job), etc.

Jokes aside, welcome to the new phase of your life. This is when nobody can tell you what to do and no one can help you to decide what's best for you. Only you can decide what's best for you.

</comment><comment><USER4> If the 401k limit is no less than 28% of your income, that's a fairly low salary, although not totally unreasonable for a new grad.

My suggestion would be to focus on getting to be an excellent engineer. Ask for raises at every cycle. Put in 18-24 months at your current job. Then you should be able to get significantly higher comp at the next one.

When you get a higher salary, don't increase your expenses.

As a new grad you're not going to become a millionaire overnight. Building wealth is a game of patience.

But you're already saving a lot, and that puts you ahead of the curve. Especially since you're doing it early in your career when it will have the most time for interest to compound.

Put in 10 years of career growth without spending growth and you'll find yourself socking away a whole lot of money. Put in 20, 30 years and you'll find that wealth has grown.

<comment><AUTHOR> The limit ($19k contribution) is around 17% of my pretax, I'm just frontloading it right now. A lot of my friends put in 90-100% into their 401k because they are already wealthy.

Our compensation cycle is 1 per year, and it's unlikely to get more than a COL raise at my company unless you have top 5% performance. I've tried getting other offers but the best I've gotten is still less than Google new grad (I now have ~1 yoe)

<comment><USER6> What do you mean by frontloading?

Also, that is a pretty solid salary for someone with 1 year of experience. Congrats!

<comment><AUTHOR> I'm putting in more at the start of the year to reach the cap faster.

<comment><USER6> What is your reasoning for doing so? That sounds like a lot of extra work for not a lot of benefit.

TBH it sounds like you are treating building wealth like a sprint. It is more like a marathon</comment></comment></comment></comment></comment>


First Real Test for Tesla to Come from Game-Changing Jaguar I-Pace - <AUTHOR> https://www.forbes.com/sites/peterlyon/2018/06/23/first-real-test-for-tesla-to-come-from-game-changing-jaguar-i-pace/#36c670192539 <comment><USER2> A couple of videos from Fully Charged on the Jaguar I-Pace:

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

[https://www.youtube.com/watch?v=3jj_w1PfSqk](https://www.youtube.com/watch?v=3jj_w1PfSqk)</comment>


Was NordVPN hacked or is it false? What Reddit has to say - <AUTHOR> https://medium.com/@douglasethando/was-nordvpn-hacked-or-is-it-false-what-reddit-has-to-say-fe7b2b507113 <comment><USER2> I'm thinking this breach will only draw more attention to NordVPN, ever since yesterday I can't browse Reddit without seeing somewhere something about NordVPN. Anw, I read this article and it's an interesting story, this article picked good examples from Reddit. TechCrunch article that started all this didn't even name a "security researcher" who blamed Nord for lack of security, then official Nord statement came out with an explanation how some Finish company messed up their security and kept it secret. GG, TechCrunch for showing that profits (they're owned by Verizon that also has a VPN, LOL) matter more than objective journalism.

</comment><comment><USER3> Who cares what Redditors have to say about this? I read the TC article, and I read the official Nord response. TL: DR - Verizon owns TechCrunch and Verizon owns a VPN as well. The breach that happened is very specific and does not involve any real danger to Nord users, but TechCrunch article stated the opposite without any proof. I think it's crystal clear what is going on here.</comment>


Show HN: Deep Learning and Neural Networks Course on AWS - <AUTHOR> https://superiorcourses.teachable.com/p/deep-learning-on-the-cloud <comment><AUTHOR> Hi, author here. Happy to answer any questions on how to set up a repeatable deep learning environment on AWS and run a feedforward neural network on real Vermont/New Hampshire real estate data to predict closing prices! -Sam

</comment><comment><USER2> No question, just wanted to say thanks. Pretty cool. Thanks for sharing. I enrolled and will have a look at it soon.

<comment><AUTHOR> You're welcome</comment></comment>


MS Internet Explorer Object Mem Handling and Valid Flaws Let Remote Exe Arb Cod - <AUTHOR> https://securitytracker.com/id/1041483 <comment><AUTHOR> [https://www.heise.de/security/meldung/Patchday-Microsoft- Ang...](https://www.heise.de/security/meldung/Patchday-Microsoft-Angreifer- attackieren-Internet-Explorer-4137351.html)</comment>


Show HN: Fluugi – Find cheapest multicity roundtrip - <AUTHOR> https://fluugi.com <comment><USER2> Is there only a limited set of cities available?

<comment><AUTHOR> Yes, so far there is. It's about getting more data from more airlines, now I get data only from 4 (Ryanair, Wizz, Easyjet, Volotea)

</comment></comment><comment><USER3> That's really cool and surprisingly cheap. UX is great as well, very clear and I could find what I wanted to see very fast.

<comment><AUTHOR> Thank you :) Glad it helped :)</comment></comment>


Trapped by the 'Walmart of Heroin' - <AUTHOR> https://www.nytimes.com/2018/10/10/magazine/kensington-heroin-opioid-philadelphia.html <comment><USER2> A problem that could easily be solved by simply prescribing them all heroin. This was successful when it was done in the UK ([https://health.spectator.co.uk/the-case-for-prescription- her...](https://health.spectator.co.uk/the-case-for-prescription-heroin/)) although of course the government eventually shut it down.

<comment><USER3> How do you think people would react to a major corporation selling heroin?

Is that going well for the existing companies selling OxyContin?

Is it going well for the people prescribed it, or are they abusing/ODing on that as well?

<comment><USER4> You mean for example Bayer? They lost the Heroin trademark the same time they lost the Aspirin trademark, due to the war. Both were a product of the acetylate all the things school of medicinal chemistry.

<comment><USER5> yes, for instance bayer, a company that still regularly gets trotted out to highlight the evils of pharma companies for among other things selling heroin one hundred years ago

</comment></comment></comment></comment><comment><USER6> Seems like it would be cheaper and safer to continue giving them the opioid derivitive medications they were already using until they are willing to go through treatment.

</comment><comment><USER7> The weirdest X of Y I've ever heard of...

</comment><comment><USER8> I understand why they are killing their dealers in the Philippines. How can you watch these people poisoning your city and suffer them to live.

</comment><comment><USER9> Holy shit. The town I'm in is becoming like this too... To think I was just about to head that way to escape this place...

</comment><comment><USER10> Addendum to _The Great Universal Basic Income Debate_ :

      A large portion of UBI funds will
      get dumped into places like this.

<comment><USER11> ...and? If UBI replaces money obtained from crime, then does the overall social cost rise or diminish?

We have a decent social security system in my country, and as I often like to tell well-off people whinging about their taxes being given to the "spongers" \- social security keeps society secure against poor people.

</comment></comment><comment><USER12> Philly Proud

<comment><USER13> The last time was in Kensignton was to buy a, probably hot, used bicycle when I was in grad school out of a weird artist space.</comment></comment>


The Most Terrifying Thought Experiment of All Time - <AUTHOR> http://www.slate.com/articles/technology/bitwise/2014/07/roko_s_basilisk_the_most_terrifying_thought_experiment_of_all_time.html <comment><USER2> The basilisk is one of those things that just never made sense to me, it's just a god in another form. I don't buy that a simulated version of me is a "me" I need to worry about, any more a clone is. If I'm cloned I won't wake up as two people, a new version of me will wake up and we'll be two different people. If my consciousness is replicated by a computer, a version of me will "wake up" that is a new person. I'll still be dead and gone, I won't have a perception of being reborn.

You can't blackmail me, unless for some odd reason I'm sure that a computer will torture programs based on me in some unknown future. For this to work there needs to be something like a soul, and then we're back to religion.

</comment><comment><USER3> Just as I finished reading this article, a book on a shelf fell over. Was that Boko? Or was that just physics and time set in motion from when that book was placed on the shelf?</comment>


Ask HN: What are you NOT enjoying about now working from home? - <AUTHOR> For those of you NOT enjoying the transition to remote/work from home, what about it frustrates you most? What do you miss most about the office? <comment><USER2> I'm a college professor. Overall, working from home is alright, but --

I wish I could see my students' faces as I teach. I'm used to looking, and being able to get some sense of when my students are confused or annoyed. Now, the only feedback I get is that which my students explicitly choose to provide.

<comment><USER3> are your students paying attention? How is the overall experience of elearning apart from the fact that you miss the physical interaction that you mentioned?

<comment><USER2> > are your students paying attention?

Good question. _I have no idea_. I no longer have any way to tell. (My software tells me if they're logged on, but not if they're actually paying attention.) Students have been asking questions, so at least some students are paying attention.

> How is the overall experience of elearning

Another good question, and again one I don't have an answer to.

In response to campus closures, many instructors have decided to radically change what they're doing. If they're teaching a foreign language or a laboratory science, or if their class relies on a huge amount of student-to- student interaction, then they have no choice.

I'm teaching a math lecture course and I've chosen to stick, more or less, to my original plans. And although I've repeatedly encouraged students to be in communication with me, for the most part I still don't have a good sense of how things are going from their angle.

My guess is that some students will finish strong, and that some will fall apart -- especially if the virus reaches their friends or relatives. The challenge for me will be to help out students who are going through an incredibly diverse set of challenges.

<comment><USER3> thank you for your answer! You have shared some really interesting thoughts! Although I am not involved with e-learning, I find it really interesting though and it's amazing to hear your opinions!

> Good question. I have no idea. I no longer have any way to tell.

Have you tried to make the courses a bit more interactive? Maybe with some questionnaires or story telling?

Have you reached their parents? Would be interesting to see how they handle the situation. I've read that some parents try to mimic schools at home, and they have created lockers, desks, and etc.. for their children so they can have the feeling of being at school!

How is the software performing? do you face any major issues?

</comment></comment></comment></comment><comment><USER4> I miss having clear separation between the time/space for work and time/space for leisure. I do keep the same hours but even my commute (provided that it isn't horrible) has the value of telling my brain "work starts now" in the morning and then "work ends now" at the end of the day.

<comment><USER5> This is where bike riding and running come in for me. Those are my standard "after work" activities anyway, so when quitting time comes around, I put on my shorts, grab my bike (or running shoes) and head to the trails. That, to me, demarcates that it is now "after work".

But, as noted in my other reply, weather doesn't always cooperate. But on a day like today, I may pick "going grocery shopping" as my line of demarcation. Worst case, I could get in my truck and just go drive around a little bit to achieve the same purpose.

</comment></comment><comment><USER5> There's not much I miss about the office per-se. Maybe a few small things, like having a Keurig style coffee machine at work, where at home I still use an old fashioned drip coffee maker, and setting that up and brewing a whole pot is more effort, when I just want my first morning cup of joe. First world problems though, right?

More meaningful, is that I don't necessarily like being stuck in my apartment _all the time_. I like being home, but I need to get out... so in the past, when working from home a lot, I would frequently go sit at Starbucks or the cafe at Barnes & Noble, etc., and work there some portion of the day, just to get out, be around other people, etc. Now, that's not even an option.

I do try to make up for it by doing more bike riding and running, which is an opportunity to get out. But the weather doesn't always cooperate. Take today, where it's gray, raining, and kinda chilly here in Chapel Hill. I probably won't go running or riding today.

Otherwise, it's nice to get back the hour and a half or so I'd otherwise spending commuting to the office each day, and not having to spend as much money on gas. I can also dress more casually when working at home.

</comment><comment><USER6> As others said, clear separation of home|work. Also, food is too close and remote desktop lags. But overall, working from home is much better than working in a cubicle with 500 people.

</comment><comment><USER7> I miss casual interactions while getting coffee.

Also exercise. All the gyms are closed and I haven't settled into a good routine yet.

<comment><USER8> I have dumb bells, a floor mat, and a fancy chin-ups bar, and plan on getting back to my workouts starting tomorrow morning. AthleanX has enough to keep me going until the gym opens again. But I do fear it'll be difficult to put in as much effort as I normally would at the irl gym.

I am hoping to learn a few new workout techniques to see what a difference they can make - basically turning the experimentation aspect into a motivator. ymmv.

</comment></comment><comment><USER9> For me it is a lot harder to hold presentations for groups remote than in person as almost all feedback is gone. Due to muting I don't even hear whether people are laughing at my bad jokes.

</comment><comment><USER10> Recently, I switched from iOS to Android. And I was missing Apple's Continuity feature. Where I could easily make or receive phone calls on Mac, get access OTPs, messages quickly on my Mac. I noticed I was ending up landing social media or hacker-news :D spending hours every-time I picked up my phone for a call(there're a lot in this work from home situation).

And then after spending a day, going through a lot of spam! I noticed this app on App Store called "Connecton". I'm surprised why was it hard to find it.

Putting out loud, so that I can save someone's time who needs this.</comment>


Army orders troops to stop using DJI drones due to cybersecurity fears - <AUTHOR> https://arstechnica.com/gadgets/2017/08/army-tells-troops-to-stop-using-dji-drones-immediately-because-cyber/ <comment><USER2> it's scary to hear that they were using them at all</comment>


Reddit through the ages: Most popular domains shared on Reddit from 2007-2015 - <AUTHOR> https://i.imgur.com/rHLkxjB.png <comment><USER2> Interestingly the top seven domains are now user generated content, while there were two old media (bbc, nytimes) and one probably in a similar mold (yahoo, I assume that was yahoo news) in 2007.

Also what is asiacollege.ir (it redirects to a222.org, so it has the number eight and nine spots)?

<comment><USER3> Apparently it's just spammers - reddit discussion [https://reddit.com/r/dataisbeautiful/comments/3mtkmw](https://reddit.com/r/dataisbeautiful/comments/3mtkmw)</comment></comment>


Why modern music sounds rubbish - <AUTHOR> http://www.theregister.co.uk/2011/09/07/loudness_wars_stfu/

<comment><USER2> The loudness wars have been fought since the early nineties at least. This is not news.

Modern music sounds like crap because it is crap.</comment>


SearchYC Presents: SearchAF and SearchNM - <AUTHOR> http://blog.searchyc.com/#searchyc-presents-searchaf-and-searchnm

<comment><USER2> I use SearchYC a lot and want to thank you guys for that feature, great work!

</comment><comment><USER3> _The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later._ </quote>

<comment><AUTHOR> Server restart--I'm still pushing out a few minor changes.

</comment></comment><comment><USER4> _"This Rails/Solr adapter is no longer supported, so I'm going to either move to a fully custom solution, or more likely shop around for a better supported Rails plugin. Recommendations are always welcome."_

Since you asked, I'd recommend Sphinx, maybe with the Ultrasphinx rails plugin (haven't used it but seems popular). Yeah, it's based on a different engine, but I never liked the hassle of running Java apps anyway.</comment>


Chat.center and Facebook Messenger .. continued - <AUTHOR> https://medium.com/@kteare/zuck-what-the-fuck-rebuttal-a-follow-up-19c915e89081#.s7yaua29f <comment><USER2> you are just making it worse. Meanwhile i have memorized your company and can easily avoid it in future.</comment>


IonMonkey now has Scalar Replacement and Branch Pruning optimizations - <AUTHOR> https://blog.mozilla.org/javascript/2016/07/05/ionmonkey-evil-on-your-behalf/ <comment><USER2> I'm working on some numerical code and this sounds like a relevant optimization. How can I tell if my code is correctly taking advantage of it?

More generally, how should I optimize JS at the level of an individual function? In C++ I would just inspect the emitted assembly code to understand how my code is being compiled. But the assembly seems hard to access in a JS world.

<comment><USER3> There's some information about how to collect (and visualize!) JS compilation artifacts in the IRHydra documentation [1]. It's v8 specific, though.

The other writings on that site are worth studying if you want to learn more about how v8 optimizes code [2].

[1] [http://mrale.ph/irhydra/2/](http://mrale.ph/irhydra/2/)

[2] [http://mrale.ph](http://mrale.ph)

<comment><USER2> Thanks for the links. Rebuilding V8 is a bit much though. Maybe this is an opportunity for a web service akin to gcc.godbolt.org

</comment></comment></comment><comment><USER4> What's the difference between IonMonkey and Firefox' SpiderMonkey?

<comment><USER5> IonMonkey is to SpiderMonkey as TurboFan[0] is to V8

[0] - [https://github.com/v8/v8/wiki/TurboFan](https://github.com/v8/v8/wiki/TurboFan)

<comment><USER6> I'd compare IonMonkey in SM to Crankshaft in V8. Ion was actually started in response to Crankshaft.

TurboFan is a new even-higher-tier, even-more-expensive-to-compile, but potentialy even-more-optimized compiler backend the V8 team is working on.</comment></comment></comment>


W3 CSS - <AUTHOR> http://www.w3schools.com/w3css/default.asp <comment><AUTHOR> I just realized that W3 Schools has a responsive layout framework. There are some components in here that save quite a bit of pain and leaves out some of the assumptions bootstrap makes.

Anyone else using it?</comment>


Announcing Amber.js - <AUTHOR> http://yehudakatz.com/2011/12/08/announcing-amber-js/ <comment><USER2> I know what you're thinking: great, another MVC library for Javascript. But wait: Yehuda knows what he's doing, it will be interesting to see what Amber includes.

As I've discussed before [1], the current discussion about MVC frameworks in JavaScript is very superficial, and meaningful API differences between, e.g. Spine and Backbone, are not sufficiently understood by people who are picking between them.

Yehuda has a lot of experience thinking about framework APIs from the standpoint of modularity, performance, and developer convenience.

He is absolutely right to emphasize that calculated properties and managed attributes on the model layer are the key to easily building JavaScript interfaces. The difference between nice MVC code and poor MVC code or jQuery soup is the idea that in each method data is only flowing one direction: nowhere are you manually updating both a UI and a data object. Two-way data flows make up the majority of the code in non-MVC jQuery-oriented code. In contrast, a robust model layer with lots of events is the best way to get code reuse and composition.

[1] <http://news.ycombinator.com/item?id=3248552>

<comment><USER3> I am new to web development and have just started using/learning javascript and so my knowledge is limited, to say the least. But isnt what you are saying easily achievable through backbone.js.(by calling a set on a model and triggering an event which the view catches and updates itself.)

<comment><USER4> Indeed. Bindings are just triggers that makes sure the data model is in sync with the view. It's just for convenience.

There is also a model binding plugin to Backbone: <https://github.com/derickbailey/backbone.modelbinding>

<comment><USER5> Just to be clear -- the Backbone.js "party line" is that automatic 2-way binding between views and models is usually undesirable.

The model contains the "truth" -- the current state of the app. Views should be bound to models and automatically update when the model changes.

But when the view changes, the reverse is not the case. You don't want every checkbox click, radio button twiddle, and keystroke to be causing your model to change ... thereby emitting changes which may cause other pieces of your app to re-render, changes which may cause Ajax requests to persist the model state to the server, and so on.

Instead, most apps have a "save" button for some changes, a mouse click for others, or drag and drop, or a gesture, or an "undo" link.

It's much more convenient and flexible to allow your app to react to DOM events as it needs to, instead of having specific model attributes hard-bound to concrete DOM elements. ... that said, if the latter is your cup of tea, there's a plugin for that.

<comment><USER6> It took me a while to figure it out, but the model concept in Backbone doesn't completely correspond to the model concept in Amber.

Backbone, at least as I practiced it, has a model that very closely corresponds to what goes over the wire. You observe stuff on that, you react to events, the event observers react and update the model and as a result the model is sent over ajax.

Amber, again as I practice it, has a model that corresponds to the complete application state of a particular component of the page. If you have a checkbox that doesn't 1-1 match with something you'd send to your server, you create an attribute on your model purely to track the state of that checkbox and wire up observers to update the appropriate "real" attributes you're sending to the server. This is not immediately apparent when looking at the two frameworks but I find the difference to be crucial.

I started using backbone the day you open sourced it since I had a personal version of more or less the same thing that was twice the code and less elegant. I found that it was fantastic as long as you could do idempotent DOM updates (i.e. innerHTML) but got lost as soon as I wanted to start adding sub components that needed to be initialized and I was back to dealing with a lot of event twiddling and dom manipulation for updating the view. I believe the split in state between the DOM and application model causes this complexity which is avoided in Amber by having all client side application state in one place. I think I could apply the same ideas in Backbone but I haven't tried since switching over.

<comment><USER5> Neat. Do you have any open-source examples of this simpler "client side application state in one place" up on GitHub? I'd love to take a peek.

I think that I'd tend to agree with your interpretation -- you write:

        > [In Amber] If you have a checkbox that doesn't 1-1
        > match with something you'd send to your server, you
        > create an attribute on your model purely to track the
        > state of that checkbox ...

That sort of approach would be against the Backbone "party line". A large part of the point is to have your canonical state for a given resource in one place: the model. If you now have both "model" and a "view-model" for the same resource, one of which has been adopted to be more checkbox-y, just so that its attributes correspond more closely with the DOM ... it would be a shame.

<comment><USER6> > Neat. Do you have any open-source examples of this simpler "client side > application state in one place" up on GitHub?

I do not. I plan on writing a blog post on this topic within the month that'll have examples. I'll ping you on twitter when I post it.

In the meantime, the Sproutcore todos app has a simple example of this:

[https://github.com/sproutcore/todos/blob/master/js/app.js#L2...](https://github.com/sproutcore/todos/blob/master/js/app.js#L24)

The allAreDone propery. It's not something you'd have in the canonical data you'd send to/from the server but exists as a property so it can be observed and so the template bindings can manipulate it.

> If you now have both "model" and a "view-model" for the same resource, one > of which has been adopted to be more checkbox-y, just so that its attributes > correspond more closely with the DOM ... it would be a shame.

The model is more checkboxy but the checkboxy bits are initialized from the canonical bits and your sync equivalent has to strip them back off. This is annoying but less annoying than DOM twiddling.

<comment><USER7> Link is now <https://github.com/amberjs/todos/blob/master/js/app.js#L24> because of the re-branding.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I guess I'm excited that a community figure is forking/creating/updating a new-ish Javascript framework and I should focus on AmberJS in my comment, but...

I can't help but feeling that the oh-so-confusing situation with SproutCore just got more confusing. I, like many others, tried to start using SproutCore and found it to be a poorly documented jumble of code. Fortunately, SproutCore 2.0 was going to fix a lot of that. Only now it isn't. Do we have two half- baked, related frameworks? Are they kinda ports of each other? Is SproutCore 1.x now deprecated? And how confusing will it be when SproutCore 1.x upgrades to a not-AmberJS SproutCore 2.x?

This smells of politics/investor-meddling/internal-disagreements/something to me: fresh, innovative, though-derivative take on an existing codebase is forked out of the original company and is moved under another company (Tilde). Something seems amiss.

<comment><AUTHOR> "Fortunately, SproutCore 2.0 was going to fix a lot of that. Only now it isn't. Do we have two half-baked, related frameworks? Are they kinda ports of each other? Is SproutCore 1.x now deprecated? And how confusing will it be when SproutCore 1.x upgrades to a not-AmberJS SproutCore 2.x?"

SproutCore 2.0 _becomes_ Amber. We'll be moving the code into the amberjs organization today. The SproutCore folks, who are now focusing on native-style applications, will be carrying the torch on the (not deprecated) SproutCore 1.x.

</comment></comment><comment><USER9> A little off-topic, but, how are developers staying up to date in the JavaScript community?

I've been an observer of the JavaScript eco-system and it is changing so rapidly, particularly in the MVC space (i.e. SproutCore 1.xx, SproutCore 2.xx, BackBone.js, Spine.js, Knockout.js, etc etc).

It's so easy to get stuck in analysis paralysis. Is there a discussion list or a website that can help make some decisions for my next hack project?

I'm coming from a heavy backend background and I think the JavaScript MVC space warrants a hack-day project :)

<comment><USER10> Pick one that seems cool. Build something with it. Share it on HN; you will get comments like "Cool-- but why are you using X instead of Y?"

Repeat using Y.

<comment><USER11> I'm not sure why you are getting downvoted. Although I don't feel you necessarily need to share it on HN, the best way is the build some simple apps and find out for yourself what the libraries are all about.

<comment><USER10> It's not downvoted right now, so I think most people get what I'm saying. I think it's important to get feedback from the community, but I agree you don't need to show everything to HN, as most random projects won't get a lot of attention here-- and I think you've picked out my real point that no blog is a substitute for getting your hands dirty.

</comment></comment></comment></comment><comment><USER12> I thought this was going to be about <http://amber-lang.net/> , smalltalk on javascript. Another project worth checking out.

<comment><USER13> +1 that is very cool, thanks.

</comment></comment><comment><USER11> Is it still in beta? Are the core objects going to be built up further (to their sc1 levels) or left sparse as they are now? Is it going to get a full set of guides and object documentation?

I recently tried out SC2 (now Amber, I suppose) and I had a "Wow this is cool!" moment immediately followed by a "Wow I can't do shit" moment due to lack of documentation combined with the steep learning curve. I had to put the project on hold; I hope the framework gets some serious love in the next couple months.

</comment><comment><USER14> Maybe it's just me, but I find this idiom incredibly gross:

      var prop = model.get('prop')

It seems much more elegant to write:

      var prop = model.prop()

You can do the computed properties and binding thing the same way, it's really just a small difference in the model API.

But really, what I'd love to see is more model-agnostic tools. Why do I have to buy into SproutCore or Backbone's model implementation just to use the other features?

<comment><USER15> The advantage of using accessors is that your implementation can switch between static properties and computed properties and the consumers of your API don't have to know which is which. This is called the uniform access principle and ends up being extremely useful.

For example, imagine you have an Store object that saves the tax rate:

      Store = SC.Object.create({
        taxRate: 0.0895
      });

Since this is a static value, I don't technically have to use an accessor. But imagine my state implements a tax holiday, and so for one day per year, the tax rate is different. In Amber, this is a simple change:

        taxRate: function() {
          if (this.get('isTaxHoliday')) {
            return 0;
          }
          return 0.0895;
        }.property()

Instead of trawling my codebase to references for this property and changing them to method invocations, because everything goes through get(), I know the change will be transparent. It's this transparency that leads to very maintainable web apps.

Some people object to the extra method invocation, but I think the expressiveness it gets you is worth it. As soon as proxies land in JavaScript, we'll add support for them so you can use the dot notation and still get the same functionality.

<comment><USER14> I don't think you really read what I wrote code-wise. I'm all for using accessors, that's why I wrote:

      var prop = model.prop()

Note the parens there. I just like giving each accessor a unique method name as opposed to getting at all properties through a single get() method.

<comment><USER15> Sure, but then you have to create a function for each property, even if it's a number or a string. Those bytes add up significantly in large applications.

Additionally, specifying the property as a string allows you to implement "unknown property" handlers, which is another extremely powerful idiom.

<comment><USER16> This might become more common when Proxy is supported more widely in JavaScript implementations.

[http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxie...](http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies)

</comment></comment></comment></comment></comment><comment><USER17> Exciting! It really does make sense to rebrand SproutCore 2.0. As a (light) user of both 1.x and 2.0, I completely understand the change. So much has been simplified -- the barrier to entry has dropped considerably, and the boilerplate factor is basically gone. Yehuda and Tom have done a great job with SproutCore, and I'm excited to use (continue using) Amber in the future.

</comment><comment><USER18> "If you played with SproutCore and liked the concepts but felt like it was too heavy, give Amber a try. And if you're a Backbone fan, I think you'll love how little code you need to write with Amber."

Sold! You read my mind there, Yehuda.

I don't _exactly_ know why, but I'm excited by this. Heart beating noticeably faster excited. I'll be playing around with this on the weekend.

</comment><comment><USER19> I wrote about the future of SproutCore 1.x here: <http://dl.dropbox.com/u/323974/Future%20of%20SproutCore.pdf>

<comment><USER20> hm, so does this mean a fork into 2 different development environments?

i.e.: sproutcore.js/blossom - "desktoppy" MVC framework with HTML5/js as a display layer

amber.js - "web-appy" MVC framework with HTML5/js as a display layer?

*edit:

<comment><AUTHOR> "Blossom will use the GPLv3 license, with commercial licensing similar to the Sencha model."

I don't have a clear idea about what's going on in the SproutCore community, but I don't think this has universal support.

One of the reasons we rebranded to Amber is that our codebase is inspired by SproutCore 1, but it is a complete rewrite, targeting a smaller file size and web-centric development.

All of the fragments of SproutCore 1.x target native-style applications with a ton of JavaScript, while Amber targets ambitious web-style applications using HTML and CSS for the presentation layer. Amber apps don't have much in common with SproutCore 1 (or "blossom") apps, so a clean naming break felt like a clarifying thing to do.

<comment><USER19> Blossom is a commercial product, it's not part of the proposed SproutCore.js path forward for SproutCore 1.x.

It is, however, API-compatible with the MIT-licensed view layer (called "Classic") in SproutCore.js.

See the paper for more details.

</comment></comment></comment></comment><comment><USER21> The biggest problem for me with any JS framework I've tried in the past is that it doesn't give an easy way to divide code into multiple code files. For me personally, I find any single file/module/class that is more than a few hundred LOC to be difficult to read. For this reason I've usually rolled my own frameworks. Does Amber.js address this?

<comment><USER22> Cappuccino's @import does this really well: it is both asynchronous and blocking. In other words, having three @imports one after the other will all load in parallel (without having to explicitly request it, even if they are separated by other lines of code), but the code itself will not execute until the imports are done:

        @import "one.js" // loaded in parallel to the other two
        @import "two.js" // loaded in parallel to the other two

        code code code // this is run only after one.js and two.js (but not three.js) have been loaded and run

        @import "three.js" // loaded in parallel to the other two

<comment><USER23> Very nice! Just a note: that seems to break some things that Ruby developers take for granted, like importing stuff conditionally, or importing a bunch of files in a loop. Or is there some other way to do that?

<comment><USER24> There are JavaScript APIs in the loader you can call directly, but they will be asynchronously loaded _and_ executed (so you'll need to pass in a callback)

Basically the only way to get this asynchronously loading / synchronously executing behavior is to statically analyze your "root" module for dependencies and load them (and their dependencies, etc). Once they're all loaded you can begin execution and synchronously execute every module as they're imported.

FYI CommonJS (not AMD) loaders for the browser do the same thing to avoid synchronous XHRs that will cause the UI to hang.

</comment></comment></comment></comment><comment><USER25> Good news. I wonder though, what will happen to Sproutcore? My former company build a huge application based on 1.4 (at that time), and now they're kinda left in the rain. Does anybody know when or if all the Sproutcore 1.x changes that Apple made for iCloud/MobileMe make it back into SC 1.x?

<comment><USER26> There are three contingents right now. Facebook (SC2/Amber) wants to make rich web pages. Tilde (SC 1.7+) wants to continue the Strobe direction of deploying client side web applications in different contexts. Erich Ocean (1.4 fork) wants to go back to his original philosophy of creating applications that can be deployed on the natively or on the web. The primary break Erich Ocean wants to make is to drop templates and construct interfaces in the desktop / Cocoa style, not a mixed HTML templating one.

So there are still core folks working on 1.x, but in different contexts.

<comment><USER27> This sounds like a broken development community.

<comment><USER19> It is, but it's being fixed. I expect the situation to be __very__ different by JSConf 2012.

It's been clear where SproutCore has need to go since 2009, but there hasn't been the support to do that, due to the various personalities involved. Those people have moved on, and now SproutCore can do what it's good at: building fast, desktop-style applications that run in a web browser.

Things haven't looked as positive for SproutCore in two years. I pumped.

</comment></comment></comment></comment><comment><USER28> If the people developing Amber are reading this and I'm sure they are I hope they take away the message that the community wants better documentation, examples, tutorials, and use cases. It's not features, abstraction X, Y, or Z, it's support!

</comment><comment><USER29> I tried using SC2 (aka Amber), while it has a lot of potential and I love the powerful binding mechanism it has, it simply lacked documentation and support. I hope Amber has tackled this issue.

</comment><comment><USER30> Why anybody thought it was a good idea to replicate desktop applications verbatim on the web i dont know, the era of composing GUI's from complex fully featured widgets is dying.

Declarative presentation in HTML/CSS coupled to JS (or better CS) is the right layer of abstraction for building GUI's for most applications in the foreseeable future.

Amber.js looks very interesting, i hope it paves a new wave of client frameworks that concentrate on state sync between client/server (and multiple clients) with some simple binding to presentation.

<comment><USER31> HTML was made with documents in mind. Ever since the web's inception HTML has been pushed beyond its original design specs and now people are writing applications in it (actually they have been since CGI). That interfaces continue to evolve and even replicate "native" interfaces shouldn't be a surprise.

As far as the "right" abstraction on the web... this too is evolving and highly dependent on your application. Are you curating a collection of hyperlinked documents? Or are you writing a drawing application?

If your answer is closer to the latter than the former, then the analogy you're looking for is something more like Postscript, where HTML and Javascript serve as a display language for an output device (a browser), driven by an underlying application.

</comment></comment><comment><USER32> I certainly hope this doesn't splinter the community. Moving the version up, then just forking, seems like it'd do just that.

</comment><comment><USER33> Can someone explain how far along this is on the spectrum of creating a constraint-based UI toolkit like OpenLaszlo or (I think) Flex? Constraint based programming is amazing for the view tier, and I've been waiting to see if someone comes along and builds one comparable to the Flash based ones that have been around for years.

</comment><comment><USER34> Will it be possible to incorporate something like this into Node.js? I know it can be done with something like Backbone, and does it provide any distinct advantages over Backbone that would be worth investing the time in this library?

<comment><AUTHOR> A few months ago I showed a demo at a meetup of using Amber in node. The main benefit of Amber in a node environment is the way it abstracts asynchronous behavior through bindings and observers.

I could easily imagine an Amber object representing a File in node, for instance, allowing other objects to bind to properties like mtime, etc.

In my demo, I used socket.io to update an HTML page whenever one of those properties changed.

<comment><USER34> Thanks for responding. Do you have a video of the demo?

<comment><USER35> Hi - here's a video of the meet up and a link to the demo Amber-on-NodeJS code [http://joubert.posterous.com/yehuda-talking-about-amberjs- sp...](http://joubert.posterous.com/yehuda-talking-about-amberjs- sproutcore-20)

</comment></comment></comment></comment><comment><USER36> Is there a way to use SproutCore without the command line programs like sc- init or sc-server, and without it forcing a directory structure on you?

I like the idea of SproutCore, but I really just want to do <script src="sproutcore.js"> and have it get out of my way from there. YUI seems to be able to do this and it seems even larger than SproutCore, recently including MVC in its "App Framework". Of course, you need to bring your own templating, but even then that's just another JavaScript include.

Or am I missing the point of SproutCore? What is it adding that, say, YUI or Dojo isn't, that it requires so many programs?

<comment><USER6> The sc-init and sc-server are Sproutcore 1.X. Sproutcore 2.X (now Amber, what we're discussing here) works exactly like you'd want:

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
        <script src="js/libs/sproutcore-2.0.beta.3.min.js"></script>
        <script src="js/app.js"></script>

</comment></comment><comment><USER37> It seems like new JavaScript frameworks are popping up every week.

I think Google with GWT and Eclipse less so with RAP had the right idea. Come up with technologies that abstract away the need to touch JavaScript directly. Just Java (or I suppose C# could work) on the client and the server means the developers are more in sync.

I'm more on the back-end so my perspective is more from the side lines, please don't read too much into it.

<comment><USER38> Some people actually like writing javascript ;^)

<comment><USER37> I get it, it's cool, maybe it's jealousy I'm experiencing.

</comment></comment></comment><comment><USER39> It looks like it's actually called ember.js. <http://www.emberjs.com/>

<comment><USER40> Indeed, for those of us who missed it, they had a poll: <http://news.ycombinator.com/item?id=3335916> and Yehuda announced the change yesterday: [http://yehudakatz.com/2011/12/12/amber-js-formerly- sproutcor...](http://yehudakatz.com/2011/12/12/amber-js-formerly- sproutcore-2-0-is-now-ember-js/)

</comment></comment><comment><USER41> I couldn't help but think about AngularJS while reading this article. (<http://angularjs.org/>) I am not sure why it isn't as popular as other JavaScript frameworks like Backbone.

<comment><USER42> AngularJS is ridiculously good so I'm not sure either.

For those who are unfamiliar: Angular examples are about 1/4 the size of backbone equivalents. I'm working on an angular version of the most recent peepcode backbone cast. It's about 1/5 the code size, and available here: <https://github.com/ludicast/angular-peepcode-todo>

</comment></comment><comment><USER43> So SproutCore 2.0 is being renamed Amber.js?

<comment><USER44> Yes.

</comment></comment><comment><USER45> Is this like Backbone?

</comment><comment><USER46> Amber looks to be getting awesomely close to a CSS/HTML version of Flex.

</comment><comment><USER47> The Amber claim is "if you're a Backbone fan, I think you'll love how little code you need to write with Amber".

Can anyone explain the differences between Amber and Backbone, why Amber might require less coding?

<comment><USER6> Both Amber and Backbone fall into what I call the KVO frameworks category (Angular, Javascript MVC, Knockout, Batman, others). Both use jQuery for DOM manipulation and revolve around the idea of having a canonical model and having that as the center of your app. As you change the model, it fires events that you use to update the DOM. The difference is that Backbone is philosophy.

Backbone provides a basic but complete set of tools for observing model changes combined with a set of utilities that are useful but not prescriptive to make wiring up DOM events, URL handling, etc straightforward. It works with what's in jQuery/the browser. All together, it provides the organization most js apps are sorely lacking but doesn't dramatically reduce LoC over what you could do with well factored jQuery and underscore. It's nice enough that the YUI team basically adopted it wholesale for the App framework in 3.5.

Amber is all about binding. You can not only observe properties but bind them to other properties bidirectionally so that changing one causes the change to propagate through all bound values including things like values being arrays. This extends to the Handlebars templating (which was written for Amber) where you can bidirectionally bind, for example, a boolean on your model to a checkbox and to a class on a div so that checking the checkbox toggles the class without anything in your app directly manipulating the DOM. The implementation is an attribute plus two object path strings in the template. It's not panacea but since DOM/Event/State manipulation is ~60-70% of most JS apps I've worked with, you can achieve dramatic code size reductions.

The cost is that Amber is 10x the size of Backbone, the templating language is tied to the framework, and there's more overhead in understanding the concepts, how they fit together, and how to apply them to your code. When I talk to people who are writing jQuery spaghetti, I steer them towards Backbone for the simplicity and superior docs but mention that I use Amber for my own projects.

</comment></comment><comment><USER48> AMBER ALERT!</comment>