Bassnectar responds regarding music piracy - <AUTHOR> http://www.bassnectar.net/2011/08/fan-bass-leaked-music/ <comment><USER2> It's also interesting to see how much less serious this is to musicians and producers who weren't in the business before the mp3. This is the only world he knows, so he knows how to work it.

<comment><USER3> It also sounds like he derives a lot of revenue from a healthy live following. Musicians that aren't as performance-oriented are probably less sanguine about this.

<comment><USER4> Like Jonathan Coulton?

[http://www.npr.org/blogs/money/2011/05/14/136279162/an- inter...](http://www.npr.org/blogs/money/2011/05/14/136279162/an-internet- rock-star-tells-all?ft=1&f=1106)

I'd argue the opportunities for digital distribution far outweigh the risky and extremely limited opportunities of traditional physical media. The smaller artist has a major lack of publicity muscle. Piracy can provide just that; on a potential scale almost completely inaccessible to unknown artists.

I work for a small record label, I understand the problem very well.

</comment></comment></comment><comment><USER5> Always great to see artists' perspective on "piracy", the people actually making that "copyrighted work" and having to make a living out of it, rather than the opinion of the big corporations.

<comment><USER6> _Always great to see artists' perspective on "piracy"_

Do you mean that sincerely, or do you mean it is always great to see artists' perspective on "piracy" when they're equivalent to your perspective on piracy?

I make a living selling "copyrighted work", and it determines whether I eat on any given day. I am not a big corporation. I think pirates are value- destroying parasites, and their justifications are self-serving proto- philosophy drizzled over gigantic entitlement issues. The fundamental justification for piracy is that stealing stuff is a lot preferable to buying stuff if stealing stuff carries no social cost to it.

I implement DRM and, worse to pirates, changes to business models which are 100% effective DRM++: put the bits which need protecting on your server, gate access to them based on payment. This both helps me continue eating and gives me that piece of mind that only people who are not getting their stuff stolen have.

That is just this artist's perspective, of course.

<comment><USER7> Oh dear, where do I start...

First off, _stealing_.

I don't give a crap how often you and others like you spout this bullshit, it doesn't make it any more correct. It's not stealing. It never was, it never will be. If you are unable to understand the consequences of digital media, that's a pity, but not the fault of the evil, evil pirates.

Second, that's a pretty nice appeal to emotion. Frankly, I don't give half a fuck whether you starve to death. If your business model cannot keep up with technology and you refuse to adapt (or worse, try to fight the change, which is ultimately a losing battle to everyone's detriment, _including_ you), that's _your_ fault. The evil, evil pirates are just a convenient excuse.

Third, if you really /need/ all this bullshit to get people to buy your stuff, then your doing something very, very wrong. Deliver a good product at a reasonable price and people will be happy to pay for it. Stop developing _against_ the evil, evil pirates but instead _for_ your valid costumers.

Fourth, if 'free culture/software' is a 'self-serving proto-philosophy drizzled over gigantic entitlement issues' to you, I can't help but feel sorry for you.

<comment><USER6> Hiya Slowpoke. You seem to be new to HN. That's cool. We're very much unlike some other Internet communities which you've spent time on. In particular, we place a wee bit of emphasis on treating people like they are people, even when interacting with them over HTTP.

My name is Patrick. Pleased to meet you. I run a business which helps teach little kids to read, and spend a lot of time on HN as my hobby. A lot of HNers know me, have spoken to me, or have shaken my hand in person, because I'm a fairly personable guy. Most do not say "Hello Patrick, pleased to meet you, I don't give half a fuck whether you starve to death." That would be a wee bit uncouth.

We have guidelines here for the community's consensus on talking to each other: <http://ycombinator.com/newsfaq.html>

I'd also like to leave you with a video from Derek Sivers, who also happens to be a HNer. I think the lesson is rather important.

<http://www.youtube.com/watch?v=cfwwHa-7Ux8>

<comment><USER8> While slowpoke's rudeness is to be deplored, you set yourself up for that. Attempting to tie your survival (ie whether you eat) with a political concept (support, or otherwise, of the current intellectual property regime) is a pretty poor argument. "Either you agree with me, or you want me to starve to death!"

I also don't appreciate the call to some kind of moral high ground - "I run a business which helps teach little kids to read". Yeah yeah. Maybe slowpoke has devoted his life to curing cancer in kittens. Wouldn't make any difference to his argument, either.

<comment><USER9> "I also don't appreciate the call to some kind of moral high ground ... Wouldn't make any difference to his argument, either."

In fact, the moral standing of participants in an argument does make a difference. It informs us regarding the credibility of their moral judgment. For example, the moral judgment of someone who knocks over convenience stores for a living is probably a wee bit less reliable than the moral judgment of someone who spends his time serving the poor in soup kitchens.

<comment><USER8> Well, at the risk of further downvotes, I think that's totally irrelevant. No- one is down at the soup kitchen asking what the volunteers have to say about intellectual property reform. It is a complicated topic and the personal altruism of the person making the argument has basically nothing to do with anything.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> These views about piracy seem almost identical to the pirates' views about piracy.

Many nfo files include things like "try before buy" or "if you like this release, please buy it".</comment>


Why are people attracted to 50:50 probabilities? - <AUTHOR> https://www.economist.com/finance-and-economics/2019/12/12/why-are-people-attracted-to-50-50-probabilities <comment><USER2> I can't read the whole article but...

> there was a probability of between 30% and 95% that Osama bin Laden was in > the Abbottabad compound in Pakistan in April 2011.

So they gave Obama 62.5% probability and uncertainty estimate for the prediction ±32.5 percentage points??! Obama was right. That's 50:50 decision from his point of view.

If you have to make a decision, there is usually virtual certainty, very likely and unlikely and somewhere in between. 50% change or 60% change becomes meaningful if you repeat the thing multiple times. For a single event, it does not matter much.</comment>


Why Apple is cheap - <AUTHOR> http://www.asymco.com/2011/12/15/why-apple-is-cheap/

<comment><USER2> Like in the startup world, it is all about the team. Who now has a better team than Apple? They've demonstrated they can make good decisions, grow revenue, etc., better than anyone else.

That's why I invest in Apple. A great team does great things. Dediu's point that the market as a whole has consistently underestimated the company is well made.

<comment><USER3> I hate to sound harsh but the problem with this idea is that Apples' 'team' was one guy, a guy who died. Everyone else just took orders from Jobs, the dictator 'visionary'. I find it hard to believe that everyone else on the 'team' absorbed the Jobsian way and will perpetuate it. It will die with Jobs, at best the 'team' will endlessly try to mimic it and thus fail to achieve it. Apple will continue to dominate for the next 3-6 years and then decay. I would stay away from this stock from a long term perspective, short and mid term its probably a winner.

<comment><USER2> Time will tell. Pretty safe prediction that they may decay in six years though.

If they grew at the rate they have over the last six years for the next six years, you can do the math.</comment></comment></comment>


The High-Impact Project Nobody Is Talking About: India's Aadhar - <AUTHOR> http://statspotting.com/2012/12/a-billion-possibilities-meet-indias-aadhar/

<comment><USER2> Indeed, people appear to don't want to talk about it just yet, which can be because:

1.Lack of Identifying the recipients/beneficiaries is JUST ONE of the many reasons for poor implementation of many government policies, for decades.

2\. Its not the first time, this has been attempted, and also that 2 projects were cleared, thank god, someone made the call of having only 1, or both may had failed in even collecting significant data.

3\. The other problems, namely lack of electronic records at ground level, tax evasions, bogus/on-paper identities, lack of infrastructure and HR, etc are still there, so its uncertain that Aadhar alone can make a big impact.

4\. Lastly, and most importantly, is the fact the it is the Idea that matters the most, if there are no good policies coming out, having a very good system is of no use. But yeah, in practice, there are lot of ideas always.</comment>


Is Your Brain Necessary? - <AUTHOR> https://www.rifters.com/crawl/?p=6116 <comment><USER2> It sounds like a hoax. If brains could be smaller, then heads could be smaller, and there ought to be some evolutionary pressure for that, in humans, at least: giving birth is not easy.

I don't know about other animals. There is particularly strong evolutionary pressure for birds that fly to have efficient brains (cognition / mass). Perhaps whales don't care so much if their brains are inefficiently large.</comment>


Making a Guitar Tuner with HTML5 - <AUTHOR> http://jonathan.bergknoff.com/journal/making-a-guitar-tuner-html5

<comment><USER2> Pretty cool, but a Fourier transform is overkill! Many commercial hand-held tuners use a cool trick that works exceptionally well: zero-crossing.

While far less accurate than your implementation, it can still help nail the note (I've written an implementation in awk before... disgusting, but worked!). Simply look at the raw data, and see when it crosses over from negative to positive (or vice-versa). Count the number of crossings in some interval, and now you have the frequency. Usually a little input fuzzing is required, but it works exceptionally well.

Regardless, nice job.

<comment><USER3> True, and cool (I hadn't heard of zero-crossing before, thanks!) but an FFT gives you the ability to do interesting things like chord recognition.

I may have to play around with the code here and see if I can get it to pick out multiple notes being played simultaneously, and maybe get it to measure how fast I can do chord changes (like Justin Sandercoe's "1 minute changes" practice method[1]).

[1]: [http://justinguitar.com/en/BC-115-1MinuteChanges.php](http://justinguitar.com/en/BC-115-1MinuteChanges.php)

</comment></comment><comment><USER4> If you are interested in guitars/music and HTML5, I wrote a transcribing tool (looper, slow downer, etc) that runs in a browser and uses the Audio APIs. Wasn't sure if it would be possible, but was able to do quite a bit:

[http://www.tunetranscriber.com/](http://www.tunetranscriber.com/)

<comment><USER5> Pretty cool. Do you have source or any writeup of your techniques for the kind of phase vocoding you are doing?</comment></comment>


Show HN: Cron SaaS. Would you pay to run custom Node.js jobs periodically? - <AUTHOR> http://www.cronasaservice.com

<comment><USER2> I wouldn't. Many cron tasks are used for diagnostics, and must continue to work even when your web stack doesn't. Other cron tasks run a long time and NGINX will kill processes that seem unresponsive. Other cron jobs must not be started twice (so they require locking). Cron isn't perfect, but it's very simple and completely reliable.

I think you should focus on SaaS products that you can charge at least a few hundred a month for. If people aren't even willing to pay that much you're probably not solving a big enough problem.

</comment><comment><USER3> Are you aware that this is not a new idea and that are already a lot of these services running out there?

</comment><comment><USER4> I wouldn't and also pretty sure that I won't use it even if its free . Only time I had to use a similar system was when using shared hosting without shell access.

</comment><comment><USER5> Be sure to check-out IronWorker

[1] [http://www.iron.io/worker](http://www.iron.io/worker)

</comment><comment><USER6> How much? 1 Dollar for 10 Years, or on which price you think?

</comment><comment><USER7> Given that the Heroku scheduler is completely free, no.

</comment><comment><USER8> No. Is this an example of a Service As A Service?

</comment><comment><USER9> No, I wouldn't.

</comment><comment><USER10> No</comment>


Games, not school, are teaching kids to think - <AUTHOR> http://archive.wired.com/wired/archive/11.05/view.html?pg=1 <comment><USER2> As an adult games are what really flexes my mental capacity. Work and life are kind of on auto pilot since I had years to perfect my system.</comment>


Ask HN: Snapchat tech contact? - <AUTHOR>

Don't suppose there's any snapchat engineers on HN? Got an issue which looks like my $dayjob IP range is getting blocked, which is a NAT pool for a few hundred thousand mobiles...
Tried their normal support channels with no reply yet.
Thanks <comment><USER2> Send an email to firstname.lastname@example.com?</comment>


Things Come Apart - <AUTHOR> https://www.toddmclellan.com/thingscomeapart <comment><USER3> A significant portion of my childhood was spent taking things apart and (sometimes successfully) putting them back together. I'm curious if that's still possible - the kinds of things I took apart (telephones, computers) are significantly less possible, but it's entirely possible there are alternatives I hadn't considered filling that niche.

<comment><USER4> > A significant portion of my childhood was spent taking things apart

Only after years I realized how kind it was of my parents to allow me, without saying anything, to take their first cassette player (and other stuff) apart.

<comment><USER5> After I took apart our new VCR my parents started buying me junk electronics from thrift stores explicitly for this purpose.

<comment><USER4> Perfect. I hope you put the VCR back. My parents' cassette player did well with one gear missing until I figured it out how to put it back completely.

</comment></comment></comment></comment><comment><USER6> Of course not as quality but [https://www.reddit.com/r/knolling/](https://www.reddit.com/r/knolling/)

<comment><USER7> Great video by tom sachs, Always be Knolling

[https://youtu.be/s-CTkbHnpNQ](https://youtu.be/s-CTkbHnpNQ)

</comment></comment><comment><USER8> For a moment there I thought this would be about this seminal Nigerian novel: [https://en.wikipedia.org/wiki/Things_Fall_Apart](https://en.wikipedia.org/wiki/Things_Fall_Apart)

<comment> the-dude And this is why we read HN. Thank you stranger.

<comment><USER8> You're welcome, although somebody else apparently disagreed violently enough to downvote.

</comment></comment></comment><comment><USER9> This reminds me a lot of James May's The Reassembler as shown on the beeb. He re-assembles famous old-ish products from scratch such as an electric guitar, lawnmower, etc.

[https://www.bbc.co.uk/mediacentre/latestnews/2016/james- may-...](https://www.bbc.co.uk/mediacentre/latestnews/2016/james-may- reassembles)

</comment><comment><USER10> Zoom and right-click are disabled. That's disrespectful.

<comment><USER11> this works [https://chrome.google.com/webstore/detail/enable-right- click...](https://chrome.google.com/webstore/detail/enable-right- click/bofdamlbkfkjnecfjbhpncokfalmmbii?hl=en)

</comment></comment><comment><USER12> I love how thought-provoking this is. I forget when using a device how many elements work together to help you achieve your goal.

I preferred the stills over the more explosive ones as I optimistically hope the devices in the stills are reassembled.

<comment><USER13> You'd enjoy James May's _The Reassembler_. [https://www.dailymotion.com/video/x4256hv](https://www.dailymotion.com/video/x4256hv)

<comment><USER12> Thank you! I do like it

</comment></comment></comment><comment><USER14> The still of the piano video is very reminiscent of Cornelia Parker's "Cold Dark Matter: An Exploded View": [https://www.tate.org.uk/art/artworks/parker- cold-dark-matter...](https://www.tate.org.uk/art/artworks/parker-cold-dark- matter-an-exploded-view-t06949/story-cold-dark-matter)

</comment><comment><USER15> I find it interesting to imagine this with software. Most websites today would be almost all npm modules with a small sprinkle of site specific logic tying everything together.

<comment><USER16> There's [https://benfry.com/distellamap/](https://benfry.com/distellamap/) but I think it works better with data than code: consider the sprite sheet.

</comment></comment><comment><USER17> I'd be shocked at how different the tone of this would be if done with biological things.

<comment><USER16> inorganic collections of biological things, sorted: [https://www.armellecaron.fr/works/les-villes- rangees/](https://www.armellecaron.fr/works/les-villes-rangees/)

biological things (not safe for vegetarians):

[https://1.bp.blogspot.com/-wtdV5cvMVS8/XhbNLkLoz8I/AAAAAAAAF...](https://1.bp.blogspot.com/-wtdV5cvMVS8/XhbNLkLoz8I/AAAAAAAAFPg/tSqSp1eFvH8aAgVuX632NXxcP9sUZ- nkgCEwYBhgL/s1600/72839747_430595690977768_4770772831136907264_n_430595684311102.png)

[https://www.helago- cz.com/files/thumbs/mod_eshop/produkty/be...](https://www.helago- cz.com/files/thumbs/mod_eshop/produkty/beefpork3dmeatcutsposter2.217084881.jpg)

[https://www.youtube.com/watch?v=WrOzwoMKzH4&t=307](https://www.youtube.com/watch?v=WrOzwoMKzH4&t=307)

but I must admit, I prefer my biological things intact and sorted by max speed: [https://books.google.ch/books?id=2lQEAAAAMBAJ&pg=PA69&dq=rec...](https://books.google.ch/books?id=2lQEAAAAMBAJ&pg=PA69&dq=rectangle&lr=&as_pt=MAGAZINES&cd=50&redir_esc=y&hl=de#v=onepage&q=rectangle&f=false)

</comment></comment><comment><USER18> Amazing! I went to the 'buy prints' link and it says it is sold out though - <USER2> thought they would be printed on demand?

</comment><comment><USER19> These images in 3d would be amazing

</comment><comment><USER20> The protomolecule at work?

</comment><comment><USER21> Now do society.

</comment><comment><USER22> Blank page when rendered without third party scripts.</comment>


Listen to Your Customers, They'll Tell You What to Build - <AUTHOR> http://blog.tailwindapp.com/listen-to-your-customers-and-theyll-tell-you-what-to-build/ <comment><USER2> I agree that doing more listening than speaking when talking to customers is important.

It's also important to remember that customers _will_ tell you they want features they they won't actually use or pay for. So it's necessary to develop an understanding of what your customers do and what problems they're trying to solve.

This often helps more than just listening to features they say they want. If your customers aren't in the business of building products (especially software products), their ability to ask for features is limited by the fact that if you're not an expert in how the product is created, it is difficult or impossible to know what features might be easy to add, and which ones are difficult.

It's even likely that you can add features that your customers that your customers don't even know are possible. In this case, they won't be able to ask for those features, or anything like them. As an expert (in software, or any other specialized product development field), taking the time to _really_ understand your customers, the problems they face, and the jobs they are trying to accomplish can help you come up with new features and products that actually amaze your your customers and attract new ones.

<comment><USER3> I agree with most of your points.

I would add that when you put a person in a position that you have asked them for input, they will feel pressured to give SOME kind of input, whether or not it is actually warranted. You're kind of setting them up to give input in the same way you might set someone up to tell a joke, they feel pressured to fill that space with SOMETHING.

Most of the time when I have built features that came from customers, it ends up being the least used feature of a particular update cycle. Sometimes to the point that we have to reverse or highly modify it later. The reason your customer isn't in the business of making the thing you're making, is because they have no idea how to make that thing.

If you ask a person what they want out of a new Ford car, they are not going to say "Brake pads with a higher durability for longer use," they are going to say "More cupholders wouldn't hurt, and maybe you could offer it in magenta?"

See also "The Bike Shed Problem": [http://bikeshed.org/](http://bikeshed.org/)

<comment><USER4> Instead, you need to ask your customer about what they are doing in areas around your software. Not "What would you like in a new car?" but "What have you been doing in your car?" and "How much maintenance do you have to do?" and "What's the worst thing about the stuff you do in the car?"

Then maybe you can find out that the brakes make a squealing sound because they are mis-adjusted and are wearing out the pads too early.

</comment></comment></comment><comment><USER5> There can be counterexamples to that advice. Maybe since Tailwind is in the B2B space, this affects their bias of the recommendation.

If you're in the Enterprise/SaaS/B2B space, it seems more common to closely track what your (paying) customers want.

However, if you're in B2C or mass market, there are successful examples of being bold with providing something your customers _didn 't ask for_. An example is the Facebook "newsfeed" feature rollout in 2006.[1] They initially had a user revolt over it but Mark Z and his team stuck to their guns and sure enough, the newsfeed became addictive and contributed to the envious engagement metrics that Myspace/Friendster couldn't match.

It's the modern variation of Ford's apocryphal _" if I had asked people what they wanted, they would have said faster horses."_

But that doesn't mean all counter-intuitive decisions by businesses always make sense. Steve Jobs removing the floppy drive on iMac met disapprovals and eventually was vindicated by fast USB adoption ... but the jury is still out on removing the headphone jack from the iPhone 7.

Setting aside the missteps by Apple, a creative startup could identify with Steve Jobs saying, _" customer's don't know what they want until we've shown them."_

[1] [https://techcrunch.com/2006/09/06/facebook-users-revolt- face...](https://techcrunch.com/2006/09/06/facebook-users-revolt-facebook- replies/)

<comment><USER6> > It's the modern variation of Ford's apocryphal "if I had asked people what > they wanted, they would have said faster horses."

This x100 times. After building several B2B products I've found that the most successful features are the ones the customers weren't expecting and didn't ask for...

It's ok to do customer development in order to track what your users want and at least cover their expectations, but you'll never create amazing products with this mentality...

Relevant: "Obvious to you. Amazing to others."

[https://sivers.org/obvious](https://sivers.org/obvious)

<comment><USER7> "You'll never create amazing products with this mentality..."

I think that this kinda misses the point. If you're only building the things they explicitly ask for, then yes, you're right. However, customer development isn't mean to track what your users want and cover their expectations; it's to uncover the biggest pain points/real problems to come up with amazing solutions for - what's actually _worth_ pursuing and potentially building? How exactly those solutions manifest themselves often times does not come directly from customers, but the amazing ones are just as often inspired by insights gleaned from customer development.

The article you shared actually backs up my point exactly. Example: what could be obvious to one of your customers can end up being amazing to you and your other customers. In practice, I've found this dynamic play out time and time again.

</comment></comment></comment><comment><USER8> Hi - UX designer here. So shoot me.

Firstly, you might consider that close to all basic ideas behind objectively successful products (eg the telephone, Facebook, photo copiers, Twitter, rabbit vibrators) were NOT arrived at by asking the target audience what they wanted. Most were intuition born of _observing_ that audience.

When you ask people direct questions about what they want, it takes a great deal skill and judgement to actually get a successful product idea from that. In fact it's almost not worth the bother, and few professional designers really do it very often by choice. Far better to try to observe what people do (often by giving them tasks to complete in some sphere of activity) and see what comes out of that. You might see your target audience performing needless operations, misunderstanding things, or doing things that appear irrational to you but rational to them. Once you see that sort of thing happening, it's far easier then to see what they might need or really want.

I wouldn't go so far to say that asking people what they want is a bad idea, but it's getting close. Perhaps it's a mildly toxic idea best avoided in preference to observation.

<comment><USER9> Users are a source for problems, not solutions, that's the designer's job. However, the most common way that users articulate problems is in the form of solutions. It's then the designer's job to reverse engineer what the problem is from the proposed solution and design a solution that both fixes the problem and is contextually appropriate to the rest of the product.

So when you listen to users and they tell you "you should do X", just blindly doing X is a path to failure but similarly ignoring them is also a path to failure.

There's an art to properly eliciting insight from users and it's a mix of observation, interrogation and thought. In general, the best advice I've found is focus on the emotional and not the logical. When you ask when was the last time you had a problem with our product, you force the user to come up with ad-hoc logical arguments and paradigms that are most often wrong. If you ask when was the last time you were frustrated or annoyed with our product, you hone in much more reliably on real sticking points.

<comment><USER10> One of my teachers used to express this succinctly the following way -

Imagine a patient going to a doctor and asking a course of antibiotics. Any doctor would erase that request and start asking the patient to describe their problem. This, he said, is the core of how a user feedback conversation should go.

</comment></comment></comment><comment><USER11> Working as a designer, I've come to appreciate a lot of the ideas in Non Violent Communication. This is more or less the central idea of NVC: needs are very low level and highly likely to be shared by many people, whereas the strategies used to fulfil those needs are much more specialized and particular to a person or a small number of people.

People will communicate and confront you with their strategies for fulfilling the need they have rather than communicating the need itself.

Learning to "listen for needs" is not only valuable for conflict resolution, but also for service development.

<comment><USER12> This is very true. I'm going to read the NVC book after reading your comment.

Similarly, I've found that users often express all sorts of suggestions for how to accomplish some need they have. While many of their ideas are (from a UX/design standpoint) horrible, the core need is valid and often highlight something important that has been misunderstood or overlooked by the design.

The hardest people to get "needs" information from are intelligent, computer- literate people, who are often unwilling to admit that they find something counter-intuitive, and often frame their feedback in a way that conceals that fact... But who will end up not using something because of the friction that a suboptimal design causes.

I've also found it helpful to let people draw mocks of their solutions with a sharpie and to also share my own impromptu sharpie mocks with them based on their feedback.

At the very least, this process makes them feel respected and lower their guard which can often help them share information that is helpful in designing a product.

The craziest moments are when it turns out after weeks of trying to understand a user's feedback, that the user simply wanted a report view of some information and was trying to give feedback to make an interaction design turn into a report. This is quite common, especially in a feedback group where the highest status person is the manager who does actually need a report but is offering general feedback on general usability.

</comment></comment><comment><USER13> This is both true and dangerous advice.

You must listen to your customers, but then you must conceptualize their needs, prioritize them, and think about how to solve those needs _well_.

There is nothing worse than a "Christmas tree product" where every customer has hung some requirement and there is no conceptual unity or design. Loads of "enterprise" products are hairballs like this.

TL;DR: It's not listen -> implement. It's listen -> THINK -> implement.

<comment><USER14> Most people will read this title as, "Build what your customers tell you to build." The key here is that most customers will be happy to tell you they _want_ all kinds of features and the best/only solution or feature looks like X. You have to go deeper. You have to listen to understand what they actually need.

I hate being that guy that trots out a quote from a historic figure, but c'mon, this is a slam dunk:

"If I had asked people what they wanted, they would have said faster horses."

<comment><USER15> > I hate being that guy that trots out a quote from a historic figure...

Don't worry, it was a made up quote. You're safe.

<comment><USER14> 1) I can't believe I missed the "trot out" pun in my original comment.

2) Anyone who's interested to read more on this made-up quote should see this HBR article:

[https://hbr.org/2011/08/henry-ford-never-said-the- fast](https://hbr.org/2011/08/henry-ford-never-said-the-fast)

</comment></comment></comment></comment><comment><USER16> The signal to noise ratio tends to be poor though. So many will insist and swear and beg and threaten about what they think they need, or what they used to do, or what they won't pay for but would like to have if it's free and maintained indefinitely. There's often a background noise of "all change is bad" and some improvements are not as clear as helicopter vs rush hour traffic, so the benefit will take time to appreciate.

The trick, of course - and rather old news - is reading between the lines and not becoming arrogant in response to the lower quality feedback. You probably don't know better than them AND they probably don't know what they want.

<comment><USER17> This is true. And the bigger a company is the more there is to trawl through.

Still, you get stuff like this 14 page thread dating back two years asking Dropbox to stop forcing new folders to automatically sync[1], or this 10 page thread spanning 3½ years where adding an external email to hotmail/outlook.com was broken[2]. Never any official response, just moderators posting form responses like robots. Those are where I feel things have gotten a bit ridiculous, when the company stops ever interacting with the customers at all.

[1] [https://www.dropboxforum.com/t5/Dropbox/Stop-auto- inheriting...](https://www.dropboxforum.com/t5/Dropbox/Stop-auto-inheriting- new-folders-when-using-selective-sync/idi-p/4630)

[2] [https://answers.microsoft.com/en- us/outlook_com/forum/oemail...](https://answers.microsoft.com/en- us/outlook_com/forum/oemail-osend/theres-a-problem-connecting-to-the-smtp- mail/bf2fc06d-5e19-43dc-9cda-76bd038e36bf?page=1)

<comment><USER18> Oh my god I can't stand moderator responses. Worse when they're just copy+paste and they didn't even read your request/question. Been happening on Github more and more too with issues.

<comment><USER17> Sounds like you're having some trouble with forum moderators.

To allow me to fully assist with your issue, can you please make sure you've completed the following steps:

\- Restart your PC.

\- Copy down any annoying messages from moderators that you see.

\- Try reading the messages again to see if you feel better about them now.

If this message was helpful, please remember to upvote and mark as SOLVED.

</comment></comment></comment></comment><comment><USER19>
       You can't just ask customers what they want and then try to give that to them.
       By the time you get it built, they'll want something new.

\-- Steve Jobs ( _The Entrepreneur of the Decade_ , Inc Magazine, April 1989, [http://www.inc.com/magazine/19890401/5602.html](http://www.inc.com/magazine/19890401/5602.html))

</comment><comment><USER20> If Apple did that than they would been out of business 25 years ago.. Steve Jobs did not ask Apple customers what to build but predicted what in the future apple should build to get more customers.

This is not to say that customer feedback is not important but to clarify that it pertains to very short-term marketing in that it only refers to somewhat minor-point increments in fine-tuning the current product.

<comment><USER7> I have to whole-heartedly disagree with this. Customer development and feedback don't just apply to short-term marketing and minor-point improvements. That couldn't be further from the truth.

The "They'll tell you what to build" isn't meant to be taken literally. If you listen and try to truly understand people's problems, they'll guide you towards the most useful solutions. Coming up with those solutions is still up to you in most cases, though.

Re: Apple - they understood the real problems that their potential customers had. No, customers didn't come and tell them to go and build a device like the iPhone. However, from understanding the market and the pain points that people had with mobile phones, Apple was able to identify an opportunity to enter a new market and disrupt it.

<comment><USER21> Actually, I'd suggest people did tell them to build the iPhone, and the iPod.

They looked at the problems with the MP3 market at the time, tiny devices with poor user-interfaces and their solution to the state of the market at the time was the iPod. Unexpected from Apple which was only a computer company at the time.

Once we had our iPods we were carrying around an iPod and a phone (Blackberry was huge at the time). They understood customers wanted a single device, it had to have great messaging like a blackberry, and do all the music and video needs of an iPod of that era. Blackberry had apps, a web-browser, maps, etc. It's important not to forget that. Apple did a better job with the browser and gave the thing a full-size touch screen. Customers didn't ask for that, but they had asked for the basic device. Apple took what was asked for and put their own scrutiny to it to see just how amazing they could make it.

</comment></comment></comment><comment><USER22> I was watching Seinfeld recently. It was a 90s skit of him talking about the answering machine. How sometimes you would be disappointed if someone answered the phone.

I was thinking, wow, he is just talking sending sms messages. The crowd would laugh or woot in what seemed to be agreement.

He didn't know what he wanted, but there was a problem that he and everyone wanted a solution for. At the time in the 90s, it was a social problem (not wanting to waste time with an annoying person on the phone) but in the 2000's that problem was solved with technology.

A lot of times, customers do not know what they want. Imagine what Jerry's answer would have been if we had asked him a question about pinging his contacts list to know if they were available in 1991. He wouldn't have understood and honestly, no one would want to carry around a massive rolodex at the time, so the answer would have been silly at best.

I did find the video .. someone else noticed the same thing. [https://www.youtube.com/watch?v=8UeINnBMFA4](https://www.youtube.com/watch?v=8UeINnBMFA4)

</comment><comment><USER21> I've been doing lots of customer interviews lately, and I'm absolutely loving it. I think this bit of advice from the article is dead wrong "know exactly who you want to talk to and what you want to know".

I've got a product that is growing nicely and that users love, but we haven't been able to monetize it yet. Lots of other comments point to things like Ford's (misattributed) "they'd say I want a faster horse".

Don't ask people directly what they want, find out what they are doing, what they need to do, and you'll start to find a pattern emerge.

The reason I feel you can't know what you want to find out or discuss is that you can miss exactly what the customer is telling you.

In my experience, I will often ask pointed questions about what more we can do, and I get blank stares and uses just say "it's great" and give me requests for minor improvements. When I probe them about other parts of their business, they open up about what they are doing in other segments which to them are completely different than what we do, but when I point out the similarity, and what we could do in these other areas to help them out, they perk right up and come up with a bunch of good ideas that they are happy to pay for.

So be flexible, and look for patterns more than answers. I'd also suggest, if you're in the same place as I am looking to monetize an existing product that most see as free, ask where they are spending money and see if there is opportunity for those funds to be re-allocated to you.

</comment><comment><USER23> The thin font is super unreadable on my Galaxy S4.

<comment><USER24> Same here, one plus one.

</comment></comment><comment><USER25> I read an amazing book on customer development: The Mom Test by Rob Fitzpatrick - [https://www.amazon.com/Mom-Test-customers-business- everyone/...](https://www.amazon.com/Mom-Test-customers-business- everyone/dp/1492180742)

The first few pages blew my mind. It was a great read all the way through.

<comment><USER26> Having read several customer development books, I second that recommendation.

One of the main takeaways of the book is that you should always start by asking factual questions. What do you do. What software do you use to do that. When's the last time you did that. How did you feel about it. Etc.

No "What ifs", no "would yous." Don't ask how much they would pay if [you could code whatever feature by next week].

That may seem obvious, but most people go for the second type of question right away.

</comment></comment><comment><USER27> I think there needs to be a certain separation between the artist and the customer, in the sense that the customer says what they want, but how you get there is part of the artistry.

For example, Michelangelo was told to paint certain things, but it's _how_ he did it that made him legend.

The real beauty, the real success of a thing, lies in the how, not necessarily the what.

<comment><USER7> Agree 100%. Great analogy.

</comment></comment><comment><USER28> > Listen to Your Customers, They'll Tell You What to Build

It's 1901. I want a horse and buggy that can go 55 mph.

</comment><comment><USER29> Ultimately somebody involved has to make the decision of what is needed. The customer often doesn't know exactly what they need and even more often does not know what is realistic. The developer often doesn't understand the problem(s) and even more often has little idea of why the customer is doing what they are doing.

There really is no substitute for having someone (or a team) study the area in detail who has the background to be able to understand the problem(s) and is able to translate this understanding into a development plan. For anything but the most trivial problems this requires a large investment in time, money and effort.

</comment><comment><USER30> Interesting, I am wondering whether Apple listened to its customers or not when they firstly built iPod, iPhone and iPad...

</comment><comment><USER31> One thing is listening and acting based on what you understood, which you should definitely be doing. This requires product planning and thinking, as any you've ever done.

Just blindly doing what your customers tell you is _not_ what you should be doing, it's just design by committee on a massive scale.

</comment><comment><USER32> IMO, this is trivial advice. It is obvious to sell people things they tell you to sell to them.

True business acumen comes from understanding two things that are not as obvious:

1\. A customer often does Not Know what he wants.

2\. What a man wants is malleable and can be shaped and influenced by forces created by other men.

</comment><comment><USER33> They'll tell you what they like, but not always what you should do about it.

> If I had asked people what they wanted, they would have said faster horses

</comment><comment><USER34> Imagine the frankenlaptop the Mac would be if Apple ever listened to its customers? CD-ROM , touch screen, fm radio, infrared whatevs

</comment><comment><USER35> And you'll get faster horses all around.

<comment><USER36> This the difference of listening to what your customers literally say and being able to deduce what it is what they need.

"I want faster (or better) horses". Needs a follow up question or ability to understand the deeper core meaning. From the above quote. These are some off top of head self distilled thoughts on what that means

I want to get from point a to b faster. (faster vehicle or teleportation.)

I want less time traveling.

I want less prep time for traveling(E. G. Saddling horse).

I don't want to take care of my means f transportation (offer a stable service or offer non animal vehicle)

I want my destination closer.(urban)

I don't want to go to the store to buy X. (delivery service. Ala amazon?)

I want faster Internet vs I want to reach my final destination faster are similar but different outcomes.

Would you rather have Google load pages 100x faster or have above 99% chance to guess the site you really wanted/needed.

<comment><USER7> Amazing! That is the true essence of customer development.

When you walk into a hardware store and ask for a 2-inch drill bit, it's not the tool you really want. What you really want is a 2-inch hole in the wall.

</comment></comment></comment><comment><USER37> What if you don't have any customers?

<comment><USER38> Then ignore the stupid advice in the title and likely article (I just skimmed but only saw noise) and instead of listening to anyone else, build something amazingly great. Seriously, build something amazing and then tell people about it.

Nobody is going to tell you how to do it. it has to come from you.

<comment><USER7> The point is to talk to people to know whether something you want to build is actually going to be great before you go and build it. Most of the time when people go and build what they think is "great" they end up realizing that nobody actually cares. It's a sure-fire way to waste a ton of time of money, which for startups, are the two scarcest resources you have.

<comment><USER38> this actually isn't bad advice for idiots. so if you're an idiot, by all means it's probably better to ask someone, "how'd you like it if" rather than build it and see. As a great example, everyone knows people like battery life. So if you're an idiot, a great question to ask your customers might be, 'How'd you like it if we made a giant battery, like a car battery, that you can take along as an external battery booster for your next Samsung, so that you can just have it connected and have 72 days of life. It would be deep discharge, so that you have hundreds or thousands of cycles." Why did I use this example? Because only an idiot would ask any customers this. It's idiotic. But if you're the kind of idiot who would make that - then by all means! _ask them_.

On the other hand, steve jobs didn't need to ask his customers how they'd like an iphone - he told them why they'll like it.

</comment></comment></comment></comment><comment><USER39> "Premature optimization is the root of all evil" \-- Knuth</comment>


Exhibition of Atrocity - <AUTHOR> http://us.pycon.org/2011/schedule/sessions/138/

<comment><USER2> Interesting. I doubt I'll be flying halfway 'round the world for PyCon, but I look forward to watching a video of this presentation later.

For the record, the worst Python atrocity I've seen looks something like this:

        class Cat:

            def speak(self):
                print "meow!"

        class Dog:

            def speak(self):
                print "woof!"

            def transmogrify(self):
                self.__class__ = Cat

And, as I'm sure you can imagine, it works like this:

        >>> d = Dog()
        >>> d.speak()
        woof!
        >>> d.transmogrify()
        >>> d.speak()
        meow!</comment>


CoffeeScript v1.9 - <AUTHOR> http://coffeescript.org/#1.9.0 <comment><USER2> Ha -- there's not much in the way of release notes there ... but there are some interesting commits that went into 1.9:

Lydell's big reworking of how variable generation determines what names to use: [https://github.com/jashkenas/coffeescript/commit/8ab15d73722...](https://github.com/jashkenas/coffeescript/commit/8ab15d737225acf3d0c2e9d575225df6a470971a)

Alubbe's first draft of adding (automatic) generator support to CoffeeScript — less complicated than you might think: [https://github.com/jashkenas/coffeescript/commit/a78cbe78a15...](https://github.com/jashkenas/coffeescript/commit/a78cbe78a15175452a640f2d18b8585a397e41fb)

Lydell's refactoring of how string and regex interpolations are performed, resulting in a net negative (!) code change in the Lexer: [https://github.com/jashkenas/coffeescript/commit/0dcff507fbe...](https://github.com/jashkenas/coffeescript/commit/0dcff507fbeafb3d37ed22296def5fdcc2deb069)

<comment><AUTHOR> _Alubbe 's first draft of adding (automatic) generator support to CoffeeScript — less complicated than you might think_

I'm really glad we went with the straightforward python-style presence of "yield" rather than the more obscure stuff that was discussed.

Thanks for coffeescript!

</comment></comment><comment><USER3> Can we assume that CoffeeScript will generally remain a superset of ES6 features?

I'm trying to figure out if I should ditch coffee for 6to5 but won't bother if coffee will give me all the ES6 features plus the easier syntax (no semicolons, fat arrows, etc).

</comment><comment><USER4> Anyone know about news on the CS redux/rewrite? Has it stalled or is it still on track?</comment>


Introducing the Windows Pseudo Console (ConPty) - <AUTHOR> https://blogs.msdn.microsoft.com/commandline/2018/08/02/windows-command-line-introducing-the-windows-pseudo-console-conpty/ <comment><USER2> This is pretty huge. For as long as I can remember the response to command line applications talking to command line applications was "Why would you want to do that? Use (RPC | shared memory | some other IPC mechanism)." And nobody at Microsoft seemed to understand how much simpler it was to use ptys. They seem to have completely capitulated to the notion ptys and are dropping them into the next release of W10. I wish this had happened 10 years ago but hey, I'll take it.

<comment><USER3> It's the reality of the market, which is why Windows is adding Linux compatibility (as is every *BSD, Illumos, ...).

But also it's the fact that three decades of not even life support has left the Windows console in pretty sad shape -- the folks tasked with getting it into better shape were bound to see the value of ptys.

Lastly, don't forget that Windows NT was meant to be a console OS, like VMS. There must still be people, even if very few, at MSFT who appreciate text- oriented apps.

For me, the tty/pty, shells, screen/tmux/..., ssh, and so on, are the things that make Unix so powerful. The fact is that Win32 is far superior in a number of areas (SIDs >> UIDs/GIDs, security descriptors >> {owner, group, mode, [ACL]}, access tokens >> struct cred), but far inferior in the things that really matter to a power user trying to get things done.

<comment><USER4> > Lastly, don't forget that Windows NT was meant to be a console OS, like VMS. > There must still be people, even if very few, at MSFT who appreciate text- > oriented apps.

I expect that, like Linux compatibility, most of it is not about "apps" but about being better at running in the cloud, where a (virtual) machine or container needs to be as light as possible, and to be configured and a service launched in it as unattended/automated manner as possible. Stripping out the GUI and making command lines work better works towards these goals.

<comment><USER3> That's a really good point.

</comment></comment></comment></comment><comment><USER5> Will there be a terminfo database entry for ConPty? What TERM string should we expect to see?

To elaborate: although an ordinary POSIX pty doesn't inherently have a terminal type - that's entirely down to whatever emulator is connected to the master side - the way the ConPty system translates Console API calls into terminal control codes means that it necessarily needs to pick a terminal emulation, which all actors in the ConPty system are expected to use.

A terminfo database entry would be useful both for applications running on *NIX hosts but displaying on a remote ConPty master somewhere, as well as for porting existing terminal applications to Windows where they will run on a ConPty slave.

As a follow-up question, presumably this means that the SSHD running on Windows as a ConPty master needs to translate between whatever terminal emulation the ssh client is connected to and the one expected by ConPty / ConPty apps (in the same way it must translate between the native ConPty UTF-8 and the remote charset)?

<comment><USER6> So this is a confusing situation on Windows.

Commandline applications on linux rely on a TERM setting (with termcaps) to be able to know what VT sequences the terminal is able to support. On Windows, we only really have one terminal, conhost.exe, and our goal there is to be compatible with TERM=`xterm-256color`. That's why you'll see that WSL has that set as the default term setting.

Now even with ConPTY, when a client writes VT sequences, they still need to be interpreted by conhost. This is because technically, a console application could use both VT and the console API, and we need to make sure the buffer is consistent. So clients should still assume that they should write out `xterm-256color` compatible sequences.

Now on the other side of thngs, the "master"/terminal side of conpty, we're going to "render" the buffer changes to VT. Fortunately, we'd dont really need a deep VT vocabulary to make this possible, so the VT that's coming out of a conpty is actually pretty straightforward, probably even vt100 level (or I guess vt100-256colors, as insane a termcap that would be).

It's definitely a future feature that we'd like to add to make conpty support multiple different TERM settings, and change the sequences we emit based on what the terminal on the other side is going to expect.

We haven't really gotten into the nitty gritty of all of this quite yet, so if you find bugs or have feature requests, we're happy to take a look at them. You can file issues on [our github]([https://github.com/microsoft/console](https://github.com/microsoft/console)) and we'll add them to our backlog

<comment><USER5> Thanks. It makes sense to pick an existing terminal like xterm-256color to target - that way you don't have to worry about a new terminfo database entry getting distributed out.

The nitty-gritty can get quite nitty - things like bracketed paste and set window title.

</comment></comment></comment><comment><USER3> What next? Job control signals?? :) (EDIT: How about tmux?)

Anyways, this is fantastic. Finally, proper ssh functionality!

This will encourage development of console (text-oriented) apps for Windows, which I hope will be much simpler. Interfacing with the console can be really difficult if you're coming from *nix. Ideally all the WIN32-specific code in, e.g., jq[0], could be ripped out.

[0] [https://github.com/stedolan/jq](https://github.com/stedolan/jq) (look in src/main.c)

<comment><USER7> The lack of signals in Windows is the very opposite of a flaw! - Windows has just never pretended you can get away without a message loop.

<comment><USER8> Windows does have signals! It just splits them into a few facilities. POSIX "synchronous" signals correspond to SEH exceptions and can be handled roughly the same way --- except that signals have process global handlers and Windows has thread-local ones, because the glibc people are sticks in the mud and are hostile to any attempt to make signals suck less.

For asynchronous signals, like SIGINT, Windows create a new thread out of thin air to deliver your app a notification. That's not really all that much better than a signal from a concurrency perspective.

Windows even has APCs, which are like regular signals that are delivered only at explicit system call boundaries.

Every operating system needs some mechanism to tell a process to do something. Windows has evolved an approach that isn't all that different from Unix signal handling.

<comment><USER3> Spawning a new thread to handle a signal _is_ much better than preemption: you then have no concerns about async-signal-safety that aren't plain old thread- safety concerns. I'd much rather have thread-safety constraints than async- signal-safety constraints.

<comment><USER9> Linux can do that as well, see SIGEV_THREAD.

<comment><USER8> Only for AIO, which few use.

<comment><USER10> You can spawn a thread manually and use the POSIX sigwait() function.

<comment><USER8> That won't stop the process-wide registered signal handler working and it won't do anything about being able to reliably handle synchronous signals.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> For me, the most surprising thing is that the new PTY devices use UTF-8. Not UTF-16 or UCS-2 or weird little endian variants thereof, and not even wchar_t.

This is so un-Windows-like.

<comment><USER3> UTF-16 is garbage. Windows is stuck with it because it was too early an adopter of Unicode. Oh the irony. This may set Windows on a path to deprecating UTF-16 -- godspeed!

<comment><USER12> Could you elaborate? I've been under the guise for most of my career that doubling a digit leads to huge benefits that I'm too comp-sci ignorant to understand.

<comment><USER13> UTF-16 has a bit of a funky design (using four byte/two code unit surrogate pairs to encode code points outside the basic multilingual plane) that ultimately restricts Unicode (if compatibility is to be maintained with UTF-16, at least) to 17 planes, or 2^20 code points (about 1 million).

UTF-8 uses a variable length encoding that allows for more characters-- if restricted to four bytes, it allows for 2^21 total code points; it's designed to eventually allow for 2^31 code points, which works out to about 2 billion code points that can be expressed.

(Granted, this is all hypothetical-- Unicode isn't even close to filling all of the space that UTF-16 allows; there aren't enough known writing systems yet to be encoded to fill all of the remaining Unicode planes (3-13 of 17 are all still unassigned). But UTF-16's still nonstandard (most of the world's standardized on UTF-8) and kind of ugly, so the sooner it goes away, the better.)

<comment><USER12> Thank you, this was an incredibly understandable explanation.

</comment></comment></comment></comment></comment><comment><USER14> I've been waiting for two decades to revise this particular Frequently Given Answer.

* [http://jdebp.info./FGA/capture-console-win32.html](http://jdebp.info./FGA/capture-console-win32.html)

<comment><USER15> I suppose it's mostly TUI programs, which use low level console API. So did you try to capture output of something like Far Manager[0]? If so, will it be much simpler to parse escape sequences of VT100?

[0] [https://farmanager.com/](https://farmanager.com/)

</comment></comment><comment><USER6> Hey I'm one of the Console devs who's been working on this feature for a while now. I'll be hanging around in the comments for a little while to try and answer any questions that people might have.

TL;DR of this announcement: We've added a new pseudoconsole feature to the Windows Console that will the people create "Terminal" applications on Windows very similarly to how they work on *nix. Terminals will be able to interact with the conpty using only a stream of characters, while commandline applications will be able to keep using the entire console API surface as they always have.

<comment><USER16> While it is nice that MS is focusing on console and command line now, it seems to me that you are mostly working on improving compatibility with legacy UNIXy stuff.

Do you have some vision or plans to go well beyond the classic UNIXy style of console and command line? I'm thinking in the lines of projects like DomTerm [http://domterm.org/](http://domterm.org/) which could have nice interactions with e.g. PowerShell.

<comment><USER17> PM for PowerShell here!

I haven't seen DomTerm before, but it looks pretty awesome. At a glance, it's basically a GUI-fied tmux hosted in Electron? It would be awesome to have in Windows, but wouldn't that just require that DomTerm add support for these ConPty APIs?

In any case, I'm more interested in your proposed interactions. Did you have anything cool in mind? Given that we ship PowerShell on Linux, we could theoretically do some stuff there (including within PowerShell on WSL) before it's hooked up to ConPty

<comment><USER18> I'm not the person you were asking, but this should interest you.

I've been working on a terminal emulator ( Extraterm [http://extraterm.org/](http://extraterm.org/) ) with some novel features which would dovetail nicely with how PowerShell works. The first is the ability to send files to the terminal where they can be displayed as text, images, sound, etc or as an opaque download. Extraterm also adds a command `from` which lets you use previous terminal output or files, as input in a command pipeline. See [http://extraterm.org/features.html](http://extraterm.org/features.html) "Reusing Command Output" for a demo. This opens up other, more interactive and iterative workflows. For example, you could show some initial data and then in later commands filter and refine it while visually checking the intermediate results.

What I would like to do sometime is integrate this idea with PowerShell and its approach of processing objects instead of "streams of bytes". It should then be possible to display a PowerShell list of objects directly in the terminal, and then reuse that list in a different command while preserving the "objectness" of the data. For example, you could show a list of user objects in one tab and then in another tab (possibly a different machine) grab that list and filter it the same way as any normal list of objects in PowerShell. You could also directly show tabular data in the terminal, let the user edit it "in place" in the terminal, and then use that editted data in a new command. It allows for more hybrid and interactive workflows in the terminal while still remaining centered around the command line.

Extraterm does these features using extra (custom) vt escape codes. ConPty should allow me to extend these features to Windows too.

<comment><USER17> Ooooh yeah, that sounds awesome! Going to share this with some people on our team (lots of folks love and use Hyper already, but we're always looking for new stuff to play with).

I would highly recommend you check out the excellent HistoryPx module[1]. Among (many) other things, it supports automatically saving the most recently emitted output to a magic `$__` variable. Theoretically, you could save a lot further back, but you may start to run into memory constraints (turns out .NET objects are a little heavier than text... ;) )

[1]: [https://github.com/KirkMunro/HistoryPx](https://github.com/KirkMunro/HistoryPx)

</comment></comment></comment></comment></comment><comment><USER19> While we're talking Unixisms, Windows needs a dup2(2). That is, given a HANDLE, you should be able to swap out its backing kernel data structure with that of another HANDLE.

Without this, I/O redirection is slightly broken. Last I checked you can't change where stderr goes after the process starts, for example. [SetStdHandle doesn't do it at the right layer.]

</comment><comment><USER20> I always liked the Console API where you can set the color of the text without actually changing the text that is written to Stdout. No issues when piping the output somewhere else. No need to check whether the output is getting piped.

<comment><USER6> That'll work just the same as it always has :) Existing commandline applications won't be affected by this feature, but it will open the doors for an entirely new class of applications.

<comment><USER20> The existing Console API won't be extended with features of VT codes, or will it?

<comment><USER6> Oh we added support for VT sequences in commandline apps years ago - case in point, WSL.

see [this docs page]([https://docs.microsoft.com/en- us/windows/console/console-vir...](https://docs.microsoft.com/en- us/windows/console/console-virtual-terminal-sequences)) for a (surprisingly incomplete) list of VT sequences we support, and how to use them.

</comment></comment></comment></comment><comment><USER8> Finally! I've been waiting ten years or so for this API. It's about time that alternative terminal emulation becomes possible on Windows.

</comment><comment><USER20> If I use the System.Process API in .NET and redirect the Stdin/Stdout to a stream inside my application, does the framework spawn an invisible console and scrape the output? Or does this work differently? I always did it that way and thought the 3rd party terminal emulators also do that. Why do these emulators have to do it differently?

<comment><USER8> That API is using pipes.

</comment></comment><comment><USER21> Wow. I remember the photo miniksa posted to GitHub when this was in process:

[https://github.com/Microsoft/WSL/issues/111#issuecomment-238...](https://github.com/Microsoft/WSL/issues/111#issuecomment-238592841)

 _Awesome_ to see it's finally up and running! \o/

</comment><comment><USER22> I currently use ConEmu + zsh via MSYS2 as my preferred shell on Windows. I need to run many interactive programs like `python`, `node` etc. via winpty, e.g.:

``` alias node='winpty node.cmd' ```

With the new ConPTY, will I be able to run native Windows programs directly? If so, that would be huge, winpty (while I'm really thankful it exists) is a PITA in practice, see e.g. [https://github.com/Microsoft/vscode/issues/45693](https://github.com/Microsoft/vscode/issues/45693).

</comment><comment><USER23> This is very exciting. I'm looking forward to seeing where it goes.

</comment><comment><USER24> Is there any way to get this backported to Windows 7 - or run a W7 userland on top of a W10 kernel? I'm actually serious about this one, I can't stand this semi-"mobile-first", flat UI of newer Windows generations, and the privacy invasions and ads are other hard blockers for me - but that WSL layer or the new console subsystem seem to be pretty nice features.

</comment><comment><USER15> I hope control-S (XOFF) is disabled by default.

</comment><comment><USER25> Wow, there might be able to be a proper ncurses port now!

<comment><USER6> Functionally, we support all of the VT sequences you'd need to make ncurses work resonably well on windows for a few releases now (ever since WSL was introduced). If you could build an ncurses that assumed TERM=xterm-256color, then you might be able to get it to work on windows.

</comment></comment><comment><USER26> Where can we try a .NET solution with this ConPty?

</comment><comment><USER27> Thanks to WSL and this, I'm very hopeful that my next development laptop can be a windows device

</comment><comment><USER28> Does this mean that it will now be easy to port terminator to windows?

<comment><USER6> I sure hope so! I can run cmd.exe inside gnome-terminal running on WSL right now - granted, WSL is doing some magic to make that all work, but it should still work for terminator to do it to.

</comment></comment><comment><USER29> Something looks very eerie in that Admiral Grace Hopper picture. Is it shopped?

</comment><comment><USER30> \-- Those who don't understand Unix are condemned to reinvent it, poorly. Henry Spencer

<comment><USER31> This is such a cliché.

Do you think that the people who implemented the Windows Console, especially the people working on Windows NT, did not know about Unix? People try different approaches, sometimes they don't work out.

And it's not like Unix is the Word of God, anyway, it has plenty of flaws.

(Yeah, after a long time on internet forums I get kind of touchy after someone copy-pastes the same old and tired line.)

<comment><USER30> Since it took them 20 years to make a half-decent shell and 30 years how to figure out how stdout should work: no they had no clue.

Maybe they knew how a kernel should work though, but weren't the NT guys old VMS guys? That's a totally un-unixy OS actually.

<comment><USER31> 1\. They didn't care about command line tools, in many ways (usability) they're a huge regression. After all, it was in the name of the product: Windows.

2\. Who says that in-band communication like Unix is doing is necessarily better? See pastejacking and other shenanigans.

</comment></comment></comment></comment><comment><USER32>
        HRESULT WINAPI ResizePseudoConsole(_In_ HPCON hPC, _In_ COORD size);

If Microsoft is in the mood to fix old problems, right ^there you've got another old problem: its bizarre API that is different to everything else. Designed that way to lock everyone into their OS.

In 2018 nobody has the time to learn this. Just use a cross-platform API and if it doesn't run on Windows then just don't run Windows.

As a developer, using Windows for development is against your own best interest. If you like to be treated as a dog that is not allowed inside the house, use Windows.

<comment><USER33> What cross-platform API would that be? ioctl(tty_fd, TIOCSWINSZ, &size); ? How does the user get the TTY FD? open("/dev/tty0")? Or should they implement SYSV compatibility and use "/dev/vt0"? Or perhaps follow FreeBSD, which has "/dev/ttyv0"?</comment></comment>


The bridge that crossed an ocean - open-source-ux https://www.bbc.co.uk/news/resources/idt-sh/the_bridge_that_crossed_an_ocean <comment><AUTHOR> It always amazes me what kinds of projects it was actually possible to undertake and complete even just half a century ago.

If a middle aged billionaire wanted to do something similar they'd die old age before it ever made it out of the courtroom. You'd have to take long term inflation into account when making your cost estimates.

</comment><comment><USER2> I remember as a teenager when this was all happening. The archives are paid only but Life Magazine had a big spread showing the bridge's re-dedication.

TV covered it and if my memory is correct 60 minutes interviewed McCulloch and covered his plans for Lake Havasu. Unfortunately their online archives don't start until the early seventies. The year the bridge was dedicated was the first year of the program.

</comment><comment><USER3> What I find most interesting about this piece is the sum for which the property was sold.

> "Someone sensibly asked what they might get for [the bridge] and Ivan is > recorded as saying, 'one million'," says Archie.

> "And they said, 'one million dollars?'

> "Ivan said, 'I'm talking about one million pounds.' [Nearly three millions > dollars at the time.] They sat up at that."

What were the motivations for this asking price and how may they have been substantiated?

<comment><USER4> For reference, that's about $21m today.

<comment><USER5> Meanwhile the over land bridge being built down the street from, $800m. And I can almost guarantee it will be at least 20% over budget, because Miami. So closer to $1B

<comment><USER6> That inflation-corrected $21 million was only for materials, not even all of them, that had to be transported from Europe and put together again.

</comment></comment></comment></comment><comment><USER7> I had always conflated selling the London Bridge with "selling" the Brooklyn Bridge, as in "...and I've got a bridge to sell you": [https://en.wikipedia.org/wiki/George_C._Parker](https://en.wikipedia.org/wiki/George_C._Parker)

Glad to hear this sale actually happened and worked out well for both parties!

</comment><comment> ur-whale Layout of this site is _very_ hard to read on desktop.

<comment><USER8> You got voted down, but I've seen plenty of other sites with just as bad a layout discuss how terrible web 3.0 (or whatever we are calling it) has been for web design.

I felt like I was constantly looking through a pile of papers on a messy desk and I could never quite see clearly one photo at a time. It was irritating.

<comment> ur-whale > You got voted down

I say _exactly_ what I think in my comments, and as a result, a tad less than half my posts do get downvoted :D

<comment><USER9> Nothing wrong with speaking your mind. Someone has to go against the grain. the claim goes, you're not contributing to conversion and I say, do we always have to contribute?! No. Downvote me, see how much I care :)

</comment></comment></comment></comment><comment><USER10> What a fascinating story!

</comment><comment><USER11> Growth hack.</comment>


Why Can't M.B.A. Students Write? - <AUTHOR> http://online.wsj.com/article/SB10001424052748703409904576174651780110970.html

<comment><USER2> They can't write because the education they have had from K - MBA hasn't required enough writing classes and these people haven't taken the time to practice.

Like with programming, writing requires practice and learning the rules to be a better technician. I disagree that creativity is a big part of it.

The most valuable college class I have ever taken was a technical writing class with an instructor armed with a wicked red marker. Interestingly, it was computer science and forestry (Montana) majors who were required to take it, not business people. A class like that takes care of the technical side (rules of grammer) of writing. Beyond that, you need lots of practice.

</comment><comment><USER3> They can't write because they've had all the creative life force drained out of them from 6 years of learning about "business". Of course, that creativity was probably already on the low end considering that they opted into business school in the first place. /jokes

</comment><comment><USER4> The ability to effectively communicate is drastically underrated. (Perhaps because its the most difficult to quantitatively measure?)</comment>


Tell HN: No company that values security can risk Intel CPUs - <AUTHOR> Seriously, not just flamebaiting.... with built in backdoors, how can any company use Intel if security is a requirement? <comment><USER2> Powerpc isn't too bad. Affordable power9 would be nice. What needs to be done to make that a reality?

</comment><comment><USER3> What's your CPU of choice and how do you know it doesn't have backdoors?

</comment><comment><USER4> Most modern CPUs have similar features

</comment><comment><USER5> Pragmatism.</comment>


Facebook pressured Canada to ease up on data rules, U.K. reports say - <AUTHOR> https://www.cbc.ca/news/politics/facebook-canada-data-pressure-1.5041063 <comment><USER2> Original story discussed two days ago:

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

</comment><comment><USER3> Just for a little context, I think it's worth mentioning that this news comes to light when Canadians are thinking quite a bit about companies lobbying the gov't, as a bit of a scandal is brewing with the current liberal gov't[0].

This news implicates the former conservative gov't, and might quickly become a talking point for the current liberal gov't.

[0] [https://www.theglobeandmail.com/politics/article-scheer- call...](https://www.theglobeandmail.com/politics/article-scheer-calls-for- full-disclosure-as-trudeau-denies-pmo-directed/)

<comment><USER4> Man... as someone living south of you guys where there are 10 worse scandals generated per day (a scandal DDoS ?)... I'm envious of the one (1) scandal. Seems quaint. :)

<comment><USER5> I think it is your perception that there are less scandals.

</comment></comment></comment><comment><USER6> From the article:

> Facebook promised to open a data centre in Canada to create jobs, in > exchange for the federal government offering assurances that it would not > impose its jurisdiction over the company's non-Canadian data.

The Canadians agreed to not regulate other countries data. This seems pretty reasonable. Why should the Canadian government regulate how an American tech company handles German data? It makes a lot more sense for each country to have jurisdiction over data from (1) its own citizens, (2) residents on its soil or (3) data physically stored on its soil.

That this was a result of "lobbying" or "pressure" is supposed to rile us up, but this type of thing could not be more common in the political world. FB, one of the 10 most valuable publicly traded companies in the world, would be stupid not to engage in global lobbying.

<comment><USER7> What do you think the phrase "non-Canadian data" means? From what you write, you appear to presume that "non-Canadian data" means data that is not about Canadian citizens anywhere in the world, not about businesses or individuals on Canadian soil, and not physically stored in Canada.

I don't see anything in the article clarifying that. You may be right, but then again the discussion could have been about data that is physically stored in the data centre but is not about Canadian citizens or resident entities.

I don't know for sure, but I suspect that what was being discussed was data stored in the data centre on Canadian soil, given the clue that what they wanted was the data-centre exempt from jurisdiction.

If Canada was asserting jurisdiction over data not in the data centre, I would have expected the terms to be worded around seeking worldwide exemption from jurisdiction.

JM2C.

</comment></comment><comment><USER8> > > Facebook promised to open a data centre in Canada to create jobs

The idea that a datacenter creates a lot of good paying jobs is almost 90% bullshit. There is a brief burst of construction and trades related jobs when it's being built. But after that, all of the software engineering and systems engineering is going on elsewhere. Companies have no need to pay their high six figure salary staff to relocate to Quincy, WA.

The number of people you need to do maintenance activities like rack and unrack equipment, swap hard drives, swap fans and power supplies is really minimal. Like, a rotating shift of six people for a huge facility. And those persons don't need to be very expensive salary wise. I've seen persons who were previously $16/hour Comcast TV installers successfully recruited into entry level datacenter technician jobs.

<comment><USER9> All that, and plenty of places in Canada have cheap power and cooler climates.

There's no need to offer incentives for data centres, they'll get built in Canada anyway.

<comment><USER8> not that many places have a combination of really good fiber infrastructure/IX points and cheap power. The big OVH datacenter in Quebec in the former aluminum smelter is a notable exception. Other than Hydro Quebec, the $/kWh rate in a lot of Canada is not attractive.

Maybe you can get a good $/kWh rate in parts of Manitoba but the fiber connectivity options to get to major IX points (Seattle, Chicago, Kansas City, etc) are very poor.

And in those places where it is moderately attractive, with USD to CAD exchange rate (BCHydro territory), the fiber connectivity options are limited compared to sites that are slightly south, fed from the American BPA hydroelectric dams on the Columbia river (Quincy, East Wenatchee, The Dalles, and Hillsboro). Those places happen to have both cheap long term power contracts _and_ great fiber connectivity by comparison.

<comment><USER9> Depends on how much redundancy and low-latency you need.

If cheap processing power is mainly what you're after, Quebec still seems like the way to go.

Cheap electricity without being on a fault line is somewhat unique (admittedly less of an issue the more inland in WA).

</comment></comment></comment></comment><comment><USER10> > Facebook promised to open a data centre in Canada to create jobs, in > exchange for the federal government offering _assurances that it would not > impose its jurisdiction over the company 's non-Canadian data_.

This should not be legal in the first place.

<comment><USER11> which part?

>Facebook promised to open a data centre in Canada to create jobs, in exchange for the federal government offering assurances

or

>impose its jurisdiction over the company's non-Canadian data

?

<comment><USER12> The latter part is italicized in the GP.

I don't really understand the legality argument though. Canada is a sovereign nation.

<comment><USER13> Canadian here. I could maybe (by which I mean probably not because of edge cases but the concept basically makes sense) get behind making it illegal under under Canadian Law to say "we'll do X if you promise not to pass laws about Y". That sounds a lot like bribery to me.

Note that "assurances" is italicized in OP - the former sentence better captures the meaning of the italicized area despite only containing one word of it.

<comment><USER10> That is exactly what I meant, sorry if I was unclear.

</comment></comment></comment></comment></comment><comment><USER14> Its embarrassing to have your sovereign government changing its policy for a social media company's data center.

We need to create our own jobs, give smart people a good reason to stop moving to the states.

</comment><comment><USER15> What exactly is Canadian data? Is it data generated by Canadian citizens? What if people change citizenships? Is it data generated by all people on Canadian soil? What if you post something while transiting the Arctic Circle in an airplane? How does it include relationships between Canadians and non- Canadians? 90% of Canadians live along the U.S.-Canada border. Does data partially derived from Canadians count (e.g. ML models)? I read the article and it was not clear how the lines were drawn and how they will evolve with time.

Pretty sure this messiness is both why Facebook does not want the government to be enforcing privacy rules, and why the government wishes to do so in the first place.

<comment><USER7> All laws are messy, but what is even messier are the consequences of laissez- faire capitalism.

One minute you're saying that the government has no business in the private communications of its citizens, the next minute somebody's operating a child pornography ring on the internet.

</comment></comment><comment><USER16> The Canadian government better stay off greasing these tech companies or it would lose in the upcoming elections.

Canada likes tech, but it also values privacy.

</comment><comment><USER17> normally these big tech companies have something mildly redeeming about them. google has a huge presence in oss, apple cares about privacy, etc. but it seems facebook has nothing. even their outreach into third world countries was a thinly veiled attempt to lock more users into their platform.

<comment><USER18> Not a fan of facebook, as a consumer app. But what you're saying just isn't true. This list is crazy impressive [https://opensource.facebook.com/](https://opensource.facebook.com/)</comment></comment>


Newly-discovered human organ may help explain how cancer spreads - <AUTHOR> https://www.newscientist.com/article/2164903-newly-discovered-human-organ-may-help-explain-how-cancer-spreads/ <comment><USER2> Wow,

It sound not like a new organ was discovered but that it been discovered that the fascia[1] have these tubes and that the fascia really is an organ.

In studying message, a lot of approaches already treat the fascia as an active, responsive organ rather than as a passive collection of fibrous tissue. The science behind this has been considered murky at best. Now there, at least, is an explanation.

The topic is debated here: [https://www.painscience.com/articles/does-fascia- matter.php](https://www.painscience.com/articles/does-fascia-matter.php)

[1][https://en.wikipedia.org/wiki/Fascia](https://en.wikipedia.org/wiki/Fascia)

<comment><USER3> This seems more like an extension of the lymphatic system; also you're confusing musculoskeletal fascia with ground substance.

<comment><USER2> The linked Wikipedia article considers the substance that organs rest on, such as the pericardium, to be part of the fascia system. Though the muscle fascia and organ fascia distinction is worth keeping in mind, the article implies that tubes have been found in both.

Also, I think whether these tubes are part of lymphic system is speculation at this point. The main thing is that they havne't considered in anatomy because they're destroyed by embalming.

</comment></comment></comment><comment><USER4> Actual article here:

[https://www.nature.com/articles/s41598-018-23062-6](https://www.nature.com/articles/s41598-018-23062-6)

</comment><comment><USER5> I wonder how many organs are left to find. Was only recently they added the mesentery to the list.

<comment><USER6> I don't know that it's so much about "finding" organs anymore, it's more a process of "defining" them.

<comment><USER7> This article doesn't seem to outline a redefinition, but an actual discovery as a result of better imaging technology. It makes you wonder what other things we can only see in a living body.

<comment><USER8> It's more of a novel way of seeing what we knew was there, and then some willfully clever writing to make the scientifically routine sound new again. The interstitial space and it's role in carrying debris, waste products, and cells into the lymphatic system is well described, indeed a fundamental premise of physiology in health and disease. Extracellular fluid constitutes about 1/3 of a human's fluid volume. Do you really think we haven't thought about where that 15 liters is?

As was said on the other thread, this is like buying the Hubble Space Telescope, pointing it between Mars and Jupiter and breathlessly reporting a new kind of planet that consists of a lot of rocks spread in an orbital ring.

</comment></comment></comment></comment><comment><USER9> That's amazing! We have 2018 and still find such important stuff!

The focus on the cancer PR bingo kinda plays the message down a little... This isn't just important for the understanding of cancer spreading. This could explain and effect so much more.

Just give them their damn nobel price!

</comment><comment><USER10> Noob question (as I'm not a biologist at all, knowing nothing about this field) : is it a possible explaination for the whole « energy flowing in the body » thing ? If there in fact is a network of fluid inside the body that we didn't know about before, can't it explain ?

<comment><USER3> No, bodily "energy flows" are all in the head. It's very easy to think yourself into all sorts of physical sensations.

<comment><USER11> where in the head? Is there a region in the brain this occurs?

<comment><USER12> Possibly:

[https://www.york.ac.uk/news-and- events/news/2015/research/ps...](https://www.york.ac.uk/news-and- events/news/2015/research/psychologist-brian-magnetic/)

<comment><USER13> The thing is, if I see a fire and put my hand in it, I'll experience pain. An MRI scanner would be able to detect certain parts of my brain being excited.

If my brain was then artificially stimulated in the same region, no doubt I'd feel the same pain again. However, none of this means that the fire wasn't real in the first place.

Of course, it's interesting because perhaps the fire isn't real and it's just some fringe part of the brain playing up, but I'm not sure how you'd go about designing an experiment to work that out (i.e. whether the circuits exist because the fire is real, or whether they've evolved some anomalous behaviour).

</comment></comment></comment></comment></comment><comment><USER14> hmmm... why did they take so long to find out something in the body?

<comment><USER9> It's complicated science. Kind of like physics or chemistry. We just don't know how we could live forever.</comment></comment>


GitLab is open core, GitHub is closed source - <AUTHOR> https://about.gitlab.com/2016/07/20/gitlab-is-open-core-github-is-closed-source/? <comment><USER2> This feels like a really weird situation for you guys. You want the selling point for your software to be that you're more open than proprietary platforms like GitHub but you're unwilling to actually commit to that and have to hide behind terms like 'open core' and 'source available'.

> When we mention that GitLab is available in an open source edition people > frequently ask "Isn't GitHub open source?""'?

* I think _even more_ people are surprised to find out that everything except Gitlab CE is closed source. If someone were choosing between hosting with GitHub or Gitlab.com then you're only competing only on features and community since they're both equivalent in terms of openness.

* And I hate nitpick on word choice but you don't get to so shamelessly hide behind your brand. There is no such thing as Gitlab; Gitlab Inc. releases a product called Gitlab CE with a similar but more limited feature set to Gitlab EE under an open source license. If Mercedes released a $10,000 car by stripping out features and using a cheap Volvo engine I know their marketing campaign, "Mercedes is now available for an affordable price" would leave a bad taste in your mouth.

I know you've been getting a lot of negative feedback recently on HN, at it seems, at least for me, that there is a huge demand for a truly Free-with-a- capital-F alternative to GitHub and you're falling short. A thousand Gitlab CE instances hosting a few OSS projects is nothing compared to your potential if you really embrace openness.

<comment><AUTHOR> What do you mean with everything except GitLab CE? We have EE options that are also closed source but for example GitLab Runner [https://gitlab.com/gitlab- org/gitlab-ci-multi-runner](https://gitlab.com/gitlab-org/gitlab-ci-multi- runner) is open source.

I'm open to changing it to GitLab Inc. in the blog post. Where would you like to see that?

I think the feedback on HN has been largely positive, for example see most of the top comments on [https://news.ycombinator.com/item?id=12128546](https://news.ycombinator.com/item?id=12128546) In that comment section people rightly called us out for calling ourselves an open source company, hence this blog post.

On of the most widely known Free-with-a-capital-F alternatives to GitHub was Gitorious. They couldn't make the business model work and had to sell the company or close it. We ended up acquiring them for the name recognition [https://about.gitlab.com/2015/03/03/gitlab-acquires- gitoriou...](https://about.gitlab.com/2015/03/03/gitlab-acquires-gitorious/)

It is very hard to make 100% open source work. We tried donations, consulting, and paid feature development but neither worked. That is why we introduced the Enterprise Edition. Since we introduced that we've been able to make the open source edition a lot better.

GitLab CE is Free-with-a-capital-F but if you prefer to use something that doesn't also have a proprietary edition consider using Gogs. Because of our Enterprise Edition income we're paying the only full time developer on Gogs.

</comment></comment><comment><AUTHOR> I see this was marked as a dupe, but I think it is different content. For example I don't think the encoder thing is widely known [https://twitter.com/_JohnathanLyman/status/75585063275445452...](https://twitter.com/_JohnathanLyman/status/755850632754454529)

<comment><USER3> I realize that it seems different to you but that's (understandably) because you're so close to the story. To the typical HN reader this is the same topic as [https://news.ycombinator.com/item?id=12128546](https://news.ycombinator.com/item?id=12128546). It isn't in HN's interest to have two articles about that on the front page; nor is it in your interest, because readers will get ornery about it.

The thing to do instead is post a link in the original thread to let interested readers know that you put up a follow-up post. You can use the HN link if you want; the discussion will remain open even though we've marked the item as a dupe.

<comment><AUTHOR> Thanks for the explanation Dang! Keep up the good work. I've posted a link to the blog post in the other thread.

</comment></comment></comment><comment><USER4> The true core of GitHub (and GitLab) is Git itself. So both are open core where it really matters. Because both GitHub's and GitLab's essential operations are all done over the Git core, neither code and code history hosted on either system are locked in.

Where GitHub has slightly more lock-in and is less open than GitLab is its Issues system; One can only extract the data (via API) for import into an alternative system, whereas with GitLab you could run your own copy of the open source code (but you'd still have to do the data export-import as far as I can tell).

<comment><AUTHOR> You indeed have to do the data export-import but we tried to make this more convenient with the project import/export [https://gitlab.com/help/user/project/settings/import_export....](https://gitlab.com/help/user/project/settings/import_export.md)</comment></comment>


Running Arbitrary Executables in AWS Lambda - <AUTHOR> https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/

<comment><USER2> They announced at the London summit that Java support in Lambda would be launching soon; it sounds like they're aiming to support lots of languages.

</comment><comment><USER3> Based on the title, I assumed this was going to be a security blog showcasing an exploit.

</comment><comment><USER4> @RossM: We will definitely be supporting additional languages. Happy to take input on the order... @vegasje: VPC tunneling is a frequent customer ask and is on the roadmap.

<comment><USER5> Hi Tim,

1\. What about support for cron-like periodic events? Maybe something like cron.yaml in Elastic Beanstalk, but serverless.

2\. Does Java support means, that it will be possible to write lambdas in any JVM hosted language, like for example Clojure?

<comment><USER4> 1\. Working on it :). I'd appreciate feedback on the scope of an mvp feature here: e.g., daily/hourly/5 minute-ly periodicity? Scheduled day/time in the future for a one-off? Or is anything short of full cron not enough?

2\. Yep. Initially, you'll have to include the Clojure runtime as a library in your ZIP file, so it will look to Lambda like a Java function. Then assuming there's interest, we'll promote it to a first-class experience in the console and API as a language of its own at a later date.

</comment></comment></comment><comment><USER6> I'll be more interested once Lambda can access resources inside a VPC. There are only so many things you can process off of S3...

<comment><USER7> There are a bunch of other events it can read from now: [https://aws.amazon.com/blogs/aws/aws-lambda-update- productio...](https://aws.amazon.com/blogs/aws/aws-lambda-update-production- status-and-a-focus-on-mobile-apps/)

There's also the dynamodb streams preview: [http://docs.aws.amazon.com/amazondynamodb/latest/developergu...](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html)

I think the future will probably be measured in GB/s.

</comment></comment><comment><USER8> Anyone tried Azure WebJobs? How does this compare, looks like much the same?

<comment><USER9> I recently tried WebJobs and found it to be simply awesome. The best aspects I noticed are:

* Seamlessness - it has an in-built processing pipeline (using queues, service bus etc.), whereas with Lambda you'll have to do a little more work to connect the components e.g. S3, SNS.

* Scalability (although both AWS and Azure offer auto-scaling) - Lambda has an execution timeout of 60 seconds for functions. If the functions are I/O bound then WebJobs is more suitable, else Azure Batch offers better CPU bound work support.

* Ease of deployment - 'drop and use', which I don't think Lambda offers out-of-the-box because there seems to be dependency on Node.js?! The WebJobs dashboard under Azure Portal is a great way to track invocations and logs.

* Cost - WebJobs comes free with App Services (Web Apps)

The one and only shortcoming of WebJobs seems be the lack of recurring tasks (but there's a workaround by adding the job back to the queue on its completion).

Further reading:

[http://www.troyhunt.com/2015/01/azure-webjobs-are-awesome- an...](http://www.troyhunt.com/2015/01/azure-webjobs-are-awesome-and-you.html)

[http://www.troyhunt.com/2015/04/orchestrating-massive- parall...](http://www.troyhunt.com/2015/04/orchestrating-massive- parallelisation.html)

[http://www.hanselman.com/blog/IntroducingWindowsAzureWebJobs...](http://www.hanselman.com/blog/IntroducingWindowsAzureWebJobs.aspx)

An on-premise alternative can be Hangfire, Sidekiq or Quartz.

</comment></comment><comment><USER10> This truly opens up a world of possibilities. My only itch in the wound is the lock into Amazon linux compatible executables. If they can run exe's compiled on a Ubuntu box, that would be awesome!

<comment><USER11> Linux userland binary compatibility in general is surprisingly fragmented, thanks to the introduction of so symbol versions about a decade ago.

[http://harmful.cat-v.org/software/dynamic- linking/versioned-...](http://harmful.cat-v.org/software/dynamic- linking/versioned-symbols)

[https://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core- gene...](https://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB- Core-generic/symversion.html)

I don't believe Amazon Linux is any worse than other Linux distributions in this regard. If you build a binary on an older Linux distribution (like CentOS 5), then there's a good chance it will run on most new distributions. The opposite is unfortunately not true.

Also, some libraries, like libcurl, don't seem to have consistent symbol versions across distributions. If your application links against libcurl, chances are you won't be able to create a single binary that runs on very many distributions.

</comment></comment><comment><USER12> How will Java support work? I can only assume it will start a JVM for each lambda event.

<comment><USER4> Tldr: Only if your events are extremely infrequent. With an inter-event arrival rate of seconds to few minutes, your jvm processes get frozen and thawed out the vast majority of the time to avoid the initialization/load overhead that would otherwise result.

See [https://aws.amazon.com/blogs/compute/container-reuse-in- lamb...](https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/) for a more complete description.</comment></comment>