Make This in an Hour - <AUTHOR> http://makethisinanhour.com/ <comment><AUTHOR> Thanks for feedback everyone! This was obviously pretty rushed since I actually timed myself doing it, so feel free to submit a PR here: [https://github.com/smilli/makethisinanhour](https://github.com/smilli/makethisinanhour).

Also update on the most important thing: My friend did end up making his website :)

</comment><comment><USER2> This gave me a great idea. There should be a website with a bunch of programming challenges (e.g like making a Todo list app or write a data structure in an hour) where you can share your code and workflow. You could then view a bunch of other peoples workflows, code, and post mortem notes and discuss how to improve each others workflows. Anybody know of a site like this?

<comment><USER3> Project Euler has something similar.

After solving each challenge, you're given access to the message board for that problem where people post their code and discuss how they solved it. The problems tend to become more focused on math implementations than programming after a while though, so this may not be the best example for you.

</comment></comment><comment><USER4> I really like that idea and I understand that this is aimed specifically at the friend mentioned on the site so it takes their technical ability into account but I think for most people who are struggling with basic tasks like these instructions like

> Create a directory to hold your website and cd into it.

would already confuse them.

Now that you already got that nice domain I think I'd be great to have a guide like that aimed at beginners with more detailed instructions. I could see this as a great resource to link friends who always thought about getting their own little site, even if it's just a page listing their contact details.

<comment><USER5> I also built a tutorial around the same idea a few weeks ago, with a similar domain name, but aimed more at complete beginners than this site. My target audience would be graphic designers who want to get into web design, but don't have a clue where to start.

I stopped after writing one article because I didn't get much interest, but then I didn't put much work into publicising it either. If people found it useful I'd certainly like to keep adding to it until it explains how to go from never having programmed to building a website which can take payments.

You can find it at [http://makethispage.com/chapter-1.html](http://makethispage.com/chapter-1.html)

<comment><USER6> I am one of the worst people to give advice on "finishing" but you should definitely go on with this, it's a very good idea that can expand beyond your limited target audience (= _just_ graphic designers). The web is full of "general" purpose tutorials for html, css, js, etc and this "general purpose" becomes "no purpose" in the end. If I am this random person that wants to learn how to make a website, I don't really care about learning all the details of the particular tools at this point, I care mostly about building what I want and "deploying". Then, __maybe __, I 'd like to make it better, prettier, faster, etc etc. Your guide seems to attack this.

</comment></comment></comment><comment><USER7> err, or you could just upload index.html to any shared hosting in 5 minutes? The trouble of making a site (at least for people who can edit html directly, as in this example) is not about how to do it, but about high expectations and standards that we impose on ourselves... I'm guilty of this mysqlf, my site hasn't been updated in like 5 years, and I've built dozens of sites for others in that period...

<comment><USER8> The OP's one-hour recipe is strictly better for a pure static site, because it's substantially cheaper than shared hosting (which is $5/mo, github pages is free). Note that shared hosting provides persistent compute/store capability, which this project doesn't need.

<comment><USER9> > _The OP 's one-hour recipe is strictly better for a pure static site_

But it's still a lot worse than the simple web page builders (using a web- based UI) that have been around for 15 years or so. Why not just use about.me or some similar modern service?

<comment><USER10> Because we are software engineers and website designers and we can do better... (Please don't look at my website...)

<comment><USER9> Certainly we can do better, but 20 carefully researched one-liners aren't nearly as technologically advanced, elaborate and useful as a well-crafted, intuitive UI with a more maintainable end result.

<comment><USER11> We can do better than 3 pieces of About.me advertising over our homepage, including a modal: [http://i.imgur.com/p9NY8k6.jpg](http://i.imgur.com/p9NY8k6.jpg)

Taken from [https://about.me/laraodm](https://about.me/laraodm), which I got to from the About.me homepage > staff picks.

</comment></comment></comment></comment></comment></comment><comment><USER12> Let me first say that I appreciate anyone making an effort to help a friend with modern technologies.

However, I can't help noticing that when I first used a home ISP, you got some web space thrown as part of the deal, and setting up a first web site would have required only this:

1\. Write the index.html file.

2\. Upload it to your ISP-provided server by FTP.

3\. There is no step 3.

This was 15-20 years ago and pretty much universally available free of charge with any residential ISP here in the UK. The most complicated thing would have been getting your own domain name, because that would have required a few more button clicks and a small payment.

Sadly, the centralised "build my web site" sites and social networks seem to have taken over, and looking around it seems like today most ISPs no longer offer basic shared web hosting for free as a routine part of their plans.

So today, per this article, getting your own site on-line might need all of this:

1\. Know the most complicated VCS in history.

2\. Be comfortable with CLI use.

3\. Have Python installed, just to run a local web server for testing.

4\. Depend on a third party (GitHub) and all that comes with that (I wonder how many people who advocate GH all the time have actually read what they're signing up for).

5\. Know how to order a domain name from a separate registrar and then how to hook it up to the aforementioned third party.

Any one of those things will probably be a huge barrier and a cause of repeated failures and frustrations for anyone who is interested in this kind of help in the first place.

Again, I appreciate the effort to help a friend navigate these waters for the first time, but in general I'm not sure this constitutes progress.

</comment><comment><USER13> If the inspiration for this was to smack down a friend who hasn't started "his web site", then all this really proves is that putting content online is far less of a barrier than coming up with the content in the first place.

Putting HTML in place that it can be opened by a web browser is not a challenge and has not been a challenge for over a decade. Github is one choice, shared hosting is another... as the comments already show, you can argue pros and cons of various choices ad nauseum, even on such a trivial web page as OP's.

The larger point that seems to be getting missed is that the question of "How?" pales in comparison to the question of "What content should I put on my site in the first place?"

<comment><USER14> A shared google doc would be just as effective.

<comment><USER15> or create a blog on wordpress.com or blogger.com as well.

</comment></comment></comment><comment><USER16> Cool post. You don't need `python -m SimpleHTTPServer 8000` to test your page tough, just double-click on index.html :)

</comment><comment><USER17> Nice topic. I would also add https with CloudFlare and comments with Disqus, see [http://g14n.info/2014/08/moving-from-blogger-to-github- pages...](http://g14n.info/2014/08/moving-from-blogger-to-github-pages/) For details. Other nice thing to have is social integration but I did not added it yet.

</comment><comment><USER18> One might be tempted to say that this method requires a lot of insight. And it does require some, but not a lot. This is very doable for most people.

You need to learn a bit about git, but that's about it. The DNS parts are mostly about knowing what you need to do (add an A-record and/or a CNAME) and then it really depends on your DNS service provider or registrar. Some registrars manage to make a mess of it. I use a registrar that has an extremely bare bones interface that is exquisitely clear.

Having tried to help various friends who use all-in-one hosting solutions, I would have to say that it is far, far easier to spend a couple of hours learning just enough DNS and Git + Github to get this done than use those systems.

Because if you use the method outlined in the above mentioned website, you will have _tons_ of documentation and community support to lean on.

Most all-in-one-solutions end up being between you and a useless service provider who will lose money on you if they provide you with any support.

</comment><comment> z-e-r-o This is on top of HN and I don't understand why does no one notice the recommendation of setting the root level CNAME records. While this might work in practice, it is against the DNS standard and causes really weird bugs, like not being able to set up email on the same domain, as for example you cannot set up TXT records.

Unfortunately, solving this problem isn't easy or obvious. You'd need to use ALIAS / ANAME records, which are only supported by a very few DNS providers (DNSMadeEasy, Rage4, Amazon Route53 if you are hosting on S3). Also, you need to set a low TTL to make sure that you are not caching an old cloud instance's IP address.

The best writeup I found about it is here: [http://www.dnsmadeeasy.com/aname- records/](http://www.dnsmadeeasy.com/aname-records/)

</comment><comment><USER19> Now that your friend has made the site, you could curate a collection of tutorials from people on things that take an hour or less to make.

Could be really great as a resource to send to friends who complain about doing XYZ. Send them to MakeThisInAnHour.com

</comment><comment><USER20> Please note that `python -m SimpleHTTPServer 8000` only works with python2.*.

<comment><USER21> Python 3 equivalent is:

`python -m http.server 8000`

In case anyone was interested.

<comment><USER22> List of server one-liners: [https://gist.github.com/willurd/5720255](https://gist.github.com/willurd/5720255)

</comment></comment></comment><comment><USER23> I love how far the world has come over the past few decades. It is amazing how quickly you can get content up and online, and available to people.

Great post, I really think it highlights the power of technology and the appeal that it offers.

<comment><USER24> To be fair, this didn't contain anything that wasn't possible in 10 or even 20 years ago in one hour. The only thing that wasn't so straightforward 20 years ago (1995) was finding hosting for your page.

<comment><USER25> Not sure about 20 years ago, but 10-15 years ago finding hosting was pretty easy. You probably got some free from your dialup ISP (at least here in the UK). And everything else was substantially easier, because unstyled HTML was still considered perfectly OK. It's a shame the need for rounded corners and less legible colourschemes has pretty much killed the idea of the web as a read-write medium for the masses.

</comment></comment></comment><comment><USER26> I'm using github pages to host a website of mine, and I need another. Can anyone recommend a cheap/reliable simple html/css/js website host? No need for wordpress installation, Rails, etc.

<comment><USER27> Netlify is awesome. Can even run a build process (similar to github pages) but using just about any static site generator.

[1] [https://www.netlify.com](https://www.netlify.com)

<comment><USER28> Thanks so much for the shout out, we appreciate it, and are happy that you like it. And for you and any one reading this, let us know if there are any features you'd like and we'll get right on it.

</comment></comment></comment><comment><USER29> Student here. Why do you run a localhost web server before pushing to git? Is this a git thing? (I am a newbie to github). Thanks. I like this nice short article.

<comment><USER30> It's not necessary for git, no. However, it's a really good habit to get in—you make some changes to the project and then test it locally before pushing your changes to your git repo (on github and/or elsewhere). This way, you make sure your changes didn't break something that was previously working.

Now as to why start the simple http server to check your work vs. opening the index.html file directly in the browser:

1) relative links can behave in an unexpected manner using the file:// path, and you'll get more consistent behavior using the server

2) There are sometimes permissions errors loading scripts into the page when it's displaying through file:// (relatedly, protocol relative links eg. //code.jquery.com/jquery-2.1.3.min.js won't work).

<comment><USER31> 3) AJAX won't work (since there's no HTTP backend to talk to)

<comment><USER32> Not _entirely_ true. AJAX will work, it just cannot access the 'file:' protocol by default. Requesting HTTP content will work fine.

<comment><USER31> Haha, okay sure you are technically correct (although that's what I was getting at), but I'm going to nitpick you back and remind you that "requesting HTTP content" will not in general work because of same origin policy.

</comment></comment></comment></comment></comment><comment><USER33> No doubt this post is good for some one who is beginning to build a website. But this post expects people to do their pages in html. github supports simple markdown pages to be hosted as html.

markdown is clear and easy to write posts. If this post extends to teach hosting markdown pages, one can use the website built using this tool to make his own blog. This might help people more than teaching just to create a website.!

<comment><USER14> As someone that knows some HTML, I hate having to learn another markdown for ever wiki site that I end up using. (Saying that WYSWIG editors seem to be more common than a few years ago for this task).

</comment></comment><comment><USER34> Love the project! Plan on putting it on github? (Is this you? [https://github.com/smithamilli](https://github.com/smithamilli))

Also, noticed you're working on CareersMob? Let me know if you want an intro to the folks CareerMob ([https://twitter.com/careermob](https://twitter.com/careermob))

<comment><AUTHOR> It's on Github! [https://github.com/smilli/makethisinanhour](https://github.com/smilli/makethisinanhour)

</comment></comment><comment><USER35> This is great! Perfect resource to share with my friends when they say that they want to learn how to make web pages, after I show them some basics of how to use the terminal and not be scared of it.

Would anyone be interested in a fork of the page that includes a quick primer about where to type the given commands?

</comment><comment><USER8> What do you think about adding instructions on how to revert a published change to your site with git. The nice thing about git is that you can fix boo-boos. Also you might add a hosted analytics service to the HTML template. (The urge to know who's looking at your site is universal!)

</comment><comment><USER36> I feel like with Godaddy hosting I could make a website in like 2 minutes by pressing a few buttons.

<comment><USER37> But then you'd be using GoDaddy.

<comment><USER36> Yeah...although I have to admit, it seems to be getting somewhat better recently, as difficult as that is for me to grok.

</comment></comment></comment><comment><USER38> Pretty awesome... thanks. I have been putting off figuring out how to make sites on github. Since I didn't need the domain, I had a site in about 8 minutes, and now know how to create project pages as well.

</comment><comment><USER39> Great article!

What's the database backed dynamic website equivalent of this? For node? For python? For ruby?

Building out your own deployment on AWS or linode is obnoxious. Heroku gets expensive fast.

<comment><USER40> Get a free OpenShift account. You can configure your stack by point-and-click, then clone a git repo, and push to it to deploy.

</comment></comment><comment><USER41> This precisely the level of instruction I like when I'm researching on how to attempt something the first time. Brief and to the point. Very nice.

</comment><comment><USER42> git push origin gh-pages

or he'll still no see anything :P

<comment><USER43> GitHub pages can exist on the master branch also.

</comment></comment><comment><USER44> This is not "making a website". This is hosting a basic hmtl page online, where you don't write the html yourself.

<comment><USER45> Pretty sure the title is make THIS website, not make A website.

<comment><USER44> Well codecademy has a course to make the airbnb website. You code it yourself to be like airbnb, you don't just copy and paste their code.

<comment><USER45> I think the purpose of this website is a little bit personal to the developer, he is just showing his friends (and now other people) that getting a site up and running with a domain is an easy task.

The site also doesn't say to copy paste the contents (read point 6 and 7) so your example is a bit strange. The site doesn't even mention to copy paste anything as far as I saw.

<comment><AUTHOR> ^^^exactly

Also she* :) (doesn't matter, but hopefully it won't be an automatic assumption eventually)

</comment></comment></comment></comment></comment><comment><USER46> with the audience showing up on this thread. I was going to use ask:HN ,But I'm almost finished with an ebook/prnt for ' kid's with cancer' charities, only will have 2 books on the site / cart checkout / needed .. if any one has advise of a ..simple 1 page ..Woo..theme or similar..it would be helpful

</comment><comment><USER47> Step 2.5: open a terminal.

</comment><comment><USER48> Too bad. Github.io is kind of unreliable. Is down now.

<comment><USER49> They were still getting ddos'd up until yesterday.

</comment></comment><comment><USER50> I want more friends like this.

</comment><comment><USER51> how do you downvote here?

<comment><USER52> You've got to get your earn the right to downvote by being a productive member of the community. I think it's 500 karma before you can downvote

<comment><USER53> You can't downvote stories. You can only flag them when they're inappropriate.

<comment><USER52> oh ok, i only assumed cause I can't downvote yet haha</comment></comment></comment></comment>


Panic Attack Leads to Hospital on Way to Golfer's First Victory - <AUTHOR> http://www.nytimes.com/2012/11/13/sports/golf/charlie-beljans-panic-leads-to-hospital-and-then-pga-title.html?hp

<comment><USER2> An amazing story. I just wonder how many more victories Charlie Beljan will be able to endure. :)</comment>


How Blue Apron Became a Massive $2 Billion Disaster - <AUTHOR> https://observer.com/2020/02/blue-apron-disaster-silicon-valley/ <comment><USER2> > Exactly who it was that was both upwardly mobile to pay for this service > while also having a barren kitchen, nobody really knew—but by the divine > math of Silicon Valley gamblers, your existence made this an idea worth > several billion dollars and potent enough to "disrupt" the grocery business.

I mean. My partner and I are both software engineers, she loves to cook, and these meals make up a hearty portion (for two people) of healthy, really diverse and flavorful dishes that come to around the same price per person as going to Chipotle. We eat them three nights a week and are really very happy with it.

I'm not surprised to hear that they overestimated their market (who doesn't these days?), but there definitely is one.

<comment><USER3> A subscription service doesn't seem like the right way to deliver that, though. It seems like their competitor Plated had the right idea; grocery stores have highly optimized the process of distributing cooking ingredients to people, so the right way to sell meal kits is to become part of a grocery store.

<comment><USER2> Sure, I've no doubt grocery stores have a better economy-of-scale around this sort of thing, but the article seemed to be invalidating the entire product, so I was speaking against that.

I will also say that the recipes are a huge factor, and the delivery is a non- zero factor. We haven't gotten the same recipe twice and they consistently impress with bold and unexpected flavors, and fewer trips to the store (and fewer ingredients going to waste from expiration) is really nice as a pair of working adults.

</comment></comment></comment><comment><USER4> > prepackaged amounts of just enough salmon, green beans, butter and lemon for > one meal, no leftovers—was for you.

Maybe I'm not their target customer, but I feel like meal prep services are the opposite of convenient.

1\. Instead of prepping food, with Blue Apron, I now have to unwrap and prep food. 2\. I now have to cook more often because of no more leftovers. 3\. Instead of food waste I know have plastic and packaging waste. Food waste I could at least throw in city compost and not feel too bad about.

</comment><comment><USER5> Is there a lockout period for these large VC investors when they do an IPO?

Or do they get to dump as much of the stock as possible in these IPOs? And if so, I think there needs to be a big compilation of large shareholders of these IPOs and how much money they are making off the IPO. We might see some interesting patterns.

For example, if certain VCs sell their shares at the very beginning, is that a sure signal that everything is going to fall apart soon?

<comment><USER6> There are no sure signals on the stock market. To the extent such a signal briefly exists, it will quickly be priced into the market. You just have to look at the details on each specific offering and try to find an "unsure" signal that you have confidence in because of some special expertise you developed that not everyone in the market has.

<comment><USER5> Yes, but it would be nice to use those signals to know which VCs are crooks so they can be publicly shamed.

</comment></comment></comment><comment><USER7> The losers in this bang bust of pretending to be billion dollar industries are always the stock market investors which includes mutual funds and hence the common people.

Keep pumping money until we can list it on the stock market. Find the sucker investors and wash our hands off the investment. The greater fool is ultimately the retail investors on the stock market.

Big vcs have already made their mark-up. It's up to the mom and pop investors to pickup the baton and run

<comment><USER3> I don't really buy that there's a bang bust here. Even in the narrow reference class of 2017 VC-backed unicorn IPOs, many other companies did perfectly well. There's no investing strategy that won't see some failures.

<comment><USER5> Do you have some examples? So far, I'm seeing Snap, Cloudera, MongoDB, and SendGrid.

Snap-down, Cloudera-down, Mongodb-up, SendGrid-acquired but was up.

I would expect in a bull market for most to be up, not half.

<comment><USER3> Okta and Mulesoft are also very far up (Mulesoft until acquired), and Stitchfix is up a little bit.</comment></comment></comment></comment>


OpenBSD on the Microsoft Surface Go - <AUTHOR> https://jcs.org/2018/08/31/surface_go <comment><USER2> Here's my review of (Arch) Linux on the Surface Go: [https://www.reddit.com/r/SurfaceLinux/comments/94hjxv/surfac...](https://www.reddit.com/r/SurfaceLinux/comments/94hjxv/surface_go_first_impressions/)

The results are similar. Support is slightly better on Linux (e.g., Bluetooth & IIO sensors work.) Linux support is better than on any of my other Surface devices (Surface Pro 2017, Surface Pro 3, or Surface 3 non-Pro.)

In short: almost everything works out of the box. (The major exception is the front- & rear-facing cameras.)

I have been using this device daily since release day. It's one of my favourite devices.

<comment><USER3> I'd rather purchase hardware from a vendor that is not passively aggressive* towards Linux (or in the case of the article, OpenBSD) support.

*what I mean by this is, they don't pick shitty hardware from vendors to put into their system that has no kernel support. Better yet, there are OEMs who actively support Linux (Dell, Purism, etc), for example, on their systems. Support those folks, not folks like Microsoft.

<comment><USER4> The Go is an Intel-based chipset and they finally dropped the buggy as hell marvel chipset for wifi... What "shitty" hardware are you speaking of?

I love my SP4, may replace it with a Surace Go gen2 if they keep the formfacter/weight down like that.

<comment><USER3> Judging by the review there on reddit, cameras don't work, and the ath10k wifi chip doesn't work without screwing around with the firmware it requires to operate.

<comment><USER4> So write some drivers :)

BTW, The Qualcomm wifi chipset is a BLESSING and considering the Surface Go is < 1 month old i'm sure its only a matter of time before open source drivers improve for it.

<comment><USER3> > So write some drivers :)

Uh, I (and you, and everyone except Qualcomm) cannot do that. ath10k drivers are inherently broken without a proprietary firmware because "blah blah 802.11ac blah blah" _waves hands around_

The atheros chip in that microsoft thing has been around for quite a while.

</comment></comment></comment></comment></comment></comment><comment><USER5> This seems similar in spec to some research I did into tablets that could run Linux. I found someone installed Linux on a Onda V80 plus (a dual booting Android/Windows 10) tablet [https://medium.com/@tomac/installing-ubuntu-mint- linux-on-on...](https://medium.com/@tomac/installing-ubuntu-mint-linux-on- onda-820w-tablet-727747a376b) and that led me to looking at all of the cheap Chinese windows 10 tablets running the Intel cherry tree processor. It would be a crapshoot whether they worked out of the box I what chipsets they used but a lot of these type of laptops can be found for 100-200$ on AliExpress. It's a shame that Linux driver's aren't automatic but such is life.

I'm pretty committed to System76 at this point because I don't feel like wasting time trying to solve a bunch of driver BS and unsupported chips. I have wasted untold hours doing this in the past. But perhaps some masochist impulse will lead me down the route of trying to save a few hundred bucks and I'll buy a cheap Chinese tablet.

On the other hand maybe unofficial Linux support for the surface go will be as good as Linux support for Macs has been in the past and it'll be a viable hardware choice.

</comment><comment><USER6> with all the engineering hours spend in porting, can we have a consistent driver interface.

May be Linux devs can take lead and define the specs for the hardware people.</comment>


First quantum computers need smart software - <AUTHOR> https://www.nature.com/news/first-quantum-computers-need-smart-software-1.22590 <comment><USER2> Look here for a better informed source: [https://www.osa- opn.org/home/articles/volume_27/october_2016...](https://www.osa- opn.org/home/articles/volume_27/october_2016/features/quantum_computing_how_close_are_we/)

</comment><comment><USER3> I somehow feel like quantum computing will forever remain a theory and never make it into practice. How much reason is there to believe that I might be wrong?

<comment><USER4> Well quantum computing is obviously physically possible. Somehow systems evolve from a prepared input to an output predicted by quantum mechanics.

However the difficulty of scaling quantum computers goes up exponentially with the number of qubits, thus we may not achieve enough success to make them practical.

<comment><USER3> > Well quantum computing is obviously physically possible.

Well, since you mentioned this: would you mind linking me to a single demonstration of it that has been conclusively established as evidence of quantum computing? I've seen lots of D-Wave stuff but to my knowledge the experts don't actually really buy those.

> However the difficulty of scaling quantum computers goes up exponentially > with the number of qubits, so we might not achieve enough success to make > them practical.

But yes, this is more in line with what I was thinking. Even if it's possible I don't expect it will be practical (hence why I used this word in the earlier comment).

<comment><USER4> _> would you mind linking me to a single demonstration of it_

I mean physics is quantum. At least, the interface between our experimental apparatuses and the micro world demonstrates all the expected speedups. Every known experiment backs this up.

</comment></comment></comment></comment><comment><USER5> IIRC, we were due for quantum supremacy by the end of the year. Are we still on track for that?

<comment><USER4> Anybody who claims to know when we'll be able to build practical quantum computers doesn't know what they are talking about. Scaling is a _very difficult_ problem.

<comment><USER6> Quantum Supremacy doesn't require practical quantum computers. Special purpose quantum computers that can only do one task better than classical computers, even if that task is useless, meet the definition of quantum supremacy.</comment></comment></comment>


Being a Data Scientist: My Experience and Toolset - <AUTHOR> https://jeffersonheard.github.io/2017/01/being-a-data-scientist-my-experience-and-toolset/ <comment><USER2> These types of posts validate my concern about the people entering my field right now.

Data science, as a line of work, is distinct from other technical roles in its focus on _creating business value using machine learning and statistics_. This quality is easily observed in the most successful data scientists I've worked with (whether at unicorn startups, big companies like my current employer, or "mission-driven" companies).

Implicit in this definition is _avoiding the destruction of business value by misapplying ML /statistics_. In that sense, I am concerned about blog posts like these (which list 50 libraries and zero textbooks or papers) and those who comment arguing the relevance of "real math" in the era of computers.

Speaking bluntly: if you are a "data scientist" that can't derive a posterior distribution or explain the architecture of a neural network in rigorous detail, you're only going to solve easy problems amenable to black-box approaches. This is code for "toss things into pandas and throw sklearn at it". I would look for a separate line of work.

<comment><USER3> I think the "Data Scientist" job title is overloaded–I see several clusters of skills being useful, and in my ideal world they would have similar but slightly different job titles:

–Medium Stats/ML, medium Engineering ("Data Scientist" or "Data Engineer")

–High Engineering on very large datasets, low/medium Stats/ML ("Data Engineer" or "Backend Engineer")

–High Analysis, medium Stats/ML, low Engineering ("Analyst")

–High traditional Stats, High Analysis, low ML/Engineering ("Statistician")

–High ML, medium Stats, medium Analysis ("Data Scientist")

–High ML, medium Engineering ("Machine Learning Engineer")

<comment><USER4> One of the lessons of the web (in the 1990s everyone was a _webmaster_ until the field mature.) is that after the coders, specialists emerged in fields like design, management, UX, seo and content. For data science the most obvious is data visualization but I guess there's plenty of new jobs ahead in addition to core data science jobs.

<comment><USER5> the second most obvious is cleaner. 90% of time spent when i try to do any analysis is just spent trying to get data that are usable, or in an usable shape.

And let's not talk about the different CSV you can encounter... or how to get data out of databases that are literally the only reason some "guardian DBA" still have a job. It can take months to get any access, if you ever get it...

</comment></comment></comment></comment><comment><USER6> The roles of statistician and data scientist are not substitutes but more like complements. This guy definitely _is_ a data scientist. Here's some ways to tell:

\- Works on non-mission-critical components, e.g. he's not doing statistics for the when the wing will fall off your airplane, but he can help you figure out business problems more open to interpretation, e.g. subject line open rates.

\- His publishing tools favor flair over convention, e.g. Ctrl+f for "latex" has zero results, but he does have D3, C3, Bokeh, surprisingly no tableau.

\- Not sure he even references a single classical statistics package. The vast majority of people publishing in social sciences or "old school" life sciences are using Minitab, JMP, R, or SAS (correct me if I'm wrong, please, it's an outsider's perspective).

This skillset is not inherently "cutting edge!"\- or deceptively "all talk, no walk". They really are completely different roles, that use some of the same tools and formulas and jargon. To cut to the heart of it: When a company builds a plane and says "I wonder how unlikely it would be for the wing to fall off?" that creates the demand for a statistician. When a company is trying to out-compete others, or maximize profit/charitable-effectiveness, often in a service or a field that is heavily influenced with human psychology, that creates the potential for a data scientist to add value.

<comment><AUTHOR> I knew I was forgetting packages. I _do_ in fact use Tableau. Will add it. Thanks for the catch!

As for LaTeX, it would have never occurred to me to add it. I have no idea why not, but it doesn't. Maybe because it feels more like a _chore_ than a tool. It's like an anti-tool. I mean, I do or did in the recent past use LaTeX, but in more recent years I would farm that out to someone junior to me who hadn't worked with it for long enough to prefer pouring bleach in their ears to being faced with tweaking one more broken LaTeX template.

I probably should include classical stats packages. They really should go in here. But I've been coding since I was a kid and typically eschewed classical stats and math packages because of my perception that they were slow walled- gardens, and that as soon as I had a method figured out in Matlab or SPSS I'd end up rewriting it in C, C++, or Java to make it work with other things or at scale. That was hammered home in the first company I worked with where we did modeling in SAS and then rewrote every model in Java because SAS couldn't keep up.

I'm not suggesting that classical stats packages aren't data scientists tools. I think they are. They're just not _my_ tools because of the curious niche I found myself in.

<comment><USER7> I think my job is similar to yours. My background is in engineering at an industrial manufacturing plant.

I have some of the same issues. The Engineers here tend to reach for spreadsheets first (or Access databases - these things are everywhere at my work) and inevitably they run into scaling problems and end up with a huge bloated mess. I step in to re-architecture these monstrosities (using "real" databases when necessary).

The other big part of my day to day work is modelling and data analysis. Usually regression based stuff and LP optimization problems (SAS is very good for this) especially around yield and quality control. The venerable excel "solver" plugin is often abused very heavily by engineers and is not always the ideal solution.

The person who I took over from was a Stats guy and the original job title was "Process Statistician" my boss has since retitled my role "Data Management Engineer". I still think of myself as an engineer first and foremost and a "data" person second.

I use SAS heavily. We have kind of gone in the opposite direction to you. I have rewritten some of our models in the past from C++ into SAS mostly for ease of maintenance because SAS is better understood by the non programmers (Most of the Engineers here do not have a programming/CS background and those that do tend to either know Fortran or Visual Basic very few grasp C/C++ very well). Speed is not really any issue but opaqueness and ease of maintanece is.

I'd like to learn R because I have heard it is very similar to SAS but more transferable to outside companies. Julia is the other language I've got my eye on I have heard it is somewhat similar to MATLAB which is used for some modelling work here.

</comment></comment></comment><comment><USER8> Cassandra is mentioned, I agree it's great for storing metadata and can be used to build efficient graph implementations but it's cited for Graphs and Relationships? I think that can be misleading as Cassandra is a a distributed column based key-value store.

<comment><USER9> I noticed that too. I don't want to gainsay the author's experiences, but it sounds like the author is describing the job of a data analyst who happens to dabble with various software. I don't get the sense the author has in-depth knowledge about the tools he lists.

Also, I don't know about putting Mongo and Cassandra under "Tools for working with unusual datasets".

</comment></comment><comment><USER10> Am I the only one who came here looking for someone's experience as a tool set? For a second there I thought I might have stumbled over real honesty, a rare treat these days. Maybe, if we stop putting each other in stupid labeled boxes to please our bullshit peddling masters, we would get somewhere...

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

> Machine learning and data mining are not well distinguished, but machine > learning techniques increasingly favor "unsupervised" learning algorithms.

The statement above puzzles me because it does not align with what I can see in the news. Maybe I'm just uninformed, so please let me know if I'm wrong.

According to what I can read in the news:

1 - Almost all of the recent ML developments that I can think of are in the field of supervised learning / reinforcement learning

2 - the only field that I can think of where unsupervised learning techniques are prevalent is data mining, which is precisely why I see it as a very specific field.

Am I missing something?

<comment><USER12> No, you're right. Nothing about this blog post/resume inspires confidence.

</comment></comment><comment><USER13> Big Data is when you outgrow Excel.

</comment><comment><USER14> 'Data scientist' is just title inflation by statisticians.

<comment><USER15> More like 'analyst' in how easily it is thrown around. Calling a built in function in python or R is just about equivalent to calling one in Excel. Sure, you can claim that folks need to know more about what is going on, but honestly, how many have actually gone through the work of deriving the functions they're calling to begin with?

<comment><USER16> I'm wondering how useful deriving functions yourself is in the age of computers. I feel like knowing axioms about the mathematical structure you're dealing with and how to do proofs is very important, but it always struck me as odd that were still stepping through complex applied maths functions manually in pen and paper. Programmers don't bother say, writing our own hashtable implementation more than a handful of times in our lives, do we? Does forgetting how to derive hashtables mean we won't know how to use them effectively?

Genuine question - more than happy to be proven wrong.

<comment><USER17> >stepping through complex applied maths functions manually in pen and paper.

We do that because:

A it helps us understand them better

B it teaches us how to think, the way Feynman said "Know how to solve every problem that has been solved". Granted, it seems pointless to work through what is easily accessible through machine BUT it teaches how to solve new problems. I wouldn't consider using NumPy or Matlab as the first step towards solving a new math problem.

It's like using Assembly vs using a higher level programming language.

<comment><USER15> Completely agree. There's a lot of nuance in these algorithms, they're not as cut and dry as simply calling a package method and oftentimes they aren't optimized to your use case. I work in Machine Learning, specifically on NLP, and it is really obvious when interviewing potential employees who knows what SVD means and who just know the NumPy function. Most "data scientists" I've interviewed fall in the latter category.

edit-This is of course completely anecdotal experience.

</comment></comment></comment></comment></comment><comment><USER18> I'm not sure this is what a data scientist is. It was supposed to be a research scientist (which is where the _scientist_ part came from) that wrangles data and code. This individual should have both domain knowledge and coding chops while knowing how to conduct research.

<comment><USER19> That would make me a data scientist, but I do not think I am and still have to learn a few tricks from this guy (and others).</comment></comment>


The 12 Days of Git: Learn Git Over the Holidays - <AUTHOR> http://vanwilson.info/2015/12/the-12-days-of-git-learn-git-over-the-holidays/ <comment><USER2> Almost all git tutorials are absolutely useless. Seriously, they all exploit the same learning scenario that has almost nothing in common with the "real life" needs.

I've been "teaching" git for a year and now I can tell that people who want to use git MUST first accept and understand how exactly git works. I mean everyone MUST read this ( [https://git-scm.com/book/en/v2/Getting-Started-Git- Basics](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics) ) article first, because without clear understanding git concepts it's almost impossible to understand and embrace more complex things like rebase or git branches.

If you catch up git concepts (commits are snapshots and not changesets, branches/references/tags as snapshot labels etc) you will learn the rest of concepts/commands much faster. So the best tutorial is [https://git- scm.com/book](https://git-scm.com/book) , you don't need anything else, really.

</comment><comment><USER3> I wrote up a series of posts on Git with my "Git tip of the week" series. I posted a finale, with back-links back to all previous posts, here if anyone is interested:

[http://alblue.bandlem.com/2011/12/git-tip-of-week- finale.htm...](http://alblue.bandlem.com/2011/12/git-tip-of-week-finale.html)

</comment><comment><USER4> Is there something wrong with me if I read every new git tutorial I run into even though I usually don't learn anything new? I sometimes learn a new nugget here and there but I think the real reason is that my fundamental understanding improves each time. Different authors have different ways at looking at the meaning of the operations.</comment>


How to pick startup ideas (2015) - <AUTHOR> http://www.defmacro.org/2015/02/25/startup-ideas.html <comment><USER2> Here is what I have seen happen and work quite effectively.

\- Find a bunch of investors (that is anyone with lots of disposable cash)

\- Befriend them. Use the 'How to Win Friends and Influence People' techniques on them.

\- Come up with any idea, doesn't matter what it is at that point, could be "Uber For Dogs" or "Bitcoin Microloans for Clowns" ...

\- Get the cash for the startup. Rent an office. Put CEO on your title. Enjoy playing CEO for 5 years.

\- Rinse, repeat.

\- In the process make sure to go to every single meetup, and conference and hand out business cards with your title on it as "CEO"

\- As soon as any new framework comes around, re-write everything in it. Then write a blog post "We switched from X to Y". Convince said investors that this is a crucially important / strategic priority if they start questioning your methods.

\- After blog is written add title "author" next to "CEO".

<comment><USER3> This is why in my angel investing (I really hate the term angel) I try to avoid just investing in people I like.

It is not that I want to work with people I dislike, but that if I like them other people probably do and if they are all investing on the basis of how much they like the founders then the price will be higher.

<comment><USER4> Coincidentally, in my research paper, it's found that one of the deciding factors that VCs and Accelerators choose/invest in companies is actually how much they 'like' people or founders

<comment><USER3> Yep. I can understand the appeal of wanting to invest in people you like because you will be spending a lot of time with them. It would not be so bad if who people liked was random, but it is not - we all tend to like the same people.

Investing is quite like dating in that it is not always best to just go the for the hottest guy/girl in the room.

</comment></comment></comment></comment><comment><USER5> I just finished "The Originals" and he basically has a whole chapter on how first movers advantage is bullshit.

Taken from the book:

* Studies show this does not exist

* Since market is more defined when settlers enter, they can focus on providing superior quality instead of deliberating about what to offer in the first place

* Risk seekers are drawn to being first, and they're prone to impulsive decisions. Risk-adverse entrepreneurs watch from the sidelines, waiting for the right opportunity and balancing their risk portfolios before entering.

* Failure rates aof 47%/8% (first movers / settlers)

<comment><USER6> Case in point: Google was not a first mover. More like 21st.

[https://en.m.wikipedia.org/wiki/Web_search_engine](https://en.m.wikipedia.org/wiki/Web_search_engine)

<comment><USER7> But Google was the first mover with its way of sorting the data from web pages, by building PageRank.

<comment><USER8> > But Google was the first mover with its way of sorting the data from web > pages, by building PageRank.

That was better execution

</comment></comment></comment></comment><comment><USER9> Two very strong counterarguments should be made:

1) Going for analysis of ecosystem evolution and trying to predict new business avenues from there leads to "too-early" failure cases. Lots of startups fail because they were too early to the market. More startups fail because there is no market than because the market is crowded, and arriving to a market before it exists is probably the worse form of failing because of market absence.

2) First mover advantage is not that much of an advantage. It is important, but lots of unicorns are second movers. Comments here already highlight a few, I'd like to add Apple. Apple mostly refined products that were already in the market and profited handsomely from that (no negative tone here, pretty much the opposite).

</comment><comment><USER10> A professor at Darden, Saras Sarasvathy, has been teaching and advancing the study of entrepreneurship for some time now, with emphasis of her studies on what is known as _effectuation_.

You may find this useful:

[http://effectuation.org/](http://effectuation.org/)

overview: [http://www.effectuation.org/sites/default/files/documents/ef...](http://www.effectuation.org/sites/default/files/documents/effectuation-3-pager.pdf)

<comment><USER11> It's interesting that this concept has been submitted a few times to no discussion. Not even to say it's BS, which is weird for HN.

<comment><USER10> I posted it, without my opinion. You responded without providing your opinion, also. :)

<comment><USER11> I take most of this literature skeptically and I haven't had a chance to dive into this site much. But if the five things in the article are actionable and they work, it could be useful.

</comment></comment></comment></comment><comment><USER12> Am I the only one who feels this is the wrong question to be asking? Having the goal of "creating a startup" leading to the search for a problem seems backwards. Entrepreneurship happens (or should happen) as an _effect_ of the struggle to solve a problem.

<comment><USER13> Yes, I think startup for the sake of startup can lead to all manner of bad ideas. It's the reason why you have a lot of companies solving things that aren't actually problems.

Are there many examples of startups for the sake of startups that succeeded?

<comment><USER14> I've known three people personally who created companies in an area they didn't really care about but they thought there was an opportunity and succeeded.

I've known a lot more that start companies in things they're passionate about (e.g. video games) and struggle.

The feel good mantra of our time is damaging. It certainly was to me.

<comment><USER13> I agree, finding a problem that is actually a problem (even if you aren't "passionate" about it) can work.

But I think that is the main point, seeing something that is an oppurtunity.

I was more reffering to people who "play startup" for startups sake, because it is cool or the done thing.

If there is oppurtunity and solution you don't need to be passionate generally.

</comment></comment></comment></comment><comment><USER15> Lost me by continuing to advocate for first mover advantage where we just have a ton of examples where that wasn't true.

<comment><USER16> Don't get too hung up on the term "first-mover".

I don't think he's necessarily referring to the very first start up a particular space. Everything he's saying is basically true, if you think of "first-mover" as the first company to dominate, which usually tends to happen within the first 1 to 2 years of when a particular product/idea becomes feasible.

The point of the article is not "first mover". The point is that opportunities get taken and gobbled up as soon as they are feasible. And once those opportunities are devoured and a company has a 3 year lead, it's nearly impossible for new companies to come in, unless they have a significant differentiation.

<comment><USER17> First to dominate is rarely the first to start. Also the dominance can be fleeting instead of permanent. E.g. MySpace was pretty dominant circa 2006-07, not so much now.

</comment></comment></comment><comment><USER3> Rather than looking for pain as the source of ideas, look for inefficiencies where you can capture a faction of the value released from using a more efficient method.

Pain is very subjective, but inefficiencies are quantifiable in dollars and cents. You don't have to convince a new customer that your product is "better", or will solve their "problem" - you just need to show them how much money they will save or make. Do this using a method you can protect and it is hard to fail.

<comment><USER18> In the first case you just need a solution that is better than nothing.

In the second case you need to be better than something that exists.

But yes, it is easier to find problems with bad solutions than to find problems without any solution.

<comment><USER3> What is not easy is finding good solutions that increase efficiency.

</comment></comment></comment><comment><USER16> And, let's not forget. The first mover can acquire his users much more cheaply than anyone else coming in at a later date. This is because, the first users, the fore-runners who try new products more easily are usually the cheapest to acquire users. Just like digging for oil, every subsequent user increases in cost to acquire.

While we're on the subject, if you're looking to acquire highly targeted users on twitter, check out [http://www.find70.com/?t=hnw](http://www.find70.com/?t=hnw) Target users by the accounts they follow, their twitter bios, their follower counts, and lots of other filters.

</comment><comment><USER19> I often think HN misses cross-pollination with disciplines other than software engineering. Most programming solutions I see on HN are solutions for problems that developers have. For example, a CSS compiler, or a service for displaying statistics of cloud server usage.

I'm not sure how it would work, but I guess it would be nice to have a forum or database where problems from other fields would be discussed with developers. Such that an informal requirements analysis would result for each problem. And perhaps even designers could participate, and create mock-ups of the UI, et cetera.

I guess I just formulated a startup idea :)

<comment><USER20> [https://web.archive.org/web/20151219233805/http://assembly.c...](https://web.archive.org/web/20151219233805/http://assembly.com/)

Sounds like the defunct assembly

</comment></comment><comment><USER21> _the solution is to stop thinking of startup ideas in terms of solving problems in the early stages of startup germination, and instead start thinking in terms of changes in the economic environment and the opportunities these changes unlock_

Agreed.

The whole 'pick problem of others', 'solve problem of others' mindset perversely maintains the appearance of a rigidly analytical, deductive line of thought and yet _completely fails_ when applied to a wide swathe of potential businesses, unless hammered in to a contorted mess at which point it fails to hold water.

</comment><comment><USER22> If you have a unique or novel idea/technology/angle, then great. But whether you succeed will depend on your entrepreneurial prowess, your team, and your resources. As long as you're the better entrepreneur, having your idea stolen is almost welcomed. It's genuine validation, and the highest form of compliment. Competition is free advertising and guaranteed market growth based on a greater combined effort to sell the same service or product. The better entrepreneur will win, and if you're not, then you're screwed anyway.

Be it energy drink, search engine, or Mars, the most important piece is the guy who sees a reason to do it. These ideas bordered on stupid, and they're burglar proof. But they're Red Bull, Google, and SpaceX.

The point is, the first idea doesn't really matter. Entrepreneurs practically need an idea a day to get over all of their problems. Startups are like horse races, in that speed and momentum matter. But if you're stuck on the first idea, you're banging against the gate that hasn't even opened yet.

</comment><comment><USER23> _Much like the biological environment, the economic environment isn't static._

This is the one thing that "evolution debunkers" consistently get wrong. So many of their arguments are predicated on a static fitness function, when such a concept is clearly nonsensical. (And so far, not a single one of them has ever been able to even comprehend this enough to formulate an actual response to this observation.)

I wonder if there's something analogous that goes on with some people's startup debunking?

</comment><comment><USER24> Like

"...how is the world changing and what can I do about it? Only once you identify an environmental change and make sure you're not late to market..."

"...There are no formulas to learning about changes early, but you can put yourself in a position to get unique insight. For example, you can learn about changes early because of your job or hobbies..."

"...Sometimes your unique background can make you aware of changes that other people can't see..."

</comment><comment><USER18> 1\. Find where people meet to talk about a specific topic

2\. Look what problems they have with that topic

3\. Think about how you could solve this problem

</comment><comment><USER25> At [http://nugget.one](http://nugget.one) we simply ask 1000's of people if they have a problem that can be fixed by software to tell us about it.

That seems to be a pretty great way to uncover lucrative startup ideas in markets that you never could have imagined.

<comment><USER26> Except that most people don't think of their lives as "problems", not "big problems" (more like little annoyances), and definitely not "problems that can be fixed by software".

Source - had same idea, surveyed 50 random people on the street.

<comment><USER16> But, by interviewing them, they might be able to find those annoyances and those problem areas. A skilled interviewer could probably find potentially solvable problems, that others may not have considered.

</comment></comment></comment><comment><USER27> The premise here seems flawed. It completely ignores the fact that some of the most successful startups were companies that did something new and ingenious regardless of what they thought about the market place. Sometimes the world doesn't know what it wants until it sees it.

</comment><comment><USER28> The author opens on a note so obviously and completely wrong that I had trouble even following their train of thought. It would be like me opening a blog post on dating by saying, "One of the most important things I have learned from (whatever) is: there are no single women, aged 18-44, and the sooner you accept this, the sooner you can (whatever)."

This is obviously so completely wrong that it really made me think, why would the author write this?

This is what I'm talking about:

>One of the most important things I learned from running a startup is that on a macro scale the innovation market is efficient. If the market conditions allow for a startup to arise, it's overwhelmingly probable that multiple startups already exist in that market. The converse is also true — if there are no startups in a given market, it's overwhelmingly probable that market conditions are not hospitable and startups cannot arise.

>In this sense startups are similar to biological life. Wherever the conditions are hospitable, life already exists. The difference is that startups live in an economic rather than a biological environment.

I can't even put into words how wrong this seems to me. Well, let's start with the biological example: there are LOTS of examples of invasive species, where someone brought a species over (on a ship etc) and then that species invaded the whole continent. So, by the author's analogy, the "wherever the conditions are hospitable, life already exists" \-- so wherever the conditions were hospitable to the invasive species, it already existed. But this is counterfactual. It's simply not true.

So biologically the author is simply wrong. Okay, so in the analogy the new species, is like "an idea" \- so when you bring it somewhere, the author is saying it must have already existed, but that's plainly false.

Next I re-read their intro very very carefully "If the market conditions allow for a startup to arise, it's overwhelmingly probable that multiple startups already exist in that market".

Could it mean that they simply mean something very different by "market" from what I meant?

The only thing that I can think of is that the author is talking about well- defined markets with a lot of existing action. So that when you talk with a VC, they've already heard of five other startups are that are doing the same thign. When you do an addressable market analysis, you already have five other competitors who are moving products, and you can use their sales figures as proxies.

In that sense, "market" makes sense.

So the conclusion I have come to (I didn't read further I'm afraid) is that this author must be talking about entrepreneurs with no innovation, creativity, or the creation of anything new - who are simply picking something from what's "out there" to work on.

Is this fair? What are your thoughts here?

<comment><USER29> Except the author specifically mentions he's talking about innovation. I'm not sure what's so hard to believe about the idea that many people come up with the same "innovative" ideas at the same time. There are numerous historical examples.

<comment><USER28> surely you agree there are also numerous historical counterexamples? (innovations only done in one place or by one person/team and not being done anywhere else in the world at that time?)

<comment><USER29> Probably. I would wager modern information diffusion means they'll become less and less common.

</comment></comment></comment></comment><comment><USER30> In the first paragraph by converse does the author mean contrapositive? Or is this the same meaning in English?

</comment><comment><USER31> tl;dr for me: _You'll need to think deeply about the world and invest years of concerted effort into building a good intuition for thinking about the future. Even then you'll be right only a fraction of the time. But you can still get much better than random chance._

</comment><comment><USER32> His reading list, especially Postman, is much more useful than what he has to say.

</comment><comment><USER33> The link seems to be broken now...

</comment><comment><USER34> See a problem. Figure out how many people it is a problem for. Figure out why no one else has solved that problem. Figure out if you know how to solve the problem. Figure out how much folks would be willing to pay for a solution to the problem. If you asses you are able to be fairly compensated (over long periods of time) for solving the problem after all your costs of solving it are reconciled: Commit to spending vast amounts of your resource to exploring and productizing the solution to said problem. This isn't the advice the author gives. However, here is another post written by the same author: [https://rethinkdb.com/blog/rethinkdb- shutdown/](https://rethinkdb.com/blog/rethinkdb-shutdown/)

<comment><USER35> I'm favoriting the post just for this comment. Thank you kind sir.

<comment><USER36> You can click on the comment's timestamp and then click "favorite."

(Pro tip: this is also how you flag a comment.)

</comment></comment></comment><comment><USER37> The best way is to locate a problem or pain point in your daily life, and find a clever easy way to solve that problem. Copying or improving other product will destine to fail.

<comment><USER38> As simple as that.

</comment></comment><comment><USER39> The idea you pick doesn't matter as long as you keep it a secret for as long as possible.

/s</comment>


Salman Khan: Let's use video to reinvent education (video) - <AUTHOR> http://www.ted.com/talks/salman_khan_let_s_use_video_to_reinvent_education.html?awesm=on.ted.com_8z4Y&utm_campaign=salman_khan_let_s_use_video_to_reinvent_education&utm_content=ted.com-talkpage&utm_medium=on.ted.com-twitter&utm_source=direct-on.ted.com <comment><USER2> This is not the first time someone has tried to use video to reinvent education. I could only find one article about it:

<http://www.jstor.org/pss/30188314>

TI-IN came to my high school during my junior year. My first computer science course came over this system, as well as trigonometry and elementary analysis. It had a significant impact on my life... so yeah, Khan is not wrong.

ETA: I found their Facebook page: <http://www.facebook.com/group.php?gid=87541707984></comment>


Businessperson With a Web Startup Idea Looking to Find a Tech Partner? Read This First. - <AUTHOR> http://www.centernetworks.com/looking-for-a-tech-partner

<comment><USER2> Hmm...

<sarcasm>

I have this great idea for a web service. Haven't thought it out completely but it will be kind of like in between google and twitter.

Want to be my partner? I've got the idea, you program it. And the idea is so great that it will virtually sell itself...

Anyone interested?

</sarcasm>

<comment><USER3> </more sarcasm>

I wouldn't dream of partnering with programmers because they're all so wise with deep experience from a wide range of experiences.

I tried partnering up with programmers before but they all informed me they're busy becoming billionaires by setting up their one-person companies to be sold to google on the basis of their awesome algorithms that load YouTube videos 1.23% faster, or their awesome multiplatform databases that connect my car garage opener via satellite to my blackberry, so I can know the instant my garage door opener's battery is running low, or a bluetooth enabled automatic public restroom toilet flusher that links to the ruby-based website they just built so I can know when all my friends are using the restroom, or any other such random multi-billion dollar ideas that lots of people are willing to pay for that every programmer I ever come across seems to secretly be working on.

I can't for the life of me figure out why I keep running into the same brilliant, wise, full-of perpsective programmers at the same parties/meetups/conferences and somehow the folks at google STILL haven't discovered the business value of their Ajax enabled fantasy poker/football/pokemom/Skoble stream mashup, but I refrain from commenting because I know that all programmers everywhere know a lot more about businesses and how to start one in a down, non-speculative economy than anybody anywhere.

</more sarcasm>

<comment><USER4> "...why I keep running into the same brilliant, wise, full-of perpsective programmers at the same parties/meetups... because I know that all programmers everywhere know a lot more about businesses... than anybody anywhere."

I could be wrong but have you ever thought that maybe since you had trouble convincing/selling your idea to the programmers themselves that they logically concluded that you'd probably have a hard time convincing/selling to other people too? or that since you have no track record, that its hard to prove your busines acumen... Knowing about textbook business is different from being able to execute it in real life...

<comment><USER3> "I could be wrong but have you ever thought that maybe since you had trouble convincing/selling your idea to the programmers themselves that they logically concluded that you'd probably have a hard time convincing/selling to other people too?

Well, since it usually never even GETS to my idea because they're busy showing me their brilliant technical features that few people would use and even fewer would pay money for ...

Plus, I don't trust the business acumen of most programmers. In 1999 I got turned down by Phil Greenspun because he was 100% convinced he could build a successful company building $1-5 million a pop corporate websites forever based on (1) Oracle costing a million per licence then (2) no other technologies existing to compete with Oracle (3) complete obvliviousness to offshore development trends (4) never-ending bubble enabling people to pay that much for a website forever and ever.

Guess he really showed me his business acumen when a year and a half later the VCs outmaneuvered him out of his startup.

So, since most programmers admire his business acumen, by transition most programmers in my mind have ... um ... not too much business acumen.

"or that since you have no track record, that its hard to prove your busines acumen...

See above.

Or my current experience this summer with a programmer who left my profitable business model and private equity relationships to work on his awesome idea which currently has a blog with ... um .. 3 subscribers (myself being one) and a never ending stream of posts with "o" comments.

" Knowing about textbook business is different from being able to execute it in real life...

I know nothing about textbooks. Just a market with a need and willingness to pay and a relationship to a CEO at a Dubai based equity firm willing to invest if I can build a "showable" example.

I would have thought in today's environment a profitable business model and people willing to invest would be of some value ...

But I could be wrong. Maybe bush is right and we're not coming into a recession/depression, but are merely in a "slowing down business time" as he put it that's due to reverse any second now, which will mean come this summer Ruby/Ajax based sites with no paying customers and no business model in the foreseeable future will be all the rage again.

</comment></comment></comment></comment><comment><USER5> Maybe this isn't the right place to ask, but what if you're a tech partner looking for a businessperson? There seems to be a lot of talk out there about evaluating geeks, but how do you sift through all the chaff of idea guys?

<comment><USER6> I think a great way is to befriend the business executives (or better yet, founders) at your current job. Impress them, be their go to guy, put in your time, and then be the one they pick to go with them when they leave to go do their next big thing.

</comment></comment><comment><USER7> he outlines a good idea vetting process, which is worth while for both business dude and hacker dude(ette) alike.</comment>


Review of Sublime Text 2 and SlickEdit - <AUTHOR> http://www.drdobbs.com/tools/review-of-two-editors-sublime-text-2-and/240009033

<comment><USER2> I wish more reviews would use animated GIFs, like this article does, to illustrate interactive features. Better than static images and easier to load and watch than a video.</comment>


Why Are People Who Use Illegal Drugs Demonized? - <AUTHOR> https://www.sapiens.org/body-es/down-syndrome-podcast/ <comment><USER2> because when somthing is illegal and you partake of the activity that is by definition- Crime. criminals are usually bad okay so dont do crimes</comment>


Haskell Logo Contest Results - <AUTHOR> http://www.cs.cornell.edu/w8/~andru/cgi-perl/civs/results.pl?num_winners=1&id=E_d21b0256a4fd5ed7&algorithm=beatpath

<comment><USER2> I like it. It kinda reminds me of '80s era Syd Mead designs for some reason (<http://en.wikipedia.org/wiki/Syd_Mead>).

</comment><comment><USER3> Direct link to submitted logos: <http://www.haskell.org/logos/poll.html>

Link was buried in a heap of text.

<comment><USER4> And from there, the winning logo (#51 by Jeff Wheeler):

<http://www.haskell.org/logos/logos/logo7000.png>

<comment><USER5> All aboard LambdaTrak!

</comment></comment></comment><comment><USER6> I really liked this haskell ambigram: <http://www.haskell.org/logos/logos/HaskelmR.png>

</comment><comment><USER7> Some good designs.

Why not an H in the shape of a tie fighter?

Or a black & white mirrored lambda? like yin yang?

Was the contest announced here in HN?</comment>


Granular Audio Synthesis - <AUTHOR> https://blog.demofox.org/2018/03/05/granular-audio-synthesis/ <comment><USER2> I've seen a lot of people commenting about the artifacts you hear when the samples are stretched. These happen because of phasing issues, where frequencies in each of the grains are interfering with one another.

I'm surprised I don't see it mentioned here, but there's a rather interesting extension to this technique made by Paul Nasca[0], which midigates these artifact by (1)carefully choosing the size and placement of grains and (2)randomly changing the phase of each grain before recombining. You can see the algorithm here[1].

The results are absolutely incredible. You can end up slowing a sample down by 800% or more with no artifacts. For example, here[2] is the Windows 95 startup sound extended to be a little over 6 minutes long. The reverb you hear isn't added, that's just what is sounds like.

Also, if you didn't notice from the page, it's one of the default plug-ins in Audacity.

[0]: [http://www.paulnasca.com/](http://www.paulnasca.com/) [1]: [http://www.paulnasca.com/algorithms-created-by-me#TOC- PaulSt...](http://www.paulnasca.com/algorithms-created-by-me#TOC-PaulStretch- extreme-sound-stretching-algorithm) [2]: [https://www.youtube.com/watch?v=FsJdplLB1Bs](https://www.youtube.com/watch?v=FsJdplLB1Bs)

<comment><USER3> You made my day, thank you! I've been using Ableton Live's warping mechanism with Complex Pro settings, and this seems really promising alternative.

<comment><USER4> There's a recently released VST/AU version of Paul's Stretch under active development.

[https://xenakios.wordpress.com/paulxstretch- plugin/](https://xenakios.wordpress.com/paulxstretch-plugin/)

<comment><USER3> Nice, first time I used a VST. Thank you!

</comment></comment></comment></comment><comment><USER5> Very good results and embarrassingly easy to implement!

The very stretched waveform did contain some audible artifacts, but I think other methods like FFT would introduce some as well.

This kind of trick works because our hearing is frequency-based. So the crucial thing is to preserve the frequencies and it is going to sound exactly the same.

Spatial mapping of frequencies in the human ear here: [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2394499/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2394499/) (see fig 5.)

Trying this with an image for example wouldn't work, because our vision is sample-based. Imagine splitting an image in tiny fragments and repeating/interpolating them on top of one another.

</comment><comment><USER6> > What this does is make it so you can put any grain next to any other grain, > and they should fit together pretty decently. This gives you C0 continuity > by the way, but higher order discontinuities still affect the quality of the > result. So, while this method is fast, it isn't the highest quality. I > didn't try it personally, so am unsure how it affects the quality in > practice.

It's not just about continuity. It also removes an entire set of concerns from the process.

For example-- suppose someone analyzes an audio recording, splits it into grains, then does some fancy re-organization based on the timbral content of the recording/grains.

Now suppose they are subjectively unhappy with the result. Perhaps it sounds "wimpy," "fluttery," or some other such vague complaint. Is that sound due to a) their process of re-organizing the grains, b) the quality of the original recording, c) the envelopes they used, or d) something else entirely?

If instead one uses grains which begin and end at zero, the answer can't be C because it doesn't exist. I can say that the quality sounds fine in the few examples I've heard that use this technique.

I'd imagine the reason the latter isn't used as often is because it's simply more difficult to program if each grain can be an arbitrary size (or at least not quantized).

</comment><comment><USER7> I think the speed-up sounds _much_ better than the slow-down. With the slow- down there are very noticable artifacts; I'm not sure if it's because of the envelope they choose or just because repeating a grain adds harmonics.

</comment><comment><USER8> As far as I see this is basically naive TDHS (Time Domain Harmonic Scaling). It's a great starter project as an intro to audio-effect coding, since you can visually observe where you go wrong and where the noise comes from at the edges. Just great for learning how audio works for beginners. It's very rare to have an audio effects algorithm so cool and so easy to observe without special analysis tools.

Some more famous algorithms that work this way and are similarly easy to implement are TDHS and PSOLA. They all work in the time domain but find different ways to smooth out the discontinuities and to make more extreme shifts sound better.

</comment><comment><USER9> Perhaps a better way of looking at it is this. Basically, a sound triggers hair cells in the ear. A single harmonic tone triggers a single group of hair cells. Through modeling, you can compute which hair cells are triggered at what moment for a given signal. Your task is then to compute a new signal for which the same haircells are triggered but faster.

<comment><USER10> I think their description is a much more actionable description of it than yours, to be honest.

<comment><USER9> Yes, it would require some math, but I suspect you'd get superior results. For example, you can replace the "modeling" by the FFT transform applied to small time-slices (i.e., this determines which hair-cells get triggered at a given time). Now you have to stitch these slices together without introducing spurious frequencies, which is the difficult part.

<comment><USER11> Are you trolling us? The ear drum is how you hear...

<comment><USER12> I'm not sure what about that post sounded like a troll to you. It sounds like a reasonable approach, to me.

<comment><USER11> "hair cells in the ear" isn't how hearing works. That's how balance works :/

</comment></comment></comment></comment></comment></comment><comment><USER13> This is pretty neat. One frustrating thing I found while doing some audio programming recently is how hard it was working with different audio formats. Most of the libraries I found for doing so were GPL or required a commercial license.

<comment><USER11> Does this source code help you much with that? It only deals with wave files but can read / write 8, 16, 24 or 32 bit wave files, at whatever sample rate, with however many channels.

I really wish someone would make a header only C++ audio library, that would be soooo nice.

<comment><USER13> Wave files are pretty easy to deal with because the format is simple and the data isn't usually compressed. It's all the other formats that make this hard. Actually, it's probably not that hard, but parsing file formats isn't really a fun programming task (for me at least).

</comment></comment></comment><comment><USER14> Title should be "Granular Audio Synthesis"

Couldn't find anything about C++ in that article on a quick scan - feel free to correct me

<comment><USER15> It's here [https://github.com/Atrix256/GranularSynth](https://github.com/Atrix256/GranularSynth). But unfortunately it does not go very deep into the detail, and there is no real motivation on why C++ would be cool to do that processing...

<comment><USER11> I'm the author and didn't make this post on yc, but yes, the implementation is in 680 lines of standalone c++

The point of the article isn't about c++ or why it's a good language for doing this sort of thing, but I'm a real time graphics and game engine programmer, so it's my language of choice.

<comment><USER16> > typedef uint16_t uint16;

does adding that little "_t" hurt you that much ? think that now every programmer reading your code will wonder "hmm... what is that uint16 type ? is it equivalent to uint16_t ? is it some weird macro designed to accomodate 1990 compilers ?" etc etc.

> const char *fileName

for the love of all things holy, use std::string_view for non-performance- critical stuff like this.

More generally, the only remotely C++-like thing in your code is the use of std::vector. The rest is honestly more C than C++. This shows for instance in SampleChannelFractional with that ugly #if 0. Proper C++ design would have SampleChannelFractional be instead a function object that you could pass as template argument: this way, the user can choose which implementation he wants without requiring a recompilation, and without indirection cost.

In addition, if you change some parts of your code, the C++ compiler will be able to check both code paths directly.

That is :

        struct LinearSampleChannelFractional
        {
          float operator()(const std::vector<float>& input
                         , float sampleFloat
                         , uint16 channel
                         , uint16 numChannels)
          {
            // your linear implementation here
          }
        };

        struct CubicSampleChannelFractional
        {

          float operator()(const std::vector<float>& input
                         , float sampleFloat
                         , uint16 channel
                         , uint16 numChannels)
          {
            // your cubic implementation here
          }

          private:
             float CubicHermite (float A, float B, float C, float D, float t)
             {
                // encapsulate it here:
                // the rest of your code does not care about this function.
             }
        };

        // First modification: pass Fractional as template argument
        template<typename Fractional>
        void TimeAdjust (...)
        {
          // replace SampleChannelFractional:
          output[...] = Fractional{}(input, srcSampleFloat, channel, numChannels);
        }

        template<typename Fractional>
        void SplatGrainToOutput (...)
        {
          // same
          output[...] = Fractional{}(...);
        }

        // Second modification: refactor this in a Granulator class of some sorts...
        // and use the standard C++ naming convention
        template<typename Fractional>
        class granulator
        {
          public:
            void time_adjust (...)
            {
              // uses the class template argument
              output[...] = Fractional{}(input, srcSampleFloat, channel, numChannels);
            }

            void splat_grain_to_output (...)
            {
              // same
              output[...] = Fractional{}(...);
            }

            void granular_time_pitch_adjust (...)
            {
               // ... splat_grain_to_output(...)
            }

        int main()
        {
            // now both kinds can be used at the same time in your code, and both will be
            // just as efficient as with the #if 1 ; for instance the choice
            // of the granulator to use can then be part of a configuration option
            // in a GUI software
            constexpr granulator<cubic_sample_channel_fractional> gran1;
            gran1.time_adjust(source, out, numChannels, 0.7f);

            constexpr granulator<linear_sample_channel_fractional> gran2;
            gran2.time_adjust(source, out, numChannels, 0.7f);
        }

<comment><USER17> One other minor nitpick: know the difference between vector.resize vs vector.reserve. If all you're doing is copying new data into the vector after sizing it, use reserve. This avoids default-constructing all of the values inside of it, only to overwrite them with the new values you're copying in. In the case of primitive types it's probably not a big deal, but it's still doing a second pass over the data just to set it to zero before copying the contents of the file.

<comment><USER16> > This avoids default-constructing all of the values inside of it, only to > overwrite them with the new values you're copying in.

I think that I saw a few benchmarks once showing that for primitive types such as int & such, it was actually more efficient to resize() ; only past 32 or 64 bytes structs did reserving' become more interesting. In any case, when nitpicking on this it's even better to use boost::vector which allows to do an uninitialized resize : [http://www.boost.org/doc/libs/1_66_0/doc/html/container/exte...](http://www.boost.org/doc/libs/1_66_0/doc/html/container/extended_functionality.html#container.extended_functionality.default_initialialization).

<comment><USER17> That's interesting, and a bit counter-intuitive IMO. But I guess that's why we measure things. The reserve operation is essentially just a single reallocation, whereas the resize is a reallocation plus a bunch of zeroing out. Strange.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> How does granular analysis differ from pcm representation, Fournier transformation and sampling? Or is it a different name for the same thing. I think it's natural to whoever worked with sound on a Pc.

It's probably debatable, but I don't agree with the statement that shortnening the "sound" changes pitch. It depends on your representation of the sound. If you represent it as a function of amplitude vs time then scaling the time axis does change pitch.

This makes a sensational tone about a fallacy. No instrument plays sound faster or slower to make it shorter or longer.... It just stops playing it or doesn't. If one thinks about the phenomenon this way, it becomes natural why you cannot compress time, to play shorter sounds.

<comment><USER19> You don't seem to have a very good grasp of this subject and don't appear to have read the article very carefully. The only viable alternative to PCM is DSD, which failed to gain any traction for good reasons. So for all practical purposes, sampling and PCM are the same thing. You also throw in Fourier (not Fournier) transformation for good measure, which is relevant to additive synthesis, but not to granular synthesis, which is the topic of this article.

> I don't agree with the statement that shortnening the "sound" changes pitch. > It depends on your representation of the sound. If you represent it as a > function of amplitude vs time then scaling the time axis does change pitch.

The only relevant "representation" is digital audio, which by definition is encoded as amplitude over time regardless of encoding technique. To lengthen time without changing pitch or pitch without changing time requires manipulation of the audio data. That manipulation is either done by granular synthesis, or by utilizing a Fast Fourier Transform to decompose the audio into its component waveforms, changing the frequencies or shortening the wave components, and recomposing them back to a composite waveform. This article is about granular synthesis, which requires far less computation than FFT.

> No instrument plays sound faster or slower to make it shorter or longer....

Irrelevant. We aren't dealing with physical instruments, but with digital audio.

There is nothing in the least fallacious or sensational about this article.

<comment><USER20> Fourier-based techniques (FBT) and sample slicing (SC) may be similar if doing "raw" transformations, but FBT can potentially be cleaner, or at least easier to clean up. If you use raw "bit-maps" for FBT, yes it will be choppy like SC, but one can use regression or regression-like curve-fitting to give FBT smooth time/frequency curves to synthesize against, sounding more natural. There are down-sides to using regression, but for typical voice and music, those won't matter much.

One rough area for curve-fitting is white-noise-esque sounds (WNES) like the letter "s" or "h" and tambourines. The processor can perhaps detect if WNES exceed a threshold, and use other techniques such as SC instead.

It's roughly comparable to JPEG versus GIF images. JPEG is better (more faithful) at gradual shades while GIF is better at edges. A better compression algorithm perhaps would use each where it does best per given image. However, at the cost of algorithm complexity and compression/decompression processing time.</comment></comment></comment>


The Metagame: Notes on Paul Graham's "How to Get Startup Ideas" - <AUTHOR> https://pzakin.substack.com/p/the-metagame <comment><AUTHOR> I said recently to a founder who wasn't sure if they loved their startup idea: your work doesn't need to be sacred for it to matter. The sport of building something and beating competitors and working with great people is sufficient reward. Anything more, and your cup runneth over.</comment>


Cloudy with a Chance of War (2014) - <AUTHOR> http://nautil.us/issue/70/variables/cloudy-with-a-chance-of-war-rp <comment><USER2> Discussed at the time: [https://news.ycombinator.com/item?id=8114020](https://news.ycombinator.com/item?id=8114020)</comment>


Ask HN: How to get productive with the JVM in 48h? - <AUTHOR> For a new web app with heavy IO, Websocket support and high performance requirements I am looking for a new framework.
Coming from Rails and Node I want to try the JVM.
How should I start to get quickly productive:
- JVM with Java?
- JVM with Java/Play?
- JVM with Scala?
- JVM with Clojure?
I know that my question is a bit broad and usually you should start your project just in the preferred language and when scaling gets a problem you can always switch to something else like the JVM.
But let's just assume I just want to use the JVM—what's the quickest way to get into it? Give me hints, resources and experiences. Thanks. <comment><USER2> Ask HN: How to get productive as a surgeon in 48h?

Coming from cooking I have professional experience in chopping meant and I assume to be shortly up and running in my new professional field. I'd appreciate any links to tutorials (like 'Surgery for dummies') and sellers where I can cheaply buy scalpels and other tools needed. Thanks.

<comment><USER3> I think the OP is already a surgeon, only looking for advice before getting a new scalpel.

</comment></comment><comment><USER4> I'd look at Play framework V2 + Scala <http://www.playframework.org/> and Vert.x <http://vertxproject.wordpress.com/> (Scala support coming soon). Since you already know Ruby you may consider using JRuby or Groovy with Vert.x as other options. Scala and Java are more efficient though.

A good list of books for learning Play and Scala: [http://capecoder.wordpress.com/2012/05/06/scala-books- being-...](http://capecoder.wordpress.com/2012/05/06/scala-books-being- published-at-quite-a-rate/)

IntelliJ + Scala plugin is widely regarded as the best IDE for Scala work: <http://www.jetbrains.com/idea/free_java_ide.html>

<comment><USER5> IMO the recent version of Eclipse's Scala plugin is much better - IntelliJ's automatic error highlighting was nightmarish last time I checked (repeteadly highlighted correct code) and it's just too much of a distraction to bear.

</comment></comment><comment><USER6> If you're coming from a Ruby background, then JRuby might be your best bet. I'm not 100% sure where JRuby stands performance-wise these days, but - IIRC - they've been at the forefront of taking advantage of some of the new JDK7 stuff to improve performance.

Short of that, Play does have a really good reputation in the Java world, but I haven't used it personally, so I can't share any first-hand experience. Still, what I've heard has been pretty positive.

<comment><USER7> +1. Second the comment that if you only have 48 hours then I would recommend having a look at doing something with JRuby. Torquebox.org is a modified version of the JBoss Application server built for JRuby I believe.

<comment><USER8> Another +1 with a slight addition.

Torquebox (2.x) is JBoss AS7 with extra ruby inter-op code layered on top of it. The base JBoss is not modified significantly.

You can happily run Java apps on Torquebox alongside JRuby apps (and clojure apps if you want with the immutant project)

There are reports from people on the mailing list of using JRuby and Torquebox for the back-end data collection services used by AAA Games which process a he-uge number of requests per month.

</comment></comment></comment><comment><USER9> First off, 48h is a tough call - the JVM is a huge ecosystem! You might want to moderate your expectations.

Personal suggestions would be:

\- Get one of the major open source IDEs. I personally recommend Eclipse (<http://www.eclipse.org/>)

\- Learn some Java first. Since it's the Ligua France on the JVM, you'll want to know it if only so you can read code. If you like your more modern languages you can always switch to Scala/Clojure later once you are familiar with the Java ecosystem.

\- Play (<http://www.playframework.org/>) is a great framework for your web app. Give it a try.

\- Netty is a great IO framework (<http://netty.io/>). If you really care about IO performance, you will probably want to use Netty (or something based on Netty). I've used Netty for low-latency game servers, for example.

</comment><comment><USER10> We recently started migrating many of our systems from old (poorly coded) ColdFusion IIS servers to Play2 with Scala. My Java experience before was academic only and uptime/concurrency are big deals for us (payment processing), so we decided to give Scala a try. I have absolutely loved it. Play is a very strong framework, and Scala has greatly increased my abilities as a programmer.

</comment><comment><USER11> Groovy is a great scripting language for the JVM, pretty easy and powerfull,supports optional typing, and has java like integration with the jvm.

Groovy++ is a statically typed extension to groovy that add type inference , and let's you have java like performance for groovy, by doing little more work.

vert.x supports groovy, play supports groovy and play's template engine uses groovy.

</comment><comment> johnx123-up Java Play or Vert.x. Play2 isn't really production ready <http://news.ycombinator.com/item?id=3959877>

<comment><USER4> Play2 is released for production use and works with both Java and Scala. You've linked to an article which says essentially nothing.

You're suggesting that Vert.x is more production ready when it was only released 3 days ago? [http://vertxproject.wordpress.com/2012/05/09/vert-x-1-0-fina...](http://vertxproject.wordpress.com/2012/05/09/vert-x-1-0-final- is-released/)

</comment></comment><comment><USER12> May not be to everyone's taste, but it is at least worth mentioning Spring Roo. There is an integrated eclipse based IDE (STS) available as well.

You can get a nominal Java CRUD app up in short time with this.

I had been out of Java for a number of years, but we wanted to start w/jvm back end. I was surprised at how much of Spring complexity it encapsulates, it has worked quite well for us so far, although we are still very early on in the process.

</comment><comment><USER13> Coming from Ruby and Node.JS, you may want to start with the new 'Vert.x' project from VMWare:

<http://vertx.io>

It's very new – not sure if yu'll find much community/testimonials – but since it supports (among other languages) Ruby and JS, uses the Netty framework, and opens the world of other Java libraries to your project, it might offer you the shortest-path to watching a JVM run your ideas under load.

</comment><comment><USER14> I would definitely go with Play. It is by far the best Java framework around for getting something done quickly and skips the design pattern/XML heavy approaches used in most of the other frameworks. And coming from a Rail background its convention over configuration approach is going to be more akin to what you are used to.

The real issue is how heavy your I/O is going to be. Play2 is very new but is designed for your use case as it incorporates Akka. Play1 however is easier to use and more well understood. For me I would start with Play2/Java and then selectively incorporate Scala where you need to. That's just because I find Java dead easy to code, maintain and hire developers for.

Twitter has some great open source libraries/resources for Scala at <http://twitter.github.com> that can help.

Also if you have full control of your stack do look at Nginx/Lua. It is lightening fast. <http://news.ycombinator.com/item?id=2390816>

<comment><USER15> I agree with the recommendation for Play 2. It is simple framework that covers a lot of bases adequately. If you want to do the HTML/database thing Play will cover this. If you want to do the REST service thing, Play will also handle that.

If you just want to do REST services we've had a lot of success with BlueEyes (<https://github.com/jdegoes/blueeyes>) and the framework we've built on top of this, Bigtop (<https://github.com/bigtop/bigtop>). Documentation is lacking compared to Play. It's an option is you're feeling braver, want to do pure REST services, and want more performance than Play gives you.

I think only crazy people use Java. It's just not productive enough. I use Scala. The shape of the learning curve will depend on your experience with modern languages. If you've done Ruby/JS and are happy with blocks/closures and stuff like underscore.js you're halfway there. If you've ever done any Haskell/O'Caml/ML you're 90% of the way there.

Getting started on the JVM can be daunting. In the Scala world we use SBT (<https://github.com/harrah/xsbt/wiki>) which gets around a lot of Java/Maven nonsense, though adds some of its own. Other languages will have their own build tools.

I've had a tiny peek at VertX, and don't like it. It seems to encourage callback spaghetti and doesn't seem to make good use of the type system.

If you go any of the Scala options above feel free to drop me an email (in my profile) if you need help.</comment></comment>