Ask HN: Build it and they will come or 50% marketing? - <AUTHOR> Being a complete product nerd, I tend to spend 90% of my time on improving my product (a website).
Therefore I love the idea of "Build it and they will come". Which works for me to some extend (I am ramen profitable).
But often I also hear the opposite. In a recent Mixergy interview, Gabriel Weinberg suggests investing 50% of your time into marketing. And in his book "Traction", Peter Thiel is quoted with the statement, that more startups fail because lack of distribution then because lack of product.
What do you guys think? How much marketing is enough? <comment><USER2> "If a tree falls in a forest and no one is around to hear it, does it make a sound?"

You can spend countless hours making improvements but without a user base, you have no idea if they are needed or wanted. Build your MVP, and whilst you're building it, shout about it. Tell everyone. Nobody is going to steal your idea.

Marketing should start from day one and in my opinion be bigger than a 50% split. More like 70% marketing. This will let you streamline your development time and only build things that will benefit your users, and ultimately your revenue stream.

Good luck with your product :)

<comment><USER3> >You can spend countless hours making improvements but without a user base, you have no idea if they are needed or wanted.

This is on the right track and I would say that the improvements, iterations and additons to the product should be focused towards the revenue generating users.

It can be difficult to identify this segment, but it is worth the time to do so. Every user will have suggestions for improvement but if the person never intends to pay for the product or only requires the free features then you are wasting your time improving the product for them. This doesn't mean you should ignore the non-paying users, rather you should listen primarily to their suggestions for what the product requires for them to be a paying customer. If you find that a large number of non-paying users would convert to paid if you had X feature; determine the cost and potential revenue of adding the feature.

</comment></comment><comment><USER4> Never waste your time to make the product perfect, Always follow the steps of lean startup. Launch MVP (minimum value product) first and that too don't launch directly. firstly beta launch it. there are many platforms which will provide you the beta testers and early adopters.

Trust me once you beta launch your product early adopters will give you many useful tips and most important the subscribe button and review of early adopters will give the idea that whether your product is needed in the market and upto what extent and what changes needs to be done

There review will help you to determine the direction of development and they can even help you to determine the reasonable cost of the product(if you ask them for it)

I have made this mistake so please never spent countless hours in development just because you think its needed in the market take the review and idea validation from experts.

<comment><USER5> As a one person enterprise (zejoop dot com) I have been very product focused to date and I have struggled to get test users. I had no idea there were beta platforms, per se, so I Googled your phrase "beta testers and early adopter platforms" and learned a lot - especially from particularly helpful post on Quora.

That said, could you recommend top 3 such platforms in your experience?

<comment><USER4> Yes try betapage.co, betalist.com, launchingnext.com,betabound.com and producthunt.com, please note betalist.com is paid but rest of the platform are free

<comment><USER5> Thanks! I discovered erlibird, but I'll check these out too.

<comment><USER4> yup but erlibird is costly perhaps their plans starts from $1000

</comment></comment></comment></comment></comment><comment><USER6> "Being a complete product nerd..." describes your dilemma. IMHO the barrier countless many people face is psychological - creating a product is the cool and geeky (read: intelligent) thing to do; marketing is for the less talented people. Well, I'm here to tell you this: the moment you decide to derive gain (and not necessarily financial gain alone) you switch hats from being simply a geek to being a businessman(woman).

Marketing is not an option - it is a NECESSITY.

Great marketing can propel a mediocre or second rate product to dominance over a demonstrably superior rival(s)- (microsoft, coke , kardashian kids, Im looking at you)... Alternatively, it can serve to unlock the potential of a truly valuable offering (Dyson,google,Star wars, I pad)

I would take your idea one step further: once you have your product up and running, ALL your time not spent on critical maintenance tasks should be spent on marketing until the product is entrenched.

<comment><USER7> "marketing is for the less talented people"

I don't believe you intended to say this, but it read as such. If you think marketing is for the less talented then you've been around the wrong marketers...

<comment><USER8> maybe you should re-read the statement: "the barrier [..] people face is psychological: ... "

</comment></comment></comment><comment><USER9> IMHO: In most cases, dedicating 50% of your time to marketing is a good idea. The notable exceptions would be:

* Your growth model relies on virality. (In which case, as long as you have _some_ traffic, that should be enough to test your model and potentially start growing).

* Your growth model relies on SEO (in which case, you should spend time on that, not direct marketing)

* Your growth model relies on referrals. (Think of a contractor who does no marketing himself, he just incentivizes his clients to refer new clients)

* Your business model doesn't rely on user growth (hard to think of an example here, but I'm sure it exists).

But in most cases, you've got to market the product aggressively. Think of how many millions of sites exist (and are vying for your users' attention). Without some effort put into marketing, there's little reason to assume a user will visit your site at all.

That being said, you should do what you're good at. If you feel like the product needs to be marketed heavily (and you don't enjoy that kind of work), then maybe it's worth finding a co-founder who enjoys that part.

<comment><USER10> Even if your growth model relies on virality, seo, referrals, you should run some marketing tasks to validate your idea.

For example SEO takes a really long time to kick in. You do not want to build a product and work on SEO, only to realize a few years later after site has gone up in the SERPs that you built something no one wants. A better approach is to run some ads before (and during) you build your product to validate it. Even if the ads are not cost effective, initially it is worth paying for validation.

<comment><USER11> this x 10

One of the most effective ways I've found to validate is to put up a landing page with a brief overview of your offering and, explain that you'll be launching soon and ask the user to enter their email address into a Mailchimp- linked signup box.

Then spend $30 on super-targeted Facebook/Google ads for your niche and make sure you ad links to the landing page.

If 25-30% of visitors enter their email address then you're onto something.

<comment><USER12> Is $30 statistically significant? Depending on the keyword, this could bring only 10 people to your website.

</comment></comment></comment></comment><comment><USER13> The reality is that 70% is marketing and 20% is customer service and 10% is product. We could argue the actual percentages, but the majority is getting the word out, the next part is taking care of people and the least part is the actual product.

I have been part of products that were in all ways were superior to others but failed miserably either from a lack of marketing or a lack of taking care of the clients. But I have never been part of a product that had superior marketing and customer service that failed. Not that I think it is impossible, it is just that you get so much opportunity to succeed that it would take a serious effort to fail IMO.

<comment><USER11> Are you classing Sales under Marketing here?

For so many B2B products, direct sales will beat most other acquisition channels.

<comment><USER13> Yes, just as broad groupings. Marketing in this case would cover Bus Dev, Sales etc, where Product would cover engineering, R&D etc.

In my experience it is all about getting the word out and taking care of the customers you get. Doesn't mean you can ignore the product just that you have to be out focusing on clients more than product usually to get traction. As you scale then the mix gets more balanced in my experience, but still favors Marketing & Customer Service.

</comment></comment></comment><comment><USER14> You need to find the right balance for you. You need a solid product, but that alone is not enough.

Think of marketing in terms of trying to get the word out to people who would want to know. How do you find them? What do you need to communicate?

I don't think you should worry about the percent of time spent on X. Set some goals, find some useful metrics, see what you can make happen.

</comment><comment><USER15> Evidence for both exist in the wild. 'Build it and they will come' seems the more elusive, so in a generalist sense I would go with the 50% marketing. That said I'm a marketer so what can you expect!

In my sphere I've seen so many companies over focus on the product and be dismissive of marketing when It's clear they can grow there business cost effectively via advertising.

I've also seen business throw money down the drain trying to buy their way to success and unreasonably overcome the product weakness.

IMO the key is measurement of success/failure with marketing. And balance in product/marketing focus. I read a great book that covers some of this call 'In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters'.

<comment><AUTHOR> Thanks. Looks like there is broad consens for the 50% formula.

</comment></comment><comment><USER16> Product is NOT enough. However, you need to look at marketing holistically. In business school they teach the "4Ps of marketing." One is Promotion. Another, though, is product.

You need all of them (price and place are the other two Ps) to have a successful startup company.

</comment><comment><USER17> A couple of thoughts (i) Some of the time spent tinkering with the website counts as marketing. Redesigning the home page to better explain what your service does is marketing, as is adding OAuth capabilities to simplify signup. (ii) Really, the amount of time you need to spend marketing probably depends heavily on whether it's aimed at mass market or an easy-to-reach niche, whether it's something people actively look for or something they need persuading might be a good idea, and whether you have competition. But regardless of those factors it's probably greater than 10%...

</comment><comment><USER11> Slightly off topic but very relevant:

A lot of products fail because the entrepreneur built a product that noone wants.

You'd be better off validating your idea before you spend any time building.

Analyse any existing products in your space and contact your target market and ask them if they want your product and if not, why not. You'll learn so much more doing this than you will spending 90% of your time building. :-)

I'd also add that building a pre-launch presence is essential. The more people you can get to sign up to your email list/social media accounts, the bigger audience you will have to launch to.

</comment><comment><USER18> Just released a pod about Instabridge who grew from 0 to 1 million users without any marketing at all! Pretty impressive work. Some learnings for all of us trying to grow our businesses - [http://blog.haaartland.com/podcast- instabridge-one-million-u...](http://blog.haaartland.com/podcast-instabridge- one-million-users-without-marketing/)

</comment><comment><USER19> Good question, I just launched an alpha site that is very rough looking. I did do some social media while I was developing it, but it was not enough. I second iqonik's quote about the tree. It sure felt that way when I launched. I think marketing should be at least 50% marketing. How else will you get users in this world filled with distractions and noise?</comment>


Story:Why Chrome and Firefox will soon block sites with certain SSL certificates - <AUTHOR> https://www.templarbit.com/blog/2018/09/07/the-story-of-why-chrome-and-firefox-will-soon-block-sites-with-certain-ssl-certificates/ <comment><USER2> Google is overdoing "your website is not secure". They complain, with similar messages, for no-SSL sites, wrong-SSL sites, and now, rogue issuer SSL sites. A more explicit message, such as "This site used a security provider who turned out to be incompetent or crooked" would be better.

<comment><USER3> I agree that this information should be present somewhere, but a heading of "Your connection is not secure" is about as detailed as you can be for typical end-users. The extra information about why _exactly_ it's not secure should be present somewhere, but for 99% of users these details are completely non- actionable.

</comment></comment><comment><USER4> I've restarted my laptop today and noticed that Chrome got updated to a very chunky layout. Additionally, full screen video causes the second screen to go black. So, when I'm watching a full screen video on the big screen, main laptop screen is unusable.

Bye Chrome.</comment>


Ask HN: YAVPS - Yet Another Video Playlist Site - <AUTHOR>

I created this site - videowatchr.com/beta for users to create and share video playlists from youtube videos. Please comment. <comment><USER2> Good one. What tools and stack did u use?

<comment><AUTHOR> Thanks for the feedback, backend is customized PHP framework. Mostly jQuery on the front with AJAX on most pages. The videos are from standard youtube RSS feeds.</comment></comment>


Ask HN: Official source stating hash DB password requirement? - <AUTHOR>

The government organisation that I work for pays alot of money to a company to supply and host a specific web service.
I just discovered (by having to reset my password) that the passwords are not being hashed (because the reset service emailed me my current password in plain text).
Does anyone have an authoritive link that I can use in my email to my boss, stating that hashed passwords are basically a "101" of web security? i.e. something that he can use to tell the other company that their service is not good enough <comment><USER2> These apply in the US:

If the government agency takes money online, PCI compliance ([http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Secu...](http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard))

FIMSA: [http://en.wikipedia.org/wiki/Federal_Information_Security_Ma...](http://en.wikipedia.org/wiki/Federal_Information_Security_Management_Act_of_2002)

FIPS 140-2: <http://en.wikipedia.org/wiki/FIPS_140-2>

</comment><comment><USER3> The link at the bottom is the Stack Overflow IT security blog, I will drag out some direct quotes to help you to summarize, editing slightly to make it more readable to people not knowledgeable in the industry.

 _The bad thing about such "cleartext" storage of passwords is that it induces a vulnerability [in a certain type of attack] ... where the attacker could get ... access to the server data. If that data includes the user passwords, then [they] could use these passwords to sign in as any user and get the [same computer privileges and accesses as that user]_

In simplistic terms, if an attacker gains access to your database and the passwords are not hashed (stored in an unreadable by human format), the attacker has near instant access to any users account within that database and the application it powers.

 _Also, the passwords themselves can be a prized spoil of war: users are human beings, they tend to reuse passwords across several systems._

Or, if your users are reusing their work passwords on say, their Paypal or personal email, the attacker has access to these (assuming he knows their login / email there too.)

 _We just want [to slow down the attacker]._

If your attacker is looking to only get one users passwords, the odds are unfortunately that they will manage to break a hash using pre-built lists of password hashes or using a computer program to recreate the process the server makes in hashing it, on every possible password (within reason) - hashing the password will however slow the attacker down (and perhaps stop them entirely) instead of the instant access they would otherwise have to your users accounts.

 _A hash function is the right tool for that. In full details, the hashing process should include a [random key generated just for that user] ... and be appropriately slow_

Simply put, use a _salt_ with your users password, perhaps by hashing their username and appending it to the end of their password, to make their hash unique to them, so pre-built libraries of passwords become unusable, slowing the attacker down considerably. Use a function which takes a long time to complete, so not the MD4/5 or Sha family, but something along the lines of the algorithm Blowfish.

 _Password hashing is damage containment._

Password hashing is the last line of defense once the attacker is already in your server, but don't assume this makes it useless - the odds are, if your company isn't bothering to hash their passwords properly, they probably haven't bothered to properly secure the website or application either.

[1] - [http://security.blogoverflow.com/2011/11/why-passwords- shoul...](http://security.blogoverflow.com/2011/11/why-passwords-should-be- hashed/)</comment>


Slack stock surges at debut, values company at more than $25B - <AUTHOR> https://www.reuters.com/article/us-slack-tech-listing/slack-stock-surges-at-debut-values-company-at-more-than-25-billion-idUSKCN1TL19M <comment><USER2> I am probably being a simpleton here, but: Why do we keep doing this? We _KNOW_ this company won't make that kind of money, or it's worth. It's a chat app. No adverts. No costs that would make up that evaluation. Why? Why do we keep bullshitting each other? Why do we evaluate a chat app like this? Who is going to get all this money? The people that made it?</comment>


Instagram 'helped kill my daughter' (VIDEO) - <AUTHOR> https://www.bbc.com/news/av/uk-46966009/instagram-helped-kill-my-daughter <comment><AUTHOR> Instagram's response was: "We do not allow content that promotes or glorifies eating disorders, self harm or suicide and will remove content of this kind"

Instead, they allow this content and display warnings and a help button. The content available is very very graphic, the words go where o is replaced by a noose, explicit self harm cuts and blood, etc.</comment>


Not Everyone Should Code - <AUTHOR> https://www.youtube.com/watch?v=EFwa5Owp0-k&feature=youtu.be <comment><USER2> Agreed - I've seen far too many who got into programming because of paycheck or peer pressure or something similar, but we're not really cut out out for it. They ended up hating it not a long time later. Eventually these are the people who are responsible for all the "coding is a horrible job" perceptions. Worse, they do everything they can to get out of coding - and more likely than not become managers who manage real developers.

[Read the Hacker News guidelines about posting links to videos, PDFs etc]</comment>


GitHub release paged comments – Jim Weirich's last commit loads again - <AUTHOR> https://github.com/jimweirich/wyriki/commit/d28fac7f18aeacb00d8ad3460a0a5a901617c2d4 <comment><AUTHOR> Up until very recently this page showed a 500 error due to the time taken to load the hundreds of comments.</comment>


How Old Is Your Work Computer?   - <AUTHOR> http://blogs.wsj.com/biztech/2008/11/14/how-old-is-your-work-computer/

<comment><USER2> Computers don't get _slower_. A computer that did the job 10 years ago can still do the job today. I'd happily be using the same Sun Ultra 1 I had on my desk in 1997 today if I could, and it could do everything I need to do perfectly well. Maybe the silver lining of this recession will be to teach people that they really can step off the treadmill and the sky won't fall in.

<comment><USER3> In a sense they do become too slow. After using newer stuff, you begin to expect faster performance. I remember being quite satisfied with my previous laptop till I started using the newer dual core stuff.

<comment><USER2> That is true, but the volume of useful work that can be done on a computer doesn't decrease; the slowness is almost always in the user interface portion, not the computation.

Obviously this is different in fields were people actually are constrained by their processors and staying on the cutting edge is a competitive advantage. We have a couple of apps like that (e.g. Monte Carlo simulations where we can basically eat as much power as we can get) but for most people (including me), most of the time, computers became "good enough" for work on the desktop 10-15 years ago.

</comment></comment></comment><comment><USER4> And hence the reason why Vista hasn't met sales expectations. Most office PCs are single-purpose email-and-word-processing terminals. Why upgrade if XP and Office are getting the job done?

</comment><comment><USER5> My work "PC" is a Dell Insprion 1501 laptop with a blazingly fast (/sarcasm) AMD sempron 1800 with 256M RAM.

Does everything I need it to. Then again, I run dwm and only terminal apps save for firefox...

</comment><comment><USER6> About a year old rather generic Fujitsu-Siemens + about 3 months old Acer Aspire One.

</comment><comment><USER7> my work pc is a dell optiplex gx270 2.6 GHz with 1 gig ram.</comment>


Congress Still Has No Idea How Much the NSA Spies on Americans - <AUTHOR> http://www.theatlantic.com/politics/archive/2014/10/congress-still-has-now-idea-how-much-the-nsa-spies-on-americans/382114/ <comment><USER2> It's not only that congress has no clue - the whole world has no clue at all. Not even allies, partners or whatever some states on earth are called these days. No one. And this is a shame.</comment>


Show HN: Bare Auth – a ready-to-deploy stateless authentication server - <AUTHOR> https://github.com/lapwinglabs/bare-auth

<comment><USER2> When using this, how do I get the information and token for the authenticated user in my app?</comment>


Talker group chat changes pricing, unlimited chatters for free - <AUTHOR> http://talkerapp.tumblr.com/post/3878402846/talker-goes-free

<comment><USER2> We've been using Talker with our team in Minsk. It's been fantastic, some things, like JavaScript plugins are ingenious.

Cobbled together a plugin to auto-link FOO-1234 to our JIRA installation. Plus, multi-line pasting creates an EtherPad session.

      plugin.onMessageInsertion = function(talkerEvent){
        $('td.message').replace(/(FOO-\d*)/gi, ''+'$1'.toUpperCase()+'');
        $('span.msg').replace(/(FOO-\d*)/gi, ''+'$1'.toUpperCase()+'');
      }

It's a fantastic, fantastic collab tool.

</comment><comment><USER3> I got introduced to talker app a while back while working with the guys from Teambox. I'm based in the UK while they're all over (Spain, US, UK). I didn't really see the point at first and figured Skype/IRC would be better but the more I used it the more I never stopped going on about how cool it was. I'm a little surprised but super excited that it's now free!

</comment><comment><USER4> Same here. I had tried out campfire but wasn't overwhelmed with it. I love the extensibility of Talker. Almost every other day I'm writing a plugin (<https://github.com/saimonmoore/talker-plugins>) in javascript to enhance my chatting with my team members.

</comment><comment><USER5> Nice but why the restriction on keeping logs? Surely it can't be a disk space concern, text is nothing. If my team is going to use a chat app I want to be able to reference the logs at a later date.

<comment><USER6> Because they need to make money somewhere, I assume. Totally fair.

</comment></comment><comment><USER7> We used Campfire at Masterbranch until we discovered Talker. We're keeping our old account ($6 a month) just because of the private rooms.</comment>


ShowHN: My app to record/upload videos and turn them into textable animated gifs - <AUTHOR> http://www.myfacewhenapp.com/

<comment><AUTHOR> It's currently free to celebrate the launch

We got an article in Mashable too, which was really exciting: <http://mashable.com/2012/05/17/myfacewhen-iphone-app/></comment>


Show HN: Mix, Preview and Download Trendy Font Combinations - <AUTHOR> https://fontpairings.bypeople.com/ <comment><USER2> a must-have tool for web designers, one of the best interfaces works like a charm!</comment>


Productising a Service Business (Part 1) - <AUTHOR> http://www.theprocedurepeople.com/blog/2014/09/22/productising-a-service-business-part-one-separating-capabilities-from-products/

<comment> UK-AL Financial Services and Insurance Services sell actual products though. An option is a product, insurance policies are products.

<comment><AUTHOR> Right, they are. But what makes them a product? Really, all they are is a contract, an agreement. A really really well defined agreement. There are also associated processes for executing that agreement.

How does that differ from, say, the person who "knows heaps about the web and will build you a website"? Well, their agreement (and processes, usually) aren't as well defined.

My point is that those financial/insurance companies are really service businesses, it's just that their services are so well defined they behave like products, and that you can do it too.

<comment><USER2> An options contract or an insurance policy can be re-sold to another party without anyone needing specialized "service-like" knowledge. Generally you can classify something as a product if it can be re-sold without a specialist being involved.

You can't really re-sell a web developer.

<comment><USER3> You _can_ package web development into neat, resellable chunks, but however scalable it might ultimately be, selling scripts, templates and cookie-cutter CMS installations is a million miles from financial services and insurance: you're actually pitching at an audience who have lower budgets than you'd have for custom design and marketing projects, and facing plenty of competition.

People in finance and insurance are highly paid precisely because regulators (and demanding clients) are persuaded that a certain level of service is required which avoids the appearance of competition from low end commodity products, and because the problems they solve are much larger than "how should I skin the company blog?"</comment></comment></comment></comment>


Show HN: Firefox addon which shows tabs grouped by containers in the sidebar - <AUTHOR> https://addons.mozilla.org/en-US/firefox/addon/container-tabs-sidebar/ <comment><USER2> I wish there was a way to have less tabs open. This will probably just encourage my bad habits of having too my stuff open

<comment><USER3> Try Max Tabs [0] and force yourself out of your habit/workflow by needing to be selective with your tabs (or maybe you'll just learn to run more windows instead).

[0] [https://addons.mozilla.org/en-US/firefox/addon/max-tabs- web-...](https://addons.mozilla.org/en-US/firefox/addon/max-tabs-web-ext/)</comment></comment>


Ask HN: Dealing with newcomers' arrogance? - <AUTHOR> I've been working(as a developer) on a software development project for quite a long time now. During this time, the team has changed a lot (a lot of people left, others arrived).
Two coworkers and me are the oldest members of the team.
Recently, I've been annoyed by the behavior of the majority of the developers on the project (those who are new compared to how long I've been on the project).
Whenever they see something wrong in the codebase developed by former team members, like poor quality code or simply a defect, they laugh about it, making fun of the developer who wrote "such bad code"(without even knowing the developer in question or the context that caused him/her to write such bad code). Now, I've been long enough on the project to know that many reasons can explain poor quality code (like short deadlines, low budget, etc...), and the quality of the developer is not always one of these.
Of course poor quality code should be pointed out, showed to people to learn what not to do or what is a better way of doing things. But It should not be used to make fun of people or humiliate them, especially when the people mocking others do not even write "triple-A" code. What also bothers me is that, the two other oldest members of the team don't say anything about that behavior. And that's why I'm asking if I should say anything or just let it go? Am I wrong feeling the way I feel? What would be the better way of telling it to the whole team? What would you do in my position? <comment><USER2> I've been coding for almost 30 years for startups to fortune 50 companies and they all have code bases with some level of messiness, f __* 'd up-ness. What an intro the real world when during a college internship for the bluest of blue companies I saw all manner of goto/macro/spaghetti contortions in a flagship product. If it were me I wouldn't let these guys comments bother me. If I had to say something I'd say "Awesome observations guys, you're so right .. WOW! I had no idea we have all this technical debt you're finding, THANKS! .. How long do you think it will take you to find all the rest of the bad code and FIX IT ALL.. Can you give me an estimate by the end of the week??" That should shut it down.

<comment><USER3> I've often said that complaining about something is a waste of good oxygen unless you have a plan on fixing it or changing it. Or at least have thought of a way to make things better

</comment></comment><comment><USER4> When you're starting to have craftsmanship, taste, a sense of quality, whatever you want to call it, being surrounded by what you can now recognize as _bad_ work is distressing. Especially when no one else is even acknowledging it.

Is this the kind of person I am? Is this the kind of team I belong on? Where shit like this is treated as normal and passes without comment?

It's a powerful anxiety. Speaking it out loud is a natural step, and it's easy to see why people reach for it. Suppressing or forgetting about it is also an option, but people tend to correctly recognize that they'll die a little inside by doing that.

It takes experience and maturity to find productive ways of channeling that feeling. People don't always get there right away. If you think you have, model it. Show healthy ways of dealing with the "holy shit this is garbage" feeling.

If you really need people to swim in shit uncomplainingly, then either a) hire junior people who can't even tell what's wrong with it or b) expect to pay a premium for senior talent knowingly specializing in that niche. Your team might just not be a fit for people who want to do good work.

<comment><AUTHOR> I understand what you mean. However, I said earlier that I have no problem with improving poorly written code. But I also said that I spent enough time on this particular project to know that some problems that existed before (and no longer exist today), prevented us from writing clean code and were not related to the quality of the developers (some of whom are making fun of today). In other words, the problem is not that the old developers didn't know how to produce good quality code, it's that they didn't always have the possibility. Come on, do you all work on projects where everything runs as smooth as you want?

>> It takes experience and maturity to find productive ways of channeling that feeling. People don't always get there right away. If you think you have, model it. Show healthy ways of dealing with the "holy shit this is garbage" feeling. If I knew, I wouldn't have asked the question.

But your answer makes me think that the term "arrogance" I used in the title of my question may be too strong...I dunno...

</comment></comment><comment><USER5> The surest way to reduce the amount of such derision is by making people responsible for fixing the things they criticize, at the team culture level. It's fun to have a laugh at the expense of someone who's no longer on the team, it's much less fun if you then have to spend weeks or months of your own time to fix it, with the possibility of still producing shit for the same reasons why the original code wasn't too hot.

<comment><USER6> That's nice, but it wouldn't work all the time. Sometimes the reasons for bad code no longer apply, and the code in question doesn't get updated because there are higher priorities.

<comment><USER5> >> and the code in question doesn't get updated because there are higher priorities

Well, don't criticize then unless you want to own it. There's a variation of this advice wrt communicating with your boss, which is blindingly obvious to anyone who's ever been a manager, but rarely obvious to the subordinate: don't come to me with problems. Any idiot can do that, and many do. Come to me with solutions, or at the very least a proposal on how to solve problems that you're prepared to follow through on. This is basically the surest way to advance your career on any team, yet people just don't do it. Nobody likes the complainer, everyone, especially managers, likes the problem solver.

<comment><USER6> You lost me.

The question was how to deal with newcomers' arrogance, and your suggestion is to have them try and fix things to find out why it needed a bad solution.

What I tried to reply to you is that they may have no problems fixing the bad code because the reason for it to be bad may be gone.

Now, if I understand correctly, your reply to that is to "threaten" them with having to fix it? The point of my comment was that they'll have no problem in fixing it and they'll keep being arrogant because they'll "prove" that there was no reason for it to be bad.

EDIT: s/shitty/bad/. I meant no offense to anyone.

<comment><USER5> No, to "threaten" anyone in a professional context is a noob move, it doesn't work. You (or your boss if you're not a manager) just say something to the effect of: "on this team, if you don't like something, you don't just criticize, you go ahead and fix it". Basically, make empty bitching, moaning, and derision, socially unacceptable, and cultivate the sense of ownership. If nobody owns problems, they don't get fixed.

</comment></comment></comment></comment></comment><comment><USER7> I think this post deserves a more serious response than it's gotten so far and I fear it won't get the response it deserves. I think part of the reason for that is the nature of programming, because it requires a degree of precision and correctness that most social spaces don't. But I think that attracts a lack of social consideration that is unfortunate.

To the author, I've experienced this from both sides, and I want to say that it can be very hurtful to receive criticism that goes beyond the work and feels directed personally. It can feel isolating and ostracizing. That said, I want to encourage you to try to distance your sense of self from your prior work. I know that can be difficult.

It can be hurtful to hear that your work is "bad", you might even disagree that it's bad. As long as those comments are focused on the quality of the work and not the quality of the person who wrote it, that's a discussion that can be productive even if it's exceedingly inconsiderate. That work isn't you. If you're ready to acknowledge that it was compromised by certain constraints, you can find ways to value the drive to improve it as new minds with a different set of constraints come in.

We all have an opportunity to learn. For those of us maintaining debt-ridden code, we can welcome improvements, however gradual or wholesale, as they're introduced. For those of us walking into what seem like trap doors and quagmires, we can welcome opportunities to be more aware of the stress and effort put in by the people who came before us.

Software can always be more correct and more precise and more forgiving and any number of values we might search for in our engineering pursuits. Software engineers can always be more kind and more compassionate and more caring.

<comment><AUTHOR> >> To the author, I've experienced this from both sides,

So do I. And it's true that it can sometimes be difficult to admit that I didn't write very good code. But I always think that what needs to be done must be done. That is why I agree to change my code or don't mind having it changed by someone else when I am shown that it is not correct or that it can be improved. In fact, my question has little to do with technology. It's just human relations advice in a workspace I'm looking for, and you seem to have understood it better than others.

</comment></comment><comment><USER8> I hear two major problems in this story:

1) Mocking prior developers - there is nothing wrong with calling out bad code. But it should be done respectfully. We all write bad code every day. If you are not looking at your own old code and seeing how it could be better, then you are not growing as a developer. Having a discussion with the team about respect around code quality sounds like a good idea.

2) You need to accept that the team has changed. The guy who has been around the longest can often turn into a grumpy old man nostalgic for ye olden days. It might be a good time to look at the good that the new developers bring, appreciate them, and try to adapt to the new reality.

Between those two things, you can probably find a balance where they stop the negative behavior, and you seek out the positive, and you all come together as a team.

</comment><comment><USER9> Working with arrogant people is a bummer. I have very little patience for people who know more than they do, and people who take opportunities to tear down rather than educate.

This sort of behavior is bad for teams and bad for culture. Distributing the responsibility of code is a possible strategy.

More pairs programming, will force people to work together, and remind everyone that no individual is really that smart.

Incorporating mentoring responsibilities into employees work, is another way to distribute responsibility.

Rotating job descriptions was a strategy used at qumulo. If you were hired on as a SWE, you would be rotated to different teams every few months in order to increase your understanding of entire code base. Bakes diversity comparable to your employee diversity into the code base.

At Isilon pairs programming was used during code reviews, and reviewers were often held responsible to later fixes.

Flat teams are used at Galois, Grammatech (Research), Steam, and JPL (Research).

Many remote-first companies require all comments to be made in the ticket. This forces people to explain their concerns in writing. "Is dumb" is not an actionable critique.

Ideally arrogance should be filtered prior to hiring, but if you have a lot of it in the company, its worth asking why and how to grow those people toward cooperative thinking.

If the person you are hiring believe they are "the smartest person in the room" then their growth is dependent on them not being in that room. Firing brilliant people is a wonderful past-time.

</comment><comment><USER10> I've had a teammate like this. Very smart, very young, had the strong opinions of a senior with the actual experience, narrow-mindedness, and general attitude of an unprofessional junior. He got moved out of one team, then was just as bad on the next one, and eventually left. By the end I stopped trying to debate with him and his toxic attitudes toward other people's code because I decided someone like that isn't worth the energy. Hopefully he'll find a better fit at his new company.

</comment><comment><USER11> Regularly on Ask HN questions about "What is best practice when I join a new team?" top advice is not to criticize existing systems, not plan to rewrite them in $newlanguage and assume there's a reason it was built like that. Low budget, short deadlines certainly is a good reason. So is bad specs, constant changing specs, or maybe $language or $framework just didn't have the features back then.

</comment><comment><USER12> Great interview question:

"When you come across poorly written code, do you think:

1\. 'Wow this guy was an idiot or lazy.'

2\. 'Maybe this code looks bad but the author probably wasn't an idiot. It was probably reasonable solution at the time.'

The 2nd answer is the one of wisdom. Ask the interviewee to expand on this so you can tell if they really believe it.

<comment><USER13> This is absolutely what you want, but any reasonable interviewee will respond with the answer that seems most likely to lead to an offer.

Instead, ask them about their experiences with legacy code. Not poorly written code, just "legacy". Talk through it with them, their changes, how they planned for them, how they dealt with the code.

This will tell you more than asking a softball question.

</comment></comment><comment><USER14> Where I work we routinely openly disparage each other's skills and work ethic, but keep it jovial without any serious personal attacks or ganging up on one person. Criticism is never taken personally, and you build a culture of friendly competition, and nobody is ever afraid to tell anybody else that their code sucks because everybody has shitty code somewhere, took a short cut to meet a deadline, made a mistake, etc.

In your situation I would've said to the new devs they should be more worried about screwing up my lunch order being so new, and claimed I wrote the terrible code myself instead of selling out the old devs, and that they need to pick up the pace and step up if they want to compete with my 10x skills pushing working product out the door. I would've also nicknamed the loudest critic 'Triple A' from there on in too just like how they nicknamed me when I started and took forever to finish anything.

<comment><USER15> That environment sounds horrible. Something similar is going on where I work now and it's really discouraging and negative.

<comment><USER16> Some people love it. I had an uncle who was like that with his coworkers in construction; constantly teasing and criticising (and coworkers giving the same right back). Many people would think they were fighting, but they were the best of friends and enjoyed the repartee.

Some might call it toxic, and it wouldn't be allowed in a corporate environment today, but clearly no environment will please everyone. For them, it was good.

</comment></comment></comment><comment><USER17> Is that a problem of yours? If it is your code - either deal with it and fix it or assign someone else.

I've usually heard these stories from older coworkers who were telling horror stories of past times - usually that involves low salary, terrible working conditions, etc. not a thing even older coworkers wants to remember without a shudder. Bad code always comes with bad salary, rushed code and other disasters. And no one - even old coworkers want to do anything with that bad code and it will be tormenting older coworkers for years. Sometimes it is a relief that someone is so eager to deal with that stuff that no one else wants to deal anymore.

PS Change your attitude. Have a laugh and carry on... or go where your older and smarter colegues have went already.

<comment><AUTHOR> Well, would it make any difference if it was my code? It doesn't matter to me. I certainly produced some low quality code here and there. So what? I don't mind correcting it or having it corrected. But I am a human being and as such, I try to treat those with whom I work (or have worked) as I would like to be treated. Which excludes making fun of them or ridiculing them.

As for my salary, I'm not complaining about it either. Also, I'm not a dinosaur like you seem to think.

</comment></comment><comment><USER18> Look at it from their perspective: some people left a bunch of nasty messes that they will eventually have to spend time and effort to clean up without providing any good explanation of why the messes were there. Naturally, they assume Hanlon's Razor applies and they are venting about it.

The most you should do is explain what the reasons were for the bad code at the time, if you know them, and also explain why it can't be fixed right now, if there are any good reasons for it. There is nothing that you can say to defend bad code itself; it is, by definition, bad. Doing so will only give the rest of the team the wrong impression about you.

<comment><AUTHOR> I'm not defending poor quality code. I'm looking for a way to avoid someone being insulted because they've written bad code. That's all. Do you ridicule or insult your current colleagues because they have written bad code? If you don't, why would you do it for the people who were on the project before you?

</comment></comment><comment><USER19> The last guy I worked with who often would call people 'idiots' and far, far, worse (Ironically, he was over 60) was fired for his crap attitude.

There is value in correcting bad code. There is only toxicity in insulting those who went before you.

</comment><comment><USER20> Two things.

One, there is no excuse for garbage code. Deadlines don't cause people to suddenly forget how to code. Perhaps corners get cut and things need to be refactored but if developers are coming and going and saying the code is bad I doubt that's just because of a deadline. That sounds more like a bad developer using a deadline as his excuse.

Two, do you have code reviews? Are you looking at their code? Are they looking at yours? Why would you expect them to write triple A code when they have to use what you say is a garbage code base? Garbage code breeds garbage code. Maybe their arrogance is a way of venting their frustration with being forced to write bad code? Or maybe they're telling the truth but for some reason you interprit it as arrogance?

<comment><AUTHOR> >> One, there is no excuse for garbage code. Deadlines don't cause people to suddenly forget how to code.

Come on, really? I just gave one or two examples to illustrate my point! And they are valid examples (you even partially admitted that in your comment). Also, if you read the discussion, another user gave other reasons that can explain a bad code base.

>> Maybe their arrogance is a way of venting their frustration with being forced to write bad code? Or maybe they're telling the truth but for some reason you interprit it as arrogance? Should I even comment on this? really?

Also, did I even say or imply that the whole codebase is garbage or something?

</comment></comment><comment><USER17> 1\. Have you talked to your "old" coworkers if they share your feelings. Maybe you can learn something from their perspective... 2\. Judging from your username you might be a lady. I have been working as a single male coder in company of other 3 female coders. I just can't get through my mind that they would forgive me if I was leaving crappy code for them to deal with that later... that would be very unprofessionally for them to make excuses about my bad job!!! 3\. Let's be more precise about your complaint- there is no way for new people to mock people they do not know and have not seen - but they can comment about code... that you or other 2 gentlemen might be responsible... just take these things with grain of salt. Admit your mistakes - better yet: LEARN FROM THEM and move on. What you are looking right now is not healthy for you. 4\. Other Solution doesn't exist, because you are either not in control of company and can't change things globally or unable to move to better workplace or unable to grasp that your solution is not viable. The good thing is that you have found the problem, but are you sure that solution that you have in mind is the right one? Moralizing about behavior of others is not healthy - your morals will differ with that what other people have. New people will bound together by your oppression and you will not be able to even understand your failure.

<comment><USER9> this is unnecessary drivel</comment></comment>


Ask HN: Do you give your email password to your hosting provider? - <AUTHOR>

Network Solutions previously hosted our work email, but several month ago we moved to a different mail provider. NS remains the registrar and web host. Today, several emails went missing and we figured out that they were ending up on the NS mail server somehow. None of the MX records point there anymore, so I called their customer service to see what might be going on.
Both the 1st level rep and a manager requested my email username and password, which I refused to give. On the one hand, I should be able to trust my registrar, b/c they could easily wreak havoc even without my password. But on the other hand, my username and password were certainly not required to solve the problem (maybe look at the headers of the mis-directed emails first?)
The experience left me severely unimpressed with Network Solutions. but perhaps I'm over-reacting? Would you give your email username and password to your hosting company?
(solved the original problem without NS: all of the missing emails were traced back to one user, whose email client was still using the NS smtp server, which apparently doesn't pay attention to the current MX records) <comment><USER2> I would absolutely never give my email credentials to anyone.</comment>


Infiniti's variable compression engine is a huge technological leap - <AUTHOR> http://arstechnica.com/cars/2016/08/inifiniti-will-debut-a-variable-compression-ratio-engine-in-september/ <comment> semi-extrinsic Duplicate of [https://news.ycombinator.com/item?id=12287452](https://news.ycombinator.com/item?id=12287452) from yesterday.

</comment><comment><USER2> Like many things, it seems an easy innovation in hindsight.

However, the crank's radial axis is now not fixed but the control shaft's is? How's that work? An animation would be nice.</comment>


Theresa May to resign as UK prime minister - <AUTHOR> https://www.bbc.com/news/uk-politics-48395905 <comment><USER2> for some reason a sort of headline flashed through my head when i saw this that said "Lady T2 Resigns" which immediately made me wish i had the creativity to make some sort of terminator 2 meme on it</comment>


Launch HN: Numericcal (YC.S18) – Lifecycle Management for ML Models on the Edge - <AUTHOR> Hey HN,
We're Ranko and Shaoyi, co-founders of Numericcal (https://numericcal.com). We're building developer tools to simplify building, optimizing and maintaining Machine Learning models for embedded, mobile and IoT applications.
This platform is the result of our own struggles while helping on two ML powered projects; one using Computer Vision and one Voice Recognition. In both cases running models in the cloud was too expensive and slow for a good user experience. Moreover, it was not clear whether the training data our Data Science team had, at the beginning of the project, was representative of the data to be encountered in production.
The solution for cost and speed was to run inference on some end-device. However, we did not know which device would be feasible, nor did we know what model the Data Science team would end up with.
We initially considered two options:
* Postpone working on ML related software tasks until the Data Science team figured out what they wanted to do. Unfortunately, this meant that we could not parallelize the development. Moreover, the Data Science team would not get any feedback on the model runtime performance until we integrated them towards the end.
* Make a bunch of assumptions about models that the Data Science team would use and implement something. This would allow us to work in parallel, but we would be running the risk of having integration issues if those assumptions turned out to be wrong.
We looked for tools online to solve this but we couldn't find anything comprehensive. So we decided to build our own! We settled on a design that packages ML models into (very primitive) serializable objects, encapsulating all the information and supporting files to use the models. For example, an object detection model would package the DNN graph, shape of the input and output tensor, bounding box anchors, etc.
This gave us what we wanted. On the software side we could write against the "interface" of the package. During initial development, we simply packaged dummy DNN models that always returned the same value. Later, the Data Science team would simply drop in a new package and everything just worked. One more victory for abstraction!
Since then, we've added a number of features around the packaging system. We can now add models during compilation or remotely through a cloud service and a user-friendly GUI. Models are versioned and report basic performance metrics to the cloud so Data Science teams can get feedback and guide model exploration. Remote delivery also allows sending different models to devices with different compute capabilities. We also added the possibility of running models on different runtimes (TensorFlow Mobile, TensorFlow Lite, our own library, Caffe2 is coming soon). Finally, we wrapped the app side code into ReactiveX API to make working with multiple models asynchronously easier.
Today we're releasing the Numericcal Cloud Tools and Android SDKs in Beta. You can read about the system in more detail at (overview.workspace.numericcal.com) and check out demos (https://github.com/numericcal/BetaDemoApp).
Machine Learning on mobile and IoT devices is yet to gain wide adoption. Making this transition will bring personalization of mobile apps and automation of business and industrial processes to a whole new level. We're currently working on projects for automatic damage assessment on vehicles and preventative maintenance of mobile assets.
We hope these tools will add to the momentum by speeding up development iterations for other teams, as they did for us. In the long term, we plan to open source edge integration and packaging SDKs. We will also open up more of our cloud-hosted functionalities, such as automatic model benchmarking, deployment, model compression and runtime optimization as services.
We're eager to hear comments, ideas and your experiences in building Edge applications with ML. Thanks for reading! <comment><USER2> Very cool and congrats on the launch. I see your demo is on android, are you doing anything with iOS / CoreML? I put up a similar project for OTA updates on iOS using CoreML to hot swap out device side models [https://github.com/rkirkendall/MLEdgeDeploy](https://github.com/rkirkendall/MLEdgeDeploy)

<comment><AUTHOR> Yeah, as the cloud/edge interface settles we plan to build SDKs for pulling models from iOS, GNU/Linux through Swift, Python and C#.

Let me check your repo.

</comment></comment><comment><USER3> Your project sounds really interesting. Machine learning models that can be updated and treated more like packages will really give people an edge over people who can't perform that task.

I made a project called mms2concept. What it would do is given a picture taken by a phone (or anything that could send an MMS really) and it would attempt to identify the image based on the picture. I used Clarfai and Twilio to do this.

I think with very resource constrained edge devices either you would have a much more powerful "basestation" style deployments where you have an arduino or similar device collecting edge data and sending it back to that "basestation".

<comment><AUTHOR> Can you share some writeup or repo for your project?

We internally have an auto-migration tool (currently very primitive) that can learn from cloud hosted model and cache it locally on the device (that's what this infra & packaging was built for ;)).

<comment><USER3> A writeup is at [https://steemit.com/twilio/@zitterbewegung/mms2text-let- your...](https://steemit.com/twilio/@zitterbewegung/mms2text-let-your- computer-look-at-your-message-pics-so-you-don-t-have-to).

I have a repository of the software at [https://github.com/zitterbewegung/mms2text](https://github.com/zitterbewegung/mms2text) .

<comment><AUTHOR> For some reason, your quick demo reminded me of this awesome MS project: [https://www.microsoft.com/en-us/seeing-ai](https://www.microsoft.com/en- us/seeing-ai)

Though we would be pushing it the boundary with 3+ DNNs on mobile, adding speech2text and text2speech to your app would make it an interesting addition to Seeing-AI, IMO.

</comment></comment></comment></comment><comment><USER4> Congrats to the Numericcal team on the launch! It's great to see new runtimes coming out to improve performance specifically on Android. It's been a real pain for us to get things up to par with Apple devices running Core ML.

We're building something similar but focused on existing Core ML/Tensorflow runtimes if anyone is looking for similar management features for iOS, check out [https://fritz.ai](https://fritz.ai). (Full disclosure, I'm one of the co- founders).

<comment><AUTHOR> Exactly, there is a lot of potential on the Edge, but dealing with fragmentation is really painful.

</comment></comment><comment><USER5> How easy is it to build custom architectures like segmentation and object detection networks? I am working on a segmentation coreml tools and apple coremltools only coverts a selection of layers.

<comment><AUTHOR> That depends on your choice of training framework and runtime engine (TF Lite/TF Mobile/Numericcal/Caffe2/etc.). We wrapped multiple runtime engines to provide as much flexibility as possible, quickly. For example, some layers available in TF Mobile are not available in TF Lite (and TF Lite is slower, for now!).

That being said, if there is no converter between the training format and runtime format, you're out of luck (for now). Our runtime (targeted primarily at Qualcomm SnapDragon SoCs) supports the most common layers and some more exotic ones that our users needed. For other engines we simply pull the standard package that vendors provide.

</comment></comment><comment><USER6> Congratulations for launching. The idea is very promising. Good luck!

</comment><comment><USER7> Congrats on the launch. We've pretty much experienced the same pains as you guys and are building a similar platform but targeted more towards web deployment. Best of luck!

<comment><AUTHOR> I'm quite interested in hearing how things turn out. Let us know if you write/release something.</comment></comment>


Javascript - Beautiful Validation, No Extras. - <AUTHOR> https://gist.github.com/2589227 <comment><USER2> ... or, instead of (ab)using a ternary, the same idea in CoffeeScript:

        return if not username
          error: "No Username Given.", field: 'name'
        else if not password
          error: "No Password Given.", field: 'pass'
        else if username.length < 3
          error: "Username is less than 3 Characters.", field: 'name'
        else if password.length < 4
          error: "Password is less than 4 Characters.", field: 'pass'
        else if not (/^([a-z0-9-_]+)$/i).test(username)
          error: "Username contains invalid characters.", field: 'name'
        else
          false

Hopefully a bit more readable. Link to see the compiled JS output: <http://goo.gl/QhR9c>

<comment><USER3> The whole point of the OP was revealing the structure of the data being matched (like a routing file). This code completely obscures that. And I'm not sure this is more readable as the number of conditions grow.

<comment><USER2> One programmer's readability is another programmer's "[_ (_ :guard #(< % 3)) _ _]" ;)

<comment><USER4> I agree with swannodette that the CoffeeScript version is not better than the JS implementation but for a different reason. In my experience code brittleness is directly correlated to the number of "else if" conditions in a single block.

</comment></comment></comment></comment><comment><USER5> I see validation in Javascript as a "bad smell."

If you want to impress me, develop some system that lets you write validation rules once and have them work on both the client and the server.

Back in my previous existence, before a strange series of events transformed me into an A.I. programmer, I was a generalist web developer. Back in 2001 I was helping some guys make a voice chat site aimed at Brazil, and against my advice, they implemented validation in Javascript and not on the server.

We launched and it all seemed OK for a few weeks until I get a call at 7 pm because the site is all f'ed up.

Well, doing some investigation I find that there's a user with the empty string for his user name and that this has had a bigger impact on the system than one might think.

I nuked the guy with the SQL monitor and added server-side validation that night.

Since then I worked on hundreds of different sites and web applications and I've had to deal with the busted app made by somebody who was too lazy to do server side validation many many times.

On one hand you've got the person who browses without Javascript turned on. Perhaps you're one of the cool kids who makes apps that don't work at all without Javascript, so you don't need to worry about him.

You still need to worry about the people that want to mess with you. If you build a community site that's substantial at all (say 10,000+ users) you're going to get hit. Today it's easier than ever to reverse-engineer client- server communication with Firebug and then use curl or another tool to make phony requests.

Apps built in this style, where all validation is done on the client have a surface area that's 100% soft underbelly.

<comment><USER6> while I agree with you that no one should rely solely on client-side validation - I don't believe that the OP was implying that (any) one should only use client-side validation.

Client-side validation is purely a means of reducing multiple requests / round-trips IMHO and it doesn't even have to be as reliable as a good server- side solution, but purely cover the basics, and provide quick feedback to the user while at the same time reducing load on the server.

</comment></comment><comment><USER7> Lines of code aren't at a premium. Why not favor readability over cleverness when possible?

I pity the person who'll be maintain this.

<comment><USER8> Why not simply do a straight exit-early if+return?

      if(!username || username.trim() = '')
         return { error: "No Username Given.", field: 'name' };

      if(!password || password.trim() = '')
         return { error: "No Password Given.", field: 'password' };

and so on.

Is that not clever enough??? Even a monkey would understand this.

</comment></comment><comment><USER9> I don't like mutating variables in an expression, and I don't get why _username += ''_ is executed twice.

I like the declarative feel of the expression, but since it actually changes state, I find it dangerous, since you generally expect expressions to be side- effect free.

Edit: I guess the second _username += ''_ should have been _password += ''_

</comment><comment><USER10> Its pretty, but it only handles one rule at a time. Being able to provide feedback on all errors will be considerably less graceful..

<comment><USER11> It's pretty easy to extend it to several rules: <https://gist.github.com/2589227#gistcomment-300423>

</comment></comment><comment><USER12> Looks reasonably clean, though you can't get an aggregated list of invalid fields doing it this way. Instead, you'll have to discover your errors one by one, as you fix them.

</comment><comment><USER13> Or for that matter, why not...

validate presence_of 'name', { error: "No Username Given" }

in CoffeeScript. (<https://gist.github.com/2595013>)

</comment><comment><USER14> If you really want to reduce the amount of JavaScript you write for validation, you should be using the jQuery Form Validation plugin. I know it's an _extra_ but who cares. It's totally flexible and you can validate your form in one line of code.

<http://docs.jquery.com/Plugins/Validation/>

But yeah, ternary operators are a great way to save line space.

</comment><comment><USER15> Nice, clean approach. I wish ternary operations were more common and widely understood; some people might freak out when they see that, specially with the unusual indentation. I had to condition myself to go back to if/else to avoid the blame.

<comment><USER16> If someone doesn't understand ternary operations they need to take off the developer badge. Given they're a common feature in most languages _and_ make life easier it's a pretty big thing to have glossed over.

<comment><USER15> You'd be surprised.

</comment></comment></comment><comment><USER17> I actually thought maybe this was a joke. This seems like a pretty brittle and hard to maintain way to go about this.

Surely a better solution is something more declarative which is then wrapped up in a library of some sort that does the heavy lifting.

An example of declarative validation is in ASP.Net MVC 3 and above where you can define validation on the server side models, enable unobstrusive javascript and you get both server and client side validation where the client side work is done by jquery and the server side by the model binding infrastructure that turns http request data into controller inputs.

</comment><comment><USER18> "Trivial" !== "Beautiful" Validating two form fields in JavaScript is remarkably easy, and pretty much any solution will be trivial to implement - and easy to grok.

For more complicated forms using a tool like jQuery Validation plugin makes more sense: <https://github.com/jzaefferer/jquery-validation>

</comment><comment><USER19> The ternary operator is one of my favorites because it acts like 'if' in a functional language (eg. it always returns a value)

<comment><USER20> 'if's returning a value is from expression oriented languages, not just functional. Functional languages are by necessity expression oriented because it makes no sense to have a statement in a functional language. However, not all expression oriented languages are functional.

</comment></comment><comment><USER21> Talking about validation, I've started using standard HTML5 input validation (with polyglots on the client) as the only validation client side, and then backup mechanism to display errors from the server if the data invalidates there.

</comment><comment><USER3> At a certain point I think you just want real pattern matching: <https://gist.github.com/2594296>

</comment><comment><USER22> Beauty is in the eye of the beholder.

</comment><comment><USER23> I guess this is an ok way to save some tiny, tiny amount of bandwidth and server resources now and then when a user makes a mistake - but one should still not, under any circumstances, refrain from server-side verification.

<comment><USER24> I don't think the OP was trying to say that server-side validation shouldn't occur.

That being said, your statement makes me think that you are overlooking an important aspect of client-side validation: instant feedback for the user. It's not necessarily just about saving bandwidth and server resources, but providing a clean and responsive user interface.</comment></comment>


Hyperloop Construction Starts Next Year With the First Full-Scale Track - <AUTHOR> http://www.wired.com/2015/02/construction-hyperloop-track-starts/#slide-id-1743071

<comment><USER2> This seems kind of interesting except for Quay Valley[1] which is the figment of someone's over active imagination. A much more interesting idea would be to build a Hyper loop between Fresno and San Luis Obispo.

[1] Quay Valley, the quintessential real estate scam :-) For those of you who don't know, this is located on Interstate 5 between Highway 41 and Highway 46 call it due west of Delano. Now zoom in on the satellite view. What you see is the dry, parched soil of the central valley, without access to water reverted back to its native desert scrub form. This is some of the cheapest land you can buy in California if you don't require water rights.

<comment><AUTHOR> How old is the satellite view? Has anybody been by there recently? I'll admit I looked at the brochure and it (Quay Valley) looks like [vaporware].

Plus I'm just a bit perturbed with these must-be-generated-by-an-algorithm locational names. A quay is a wharf ([http://en.wikipedia.org/wiki/Wharf](http://en.wikipedia.org/wiki/Wharf)). And the only water around is coming out of a pipe. And a "Quay Valley" is some sort of malapropism, especially in geographic context.

<comment><USER3> "Quay Hays" is the name of a developer involved with the project.

(I had said he owned the land but edited to the above because I don't know if he owns the land or not)

<comment><AUTHOR> Ahhh... Well that makes me feel marginally better. But Hays Valley has a nice ring to it -- why couldn't they have gone with that? :-)

</comment></comment></comment></comment><comment><USER4> "...won't be seeing anything approaching 800 mph". So what would it be? 80 mph? What a cop out.

</comment><comment><USER5> At that turning radius... it can't possibly go that fast?

<comment><USER6> "Anyone can buy a ticket and climb aboard, but they won't see anything approaching 800 mph. Getting up to that mark requires about 100 miles of track, Ahlborn says, and "speed is not really what we want to test here.""</comment></comment>


Top new social media tools of 2011 - <AUTHOR> http://thenextweb.com/socialmedia/2011/12/16/the-top-5-social-media-tools-of-2011/

<comment><USER2> Hey Daniel, it's great to see AppMakr featured on TNW. Congratulations!</comment>


Ask HN: How do pay-as-you-go SaaS handle payments? - <AUTHOR> I have a 1 trick pony SaaS for a specific business transaction which isn't required on a routing basis, unfortunately. So I need to integrate pay-as-you-go. Open to recommendations of payment API I can integrate to handle this, either flat fee or credits. <comment><USER2> The usual Stripe and/or Paypal. The upside of the one trick pony is that the implementation is easy, no pruning, no failed renewals. Credits might be a good way to upsell, but it also would complicated implementation.</comment>


Andrew Mason at YC - <AUTHOR> http://smandrew.com/blog/2013/5/16/yf3qah4f8p7oxvehlj0ib93jol421o <comment><USER2> Hi folks,

Good to be here!

To the Chicago-based commenters: if there's anything I can do to be helpful before I leave, email me at firstname.lastname@example.com. I'm happy to hang out and give "advice" if you'll make the haul up to Evanston and help me assemble a ping pong table or cat habitrail or whatever my loser project of the week is.

Whoever said Chicago's challenge is one of talent network effects, I agree (although it depends on the nature of your company - Chicago is great for Groupon). I'd love to help solve it, but not enough to endure the handicap. Building a company is hard enough as is. And if you're really intent on self- inflicted pain for your startup, there are far more interesting ways to do it.

The album is real. Looking forward to more 50% off jokes! Can't wait!

Andrew

<comment><USER3> Please stay far away from the startup scene. You're toxic.

Edit: since the downvotes from assumed sycophants are pouring in, I'm not afraid to defend my position: the story of the Groupon pump and dump is well- known here and criticism has always been widely upvoted. But once the man is right here in our midsts you retreat. This is essentially the same behavior we see over and over of society promoting the psychopath. Others might have short memories but I don't.

<comment><USER4> Please stay far away from HN. You're toxic.

 _\- clobber -_

created: 726 days ago

karma: 558

avg: 4.63

C'mon, you should know better.

</comment></comment></comment><comment><USER5> "It was with this in mind that I spent a week in LA earlier this month recording Hardly Workin', a seven song album of motivational business music targeted at people newly entering the workforce."

I'm going to need at least a 50%-off coupon before I consider picking this one up.

<comment><USER6> I had to read that three times to be sure it wasn't a terrible joke.

<comment><USER7> It is almost certainly a joke. Andrew will probably be grumpy that I'm suggesting this, but try googling "Andrew Mason Yoga Video".

</comment></comment></comment><comment><USER8> I am appalled by the lack of respect Andrew Mason gets on Hacker News. Sure Groupon is the not the most impressive piece of technology built in the past five years, but you can credit this guy for creating a billion dollar Company with millions of customers in a pretty short time frame. They have made mistakes along the way, but who doesn't? I also find his blogging style refreshing compared to all the semi-famous startups CEOs pontificating about stuff they have done. Next batch of YC will be lucky to have him around.

<comment><USER9> > _I am appalled by the lack of respect Andrew Mason gets on Hacker News._

What? Seriously. What the fuck? Am I viewing the same HN? Just about every Andrew Mason related topic is bountiful of upvoted praise.

I'm appalled by your insinuation that respect is deserved and not earned.

<comment><USER8> JoeKM. Look at many comments about the bad jobs Groupon has created etc... I am not saying that respect is deserved, but that Andrew seems to have earned respect based on actual achievements.

</comment></comment></comment><comment><USER10> "As part of this, my wife and I are moving to San Francisco later this summer. ... Chicago is developing quickly as a technology hub, and I hope to continue to find ways to support the amazing community of entrepreneurs here."

So stay! I understand you probably get nauseous every time you run in to someone from Lightbank, but we could really use you here. The city has gotten behind entrepreneurship, there are great mentors and accelerators. Tons of businesses are getting started. But what we sorely lack is people who have gone huge, took the big risks, learned a lot, made a bunch of money and now want to dive in and give back. Obviously you want to do this, and YC is great, but TechStars Chicago could use you a whole lot more.

<comment><USER11> Can I say real quick on my way out the door that I've helped run a company from Chicago since 2005, was born and raised here, and think it's a great place to build from "startup scene" or no "startup scene", but that I have absolutely no idea what it is Chicago does to foster startups or even know what the scene here is?

We organize meetups every other month for people in my field (information security) and get a strong turnout, but very few of them seem to be engaged in any kind of startup scene here either.

Should we just be more involved in local Ruby and Python meetups?

<comment><USER12> The city needs to 4x the amount of investment capital going into Chicago-based companies. That's the real problem underlying everything. There's not enough money.

It's too hard to raise money for a new startup in Chicago. This leads to fewer startups being funded, which leads to fewer startups, which makes it riskier to join a startup that could go belly up and leave you unemployed for a few months.

In the Bay Area, if you're an engineer and your startup tanks, you can have 5 job offers in a week from other startups. If those tank, you can get 5 more offers, and so on, until something "pops". That's not how it works in Chicago, so there's real risk to joining a startup there.

The reason this works in SF is because there's just a lot more money there going into startups.

A lot of the Chicago startup booster events I've attended in recent years were based on the assertion that the city wasn't retaining top technical talent, but it could if the startup community would just try harder, or something.

The reason the best devs in Chicago are leaving or not working on startups there is because there's not enough rich people and VC funds funding startups to make it risk free and interesting for them to do so.

<comment><USER11> I'm talking my own book here a little, but I've hoped for awhile Chicago might germinate a different kind of startup from San Francisco, based on bootstrapping instead of outside investment. Or, even better, companies that start off as professional services teams and transition to products.

Chicago is a terrible place to raise money, but it's a great place to do business, better than SFBA.

</comment></comment></comment></comment><comment><USER13> "I managed over 12,000 people at Groupon, most under the age of 25."

So mostly CSRs / sales, right? Outbound cold calling and the like.

"Haven't you read any business books? Good to Great? Winning? The One Minute Manager?"

Why would they? Those are books aimed at business management, not customer service representatives.

I'm working as a paramedic. I don't prep for my new paramedic job by reading the textbooks my Medical Director (an MD) does.

<comment><USER14> OTOH Groupon's customers are mostly small business owners, so in that case some business knowledge might be useful.

<comment><USER15> Yeah. I have a doctor friend who provides heart surgery for truck drivers and construction workers. On the weekends he takes classes in big rigs and hammers so he can provide better medical treatment for them.

</comment></comment></comment><comment><USER16> >It was with this in mind that I spent a week in LA earlier this month recording Hardly Workin', a seven song album of motivational business music targeted at people newly entering the workforce.

Uh... what?

</comment><comment><USER17> "I came to realize that there was a real need to present business wisdom in a format that is more accessible to the younger generation."

Pretty cool actually. If anything YC & HN inspire young people to dream and get engaged in business press & conventions. There's a real lack of this knowledge and worldview by the uninitiated, even amongst peers dabbling in amateur entrepreneurship for whom business inspiration are motivational meme pictures.

</comment><comment><USER18> I think its great idea to have him at YC .He was at the helm of fast growing tech company of all time , He could defintely help the YC founders with tips on hyper growth and what pitfalls to steer clear from...the hardly working ep uhhh not so much but you never know

</comment><comment><USER19> Why does he think people newly entering the workforce will listen to an album of motivational business music over going to Quora or Harvard Business Review to read about business?

</comment><comment><USER20> What is Andrew Mason's HN handle?

<comment><USER21> picnichouse

<https://news.ycombinator.com/user?id=picnichouse>

</comment></comment><comment><USER22> Love this guy. Accounting issues aside, concept to IPO to goodbye letter was such an interesting journey to watch unfold. Can't wait to see what happens at YC and the new startup. Welcome to the bay, Andrew.

</comment><comment><USER23> I think future YC applicant should follow and submit their videos as a rap song. Heck if it's good for YC partner, then it should be good for the participants. Just don't sing to, "Call Me Maybe"!

 _edit typo_

</comment><comment><USER24> "I'm really happy with the results and look forward to sharing them as soon as I figure out how to load music onto iTunes, hopefully in the next few weeks."

It might be a while.

</comment><comment><USER25> Can somebody please explain why Groupon has 12,000 employees?

<comment><USER13> Cold-call sales reps, often working largely on commission.

</comment></comment><comment><USER26> A motivational business music album...</comment>


The only startup metric that matters - <AUTHOR> https://medium.com/dusthq/the-only-startup-metric-that-matters-f1de861d375 <comment><USER2> This seems to be the classic efficiency vs effectiveness. Would you rather go as fast as possible (maybe in the wrong direction), or take the time to make sure your on the right path.

If you have stake in multiple companies I can understand why you would advice go for speed, as chances are big at least some will go in the right direction. And they may be ahead of more deliberately planned startups.

But as a founder with a limited amount of tries I'm not sure what I'd do....

<comment><AUTHOR> Have stake in one company only, and pivot constantly within.

[https://medium.com/dusthq/the-pivots-are- constant-f9b191d954...](https://medium.com/dusthq/the-pivots-are- constant-f9b191d95467)

</comment></comment><comment><USER3> The only startup metric that actually matters is net profit.

<comment><USER4> At that point it's no longer a startup 'in my book'.

No one metric is the only one that matters. At each stage of a startup, a different metric will be the most important. Speed is a secondary metric, a multiplier of the primary, so it's always important but you can't just measure speed and be confident that all is well.</comment></comment>


Haskell Mini-Patterns Handbook - <AUTHOR> https://kowainik.github.io/posts/haskell-mini-patterns <comment><USER2> This is great. I can say I've used and encountered literally all of these techniques many times in every Haskell codebase I've joined and built.

The concise cost/benefit analysis very helpful.

</comment><comment><USER3> This is a gem. I have been looking for this kind of clear and to the point explanations of common Haskell patterns for a long time.

</comment><comment><USER4> These patterns are not only applicable to Haskell but FP and programming in general. I am using them with a Typescript codebase.

</comment><comment><USER5> This is a great post, I've seen a lot of those patterns before and it's nice to have them in one place! One criticism I have though is I'm not sure about the advantage of phantom types, it seems like boilerplate to me. I feel like generalized algebraic data types are a strictly better pattern to follow to solve the issue of restricting type variable bindings to specific types.

<comment><USER6> I introduced phantom types to a codebase recently, although it was Scala rather than Haskell. The code was using arrays of bytes, where:

\- Some contain plaintext, some contain ciphertext

\- Some contain keys, some contain data

\- The keys themselves exist in plaintext and ciphertext forms (data keys generated by AWS KMS)

\- Some keys were used for signing/verifying, some were used for encrypting/decrypting

\- Some arrays contain Base64 data (for embedding in JSON), some contain unencoded data

Using 'Array[Byte]' would work, but would be error-prone. Using distinct types or wrappers like 'Base64[Plaintext[Key[Signing]]]' would require lots of extra definitions, and wrapping/unwrapping scattered around the code. Phantom types let me use type signatures with the right amount of specificity and polymorphism as needed, whilst the code itself was the 'straightforward' version without wrapping/unwrapping.

</comment></comment><comment><USER7> Thanks for this. The tasks are a nice touch!

</comment><comment><USER8> Anyone else have trouble with the page on firefox? I get a giant "kowainik" written on the forefront of the page, and I don't know how to close it.

<comment><USER9> I am using Firefox and it works without problems. 79.0 on macOS Mojave.

</comment></comment><comment><USER10> I do not write Haskell, but this is a neat site.

</comment><comment><USER11> This is a beautiful start but much more content. Send PRs to kowainik.

</comment><comment><USER12> The most deadly sin with Haskell is introducing unnecessary redundant abstractions to impress other people.

Imagine aircraft engineers will do that.

Up to (but not including) NonEmpty lists everything was fine.

<comment><USER2> > Up to (but not including) NonEmpty lists everything was fine.

"but not including" how in the world is NonEmpty redundant abstraction?

</comment></comment><comment><USER13> The whole "this code is problematic because... " section on Boolean blindness reminds me of the worst caricatures of left-wing narratives of oppression based on PhD-level Critical Theory.

Look, a lot of the other patterns are interesting but I really think that if you are getting into criticising code because it has "Boolean blindness" you are probably getting a bit lost in navel gazing. Do you really have nothing better to do?

<comment><USER14> Hearty lol here. How do you associate some advice to use the type system to explain the meaning of your booleans to left-wing narratives of oppression?

Or are you conflating booleans with black/white and arguing for colour blindness because All Bools Matter or something?

I can't really make sense of this.</comment></comment>


Ask HN: Selling your product before it exists? - <AUTHOR> Has anyone here made an effort to sell their SaaS app before they have built it? My idea is to work backwards by building a customer base first, then the product so that 0 time is wasted on building a product that nobody wants. I plan on offering a 50% discount as an incentive to those who sign up early before the product is built. If you have made or attempted to make presales, how successful was this approach in your experience? <comment><USER2> It depends a great deal on the complexity of the problem you are trying to solve. If you are pre-selling a solution to a problem that you have never solved then this is a recipe for disaster IMO. That is unless you have significant funds to invest in hiring people that have done it. This is not a knock on your skills to assemble something, but if you have never solved it you may estimate it will take you 1 month, and in reality it winds up taking 6 and you will have likely oversold your abilities too early harming your reputation for at least a portion of time.

Of course, if you have solved the problem before but think you could do it as a product and sell it, than a lot of the risk and unknowns are removed so you can be way more aggressive.

Personally, I like to market and get firm commitments, plus build up a list of needs as the product is being developed. And as soon as I can I start converting some of those commitments into sales by putting them on the system, I get them paying. This means some might be able to be on it in a month, others might have to wait 3 months while specific features are flushed out.

To me there is real exposure and risk to taking money for a product you can't deliver quickly (~30 days). Tesla is selling refundable reservations which is different and even then they have a material exposure if a large portion of reservations decided they wanted to back out. Also remember, there are banking rules around presales and credit card transactions especially as it relates to refunds, charge backs etc.

</comment><comment><USER3> I don't know if this qualifies, but I started building distrosheet.com, I paused, and suddenly I've got some users. I guess my presale has been a blog post and maybe a few comments on HN talking about the software stack.

To clarify, started building then paused means I did it one Saturday afternoon and never touched the code since then. :)

I used to schedule some of my tweets automatically in a spreadsheet, my wife really wanted it for herself, another friend of hers wanted it, and so I made it slightly more generic: you sign up with google, create a spreadsheet, and connect your twitter account.

Of course it was too primitive, so my wife and her friend aren't using it.

However, from nothing, 1, then 2, then 3 twitter accounts started using it, and they are using it daily, mostly to send out quotes.

So to the original point - I guess blogging about your idea like if you have the tool available to yourself, plus sharing it here & there may help getting some initial interest.

</comment><comment><USER4> Yes, I have. I am sure there are a lot of flaws in my method so take everything with a pinch of statistical salt.

I wanted to test the appetite for retail stores for an application that enables them to sell online, via Chat apps like Facebook Messenger.

Here are the steps I followed. Step1: Put together a couple of videos in Keynote \- [https://goo.gl/iHzhDg](https://goo.gl/iHzhDg) \- [https://goo.gl/HL847L](https://goo.gl/HL847L)

Step2: Put it on my phone VLC player

Step3: Walked door-to-door "selling" it. Basically, walk in to a store and say something along the lines of "I am this awesome person who is helping a few businesses sell online via Facebook Messenger. While I cannot show you all the details yet, here's a peek at the product (use the videos to explain a couple of use cases). Would this be something you would pay $XX/month for, to be a part of? If you are interested give me your phone number, I can call you when I let my next batch of customers in"

Step 4: Out of 20 stores I approached, 12 or 13 said they would pay. (If they are asking questions about your product andhow much it costs, that itself is a huge win.) I then discounted that by 80% to predict that even if only 1/5th of the stores that said they would pay, actually paid, i would have got at least 2 paying customers if I had a real product that day.

It actually took me a year from that point, but I am "piloting" with my first customers (1 from that intial walk-in) this week. This what eventually the product looks like. [https://goo.gl/ShkkWr](https://goo.gl/ShkkWr)

In my opinion, you should definitely sell your product before you start coding. It will not only build a customer base, but tell you IF there is a customer base and make the product you eventually build, better.

If you do it with a video like me, Its OK to fake a few details to make it seem as real as possible. Trust me, its better to rot in hell for "lying" to a potential customer, than explaining to your wife why you spend the savings on building something, nobody wants!

</comment><comment><USER5> One common approach is to sell a service that is performed manually (perhaps in a way that looks automated), and then automate it as the customer base grows.

</comment><comment><USER6> You can also not actually charge them, all you need is their intention for commitment to purchase, depending on the Saas, but you can just capture the credit card details only. Not actually file a charge, believe you can do this with stripe. Redirect the customer later to a page to tell them your product is coming soon.

</comment><comment><USER7> That doesn't work in real life. They will pay you money then what? You tell them I will send you the login details in 8 months? :D

<comment><AUTHOR> It would be more like a couple of weeks or 1 month. I see what you mean here but I think that some customers may be interested in this approach because at this point they can offer suggestions for features and influence what is included in the app.

Showing them a mockup or signing them up for email updates at least would be something tangible so they have some piece of mind between the time of purchase and launch.

Tesla did this with the Model S, no? :)

</comment></comment><comment><USER8> Yes, it works. It's the premise of kickstarer. The product being software doesn't make a difference.

</comment><comment><USER9> It's been working for Magic Leap and Tesla (sort of) not so much for Theranos.</comment>


Futhark – A small programming language that compiles to efficient GPU code - <AUTHOR> https://futhark-lang.org/index.html <comment><USER2> Woudln't the more accurate example of APL on the GPU be co-dfns?

Is there a way to make J target the GPU? I feel like APL stuff is more limiting because it invariably results in paying Dyalog for a toolkit (which severely limits my ability to use it at work).

</comment><comment><USER3> Looks very interesting :) but I can't quite find out what is going on on the GPU. What GPU operations are executed for a sample program which contains various (scalar, vector, applying to different sizes and shapes etc.) operators?

<comment><USER4> Any array combinator (most importantly map, scan, reduce, and filter) are executed on the GPU (or whatever parallel execution platform is used).

<comment><USER5> What is the minimum OpenCL version? I'm evaluatimg if this could be a viable experimentation for parallelizing task which uses amazon GPU compute which are mostly nvidia GPU.

<comment><USER4> Somewhere around OpenCL 1.1 and 1.2. It works fine on NVIDIA GPUs - they are our main test platform.

</comment></comment></comment></comment><comment><AUTHOR> Sorry about the title. Thank you mods for fixing it.

</comment><comment><USER6> This is not APL. Please don't call it APL.

Also, please change the title on this thread to have it reflect the same.

<comment><USER7> Or may link to the "Docs" section? It mentions a paper that connects this to APL:

"APL on GPUs - A TAIL from the Past, Scribbled in Futhark

A paper describing an APL compiler (apltail) that operates by translating APL into a typed array intermediate language (TAIL), and from there into Futhark. While the Futhark details are light, the paper demonstrates a simple use of Futhark as a target language for a compiler. We succeed in achieving decent speedup on several (small) APL programs."

The introduction of the paper says it only "compiles a subset of APL into TAIL" though.

<comment><USER6> No, sorry, I studied APL in the early 80's and used it professionally for ten years straight and have been using it sporadically since then.

Only APL is APL. Notation is as much a part of APL as is it's linear algebra/array orientation. One can't remove the notation and call it APL just like one can't take C and convert it to icons to drag around the screen and still call it C.

</comment></comment></comment><comment><USER8> Really what does this have to do with APL ( Ken Iverson )??

 __*

This is NOT APL.

Futhark is a functional language, we will start with the obligatory factorial program:

fun fact (n: i32): i32 = reduce ( _) 1 (map (1+) (iota n))

_ __

This has nothing to do with APL.

Perhaps a more apt title would be "Python for the GPU".j

 __*

There is a paper on this subject, where an APL interpreter is written in FUTARK, but then most compilers are written in C. In reality the technology in question is Futark on GPU.

[https://futhark-lang.org/publications/fhpc16.pdf](https://futhark- lang.org/publications/fhpc16.pdf)

<comment><USER9> > Perhaps a more apt title would be "Python for the GPU"

Why Python? Futhark is a purely functional language and looks a lot like Haskell, so I think "Haskell for the GPU" would be a better title

<comment><USER4> (Author here.)

OCaml would be an even more apt comparison.

I find it a bit ironic that of all the related submissions I (and others) have made, it's the one with the bizarre title that hits the front page!

<comment><USER10> Might be related to that GPU-accelerated APL compiler which was on the front page a week or so ago</comment></comment></comment></comment>


PayPal President David Marcus Memo Leak  - <AUTHOR> http://www.businessinsider.com/paypal-president-david-marcus-memo-leak-2014-2 <comment><USER2> Are we supposed to disagree with this? I sure don't. I want to use the products I work on. In a market like Silicon Valley, I'm sure there are a ton of places that would pick up the people that aren't keen to be at PayPal. Is it just laziness that they don't go find jobs elsewhere?

Doesn't matter if you're in sales, engineering, merketing, whatever. If you refuse to use what your working on, why are you working on it?</comment>


Hacker News is overtaking Slashdot (according to Google Insight for Search) - <AUTHOR> http://www.google.com/insights/search/#q=slashdot%2Chacker%20news&date=1%2F2008%2052m&cmpt=q <comment><USER2> This doesn't surprise me. I used to primarily go on Slashdot however my viewing has been steadily decreasing, in part due to the content - much of what is on Slashdot is found on HN - however also as the community fairly recently has gone downhill _dramatically_.

<comment><AUTHOR> I haven't been on slashdot regularly for 3 years, ever since I found HN, basically.

</comment></comment><comment><USER3> Long time Slashdotter here, I can't say I'm surprised. I think Slashdot has had a number of problems contributing to its steady decline:

* In an attempt to modernize the site's design, the folks at slashdot have now made their site very confusing to use. Its a disorganized mess. Which is sad really, their old convuluted commenting system was actually really good at carrying on threads and threads of discussion. (Think real life mailman archives.)

* It used to be the source for a mix of all things technical, open source, copyrights/lefts, patents, etc. But in recent times many sites have popped up that cover particular areas in far greater detail (Groklaw, OSNews, Phoronix, Undeadly, etc)

* In the mid-2000's the editors somewhat alienated their hardcore linux-loving fan base by being very pro-Apple. While I'm sure that brought on new traffic (as all things Apple tends to). I don't think it was sustainable traffic. Those Apple fans have no emotional attachment to Slashdot. They'll just move on to the next thing.

* It no longer attracts the young, Reddit pretty much does that.

* People today care greatly about being involved in the front-page news placement process. Having a bunch of editors sit around, and do a terrible job of editing is not something that attracts them anymore. (The editors of Slashdot are famous for terrible editing.)

I could go on and on, but I think its safe to say that there was a time when Slashdot was needed, and those of us who used it are thankful for that. But now the Internet has evolved, and today Slashdot isn't so needed. Life continues.

<comment><USER4> I look at Slashdot, and all I see is organization.

I look at HN, and all I see is information.

</comment></comment><comment><USER5> But does Netcraft confirm it? ;)</comment>


Google vs. Sun vs. France: Too Big, Too Powerful, Too Free - <AUTHOR> http://globaleconomicanalysis.blogspot.com/2014/11/too-big-too-powerful-too-free-google-vs.html

<comment><AUTHOR> I posted this. It might be a shade too political for HN, but it seemed worth submitting as the view of a non-techie. His Bastiat quote from 1845 about the sun's "unfair trade advantage" over candle-makers is worth reading.</comment>


Leveraging AWS API Gateway and Lambda to Build a Slack Bot - <AUTHOR> https://mixmax.com/blog/how-to-get-modulusio-webhooks-into-your-slack-channel

<comment><USER2> Cool! gonna test this soon...

Shameless plug: I've just created (few minutes ago) a slack team for API Gateway users. Right now there's only few and scattered information so it'd be great to have a central meeting point to discuss implementations and integrations of API Gateway with Lambda, Cognito, DynamoDB, etc...

Join here: [https://apigatewayusers.herokuapp.com/](https://apigatewayusers.herokuapp.com/)

</comment><comment><USER3> I suggest to check the open source API gateway: [https://github.com/mashape/kong](https://github.com/mashape/kong)

</comment><comment><USER4> nice, looks like you're on producthunt today too :) [http://www.producthunt.com/tech/mixmax-scheduling- assistant](http://www.producthunt.com/tech/mixmax-scheduling-assistant)

</comment><comment><USER5> The OP forgets to mention Modulus.io they use as well.</comment>