Startup Ideas - July 2011 - <AUTHOR> http://wesleytansey.com/startup-ideas-july-2011/ <comment><USER4> "Does this fit me" has been a dream of mine for awhile. Imagine a world where everybody's clothes fit. Where clothing can be spontaneously gifted, and you'll be sure it fits like a glove.

I think he sells himself short here. Women aren't the only people that have to hunt for a fit. I'm a tall, lanky guy. Most medium shirts are too short, and my shoulders swim in a large. Like any good scientist, I've trialled and erred my way to brands that fit (thank you American Apparel medium 50/50s), but this discovery process is a pain in the ass. Here's the upside, browse through clothes online, and everything fits, see how it looks on someone with your shape.

There are some big challenges of course. A brand's sizing will vary from design to design. I bought a pair of Nike 11s that fit, after trying another Nike 11 that didn't. Then, how consistent is the sizing after manufacturing, after washing?

Sigh, somebody start this, and I'd love to help.

<comment><USER5> Another one is Clothes Horse. They're trying to solve this problem using machine learning: <http://www.clotheshor.se/>

<comment><USER6> I love this idea - which is why I co-founded Clothes Horse ;) thanks rw and gsiener for the comments! Hopefully you'll see us everywhere soon. Hit me up if you wanna get involved - @dwhittemore on twitter

<comment><USER7> was trying to sign up using the form on the website, but cant seem to submit the form :-(

</comment></comment></comment></comment><comment><USER8> I'm worried that a lot of these ideas are taking Paul Graham's adage of solving simple problems a little bit too much to heart. The amount of effort that would be expanded into these ideas - and various other start-up ideas nowadays - generally appears to me to be more than it's worth.

I suppose my point is that entrepreneurs are spending too much time solving mundane, every-day problems which aren't that bad as opposed to looking at the big picture. I mean, don't get me wrong, I recognize that not everyone is going to build the next facebook... but if we don't strive for that, doesn't that eliminate the risk - and ultimately, the charm - of entrepreneurship? Or am I just bitter?

I'm starting to think it might just be the latter.

<comment><AUTHOR> _> not everyone is going to build the next facebook... but if we don't strive for that, doesn't that eliminate the risk - and ultimately, the charm - <USER2> entrepreneurship? Or am I just bitter?_

First, I really wouldn't say Facebook was a big idea when it started. It was about getting Harvard students laid, with some long-shot plans about connecting the world together gradually over time. I could come up with some half-baked paths that a few of my ideas may follow to become a huge company, but of course that is more about luck down the road. I like to focus on ideas that can solve a problem right now and make money.

Second, risk is not a binary concept. You have an efficient frontier of risk/reward points and you simply choose your spot along that line. If you want to start the next Facebook, you might be looking at 1,000 competitors. If you want to build a Settlers of Catan clone, it's more like 3. There's still risk, but it's greatly reduced, and with that reduction comes a reduction of potential return. Feel free to swing for the fences-- but every team needs guys who can get singles and RBIs, not just home runs.

Happy to hear some examples of ideas that you think have sufficient potential and charm. :)

<comment><USER8> Good points. I guess I'm not as concerned about entrepreneurs pursuing ideas which are inherently doomed, as much as entrepreneurs grasping for straws.

I'd like to think the idea I'm working on now has sufficient potential and charm! :-)

</comment></comment></comment><comment><USER9> With regard to the source control for recipes, I've been trying to get an StackExchange/Reddit sort of thing for recipes that includes some wiki editing off the ground for a year and a half. Haven't had much success, but working on version 3 in my spare time now. Maybe with a nicer design (a real logo) and a core written in Zend as opposed to Cake things will pick up speed more. Here's the current version: <http://www.fridgetofood.com>

<comment><AUTHOR> Cool idea and nice looking site!

I think the reason why Github is a better model than reddit is because of the developer-centric model of Github. I use Github because it's how I manage my own code-- it's first and foremost about me. The social aspect of it is what makes it go viral when a cool library is pushed, but that's a vitamin, not a painkiller.

With reddit, it's more of a nail-biting, "gosh I hope people like this" sort of model. Its focus is on the community and a link is a temporary (usually < 1 day) talking point for people.

I think chefs treasure their recipes and carry them around for life. They know what they like and they're happy to experiment/learn from others, but it's mostly about mastering their own skills and creating their own recipes.

<comment><USER10> For Reddit, a person can evaluate the quality of an article very quick and simple democracy pushes it to the top. Also, once I have read the article, I usually don't care to ever see it again. With recipes, it takes longer to evaluate, so the credibility of the person recommending it has more weight. Also, when I find a recipe I like, I want to keep it for life. "Browse Emeril's recipes" sounds like a site I want to see. (This may be exactly what you were saying, not sure)

<comment><USER9> Well, Fridge to Food attaches a StackExchange style reputation to people (that carries more weight than reddit karma) and does have a page where you can see user's recipes (similar to SO). Really it pulls more inspiration from StackExchange than it does from Reddit.

</comment></comment></comment></comment><comment><USER11> Love the idea of github for recipes. I think it'd be great to share and build recipes with others. Actually, the github/social version idea could work for a lot of stuff in theory (e.g. music, design, etc).

</comment><comment><USER12> The crowdsourced editing is already done. <http://www.cloudcrowd.com/>

</comment><comment><USER13> I've got a pickup lines site (<http://worldsbestpickuplines.info>) which would be easy to adapt or clone to the "Pickup Stories" idea - I think I'll do it. Thanks for the idea!

<comment><AUTHOR> Awesome! Drop me a line when it's up and running!

<comment><USER13> done! slightly modified from the original idea: <http://hookupstories.net/> now all it needs some content! any hn'ers got some good hookup/pickup stories???

</comment></comment></comment><comment><USER14> > Rewarding Jobs: A jobs site that only posts jobs with a more altruistic > slant...

I think <http://www.idealist.org/> already fills this niche

</comment><comment><USER15> Several of these appear to already exist (such as the crowdsourced editing).

Then there is your webcam deal that hits a personal pain point - <USER3> sufficiently exotic will be Mega expensive to get a signal out of. Heck I'd pay for 50 webcams to be installed throughout Rocky Mountain National Park myself if it weren't that only a satellite uplink would work for most locations and a couple hundred a day adds up to real money quick :-)

<comment><AUTHOR> Sure, it would be ideal to have a webcam mounted right on top of Pike's peak, but I think that's not required. I'm sure somewhere like the Broadmoor hotel in Colorado Springs has a sufficiently awesome view of the Rocky Mountains, though. :)

<comment><USER15> Perhaps. But if I'm more interested in checking our Bear Lake, or the summit view from Longs Peak (rather than the view of Longs Peak from 30 miles away), or some of the waterfalls along the Glacier trail, then there isn't anyplace where I can get that. And if a service ever comes along that DOES offer that I will be happy to give them a fist full of money because while I can't afford to work in or near the park, I'd love to be able to take a virtual hike when I'm stressed out.

<comment><USER16> If you fund my next trip to the Diamond, I will gladly place that webcam for you :P

<comment><USER15> But how will I get the pictures back from that webcam on demand and for a reasonable price? I wouldn't mind paying for both of us to go up there if that was going to be the lion's share of the cost. But since the trip is maybe 1% of the cost when you have to use a satellite uplink...

</comment></comment></comment></comment></comment><comment> johnx123-up Friend of mine posts ideas in <http://fundprojectswith.me/> There ideas are easily converted to projects with less dollars (500-1000).

I'm going to post these ideas there now:)

</comment><comment><USER17> I'm a huge fan of the Video Creation Contest idea. I think 99 designs is awesome and I think having a good landing video is just as important, if not more important(at least in the beginning), as having a good logo.

</comment><comment><USER18> Can someone explain the "Rydex for the global markets" idea? I don't understand what Rydex does at all.

<comment><AUTHOR> Sure! I just wrote up a lengthy explanation of the idea: [http://wesleytansey.com/elaborating-on-the-global-rydex- idea...](http://wesleytansey.com/elaborating-on-the-global-rydex-idea/)

<comment><USER18> Thanks - that's very useful

</comment></comment></comment><comment><USER19> User Manual Creator

www.ifixit.com</comment>


Logan Paul and the internet need to stop treating Japan as clickbait - <AUTHOR> https://www.theverge.com/2018/1/11/16875188/logan-paul-aokigahara-suicide-forest-japan <comment><USER2> >A country with a rich and complicated history

> Search Google or YouTube for "weird Japan," and you'll find a goldmine of > terrible content stereotyping Japan as the sum of its most bizarre media and > traditions — a metric that would reflect poorly on any country — and > treating the idiosyncrasies of its oddest subcultures as quirky national > characteristics.

Yes, if you search for "weird Japan", instead of, I don't know... "Japan history" you'll find different videos. Same thing if you take a bit of a stereotype about Americans. Search "Crazy America" and you'll get a ton of videos about that too. Is that an awful stereotype that cannot allow us to appreciate the history and culture of the United States?

> The internet has often repackaged the complexity of Japanese culture as a > series of bizarre, cartoonish memes, but it is particularly sad to see the > deaths of Japanese people treated as macabre entertainment.

The internet has also done the same thing with American culture. "Muh freedom", calling Americans "burgers", etc is all over the internet. The simple truth of the matter is, Japanese culture is pretty different to American culture. People like things that are different about the cultures, why would they care about the things that are the same?

>My connection to this story is personal as well.

I could have guessed that after the first paragraph.

All that said, I'm not trying to defend Logan Paul specifically, I really don't like that guy and find him to be a talentless moron. I just think this whole "The internet is only reductionist towards MY culture!" thing I see constantly to be ridiculous. Let people have their jokes, let them have their entertainment. What I find the most annoying is the brazen lack of respect that Logan showed in his videos. His antics wouldn't be acceptable in the United States, so it frustrates me because now there are people in Japan who think that is how Americans act. The difference is, I don't blame them for thinking that if that's their only interaction with an American.

The Japanese are notorious for loving to see their culture spread to other places. If all Americans know about Japanese culture is Kimonos, tentacle porn, anime, ninjas and samurai; I'd be willing to bet the majority of Japanese people would be happy they even knew that much. To expect people in one country to know everything about another country without ever even visiting, or living there, is asinine. Foreign people only knowing certain things is completely expected.</comment>


DIY diagnosis: How an extreme athlete uncovered her genetic flaw - <AUTHOR> http://mosaicscience.com/story/diy-diagnosis-how-extreme-athlete-uncovered-her-genetic-flaw

<comment><USER2> I found their finances interesting. They seem to have made a very good living (including covering expensive medical conditions such as a pacemaker and travel from California to Mayo for treatment) by remodeling and reselling houses on a very part-time basis for over 30 years.

</comment><comment><USER3> This is pretty cool. I like her learning style. I do the same thing, and I love the process of going from looking up every other word to being able to actually understand independently, even in small chunks.

> She scratched around in Google until she found uploaded PDFs of the articles > she wanted. She would read an abstract and Google every word she didn't > understand. When those searches snowballed into even more jargon, she'd > Google that, too. The expanding tree of gibberish seemed infinite—apoptosis, > phenotypic, desmosome—until, one day, it wasn't. "You get a feeling for > what's being said," Kim says. "Pretty soon you start to learn the language."

</comment><comment><USER4> This is really quite amazing, but I'm not surprised. My personal (biased belief, because I've done basically the same thing, except on a less dire system) is that a lot of real biology discovery needs "active, attentive thinking" to identify, and not "big data" in the sense of the standard bioinformatics approach (although certainly massively parallel algorithms are useful for, say, assembling shotgun sequencing).

</comment><comment><USER5> Basically, she identified which gene was likely responsible for two separate but potentially related conditions:

 _As Kim read about these conditions and their symptoms, she saw her entire medical history reflected back at her—the contracted muscles in her neck and back, her slightly misaligned hips and the abnormal curve in her spine. She saw her Charcot–Marie–Tooth disease.

She also saw a heart disorder linked to the LMNA gene that wasn't ARVC but which doctors sometimes mistake for it. "Everything was encapsulated," she says. "It was like an umbrella over all of my phenotypes. I thought: this has to be the unifying principle."_

She also had been essentially self-treating for many years without a diagnosis.

</comment><comment><USER6> Url changed from [http://arstechnica.com/science/2014/08/diy-diagnosis-how- an-...](http://arstechnica.com/science/2014/08/diy-diagnosis-how-an-extreme- athlete-uncovered-her-genetic-flaw/), which points (at the very end) to this.</comment>


Learn more programming languages, even if you won't use them - <AUTHOR> https://thorstenball.com/blog/2019/04/09/learn-more-programming-languages/ <comment><USER3> Learn more ? I'm actively trying to unlearn a bunch of languages at this point!

ofcourse, when I was a wageslave in the bay area, its nice to know python, java, javascript, scala etc. - got me jobs every 2-3 years & put food on table.

now that i'm in academia, its completely upside down. literally everybody is way more productive than me in just about any task. The other day I as supposed to program a poisson clock, it took forever. Meanwhile my advisors & classmates with zero industry experience chug thru these tasks effortlessly. Lately I've confirmed its because they know exactly 1 language , but they know it so well & in so much depth, they know exactly where to look, the right mcmc library, the right slice sampler, the right optimizer, that's what matters.

There's no point programming the same bloody front-end & back-end in a dozen different languages just because of industry constraints. That's like eating a spaghetti with a fork, a spoon, with chopsticks, with your fingers...its the same fucking spaghetti. cook something else, not just rotate dish-ware.

<comment><USER4> It's perfectly possible to know several languages in-depth. It just takes a lot of time and effort. Moreover, it gets easier with time and practice. Knowing N languages makes learning N+1 language just a bit easier. For me the turning point was around N == 10, since when learning a new language - <USER2> yes, in-depth, including idioms, stdlib, some external libraries, maybe some framework (if needed), and also some facts about the implementation and its inner workings[1] - takes a week at most, and for simpler cases a weekend is enough.

OTOH, it took around 15 years to get there. I understand that this kind of dedication may not be possible or worth it for everyone.

[1] Because there is very, very little unique features to each language. Unless you go to the fringes, you're bound to see the same concepts applied again and again and again, which gets really disheartening after a while. If you don't believe me, try naming any "new" feature which was added to your favorite (EDIT: I meant _mainstream_ \- TIOBE top 10 or 20 - lang here!) language recently - and I'll show you that same feature implemented 10 or 20 years ago in another language(s).

EDIT: more neutral wording.

<comment><USER5> I don't doubt it's possible.

What I do doubt, is that it's possible to know several languages in-depth and at the same time be at least very good in a specific domain (webdev & mobile apps are not domains), have good algo and problem-solving skills, have decent to good soft skills, know at least a little bit of PM and also be a good conversation partner and well informed citizen of the world, while also being a good husband/wife/dad and being reasonably competent at some hobby that is hopefully not related to computers.

Learning and keeping up to date with the N+1th language takes space from learning the many other interesting things this world has to offer.

<comment><USER4> Yeah, it's a matter of personal choice.

My choice was to forgo any hobbies unless they are somehow useful for programming, ignore most of being "well-informed citizen of the world", ignore the whole mating and breeding business and to focus solely on programming at first, then on programming-related fields that picked up my curiousity. I'm still competent enough in other programming- and work-related areas - at least I've never been told otherwise - but, indeed, half of what you write about is nonexistent in my life.

Actually, if there was a monastery for programmers, with ascetic lifestyle and good broadband connection to the Internet, I'd go there in a heartbeat.

OTOH, I don't think you'd need to go to such lengths normally. As a programmer, you'll be working for 40 years at least, right? 30 minutes of reading a day will eventually get you to the respectable N (if you choose this particular field), it'll just take longer.

The OP said the fact that he learned multiple languages makes him fall behind his peers in coding tasks. I'm saying that he would have no such problems had he learned these languages in-depth and it's perfectly possible to do so. I admitted immediately that the effort needed for this is at least substantial, no disagreement here - I just pointed out that, after that initial effort of consistently learning N languages for 2*N years, the following languages become very easy to pick up. That's it :)

<comment><USER6> Even then, I don't think you can ever really learn even one mainstream language in depth. For something as 'simple' a C every compiler is slightly different and includes different flags and run on different CPU generations and this stuff is constantly evolving. A language like Java has a giant and evolving standard library plus multiple compilers etc. And that's ignoring any simply popular libraries etc.

Really learning what you can safely ignore in whatever context is the most important part, everything past the basics is domain specific.

Having said that, I have read several language specifications which can be useful for general understanding. But, that's simply the tip of the iceberg.

<comment><USER4> You're moving goalposts a bit here, I think. Or maybe it's my fault, I should have defined 'in-depth' more precisely.

Anyway, I specifically mentioned knowing "some facts about the implementation" instead of "knowing the implementation inside-out". The same is true for tools, libraries, and frameworks - there is no need to remember every function/method signature and every class name in a library - as long as you know the most important parts and can quickly and accurately find the relevant documentation for the rest.

To me, 'knowing in depth' (as a language user) means that no matter the question, you know where to search for the answers. There's no need to remember the answers themselves, although it kind of happens naturally with repetition anyway.

On the other hand, it's also important to know which questions are not worth answering. It's exactly as you say:

> Really learning what you can safely ignore in whatever context is the most > important part

So, to sum it up: if you can do both these things, then, to me, you have in- depth knowledge about the language (or actually any other field). The next step - ie. actually knowing all the answers by heart - is mostly useless for language _users_ and only matters for (and is best left to) language implementers/advocates/nerds.

> A language like Java has a giant and evolving standard library plus multiple > compilers etc. And that's ignoring any simply popular libraries etc.

Java stdlib is only "huge" in comparison with C, where stdlib is non-existent. The popular libraries may be ported from other languages or even directly called via FFI. And if the library is really good, it will be ported to other languages, too, which means you'll have an easier time using these languages in the future.

Even without all that, though, if you know more-or-less what's where and can quickly search for the details - you're good. It's not that easy to learn this - you need to remember the structure of the docs at least - but it's much easier than actually learning and remembering all of the stdlib, etc.

</comment></comment></comment></comment></comment></comment><comment><USER7> I mean sure, if you have limitless time then feel free to learn a bunch of programming languages as well as everything else you could want to learn. But real humans have opportunity cost. If you are a software engineer, the time you spend on skill development can already cut across many, many dimensions. Additional programming languages is just one, and I'd argue a fairly narrow one after you've touched on a few key language paradigms.

What about:

\- Architecture

\- Software Delivery

\- Networking

\- Project management

\- Interaction design

\- Visual design

\- Human factors/Social systems

\- Graphics/Art (2D/3D)

\- Market validation

\- Sales & Marketing

\- Business planning and finance

\- Application domain knowledge

\- Operations and Monitoring

\- Data infrastructure

\- Analytics

\- Machine Learning

\- Machine Vision

\- Computer Graphics

\- Simulation

\- Game Engineering + Design

\- Information Retrieval + Recommender Systems

\- Embedded systems/Control theory

\- Optimization

\- Scientific Computing

I mean there is basically an endless list of areas you can reach into in the limited time you have time focused on skill development as a software engineer beyond "on the job" training. Building a strong, broad "stack" of skills seems like a good investment. Learning new programming languages is a niche within a niche depending on how expansive a scope you set for yourself as a person creating software for the world to use.

<comment><USER8> I would argue that for software engineers, the fields you mentioned would be adjacent fields, while other languages would give deeper insight into the tools of the very trade you're in.

In a time of people going for T-shaped careers, another language is deepening the vertical bar, while another field enriches the horizontal bar.

In that sense, learning a new language and learning a new field are complementary, but different in essence.

<comment><USER9> Learning a new language doesn't necessarily deepen the vertical bar if the language cannot really be used to improve productivity/innovation on top of an engineer's current toolset. Learning TypeScript on top of Javascript can be thought of as vertical, but learning say Lua or C# on top of JS is probably better described as horizontal unless you're already intending to do some really specific desktop application.

<comment><USER10> Learning different concepts from other languages can make a big difference. For instance I learned about the value of composition over inheritance by learning Rust, then applied it to my life as an Objective-C developer (prior to Swift). It forces you to break out of your well tread paths, and take the best of other systems and fold it into yours.

</comment></comment></comment></comment><comment><USER11> At this point I have almost 20 languages that I've used for at least two years, which is what I consider an decent bar for "knowing" a language.

The problem I now have is that I don't know if I'll ever be able to master any language anymore. Mmmmaybe C, since I've used that fairly consistently, albeit on-and-off for 25 years.

But whenever I get to an "if" or "for" or function declaration, I often have to look at an example real quick because I have too many fighting memories: is it "if () then {}" or "if then:" and is it "else if" or "elif"? Do I need parens around the clauses? Is it "&&" or "and"?

Mostly I've found that the difference between two languages isn't the difference between two cheeseburgers, but rather the difference between a cheeseburger and lasagna. There's absolutely personal preferences (I still despise Python's whitespace-as-scope, even though I love the language), but they all get your belly full.

<comment><USER12> I'm this way with foreign languages: Spanish and french. I know french very well, and learning/speaking Spanish is significantly harder because I'm always using french words by mistake. sure it'll get better with practice, but interlingual dyslexia is real.

<comment><USER13> Interesting, I feel like I have the opposite issue. Coming from Portuguese, learning Spanish was a breeze and I can usually surprise French speaking people with "hard" words in my basic French sentences — just because I reached out to a Portuguese word and "frenchyfied" it.

<comment><USER14> Spanish and Portuguese seem to be unusually close. Studying one helps me with the other.

Portuguese and Japanese on the other hand...

<comment><USER15> The OP wasn't talking about Japanese. They were talking about European languages- many of which share a common heritage

<comment><USER16> Not all of them do, but the ones mentioned were all very similar Romance languages.

<comment><USER15> I'm aware not al of them do. This is why I said "many" and not "all".

There are roughly 3 main groups of European languages: Italic (or Romance as you described it) for Western Europe, Germanic which is predominantly Central Europe, Scandinavian countries and the UK; and Balto-Slavic for Eastern Europe. Generally speaking of course.

However there is still a fair amount of cross pollination even with the Germanic and Italic languages, not to mention shared characteristics (not least of all a shared alphabet) that doesn't exist with Japonic languages such as, well, Japanese.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> In case anyone isn't familiar with them, these two books[1][2] from the Pragmatic Programmer are great for doing just this. They offer a guided intro to 7 different languages each, and they're a whole lot of fun.

[1] [https://pragprog.com/book/btlang/seven-languages-in-seven- we...](https://pragprog.com/book/btlang/seven-languages-in-seven-weeks)

[2] [https://pragprog.com/book/7lang/seven-more-languages-in- seve...](https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks)

<comment><USER18> The first book led me to discover Erlang, which literally changed my life. Great resource.

<comment><USER19> Could you please elaborate on how it changed your life? I am interested in learning Elixir and wondering if you can give some words of encouragement, assuming it changed your life positively :)

<comment><USER18> Falling in love with Erlang led me to create a Twitter account to share information about it, which helped me find and land a job with Basho, which was by far my favorite job, even if the company ended badly.

So, that part is difficult to replicate.

Setting that aside, Erlang finally helped me understand what functional programming is about (I'd tried and failed to grasp Lisp on a few occasions), taught me the value of immutability and asynchronous message passing, really opened my eyes to the fact that there's a vast world outside the tired Algol family tree.

Sadly, pattern matching and immutability have made it very hard for me to enjoy programming in other languages. Most of my development work after that has been in Python, which is not only the least exciting language I've used in a very long time, but also lacks most of what I came to appreciate about Erlang.

Erlang's constraints (primarily immutability in this context) makes it so much easier to reason about and troubleshoot code.

It's also a good language for helping get opportunities to talk at conferences. People keep hearing about it without knowing much about it, so those talks tend to be well-attended.

Elixir is a perfectly acceptable language, although the syntax and other design choices turn me off, personally. Erlang is a very concise language and helps me _think_ in Erlang; anything that looks like Python/Ruby/C/Java/etc just feels wrong now.

</comment></comment></comment></comment><comment><USER20> I spent a lot of time learning Haskell early in my career. I doubt I'll ever write an actual program in Haskell. I probably won't write so much as a single line of it that will ever see production. (Thank goodness. Haskell is far from perfect, despite its many zealots.) But learning Haskell has changed the way I write code in any language. It's helped me to write better, more testable, more readable, more maintainable, more bug-free Javascript. I wrote a lot of Clojure for a while a few years ago and being familiar with Haskell dropped the learning curve of Clojure down to almost nothing. I personally adore Lisps more than Haskell, but Haskell unlocked the world of functional programming for me. It also showed me the true power strong typing has at a time when the only strong typing I was aware of was the dismal type system of Java. (Like late 90s Java at that!)

<comment><USER21> I also really like Haskell but except for one consulting customer I only use Haskell for side projects.

Recently I started a side project with the deep learning part in Python and the rest in Haskell. I ended up just week ago converting the Haskell part to Common Lisp. Much faster dev, but I have been using Common Lisp since 1982.

</comment></comment><comment><USER22> I couldn't agree more, but if I could make a recommendation. If you already know a mainstream OO language, you won't get much benefit out of learning another in the same arena. Going from Java to C# you will learn less than going from javascript to ocaml or Java to Haskell.

The best thing (for my own learning) I ever decided to do was learn Haskell. I have never been paid to write code in Haskell but it gave me such a confidence with languages that I don't think I've seen any language features in any other language that has ever surprised me or that I felt like I couldn't learn. Haskell and it's language extensions will expose you to many many different ideas. It helped me learn Rust, I feel like I can read ocaml, any other functional language doesn't feel like a stretch to read, etc

So, don't just learn many languages. My advice would be to pick languages across paradigms and learn them. Don't waste your time learning 5 object oriented languages.

<comment><USER23> Failing to learn how to program in Haskell made me realize that I had absolutely no understanding of what I was really doing when I was coding and sent me down a deep rabbit hole learning all the computer science concepts I hadn't ever learned as a self taught programmer.

<comment><USER24> What would you recommended first? I'm also self-taught, just JavaScript, typescript and react and a tiny bit of shell scripting. Job never asks for anything more, but I want to get better at designing, engineering, and building scaleable webapps. So more towards "full stack" I guess.

Haskell sounds super cool, but it seems like nobody really uses it to build things on the web. They mostly just talk about how it "helped them think".

<comment><USER25> Haskell actually could help a lot with JavaScript. Functional programming, writing stateless functions, function parameters, and generally manipulating functions, are valuable and useful concepts in JavaScript and React, and Haskell forces you to learn and understand them. Alternatively, F# could fill that niche if you prefer its syntax.

</comment></comment></comment></comment><comment><USER26> So I fully agree here because techniques from one language often lead to much better technique in a language of a different paradigm.

For instance, I now use many of the functional techniques I've learned in JavaScript to write less, easier to read code instead of more loc of imperative code. I've also worked at a company that had many functional patterns implemented in php, and frankly made the language quite decent.

In terms of the time issue, I spend about 15 minutes a day just before bedtime learning new languages. I probably manage to do this 4 days out of every 7.

<comment><USER27> > I've also worked at a company that had many functional patterns implemented > in php, and frankly made the language quite decent.

Oooh, got any examples?

<comment><USER28> Not OP but:

[https://phptherightway.com/pages/Functional- Programming.html](https://phptherightway.com/pages/Functional- Programming.html)

[https://github.com/mtdowling/transducers.php](https://github.com/mtdowling/transducers.php)

Don't forget putting a function into a function, gives you behaviour polymorphism at runtime, without inheritance or class based dependency injection

</comment></comment></comment><comment><USER29> My suggestion is Objective-C. It's just so _weird_ to anyone who's never coded in it, that it will force you out of your comfort zone into new ways of thinking. The NS framework is probably the most well designed stdlib of any language ever, and the whole thing is inspired directly from Smalltalk. Protocol Oriented Programming [0] was also a real revelation for me, and I still apply those concepts anywhere I can. It's also a great introduction to lower level concepts like pointers and memory management that is a lot more forgiving than C/C++.

[0] [https://www.sicpers.info/2015/06/protocol-oriented- programmi...](https://www.sicpers.info/2015/06/protocol-oriented-programming- in-objective-c/)

<comment><USER5> Obj-C will always be a dear example to me, because after people praised it so much on HN in contrast with C++, Java I expected it to be something at least a little bit special. When I actually had the chance to use it, I found a mediocre and pretty error-prone language. And then the cherry on top, Apple unceremoniously flushed it down the drain...

This taught me to take any programming language recommendations from HN with a _huge_ quantity of salt and also mostly ignore Kay-style OO purists.

<comment><USER16> I'm sad to see that you feel that way about the language; since I had exactly the opposite experience. Objective-C is a beautiful (if syntactically verbose) language, and I prefer it to C++ as an "object-oriented C". I'm actually curious what you tried doing with the language, because

> I found a mediocre and pretty error-prone language.

makes it seem like you didn't get a chance to dive down into the runtime and how the message-passing model works. FYI,

> Apple unceremoniously flushed it down the drain...

this is not true at all. Most of the code that Apple themselves writes is Objective-C.

<comment><USER30> why would you supoose that C++ is an object-oriented C ? the primary paradigm in C++ is generic programming, not OO.

<comment><USER31> Modern C++ kind of.

Gang of four book was written with Smalltalk and C++ examples.

Back in the 90's we had Mac OS PowerPlant, CSet++ on OS/2, OWL/VCL/MFC/ATL on Windows, Motif++ on UNIX, Telligent, and a myriad of ORM, distributed computing, image libraries and what not written in OOP C++.

Then came Java, took the best practices out from OOP C++, and two decades later 90's C++ is known as Java OOP and people act as if C++ OOP never happened.

</comment></comment></comment></comment></comment><comment><USER32> I feel the highest good I get out of playing with alternatives is that I hit a higher rate of "hits" on picking up on things previously invisible to me.

Playing with a different editor gives me ideas for different workflows and shortcuts which my main editor already supports. Playing with a different programming language shows me how powerful X is which I never touched in my main programming language.

The focus on learning and exploring an alternative is more powerful for me than mastering that alternative. I get the greatest benefit with a relatively smaller investment that way.

Maybe instead of learning more programming languages, just pick small bits of something to explore.

This might make for an interesting app (which won't make money.) Create a sort of "useless but interesting facts" type of app for programmers. Allow people to submit "cards" with something on it and then up/down vote on the card. The snippet could be a term, clever code, or anything bite size. The programming equivalent of "how to say __ck in Klingon. "

</comment><comment><USER33> It is really fun to learn new languages and you certainly should know a language in each of the major paradigms. But beyond that I think learning languages might have diminishing returns compared to tackling other "axes" of difference, e.g. learning new platforms, frameworks or environments.

The conceptual differences between a desktop GUI app, a command line app or a web app are much bigger than between say functionally similar web apps implemented in three different programming languages. A business app based on a relational database is fundamentally different from say a game, even if the language is the same.

<comment><USER34> This is true, though if you've only ever built a web stack in Rails with JS, then trying to build a stack in Haskell will be quite educational both back end (how you deal with side effects on Haskell and how purity leads to different code architecture) and on the front end (stream-based event driven UI instead of stateful spaghetti)

</comment></comment><comment><USER35> I think there's a bit of a threshold with language learning. When you know a handful (or just theo necessary ones for your job), there is probably a bit of tendency to be religious about your "stack". When you know a few more than you need, then you're driven to pick between them for any given thing. Then, you start picking languages you don't know and learning them to do some thing you need done, and so on.

I wrote some data automations recently for a client. Here are the languages and DSLs that ended up in the mix: cron, Makefile, bash, sed, regex, jq query, python, R, sql, nginx conf.

I think especially if you're a vertically scaling kind of gal, and you have a fondness for conciseness, parsimony and efficiency; you'll just end up attracted to many language solutions. I just think there is no better way to write less code or keep the semantics of your language more relevant to the task in hand.

<comment><USER36> "Here are the languages and DSLs that ended up in the mix: cron, Makefile, bash, sed, regex, jq query, python, R, sql, nginx conf"

And also anyone who could replace you will have to know all these languages. Nice approach to job security.

<comment><USER37> > cron, Makefile, bash, sed

For a programmer with a minimal amount of linux experience, it likely takes a week to catch up to what the codebase is doing with these.

> regex

There are good tools to destructure regex.

> python sql jq query

I consider those as "given" or "learnable good enough in a week"

> nginx conf

Don't know this.

Overall, "knowing all these languages" seems overblown in the choice of words for me. Java, Python, Prolog and Clojure? Hell yeah that would take quite a developer to replace! But the above? There is 1 proper general-purpose language in there, the rest are well-known tools with great examples online.

<comment><USER38> > There is 1 proper general-purpose language in there

That will depend on what the GP has done with SQL. Also, JQuery implies in Javascript. There are up to 3 general-purpose languages in there, one of which nearly any developer will know.

There should be plenty of people capable of taking the codebase, but it's not a trivial single language case. The upside is that good developers will be overrepresented when compared to the population that knows one of Python or Javascript.

<comment><USER37> > That will depend on what the GP has done with SQL.

I am sure they built their UI with SQL - as opposed for example simply doing some queries, or some joined procedures at best.

> Also, JQuery implies in Javascript.

With uttermost likelyhood, they did not only dynamic changes of some html- documents there, but also their backend and crypthography.

Enough with the snark... ("Language" is such a fuzzy term anyways. You could go as far as to label any interaction with a computer as one - there will always be a protocol according to which the interaction happens.)

> There should be plenty of people capable of taking the codebase, but it's > not a trivial single language case. The upside is that good developers will > be overrepresented when compared to the population that knows one of Python > or Javascript.

I still stand by my point. As far as the cost of polyglotism is concerned, that is a one-general-purpose-language-codebase and the rest being DSLs (apparently R too). There are other codebases where there are _really_ 2+ languages. I.e. some functional lang on top, some performance critical code hand-written in C, some logical programming language to do some constraint programming. Each of those 3 takes quite a lot experience.

<comment><USER31> You can actually build your UI with SQL, e.g PL/SQL.

<comment><USER37> I had a gut feeling you could ;) Interesting.

<comment><USER31> Check the history of Oracle Forms and APEX products.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> Frankly I've never understood the desire to be a polyglot. The time spent learning new syntax and a new standard library could have been spent learning libraries, algorithms, data structures, etc, so I don't think it's the most productive way to improve yourself as a programmer. I'm more interested in learning a new language because it lets me do something I couldn't do before.

<comment><USER40> It should be qualified that you should learn languages that are actually conceptually different. You could easily learn 20 languages that are practically identical as far as the actual concepts are concerned. The difference, to you as a programmer, between C and Python, is much smaller than between Haskell and either of those, or between Haskell and Idris.

Covering a larger volume of concepts is what should be the emphasis. That is definitely useful, maybe even more useful than just memorizing stock algorithms and data structures, especially if you engage with the mathematics behind the languages.

<comment><USER41> Agreed. For example, I spent a couple years using JavaScript as my main language at work then changed jobs and learned OCaml. If I need to use JavaScript again, I'll do it in a much different (IMO better) way than before I understood functional programming.

</comment></comment></comment><comment><USER42> But also learn one or two languages that fit your domain of work, really really well. I have seen too many programmers that justify their lack of skills in their main language they are supposed to know by bragging about their knowledge of some hipster language they rarely use. "my code is way too slow, but hey I know the syntax of dependent types in Agda..."

</comment><comment><USER43> I learned many languages for years and I received a poor return on time investment. Later, I started learning AWS in depth and studying for certs. I now know way more than I previously did about networking, envelope encryption, messaging, infrastructure as code, pipelines, caching, CDN's, networking protocols, load balancers, dns, and designing highly available and scalable systems. In summary, don't forgo learning about systems to chase a hot new language.

<comment><USER43> Learn shell, a scripting language like Python, and a systems language like Java, C, Rust, Go, etc. I think that's all you need to know as a backend or systems/DevOps Engineer.

<comment><USER44> "That's all you need to know" is very reductive. Never stop learning: add JS and functional languages such as Clojure, Scala, OCaml. You don't need to use a language every day for it to be useful. Learning a bit of Objective-C taught me a lot about naming variables. Smalltalk taught me about non-class-based OOP. Forth taught me low-level stack operations. Prolog, Io, BASIC, Erlang taught me a lot of things I use everyday, even if I don't use the languages themselves.

<comment><USER43> The more languages you learn, the more you realize they have more in common than not. At some point it's time to stop learning 20+ languages and start building stuff. I never said to stop learning, but be very careful what you spend your time learning. If you can be world class at Python alone, able to solve just about any problem with it, it's better than 100% knowing many languages. Knowing a language doesn't mean you know all of the standard libraries and third party libraries, much less solve challenging problems efficiently.

<comment><USER44> > The more languages you learn, the more you realize they have more in common > than not.

That happens if you learn many similar languages, which is a waste of time. You have to learn languages in different paradigms to learn new things and discover languages that have nothing in common.

> At some point it's time to stop learning 20+ languages and start building > stuff.

You can't learn a language without building stuff.

<comment><USER43> "You can't learn a language without building stuff" <—- the title of this post implies not only that you can, but should. I believe it's a waste to learn without hope of applying what's been learned. I'm learning TLA+ right now because I plan on using it to build more robust systems.

</comment></comment></comment></comment></comment></comment><comment><USER45> Based on my personal experience, I'd say there are good "buckets" of language- context pairs and you can pick one from each according to taste.

C/C++/Rust/Ada on bare metal or systems work for building abstraction _upwards_ from the hardware.

Clojure/Scheme/Common Lisp/Racket: A good dynamic language that's extremely composable, to build abstraction _downward_ from human logic.

ML/F#/Haskell: Powerful type systems that can layer abstraction on abstraction.

I have no experience of the following, but I imagine at least cog and erlang belong to similarly mind-expanding buckets.

<comment><USER46> I've drawn slightly different buckets for myself / experiences:

A high performance systems language: Asm/C/C++/Rust

A garbage collected language (JIT or compiled): Java/C#/Go

A scripting language: Python/Perl/Ruby/Lua

I think one from each bucket and you'll be able to excel anywhere.

</comment></comment><comment><USER47> Instead of learning more programming languages, learn more programming languages paradigms. If you know OOP, try functional programming; if you use dynamic types, try static types as well.

</comment><comment><USER48> What a terrible advice.

Does author has trouble with discipline?

You don't get anything by learning more and more programming languages. Programming languages are tools, be expert at 2 or 3 languages and that should be enough. Learn anything more to solve a specific problem.

You understand the crux of a language by being expert at it not by "me too" novice at it.

<comment><USER37> > You understand the crux of a language by being expert at it not by "me too" > novice at it.

Let's not pretend "knowing" a language well is akin to a 10-year-journey like some arcane samurai art.

If you

\- could build an interpreter for a minimal version of the language

\- can expand most syntactic sugar into more minimal constructs of the language

\- can reason about the language in usual PL terms (call-by-value/call-by- name, pure/not-pure, strictly/dynamically typed, ...)

\- know the 5-10 most important milestones in the history of that language

\- know the standard libraries so that you don't repeat code that is written there,

then what use is there to master a language further? If someone is experienced in language learning, the above can be accomplished for nearly any language in idk, a year? At that point of mastery, it makes much sense to learn another way of thinking instead of memorizing the official language specification verbatim.

A programmer with 3 completely different paradigms to think in will be much more effective than one with just one paradigm to think in. Time is _much_ better spent learning new paradigm than to gain that last bit of mastery.

</comment></comment><comment><USER49> I dislike this reasoning with passion. I tend to think the pleasure of learning a new programming language is rarely productive, except for newbies. I also think that our world would be a better place with fewer languages, we really have a lot of useless redundancy.

What we need, most of the time, is a good library tailored to solve a specific problem (string manipulation or complex maths could even be done in BASIC or asm with a powerful dedicated library)

Creating a new language is like forking a code base.

</comment><comment><USER50> I cannot agree more.

Because of knowing many language helps me a lot. Example, the import module system of Python is amazing. I'm not a fan of it at all but I really like how it were design. When I come to Ruby, I think Ruby need some love for its module.

Or JavaScript binding? Even if arrow function, it does has place you cannot avoid writing `.bind(this)` and you ask a question why we have to do this?

Then come pattern matching of Elixir/Erlang and it blows my mind and I just want to have that ability every where.

Then come Elm/Hashkell or any language that use `whitespace` instead of commma/parenthesis and I just love how natural these language read.

``` hello(username, country) ```

compare with

``` hello username country ```

The more I learn those languages, the more I appreciate the people who invented these and always thinking of different way to do thing.

</comment><comment><USER51> Word, especially the seemingly alien and/or ancient ones such as C, Forth, Lisp, Smalltalk, Haskell, APL etc.

And once you know enough different languages; design and build your own [0], even if no one will use them.

[0] [https://github.com/codr7/g-fu](https://github.com/codr7/g-fu)

</comment><comment><USER52> I'd add make sure you're learning languages in very different fields. IE, you won't get much out of learning Ruby after Python (some, but not much). But C or Haskell? Definitely. Also don't automatically be afraid of old languages. People still write a lot of new things in FORTRAN for instance (really!). And you can make better COBOL jokes if you read it's wikipedia page at least. Also, languages for describing hardware or FPGAs can be mind bending (Verilog or VHDL), and GPU languages are an excellent thing to have in your toolset whether it's just for making pretty pictures or doing machine learning. Also learn at least one assembler/bytecode, even if it's just a vm one. Whatever language you learn make sure it adds something to your toolset you couldn't do in another language.

The whole "10x programmer" thing probably is based on warped ideas for the most part, but I would guess that if you have a colleague that's ten times more productive than the rest of the team it's because they understand and can reason about parts of the stack and machine others can't

</comment><comment><USER53> I learned just some rudimentary Haskell. It tends to force you into a kind of bottom-up-test-as-you-go approach, which can work pretty well when you have no hidden state. The next time I wrote a shell script, I did it like that, and started writing much better shell scripts. It also surprised me how much easier that flow worked with the shell than with Python, even with Python's REPL. To do the equivalent thing in Python, testing functions nearly interactively, I had to do something like import module; reload module; from module import * over and over. At the shell prompt, I just kept hitting the up arrow to source the script I had just saved so I could try out the new function.

I wrote a trivial amount of Haskell, and it still changed how I write shell scripts, which I didn't expect at all.

</comment><comment><USER54> Given my limited memory abilities, I have doubts that I'll ever have a master level or even very strong grasp of more than 2-3 languages at any point in time. C, C++, python, Clojure, and Java are usually in that circular queue (both when I was in school and now in industry), but I find myself humbled every time I come back to one after 6+ months. I imagine that if I were to truly sink 10 years into a single environment, especially a nearly stagnant one like C, I'd carve out some deep pathways in my brain.

<comment><USER55> Did you find yourself writing Java differently after writing Clojure?

<comment><USER54> I find myself not writing Java now thankfully :)

My day job is embedded systems programming for aerospace, so it's almost entirely C/C++ with some tooling in Python.

</comment></comment></comment><comment><USER56> I just make everything like Smalltalk anyway so what's the point.

<comment><USER38> Well, it's not a problem, but if you ever want to "fix" it, just take some problem so solve by writing Smalltalk in Prolog.

<comment><USER4> See Logtalk: [https://logtalk.org/](https://logtalk.org/)

Works with many Prologs, too.

</comment></comment></comment><comment><USER57> I mostly agree with the article but for the reason that I did not see clearly reflected in it. I think knowledge of multiple languages (and technologies in general) is important not from a perspective of trying to be an expert in many things (which I think in general is counterproductive) but because it helps one to be better (and, arguably, much better) within their domain.

Few examples to illustrate my point:

\- Having some experience with strongly typed language makes Python developer a better and safer programmer. Compare with Python developer who is not even aware of the weak vs. strong typing issues and all the related gotchas. Well worth the investment.

\- Having seen the ease-of-use and power of some data structures (e.g. Python dicts) not natively available in C may suggest to C developer to look for libraries that implement something similar. 10 minutes playing with Python may end up saving countless man-days on a large C project.

\- Having even minimal experience with NOSQL DB may suggest to a DB admin that handling unstructured data on their Oracle cluster may not the best way to go.

\- Having seen FPGA latencies may suggest to a Java developer not to bother with the software that will be competing on latency.

The list is endless. I guess my main point is: even _approximately knowing_ what's out there helps you make much better decisions, where decisions may be anything from picking the right approach in your area of expertise, or picking up a different tool if you need to, or telling your boss to hire the right person, or even not starting on the task due to lack of right expertise.

</comment><comment><USER58> " _LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot._ […]

 _It's best, actually, to learn all five of Python, C /C++, Java, Perl, and LISP. Besides being the most important hacking languages, they represent very different approaches to programming, and each will educate you in valuable ways._

 _But be aware that you won 't reach the skill level of a hacker or even merely a programmer simply by accumulating languages — you need to learn how to think about programming problems in a general way, independent of any one language. To be a real hacker, you need to get to the point where you can learn a new language in days by relating what's in the manual to what you already know. This means you should learn several very different languages._"

— [http://www.catb.org/~esr/faqs/hacker- howto.html#skills1](http://www.catb.org/~esr/faqs/hacker-howto.html#skills1)

</comment><comment><USER59> I don't think it's worth studying many programming languages just for the sake of doing so. It's very rare that you get to choose the language to use on a project. If your goal is to be a great software engineer, your professional development time would likely be better spent working on domain knowledge and skills complementary to coding such as communication and leadership.

<comment><USER44> > I don't think it's worth studying many programming languages just for the > sake of doing so. It's very rare that you get to choose the language to use > on a project.

Studying languages help you way more than just providing you one more choice for the language of the next project. That's precisely what this blog post is about.

</comment></comment><comment><USER60> Learn Prolog - everything else is an extension.

"One [language] to rule them all."

<comment><USER55> The great thing about Prolog is that it's so radically different, without being intentionally difficult or obscure.

There's not that much value in learning yet another imperative object oriented language. If you want to put the field of programming into perspective, Prolog is even more alien than Haskell.

</comment></comment><comment><USER61> It may depend on the person. So don't take it a simple idea. Some will find languages that fit their brain so much more they'll be very happy. But only if they can make a living with it. Going back to Java <8 after Ocaml or Prolog is a chore. Plato's cave and all that.

That said it will probably enbroaden your mind tenfold.

</comment><comment><USER62> This. It's not about learning language A and B because you need it but because learning language B makes you a better developer in language A.

If you have thousands of hours doing language A, you need several thousand more to meaningfully improve your competence. It's basically just battle scars from experience at that point.

But if you spend just a few hundred hours on learning a completely different language, that gives you a completely different set of brain tools for working in your day to day language. It's not a luxury for a js programmed to be able to spend a hundred hours on trying rust or Haskell. It's a cheap way of becoming a better js programmer without having to spend a thousand hours more on js.

</comment><comment><USER63> Learning Clojure opened my eyes big time. Since I have done that I can pick up other languages much more easily than before. The only problem I got is with Java, I could never grasp the different concepts of OOP but I do not actually mind that.

</comment><comment><USER64> The author is describing the oft' maligned and perhaps misnamed Sapir-Whorf hypothesis -- or linguistic relativity if one prefers to eschew eponymous hypotheses.

That is language influences (weak version of the theory) or determines (strong) how you think. A perfectly cromulent proposition.

Ineluctably leads to arguments around the relative benefits of deep specialisation versus a T-shaped skill set, which in turn invites bureaucrats to make us all uncomfortable by injecting regrettable phrases like 'generalised specialist' into the vernacular.

</comment><comment> another-dave Would love to see a list of sample projects for each common language that plays to its strengths.

Often if trying to pick up a new language in my spare time, I can get to a stage of learning the syntax, but if I do it by following a "101" tutorial, I'll end up building another To-do app or whatever — it's very hard from an "unknown unknown" position at the start to find the path into idiomatic "X" that will show you the unique features and paradigms of the language.

<comment><USER65> I too would really enjoy some sort of "Build X in Y" type of resource for this.

</comment></comment><comment><USER66> Why should anyone learn the reference manual of a man-made tool they suspect they won't use, when there are yet unlearned reference manuals for tools they will use?

Should people also read the instruction manuals for appliances they have no intent of buying?

An applicance maker should do that, to find ideas to steal. That's about it.

When it comes to learning for the sake of learning, there are more wortwhile things in the world. Learn a foreign language, for instance.

</comment><comment><USER67> As a totally self-taught and advanced-beginner in bare bones R, Python, CSS, VBA, etc What can you recommend as the #1 thing I can do to improve my approach to programming? Not talking about syntax p,which I can easily reference when needed, but high-level paradigms and thought-patterns. Is there a favorite book, school of thought etc? Much appreciated. I know it's a broad question.

</comment><comment><USER68> As someone whose preferred language is Haskell, I've been told in a tech interview feedback that "I naturally and unconsciously avoid OO idioms as well as objects with internal state" even when I'm using an OO language. That's the extent I was influenced by Haskell's thinking. They didn't give me an offer.

</comment><comment><USER69> Enaml ([https://github.com/nucleic/enaml](https://github.com/nucleic/enaml)) is a declarative component-based GUI library for Python that more or less has the same driving philosophy and feel of React. There's even a (parallel project) Enaml-web.

</comment><comment><USER70> If you are entrepreneurial and already know one functional and one strongly typed OO language, the following will significantly improve your career more than learning another programming language. Learning to:

\- sell.

\- design.

\- write better.

\- tell a good story.

\- get along with people.

\- do proper SEO.

\- speak another natural language.

\- model and query data.

\- understand ML/AI.

This is coming from somebody who though himself 10+ programming languages.

</comment><comment><USER71> Learn different _kinds_ of languages. Cross a paradigm, dip your toes in an exotic type system.

Learning Elixir has opened my OO-biased eyes to the new and interesting world of FP. Knowing the theory isn't enough, you have to code it to grok it!

</comment><comment><USER72> As someone in academia, I refuse to learn even the programming languages I do use

</comment><comment><USER73> How about: learn new programming paradigms, and be very picky about the actual languages representing those paradigms that you choose to learn. Life is short, and programming languages are a dime a dozen.

</comment><comment><USER74> I find this to be quite true. I love playing around with new languages for the insights they give me. You can sometimes use ideas across languages.

But the main reason I do it is because I think it's just good fun :)

</comment><comment><USER75> Nice write-up. I think the most valuable advice for a programmer, "Learn a new programming language every year", I read it somewhere in the book but don't remember which one :-)

</comment><comment><USER76> Learning new languages in-depth is an incredibly taxing thing, because there are whole jigsaw pieces of syntax you have to learn at once. But worth doing the right way if you have time.

</comment><comment><USER77> It's been said already, but a man's got to eat. Ain't nobody got time for this.

</comment><comment><USER78> JavaScript is one of the _must learn_ programming languages. Server side code, _client-side_ web app code, npm links it all together... Well it seems cliche' but also true...

<comment><USER79> It never should have escaped the browser. It's brought the suck to everything now...

<comment><USER80> It should have been replaced in the browser.

</comment></comment></comment><comment><USER81> I want my idea to lookup code from stack overflow

</comment><comment><USER82> the point is never to learn more, but to learn the essence. there's only one basic language must to be learned by every top-notched engineer is assembly. After that, it's just another layer of abstraction. The concept is just stack + pointer to memory on heap, period. Then, learn whatever language that you are currently need to use. Life is short, don't waste learning something that doesn't matters.

</comment><comment><USER83> Choose the right tool for the job!

</comment><comment><USER84> Off topic, but if you're going to justify body text, at least turn on hyphenation.

</comment><comment><USER85> Learn Prolog.

<comment><USER86> Or Erlang, which is historically Prolog. They still share some similarities.

</comment></comment><comment><USER87> I'm getting tired of this. Yes I see the benefit of knowing multiple languages but let's look at the other side of that coin. There's the dev that is familiar with a dozen languages and writes terrible code in all of them.

When exactly are we supposed to be learning all these languages? Nights and weekends that effectively has you working 24/7? Or more likely some developer that has a personal relationship with the CEO and can do no wrong reads a blog post on language X and catches the fever. Well, he needs some practice and he's not working nights and weekends so now we are rewriting things or working in a mixed environment. He knows just a smidge more than the rest of the team so he's in charge but can't be seen as anything less than an expert so they pretend they are. He leans on dogma and best practices as he bullies the team as they screw things up left and right.

Anyone who is stupid enough to say that we should have stayed with what they had been using will be labeled as not a team player and blamed for the failures.

Those failures will be used as proof that our hero is as amazing as he says he is as he becomes a 10x programmer by kneecapping the rest of the team and valiantly struggles to pull and incompetent team forward.

Next thing that happens is the good developers leave and the rest are forced out or fired assuring our hero developer a fresh crop of devs who don't know the history of the project cementing the myth that our developer is a genius in our new language.

<comment><USER88> >When exactly are we supposed to be learning all these languages?

Some argue that as a professional, you should be spending time outside of work learning to improve your career. You can't expect your employer to give you time to learn.

I find it can be difficult though, especially when you want to spend your time outside of work on other things like family and hobbies.

<comment><USER87> I didn't say you shouldn't spend personal time on those things but you should expect to be compensated one way or another for it. It's interesting how people in IT separate their skills from their compensation. If my lawyer or doctor is working weekends I guarantee one way or another they are making damn sure they're getting compensated for it.

<comment><USER89> Most states require between 20 and 50 hours of continuing education for MDs per year. ([https://www.boardvitals.com/blog/cme-requirements-by- state/](https://www.boardvitals.com/blog/cme-requirements-by-state/))

Most states seem to require between 8 and 15 hours of CLE per year. ([https://www.lawline.com/cle-requirements](https://www.lawline.com/cle- requirements))

You'll find that with most actual "professions".</comment></comment></comment></comment>


The Rise and Fall of the 'Wilhelm Scream' - <AUTHOR> http://priceonomics.com/the-wilhelm-scream-cinemas-most-overused-sound/ <comment><USER2> Such a distracting sound effect for me. Pulls me right out of the movie and ruins the immersion every time I hear it. I wish they would stop with this "inside joke" that everyone knows about. Certainly I am not the only one annoyed by this sound.

There's a couple others that grate on me too, but I don't know their names. There's this other crazy sounding scream, a really long extended one. Then there's this "crowd gasping" sound effect I've heard all my life (you can hear it in the airport scene in Unbreakable for example). Then there is this particular cooing, laughing baby sound effect that drives me nuts. Whoever that baby was it must be in it's 60s by now.

</comment><comment><USER3> I don't consider myself to be a film buff, but this is probably the 4th time I've read an article on this scream, so I think it is becoming part of pop culture, more than an inside joke. That being the case, the decline is probably appropriate.

</comment><comment><USER4> I've never actually noticed the Whilhelm Scream during a movie. I know it's common but it just doesn't register while I'm watching.

However there's one sound effect that always stands out.

The cube fire sound from the Doom 2 final boss.

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

Has anyone else noticed it? Is it a stock effect? I know I've heard it in a few movies and TV shows.

<comment><USER5> I've never heard the cube fire sound, but I hope to now that you've mentioned it! There's another scream sound that is similar to the wilhelm scream, but not quite it, that I hear a lot.

The other one if the tesla coil from red alert. Holy crap I hear that one all the time. Kind of, but not quite, like this: [https://www.youtube.com/watch?v=dOpBPXLsNrs](https://www.youtube.com/watch?v=dOpBPXLsNrs)

<comment><USER4> I actually found one from memory and verified it on netflix:

X-Files Season 05 Episode 11 - Kill Switch (14:20) (when the laser blows up the shipping container)

I'm pretty sure they also used it in "The Phantom (1996 film)" when a rocket launcher blows up a building.

</comment></comment></comment><comment><USER6> I don't care much for the Wilhelm Scream. It's a joke of the sound engineers and I grant them their fun. A lot more annoying is this ubiquitous "Blarrrrrrrrgh"-Sound. And of course that every trailer uses music from Two Steps From Hell.

<comment><USER2> Yeah, I think I know what you mean by the "blarrrrgh"... A long, unnatural scream used when someone is falling off a building or cliff, or maybe on fire.

</comment></comment><comment><USER7> It's also used in many games, including Warcraft.

[http://www.giantbomb.com/wilhelm- scream/3015-56/games/](http://www.giantbomb.com/wilhelm-scream/3015-56/games/)

</comment><comment><USER8> I don't consider myself a film buff so maybe that's why it doesn't bother me but I love finding the Wilhelm scream. I hope it never goes away.</comment>


Elon Musk Can't Help Himself - <AUTHOR> https://www.bloomberg.com/opinion/articles/2019-02-20/elon-musk-can-t-help-himself <comment><USER2> I personally feel that a lot of his mistakes on Twitter is due to inadequate sleep and massive mental pressure.</comment>


I Spent a Day in the Feeding Frenzy of N95 Mask Sellers and Buyers - <AUTHOR> https://www.forbes.com/sites/daviddisalvo/2020/03/30/i-spent-a-day-in-the-coronavirus-driven-feeding-frenzy-of-n95-mask-sellers-and-buyers-and-this-is-what-i-learned/ <comment><USER2> Do you want the government to come in and seize your products?

Because this is how you get that to happen.

(And yesterday, it started to look like we were going down that path, slowly -- with talk of the Defense Production Act)</comment>


The Nvidia  GeForce GTX 980 Review: Maxwell Mark 2 - <AUTHOR> http://www.anandtech.com/show/8526/nvidia-geforce-gtx-980-review

<comment><AUTHOR> Posted this mostly because it's pretty impressive how nVidia has improved efficiency so much without a die shrink.

I'm hoping for some big leaps when 20nm (or lower) becomes a reality for GPU vendors.</comment>


Show HN: My weekend project for the Boston Globe - Curating Facebook Pages - <AUTHOR>

The is my first "Show HN" ever so it's real exciting to announce this one! I participated in Beta.Boston.com's Hackathon this past weekend, so my team and I (most of whom had not known each other prior to the weekend) developed Urbanite Boston - a curator/filter for information on Facebook pages relating to art and culture. It's a pretty simple application and it's far from complete, but the fact that we were able to index and curate over 300 Facebook pages (and develop a relatively slick interface) in a weekend was remarkable. Would love to hear your comments and thoughts. Again, it's only indexing Boston-centric venues/events/groups, as that was the aim of the weekend, but just wanted to show it off! (Clickable will be available in the comments). <comment><AUTHOR> Clickable: <http://www.urbaniteboston.com/></comment>


Markdown for your iOS apps (an NSAttributedString Parser) - <AUTHOR> https://github.com/jverkoey/NSAttributedStringMarkdownParser

<comment><USER2> Awesome. I was looking for something like this not too long ago, and I was surprised it didn't seem to exist.</comment>


Hillsborough sues to declare Flintstone House a 'public nuisance' - <AUTHOR> https://www.mercurynews.com/2019/03/16/highly-visible-eyesore-hillsborough-sues-to-declare-flintstone-house-a-public-nuisance/ <comment><USER2> I always like seeing this house when I drive the 280. It's one of those landmarks I recognize as a signal I'm getting close to home.

The owners should start a Kickstarter for a legal defense fund or something. Call it "Keep Hillsborough Weird!" The owners are likely rich already if they own a home in that area, but I don't like the idea of a rich city strong arming a homeowner to change their house to something more "normal" if there's no real safety issues. Live and let live.

The weird homes and cars are always fun to look at and give a city character. Like that car in Pacifica with all the squirrel statues glued all over it: [http://www.reallyweirdstuff.com/squirlywhirlyartcar.htm](http://www.reallyweirdstuff.com/squirlywhirlyartcar.htm)

<comment><USER3> You write "if there's no real safety issues". The article says there have indeed _been_ safety issues.

> Some of those improvements created life-safety hazards, including a > staircase without a handrail, that required immediate correction, he argued > in the court filing.

Plus,

> The town issued stop work orders, but Fang continued to make improvements > without the requisite permits, ... due to their height, some of the > prehistoric metal animals qualified as "unenclosed structures" and required > planning approval and a building permit.

<comment><USER4> My God, a staircase without a handrail? What's next, riding a bicycle without a helmet? Better bulldoze the whole complex.

<comment><USER3> Just because the homeowner is rich and has a notable and (to many) beloved structure doesn't mean that the owner is exempt from code enforcement.

The court document is 19CIV01442 , available from [https://odyportal- ext.sanmateocourt.org/Portal-External/Docu...](https://odyportal- ext.sanmateocourt.org/Portal- External/DocumentViewer/Embedded/vI5AkbEndBN7vAadKfurXGwfZ92AEOzPk_O5jHQtl_00bNPym2MiYsIBrHiKN59htpcKRIIRSVKqa5XeZdIe1v6E_qVnOLdHuDRaiFZOHRs1?p=0) . One claim is:

> The Landscaping Improvements and Other Improvements required various > approvals from Hillsborough, including planning review and building permits. > Mrs. Fang installed all of the improvements without planning approvals and > without building permits, except for a very limited permit for a low wall in > the front of the property.

If you live in a place which requires planning review, then you need to submit your changes to planning review. Yes, your neighbors might fight it. But this is one of those cases where it _isn 't_ easier to ask for forgiveness than to ask for permission.

At the very least, do your best to get the planning review and _if that fails_ then go ahead and make the changes. It could well be that 80% of the neighbors want the change, but violating the law makes it easy for the other 20% to object and force the changes to be undone.

Another claim is:

> the failure to apply for building and encroachment permits for the deck, > retaining wall, stairs, driveway extension, driveway gate and columns, and > parking strip (the "Other Improvements") did not allow Town staff to > determine their structural integrity, to ensure that safety features are in > place; or to achieve compliance with applicable standards. As a result, > potentially dangerous conditions exist on ghe deck and parking areas and > other improvements may not satisfy Code requirements.

That is, the staircase without a handrail is an obvious code violation. _We do not know_ how many other violations exist.

If you live in a place with required building inspections then you have to have your buildings be inspected.

<comment><USER4> The thing is, none of the neighbors actually care about the staircase with no handrail. They just want what they consider to be an eyesore to go away, and they're using code/law as a tool to get that.

It may well be that the owner has some real safety issues, etc, and I think it's great to fix those. But it's a dick move to use those as leverage to get rid of an "ugly" house.

<comment><USER3> But that response is entirely predictable, which is why ignoring building codes in order to bypass the neighbors' preferences is the wrong way to start.

</comment></comment></comment></comment></comment></comment><comment><USER5> I know the daughter of the architect. The few times she's posted about neighborhood drama related to this house on Facebook, I'm always very impressed by how many people come out that both know and have fond memories of this house.

</comment><comment><USER6> Doesn't really seem ugly to me. Seems like a fun addition to a space.

<comment><USER7> I do think it's pretty ugly, but that ain't a valid reason to get rid of it IMO. If your property values (the only thing these stuck up NIMBY types care about) go down because God forbid there's an ugly house nearby, then said value was probably inflated to begin with.

</comment></comment><comment><USER8> I see that mercurynews uses a anti ad blocker. Therefore; I will not patronize the news service.</comment>


In Praise of Slowness - <AUTHOR> https://lareviewofbooks.org/?p=238271&post_type=article&preview=1&_ppp=84bd28553a <comment><USER2> Funny, all this academic consideration of "slowness" and I'm reminded of an adage the Marines use:

Slow is smooth, smooth is fast.

<comment><USER3> I've always heard that adage in reference to performance/race driving or playing a musical instrument, never the military. Makes sense that it has wide ranging application though.

<comment><USER4> "Slow" may not be the best word here. I think "deliberate" or "controlled" would be better.

<comment><USER5> That word doesn't oppose "fast" though...

<comment><USER4> It shouldn't. When you are good at something you are fast but you are in control. You can't get quick lap times in a race car going slow.

<comment><USER6> It should. The reframing the context of what "slow" means is part of what makes you consider the adage on a level deeper than the surface, looking for a way to resolve the apparent paradox.

</comment></comment></comment></comment></comment></comment><comment><USER7> Reminds me of Kundera's book, [https://en.wikipedia.org/wiki/Slowness_(novel)](https://en.wikipedia.org/wiki/Slowness_\(novel\))

</comment><comment><USER8> Lol, reminds me of the time I had 2 hours to see the Hermitage, I ran through it.</comment>


Ask HN: What sort of SaaS related content do you read? - <AUTHOR> hey guys I'm brainstorming ideas for what to write for my upcoming series of blog/podcast posts on starting and launching a bootstrapped SaaS project.
Is there a go-to website/blog/content that you turn to for your SaaS project?
My goal is to deliver quality content surrounding any topic you are interested in regarding SaaS. <comment><USER2> I don't follow many blogs, but a service super related to SaaS businesses is ChartMogul ([https://chartmogul.com/](https://chartmogul.com/)). We were ([http://feeder.co](http://feeder.co)) completely blind before them. It's amazing how much you don't know about your own subscriber base. They do really good content marketing as well.

</comment><comment><USER3> A few great resources for SaaS founders (particularly those targeting enterprise buyers): [http://www.saastr.com](http://www.saastr.com) [https://hitenism.com](https://hitenism.com) [http://www.enterprisesales.nyc](http://www.enterprisesales.nyc) [http://www.heavybit.com/library](http://www.heavybit.com/library) [https://www.enterpriseready.io](https://www.enterpriseready.io)

<comment><AUTHOR> I wish I knew about these enterprise sales 3 years ago when I was actively pursuing big brands naively. Having said that I highly doubt an individual bootstrapping their SaaS can even get a foot in the door with high value enterprise accounts regardless of how great you are (I'd love to be proven wrong here). As a Sales Engineer I can see how much of a team effort enterprise sales is and how resource intensive it is (consuming marketing, biz dev, product, c-suites).

What can I possibly write or talk about content that's unique that's still useful to the little guys without an enterprise sales team?

Regardless, those blogs you listed are real gems. Can't wait to clear out my weekend to dive into those.

Cheers!</comment></comment>


Design Is About Intent (2014) - <AUTHOR> https://rampantinnovation.com/2014/05/13/design-is-about-intent/ <comment><USER2> From the article:

"Does this mean good design is assertive, ultimately subjective, even restrictive? Absolutely. As Marco Arment put it,

"Apple's products are opinionated. They say, 'We know what's best for you. Here it is. Oh, that thing you want to do? We won't let you do that because it would suck.'""

Those two paragraphs nicely encapsulate the largest portion of what angers me so much about UX design these days.</comment>


Warning Signs: Is It Time to Leave Your Startup? - <AUTHOR> https://www.jobstart.co/guides/warning-signs-is-it-time-to-leave-your-startup <comment><USER2> Echoing a lot of the other sentiment here, I think a lot of these points are good, but some are pretty broad statements that apply to a lot of early stage tech. The paid acquisition one stands out in my mind - early stage SaaS or social gaming apps can successfully POUR money into paid acquisition for a long time and be successful.

Same can be said for the 'is the product of high quality' line. I don't think the first four iterations of my last product were of particularly high quality, but we were shipping things and it worked just enough to make users happy.

The one that stands out the most to me is the 'Would you be afraid to hire your smartest friends.' This is IMO the end-all gut check. If you wouldn't try to sell your best friend on leaving whatever they're doing to come join you, you don't believe in the company. If you don't believe in the company, find another one. There's plenty of work in SV.

<comment><USER3> +1 for "Would you be afraid to hire your smartest friends".

It's also worth considering whether you would help find your replacement. If not wanting to invite your friends is a bad sign, what does it say if you wouldn't tell people you don't even know to work for the company?

<comment><AUTHOR> I mean if you're not willing to find your replacement, I think the answer is pretty obvious...

<comment><USER3> Maybe. There are other reasons you might not want to help find your replacement. Maybe you are more junior than the company needs and you don't feel comfortable interviewing someone more senior than yourself. Or maybe you've never interviewed anyone before, and don't feel comfortable for that reason.

Very few things are obvious, when you think about them.

</comment></comment></comment></comment><comment><USER4> [http://c2.com/cgi/wiki?WarningSignsOfCorporateDoom](http://c2.com/cgi/wiki?WarningSignsOfCorporateDoom)

I recommend this list, which includes this important warning sign:

        Toilet paper quality suddenly drops.

This is surprisingly common. The obvious conclusion is that if someone is actually bothering to take the time to cut corners on such an insignificant expense, they probably cannot afford the larger expense of your next paycheck.

</comment><comment><USER5> This is a very comprehensive list, thanks for putting it together. However, a lot of these strike me as things that an engineer normally wouldn't have access to (unit economics, etc). What would be your recommendation to folks who don't have deep insight into the business?

<comment><USER3> I've never been on the other side, but as an employee it's a red flag if the company is too secretive about this stuff. One of the main reasons I work at a startup is that I don't want to deal with red tape. If you have a question about how the business operates, you should ask the person that can give you the best answer. They should give you a straightforward answer or a legitimate reason why they can't.

</comment></comment><comment><USER6> Interesting coming from a job hunting site, sort of a "hey look over there, MUCH greener grass!" :-) But they do a good job I think. There are lots of reasons you might start to wonder if your startup is more dead than alive. That said, it is always solid advice that if you hate going to work you should look for a new job. When ever someone who works for me asks "Should I be looking for a new job?" my answer is always "Of course you should be." Not because I want that person to leave, but because what we want out of job changes and by looking around you can understand what you like and don't like about your job. And if you talk to me about what you don't like, we can maybe fix that.

<comment><USER7> Truth. We aim to be more career-oriented and timing friendly. :]

</comment></comment><comment><USER8> Excellent read! What if the startup has a lot of these warning signs, but the team I work with is top-notch, absolutely killer folks?

Would you suggest slugging it out till we figure out our own startup idea? Should I stay if I believe in the team, but not the management?

<comment><USER7> What do the other people on the team think?

Team is everything, at the end of the day. Sounds like you're thinking about doing your own startup with the team anyways and are just tired of management. In my experience, this is usually a big warning flag but doesn't mean the company is dead in any way. A good team can push forward!

</comment></comment><comment><USER9> I'm unsure about a couple of these points but think the added perspectives of different people is pretty unique and useful. How did you organize software engineers?

<comment><USER7> We run an expert program where people help others by chatting about their careers. :)

[https://jobstart.co/experts](https://jobstart.co/experts)</comment></comment>