Notes for new Make users - <AUTHOR> http://gromnitsky.users.sourceforge.net/articles/notes-for-new-make-users/ <comment><USER2> > or you use special pattern rules

I used make for years before I understood pattern rules, even though they're pretty simple. I kept trying to use foreach loops all over the place. If you're using foreach loops, check whether a pattern rule can do the job.

> The popular clamour is that the autovars are too short & confusing.

I finally realized, after years of using make and then learning pattern rules, that the three autovars listed here are visual mnemonics. $@ looks like a target, a ring with a bullseye. $< is pointing left, so it's the first prereq. $^ is like a horizontal bracket that groups all prereqs.

<comment><USER3> > I finally realized, after years of using make and then learning pattern > rules, that the three autovars listed here are visual mnemonics. $@ looks > like a target, a ring with a bullseye. $< is pointing left, so it's the > first prereq. $^ is like a horizontal bracket that groups all prereqs.

I've been illuminated, sincerely! Meanwhile, bmake has some more memorable synonyms for them like ".TARGET" and ".ALLSRC".

<comment><USER4> It's a shame that there is no name for .ALLSRC shared between bmake and gmake. An alternative is to use a variable, but then you lose VPATH compatibility:

        foo: foo.o bar.o
            $(LD) foo.o bar.o ...

My other gripe with bmake is that this rule is needed as there is no implicit rule for linking multiple object files, or so it seems.

</comment></comment></comment><comment><USER5> What I've always loved about Make and related tools is how directly they expose their fundamental concept in building artefacts: the DAG. I don't do that much JS, but I've not found this kind of clarity in any of the JS frontend build tools I've used.

Honest question for the webpack power-users here.

What are some important webpack features that you lose by using a Makefile like this? Because it seems like pretty much every part of a regular webpack buildchain has a command-line equivalent that you could potentially use in a Makefile.

<comment><USER6> I don't know enough about make to know if this is correct, but the post last week on using make for js started of by saying "If you are writing a frontend app and you need code bundling you should absolutely use Webpack" which, aren't the majority of people using webpack writing frontend apps and need bundling?

The other issue is that essentially no one uses make in frontend development. So you go and convert to make from something that was working fine and is the standard in that part of the industry and what's the pay off? Now no one in your team or who you hire knows how to change the build chain? Great.

<comment><USER2> > aren't the majority of people using webpack writing frontend apps and need > bundling?

Webpack is pretty new. Lots and lots of websites were developed before webpack existed, and some of them still use make for builds. The majority of new web projects are probably webpack now.

> The other issue is that essentially no one uses make in frontend > development.

I don't know how many people do or don't use make, but I've had two web jobs that did. One was my own company and I wrote the makefiles, so that's not exactly fair. :P The other was an established web app. In both cases, the biggest reason for the makefile was to integrate the Google Closure Compiler into the build. Last time I checked, Webpack didn't have support for the Closure compiler. I am aware that the Closure compiler isn't exactly the most popular js minification tool today, and isn't generally necessary with webpack.

> So you go and convert to make from something that was working fine and is > the standard in that part of the industry and what's the pay off?

I agree with you generally, but I'm old enough that this also makes me chuckle a little. make was working fine and was the industry standard for decades before webpack or npm.

Just before Webpack there was Gulp, and Gulp is essentially a re-invention of unix pipes and lots of the unix tools. Build systems made with gulpfiles have to bend over backwards to get right make's basic concepts like dependency evaluation, building a target only once, and skipping already built targets.

<comment><USER6> There's a reasonable chance I'm older than you for what it's worth.

</comment></comment></comment></comment><comment><USER7> Pretty spot on. I use a pretty similar dependency system for all of my C and C++ projects.

        FLAGS += -MMD
        CFLAGS += $(FLAGS)
        CXXFLAGS += $(FLAGS)

        OBJECTS += $(patsubst %, build/%.o, $(SOURCES))
        DEPS = $(patsubst %, build/%.d, $(SOURCES))

        $(TARGET): $(OBJECTS)
        	$(CXX) -o $@ $^ $(LDFLAGS)

        -include $(DEPS)

        build/%.c.o: %.c
        	@mkdir -p $(@D)
        	$(CC) $(CFLAGS) -c -o $@ $<

        build/%.cpp.o: %.cpp
        	@mkdir -p $(@D)
        	$(CXX) $(CXXFLAGS) -c -o $@ $<

<comment><USER8> This looks very similar to the Makefile I'm using except that beside -MMD I also have -MP flag. I created this Makefile a couple years back and I'm reusing it for every new project, but I cannot recall really why I needed to add -MP.

<comment><USER7> [https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Preprocessor- Op...](https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Preprocessor-Options.html) Looks useful, I'll add it to my configs.

<comment><USER8> Yes, that's it. Removing a .h file from your project would trigger errors without that switch.

I looked at clang manual when I searched for it, but unlike GCC it does not explain it.

</comment></comment></comment></comment><comment><USER9> The thing people miss a lot about makefile, apart from what has already been mentioned is the fact you can have "local" version of the "global" variables, per rules.

It's very very powerfull, clear to read, and simplify all these if/else/end no end...

For example:

      CFLAGS = -std=gnu99 -Werror

      release/%.elf: CFLAGS += -DRELEASE

      debug/%.elf: CFLAGS += -DDEBUG

Basically you can add your own context flags and variables for each individual targets, and they are 'inherited' by any of their /sub/ targets...

Oh, people also need to learn about VPATH or course [0]!

[0]: [https://www.gnu.org/software/make/manual/html_node/General-S...](https://www.gnu.org/software/make/manual/html_node/General- Search.html)

<comment><AUTHOR> yes, target-specific vars are neat.

I've thought about adding a couple of sentences about vpath (in a cautious style akin to "think twice before using it" [0]), but ultimately decided that the topic is too obscure; besides I practically never use vpath myself.

[0] [http://make.mad-scientist.net/how-not-to-use-vpath/](http://make.mad- scientist.net/how-not-to-use-vpath/)

</comment></comment><comment><USER10> I use snakemake[0] as a replacement for make. The debugging tools in snakemake are really good - it can output the DAG of your workflow as a dotfile, and you can add breakpoints and use pdb to debug your workflow. It also integrates really nicely with conda, so you can have different environments for different rules.

The killer feature of snakemake for me is that it can run a workflow on a single core or as many as you give it, or in the case of a cluster it can actually submit jobs to a queue and wait for them to finish before submitting more.

The tradeoff is that you need to install it (conda install -c bioconda snakemake), and that it can be very slow if you have thousands of target files. But for most workflows it's the right tool for me.

[0] [http://snakemake.readthedocs.io/en/stable/](http://snakemake.readthedocs.io/en/stable/)

<comment><USER11> _> The killer feature of snakemake for me is that it can run a workflow on a single core or as many as you give it, or in the case of a cluster it can actually submit jobs to a queue and wait for them to finish before submitting more._

Other than your cluster example isn't this the same as passing -j to make to run jobs in parallel?

<comment><USER12> Yeah, -j just about does it, though with Snakemake you can also specify other resources (memory, I/o, etc) for each task, and it will keep all of them under quota. So if you tell snakemake that task A takes six cores, but B-K take only one each, it will solve the knapsack problem to come up with some kind of optimal order for them, and on your 8-core machine you could have A, B, and C running, or B-K.

For a while, I muddled through with Make and a custom cluster job-submitter script, but the real Snakemake killer feature for me was multiple, independent wildcards. So I can, in one rule, have dir/{databasename}/{query}.tsv and rapidly hit multiple databases at once. If you are very clever (and rule one of Make is don't be clever), you can have a GNUMake wildcard get parsed into multiple wildcards with the wimpy pattern substitution rules, but this is not a fun way to relax.

<comment><USER13> Oh, cool, so I can finally run make -j target without worrying about the LMK in Linux killing my window manager!

</comment></comment></comment></comment><comment><USER14> The point about the manual is a good one. It is well done.

When I made extensive use of Make for my graduate thesis, I bought the book and read the majority of the text.

The cover illustration brings me joy every time I see or think about it.

<comment><USER15> I'd suggest to read the POSIX man page first: [http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ma...](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html)

POSIX make is rather limited but if you start to rely on GNU make features, you'll end up bound to a single implementation.

<comment><USER16> >you'll end up bound to a single implementation.

Which will be just fine for something like 99% of us.

<comment><USER17> POSIX make has the virtue of simplicity. GNU make : POSIX make :: C++ : C. It's even worse than that because the way GNU make extends the syntax is completely at odds with core make syntax. It's why to write a looping construct in GNU make you need the contortion of using eval, whereas a loop in the BSD family of makes is much more simple and concise.

I'm not advocating to use a BSD make, nor saying _not_ to use GNU make. But appreciating GNU make's points of departure from POSIX make helps keep your makefiles simple and to the point. Which is important because another virtue of make generally (GNU make included) is that it'll likely still be around long after all these alternatives have been long forgotten. But time is never kind to complexity.

</comment></comment></comment></comment><comment><USER18> This is so excellent. I was smiling as I read it. Thank you.

My personal favourite "watcher" implementation is this:

        while true; do make; sleep 0.5; done

<comment><USER19> I don't understand: why not the classic `watch make` (watch defaults to 2 seconds)?

<comment><USER20> Watch is Linux-only.

<comment><USER21> I see it in Cygwin, in the procps-ng package, and available on OSX through Brew. Doesn't seem Linux-only.

<comment><USER20> My bad. I figured it needs /proc since it's part of the procps package.

<comment><USER22> Why would it?

You can literally write it as a shell script

      #!/bin/bash

      N=2

      while true; do
              clear
              echo Every $N\s: $*
              $*
              sleep $N
      done

<comment><USER20> I though maybe it had some flag that makes it display process information or something. Anything that would justify it being part of procps really.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> In all these discussions about make, everyone argues about using it for everything. Personally, I don't know another tool that makes it straight forward to glue together all kinds of different build tools (for example webpack for frontend and maven/sbt for the backend).

Even if you don't directly use make, it makes for great, verifiable documentation.

</comment><comment><USER24> > Most important concept #1: DAG

Yes! Thank you! This needs to be banged into peoples heads when talking about build systems. Every time you add an edge, you're automating an otherwise manual task. Very important realization.

</comment><comment><USER25> I've been working on a small custom build system (of the "re-editable" kind) for my own software project, and have been working on a little writeup. It's not finished, and I think there was something in the implementation that I was still unhappy about. But I'll take this opportunity to jump on the bandwagon. I think for larger project it is worth it to just make your own system, so here are my notes: [http://jstimpfle.de/blah/buildsystem.html](http://jstimpfle.de/blah/buildsystem.html)

</comment><comment><USER26> If you're feeling mischievous, Make has divers 'secret' vars & targets for you. For instance, you don't have to 'struggle' w/ the ancient bash, for it's possible to program recipes in any language that supports evaluations straight from the command line.

In addition you can have different shell for each rule with the rule specific macros if you do desire:

.ONESHELL:

.SILENT:

.PHONY: rule1

rule1: SHELL := /usr/bin/python3

rule1:

         foo=bar

         print("python: {}".format(foo))

</comment><comment><USER27> Great article.

Also, author prepared a surprice for all coming to his blog from russian IP addresses. That was the first time I came across such thing.

<comment><USER28> Can you explain it for us?

<comment><USER29> The author has put an offensive banner ([https://imgur.com/a/84cuN](https://imgur.com/a/84cuN)) in front of his blog page for Russian IP addresses. I just wonder why there is no such thing in the article above

</comment></comment></comment><comment><USER30> Great guide. The variable portion was the first time it was explained succinctly and simply to me.

<comment><AUTHOR> thanks!

</comment></comment><comment><USER31> Wait. Did I read it wrong or didn't an article a few days back say that we _can_ use make with file names consisting of spaces, its just that we shouldn't? Although that article talked about using a non-breaking space as a hack.

<comment><USER32> Make doesn't handle filenames with spaces (ASCII 32) at all! I wrote the article ([http://boston.conman.org/2018/02/28.2](http://boston.conman.org/2018/02/28.2)) about using the non-breaking space (NBSP, Unicode 160) in filenames, and make (as well as nearly everything else I tried) accepted it just fine.

But popular consensus (from here and Lobsters) seemed to be "avoid any type of space at all cost and do not speak of it again!". Pity.

<comment><USER33> I think the main point of handling file names with character code 0x20 in them is for situations where you _don 't get to pick_ the file names.

I have a project in which I'm juggling a large amount of files imported from external sources, which need to be variably processed and used as-is and in either case must have their names preserved. I wanted to use Make to handle the dependency chaining, but munging file names when inducting them means that I have to unmunge them on every output. Suddenly you can't just zip or grep -H a selection of some of the files anymore; you have to do a whole dance of copy-and-unmunge-name, clean-up-the-temporary-directory, and so on and so on and.

If I could just assign my own names, I could just as well avoid spaces, if it were purely an aesthetic issue. But it really isn't. You don't often need "something that _displays as_ a space but you still get to decide its representation", you need "passing through _exactly the ASCII space_ without having to worry about it", or the interoperability concerns _still_ explode in your face one way or another (if they exist in the first place).

<comment><USER26> If I were to write a makefile for something where I can't restrict the filenames beforehand I'd probably just have a target for running `detox` and then at the very end possibly an another target that changes underscores to spaces and creates some dummy file as the real target.

<comment><USER33> But how does this address anything like the zip or grep cases I mentioned? File names go _everywhere_. You will have spurious nonbreaking spaces (or underscores, or whatever else) in outputs from here to /dev/null and back. Yes, it is theoretically possible to work around it, but it's hardly ergonomic for either the writer or the user of the Makefile.

</comment></comment></comment></comment></comment><comment><USER26> One thing I sometimes wish was possible in make is using the automatic variables in the dependency part of the rules. The one that I most often have desired to use is $(@D) so I could depend on a file with specific name in the same directory when the directory name isn't known beforehand. I got around this with some touch trickery but it would be just easier to read if those automatic variables were available at that point.

</comment><comment><USER26> >When in doubt, don't google until you read the official manual. It's a document of an astonishing quality. Go print the pdf.

This applies to most GNU software.

</comment><comment><USER34> The writing is so awful. "Some ppl will get overexcited & start..."? "2fold"? Are we teenagers texting each other?

<comment><AUTHOR> thanks for the feedback.

I've heard in the past about my "w/" and "&" misuse (apart from my pitiful grammar) but I haven't released it can put people off. I'm sorry.

<comment><USER34> Sorry for being so harsh. I was in a terrible mood, but that's no excuse.

<comment><AUTHOR> it's alright

besides, you're right, "ppl" and especially "2fold" were a bit too much :)

</comment></comment></comment></comment><comment><USER35> Is it possible to have make use file hashes instead of timestamps?

<comment><USER3> There is DJB's redo[1], which has some implementations. Also, one could probably modify make to use hashes. But personally I think that mtime is a nice compromise, as it's often a correct heuristic, and hashing files is not cheap, especially for big projects that'd have a performance penalty.

[1] [https://cr.yp.to/redo.html](https://cr.yp.to/redo.html)

</comment></comment><comment><USER36> The only reason I don't use it is because I use windows. While you can theoretically use it on windows, nobody does.

<comment><USER2> > While you can theoretically use it on windows, nobody does.

What do you use instead?

I think a lot of people use make on Windows. I've had several jobs with a Windows dev environment, and they've all used make. My current dev env is cmake on Windows, so I don't touch the makefiles, but it's still using make on Windows.

There aren't that many options for cross-platform projects. A lot of people use cygwin or the Windows Subsystem for Linux with make and/or cmake native.

I also go directly to make on either cygwin or unix for one-off builds all the time, in non-C/C++ projects. make is super handy for resizing images or running a batch of tests on a program generating graphs. Anything where you need to generate files that only update when another file is touched is a good job for make.

make -j is extra handy on windows for some situations since it's hard to get gnu parallel to run in cygwin and the parallel perf wasn't very good last time I checked.

<comment><USER37> Most Windows projects that I've seen in the open use CMake to create VS solutions which usually just work.

</comment></comment></comment><comment><USER38> The first point is "Don't try to be clever," and using Make in the JavaScript ecosystem defies exactly that to begin with.

<comment><USER39> No it doesn't. Makefiles define inputs, outputs and the commands that transform input to output. Make then compares the last modified timestamp of inputs with outputs on each run and reruns the commands for the targets that are out of date.

Make is in no way limited to C or C++ projects and there is absolutely nothing wrong in using Make for a JavaScript project.

The only thing that sucks a bit is maintaining the list of inputs and outputs if you have a lot of files.

Well, that and the fact that Makefiles are not generally portable between GNU and BSD Make so if you use both Linux and a BSD you need to install either gmake on BSD or bmake on Linux and then remember to invoke that rather than just make for your project. Of course you could have a bash function that will look and pick GNU make if there is a GNUmakefile in your directory and BSD make if there is a BSDmakefile, but maintaining such things is a hassle as well.

It always comes down to picking the right tool and sometimes Make will be it and sometimes it won't but whether the output is JavaScript or a PDF (e.g. from LaTeX documents) or JPEGs or whatever has very little to do with it.

<comment><USER38> > Make is in no way limited to C or C++ projects and there is absolutely > nothing wrong in using Make for a JavaScript project.

The fact that you have to acknowledge this proves how unorthodox it is, and ignores team concerns. So no, there is something wrong with using Make for a JavaScript project: people don't normally do it.

> It always comes down to picking the right tool

You're right, stick to the ones people actively use and don't pretend features exist in bubbles.

<comment><USER6> I can't believe you've been down-voted for these two posts. If you convert your js projects to make you are going to be the only person on your team who ever touches them again for no pay off.

<comment><USER38> I've generally found that criticism, even if a reasonable sentiment, on Hacker News trends downwards. It seems to be more favorable to support something or stay silent, than to give critical commentary. It could also just be my tone.

I'm sure my comments would be more popular if I ignored the realities of software development and only praised the novelties of it.

<comment><USER40> "there is something wrong with using xxx for a yyy: people don't normally do it" seems like a logical fallacy even without considering the details, which even more people are not interested in.

<comment><USER38> how is that a logical fallacy at all? do you know what a logical fallacy is? it's a measurable fact nowhere does make show up on the top of the list of build tools for this ecosystem during regularly published analytics for the industry

im astounded so many idiots have such high karma counts on hn, what a wonderful place to have discourse

<comment><USER40> If you're about _my_ karma, then it is not high as far as I care, nor am I too smart, as you noticed. Most of upvotes I got were stupid rants and complaints about modern ui and javascript with few points that I personally find important. I think we all differ in intelligency, understanding, style, etc, so my thought on karma is... it doesn't matter; what matters is how one reacts to others meaning, both structured or emotional.

I don't see why your comments have to be grey at all, if that helps, just pointed out where few may have 'misheard your tune'. But if it is unthoughtful, then it's their problem, not yours. They'll use make and suffer, isn't it fair?</comment></comment></comment></comment></comment></comment></comment></comment>


Krugman reviews Geither's book - <AUTHOR> http://www.nybooks.com/articles/archives/2014/jul/10/geithner-does-he-pass-test/?insrc=hpss

<comment><USER2> The man's name is Geithner.</comment>


Ask HN: What does your investment portfolio look like? - <AUTHOR> - What are the asset classes and their approximate percent allocation in different portfolios? No need to mention the amounts invested.<p>- What are the annualised returns of your portfolios?<p>- What are the emerging asset classes you're excited about and why?<p>- What Fintech products or services do you use for retail investing? <comment><USER2> 40% emerging markets stocks which I know very well and always follow them from quarter to quarter. 60% in cash.

I think a crisis will happen so I would rather keep my money so when it happens, I can buy some stuff.

<comment><USER3> How long have you been in cash? Are you at least putting your cash in a GIC or bonds or treasury bills so you get some relief?

Cash decreases in value by the inflation rate daily so it's not a wise investment.

The market looks fine right now.

<comment><USER2> I don't care about 2% a year, a bit more would cost me LIQUIDITY or would cost me more % if I need liquidity. Again, I care about liquidity. I currently make more in a month than that. I would only care about this if I would be already financially independent, with a few mlns on my bank.

Market doesn't look fine to me. Yield curve changed. Very likely that in 18 months there will be a crisis.

</comment></comment></comment><comment><USER4> In the US market, I am in the paranoid camp ... I have 80% cash right now. Waiting for a major drop, which is long over due.</comment>


Show HN: Browser extension that finds HN and Reddit threads for any link - <AUTHOR> https://github.com/viorelsfetea/commenter <comment><USER2> Nice work! I made a very similar extension a few years ago called Newsit (Hacker News and Reddit). I like your implementation though and the way it gets multiple results.

\- Chrome Extension Link - [https://chrome.google.com/webstore/detail/newsit- hacker-news...](https://chrome.google.com/webstore/detail/newsit-hacker-news- and-re/nngjdplpkehilhcinpccdbkjaknkkifl)

\- Source - [https://github.com/benwinding/newsit](https://github.com/benwinding/newsit)</comment>


Patents granted at highest rate ever at USPTO - <AUTHOR> http://www.patentlyo.com/patent/2010/05/patent-grants-continue-to-rise.html

<comment><USER2> Actually, I consider this to be a good thing. The situation right now is terrible but still livable. If it becomes even worse, it will have to be changed, or the technology economy will collapse.

<comment><USER3> Yep, I agree. This Reddit story pissed me off: <http://www.reddit.com/r/reddit.com/comments/c6e49>

Basically some guy was able to trademark "Power Hour" and is sending legal threats to hundreds of sites that use the drinking game.

<comment><USER4> Patents are completely separate from trademarks though.

</comment></comment></comment><comment><AUTHOR> In fact, it appears they may be granted at a rate exceeding submissions. (But, there is a publication & grant timelag, so it's not as clear as that.) See also:

* Article: [http://www.patentlyo.com/patent/2010/05/patent-grants-2010.h...](http://www.patentlyo.com/patent/2010/05/patent-grants-2010.html)

* Charts (top left): <http://news.priorsmart.com/>

<comment><USER5> Maybe that's an indicator that bad patents are being granted?

<comment><AUTHOR> Could be. My guess is mix of new examiner incentives plus economic crisis.</comment></comment></comment>


Ask HN: Dynamic data in a database - <AUTHOR>

I am trying to figure out whether or not I should make the switch from a standard database to something new and fancy like mongodb, but I am still unsure how my problem fits into either solution.
Essentially what I have is data that grows with time, so a column based database seems likely to cause headaches in the near future. I should also note that I receive all my data in a JSON format, so I was leaning towards a mongo solution given those facts. It seems pretty keen on storing data in that object based format.
I think my only concerns are how do you do match up data from one collection to another. Say for instance I wanted to organize my data in such a form so that I had an entry collection, a hash data collection and then a results collection. How would I associate those details with a given entry within the entry collection? Or would I just store it all together? <comment><USER2> Brandon,

I think you need to give us a bit more information about your data in order to get meaningful answers.

When you say "data grows with time", you mean the number and type of fields for an "entity" change right?

Mongo or any document db fits that purpose well. I am not sure I understand your question about matching things up? You can store all "related" objects together in one document, you can "link" objects together like done in Riak (or with a list of incoming and outgoing relations in the document) or you can use a graph DB (like Neo4j).

</comment><comment><USER3> You might also want to check out Redis. I use both MongoDB and Redis. I don't quite understand your requirements or data schema, though.</comment>


Pinterest's Perfect Response to Misinformation - <AUTHOR> https://www.getrevue.co/profile/caseynewton/issues/pinterest-s-perfect-response-to-misinformation-161790 <comment><USER2> I don't see this as "perfect". Far from it, in fact. The whole problem that Pinterest is trying to solve is a thing that they and other social networks have _created_ in the first place.

The problem, from what I can tell, comes from filter bubbles[0]. By following the yellow brick road of INCREASE USER RETENTION, we've seen greedy algorithms built that don't care _what_ content people view as long as they keep viewing it.

I would like to believe that if these filters were toned down or turned off, a wider source of topics would come in for a search, and maybe this more varied information diet would nip some of these problematic echo-chambers in the bud. Then again, maybe this is something that, once created, can't just disappear again...

\---

On a side-note, I'd like to remind everyone that Pinterest is a garbage site that lives off of hijacking search results, and them blackhole-ing results due to unwelcome content is a huge irony[1].

\---

[0]: [https://en.wikipedia.org/wiki/Filter_bubble](https://en.wikipedia.org/wiki/Filter_bubble)

[1]: look at all the angry reddit posts --> [https://www.google.com/search?q=pinterest+ruined+google+imag...](https://www.google.com/search?q=pinterest+ruined+google+image+search+site:www.reddit.com)</comment>


Towards Better Keyboards - loup-vaillant http://www.loup-vaillant.fr/articles/better-keyboards

<comment><AUTHOR> I don't have to 'twist' my fingers at all.

And since he hasn't actually -tried- the other layout, there's no evidence at all that it's better, just some 'logic'.

Don't get me wrong... I'd like to try it and see... Especially if it took it a step further and made it a split keyboard so my hands can line up properly, instead of twisting my wrists into position. Ohh, there's the twisting. And it exists on both keyboards.</comment>


Xkcd and Bill Gates on Polio Eradication - <AUTHOR> http://www.gatesnotes.com/Health/XKCD-Marks-the-Spot <comment><USER2> My oldest brother got polio at 5 years old and I was exposed to him when I was 2. But I got the vaccine shortly after (in 1955). I am so grateful for the vaccine. For the record my brother is still alive and has had numerous surgeries. Most recently both hips were replaced and they used that as an opportunity to add some length to his shorter leg. This has made a tremendous positive difference in his life.

Stay focused.... "We don't need no stinking app".

<comment><USER3> My father contracted polio as a child. His doctor told his parents that it was too advanced and that he would certainly die. That he survived was pure luck. I recently learned (from my mother) that the latent stress of the experience caused him to be unable to say the name of the disease during the first years that my parents knew each other. He would refer to it as "when he was sick," and couldn't say "when I had polio," until much later.

I'm grateful that we've made such progress in this area.

<comment><USER4> Thank you both for sharing those stories. I'm happy that you and your parents endured.

I sometimes see a person with a... specific way of walking on the streets of my city. Only recently a friend pointed out to me what disease caused that problem. I am grateful that my generation didn't have to experience it, to the point most people don't even know what the disease is and that it was a problem only so recently. People who helped this happen are true heroes of our times.

I was relieved to learn recently that we're 2/3 done with polio, only the last strain of the virus remaining. Here's to hoping it will be over soon, and then the next disease, and the next one after that!

<comment><USER2> Thanks

Many younger people have no idea what modern medicine does for us that was not available when I was young. I had Rubella (german measles) that almost killed me, mumps which I remember being very sick, and ChickenPox. We still have to fight the flu but I had the Asian flu when I was very young as well. Many people died that year, 1957. Estimates are about 70,000 in the USA. [http://www.britannica.com/event/Asian-flu- of-1957](http://www.britannica.com/event/Asian-flu-of-1957)

An interesting story about the German Measles. Our family physician at the time told my mother to expose me to my next door neighbor that had the measles because I would get it anyway. So I remember sitting with him for an afternoon. I don't remember anything else from the next 2 weeks. My mother apologized till the day she died for doing that to me.

"What doesn't kill you makes you stronger." Or at least that is the lie that I remind myself once in awhile.

</comment></comment></comment></comment><comment><USER5> It's not a case of just carrying on as we were.

Here are the pockets of Polio: [http://voices.nationalgeographic.com/files/2014/04/gitn_1204...](http://voices.nationalgeographic.com/files/2014/04/gitn_1204_polio.png)

Why?

1) Vaccinators can't access some regions of Afghanistan and Pakistan because of violent resistance to Western aid.

2) Western vaccines are resisted by Muslim Nigerians who fear Polio vaccines are a Western plot to sterilise Muslims.

3) Hajj is a great opportunity for the disease to spread between members of these regions.

[http://www.irinnews.org/report/48667/nigeria-muslim- suspicio...](http://www.irinnews.org/report/48667/nigeria-muslim-suspicion-of- polio-vaccine-lingers-on)

[http://news.nationalgeographic.com/2015/03/150303-polio- paki...](http://news.nationalgeographic.com/2015/03/150303-polio-pakistan- islamic-state-refugees-vaccination-health/)

Hearts and minds need to be won or brute force needs to be used, if decades of effort are going to pay off. Until it's eradicated in these regions, we're stuck vaccinating our children to avoid re-establishment of the disease.

<comment><USER6> 1) Vaccinators can't access some regions of California because of violent resistance to vaccination.

2) Western vaccines are resisted by hippie Californians who fear Measles vaccines are a Western pharmaceutical plot to spread autism.

3) Disneyland is a great opportunity for the disease to spread between members of these regions.

Let's see if Jenny McCarthy is forcefully vaccinated. Until then, it will be hard for me to take your "They aren't the same people as us, so let's use brute force, for _humanity_ " attitude seriously.

<comment><USER5> Yes, luckily for these people, they live in a region where Polio is uncommon.

Most of the world could stop vaccinating their children if they chose to. It'd be fine. Until the disease spreads to their population and people start to get infected.

One case of Polio could quite quickly cause California to become a Polio infected region, like Nigeria, Afghanistan and Pakistan. Then we'd have to deal with that area too.

Though without the conviction of other populations, I imagine a once-defiant Western population would quickly revert to willingly accepting the vaccine once they've seen the horrors of the disease with their own eyes.

<comment><USER7> Yeah - in some ways the effectiveness of vaccines is the only reason that people in western countries can argue against vaccinations at all.

</comment></comment></comment></comment><comment><USER8> The continued eradication of Poliovirus is a testament to the almost inhuman tenacity of the medical and perimedical community that's dedicated so much of their time and professional lives to the issue.

There's been a number of other public nuisance / threat viruses that haven't fared so well in recent years. HIV among them; treatment has improved so significantly that the previous risk communication ethos, "avoid risky behaviors or you might die," just doesn't cut the mustard anymore.

Transmission reductions have stalled in adolescent to middle-aged groups is still high and over the total population looks to have been stalled for some time.[1] CDC [2] and other reporting numbers show it stalled for most of the last 15 years.

<comment><USER9> > The continued eradication of Poliovirus is a testament to the almost inhuman > tenacity of the medical and perimedical community that's dedicated so much > of their time and professional lives to the issue.

We see a lot of things like crowdsourcing, crowd funding, and the constant stream of stories like "sick kid gets a million get well cards after plea goes viral". Those are all interesting lessons in the power of the attention of a _lot_ of people for a _short_ amount of time.

But I think we forget what is ultimately a greater contributor to human progress: the attention of a _few_ for a _long_ time.

You don't need a crowd to change the world. You just need persistence.

</comment></comment><comment><USER10> Hope he gets the Nobel Peace Prize some day for aggressive billionaire philanthropy. There are plenty of other generous donors out there, but he sets an example of what do with tech wealth.

</comment><comment><USER11> So confused by the lack of hover text… :-)

<comment><USER12> I saw World Polio Day XKCD Comic, which wasn't the usual extra joke but is certainly accurate and appropriate an ALT tag.

Possibly because I have a FireFox extension just for those, actually: [http://piro.sakura.ne.jp/xul/_popupalt.html.en](http://piro.sakura.ne.jp/xul/_popupalt.html.en)

Anyway, thanks Randall and Mr Bill!

<comment><USER13> _Anyway, thanks Randall and Mr Bill!_

Mr Bill has an entirely different meaning to those of us who watched Saturday Night Live back in the 1970s. [https://en.wikipedia.org/wiki/Mr._Bill](https://en.wikipedia.org/wiki/Mr._Bill)

</comment></comment></comment><comment><USER14> I think Feynman is worth quoting here:

All the major problems of the relations between society and science lie in this same area. When the scientist is told that he must be more responsible for his effects on society, it is the applications of science that are referred to. If you work to develop nuclear energy you must realize also that it can be used harmfully. Therefore, you would expect that, in a discussion of this kind by a scientist, this would be the most important topic. But I will not talk about it further. I think that to say these are scientific problems is an exaggeration. They are far more humanitarian problems. The fact that how to work the power is clear, but how to control it is not, is something not so scientific and is not something that the scientist knows so much about.

Let me illustrate why I do not want to talk about this. Some time ago, in about 1949 or 1950, I went to Brazil to teach physics. There was a Point Four program in those days, which was very exciting--everyone was going to help the underdeveloped countries. What they needed, of course, was technical know-how.

In Brazil I lived in the city of Rio. In Rio there are hills on which are homes made with broken pieces of wood from old signs and so forth. The people are extremely poor. They have no sewers and no water. In order to get water they carry old gasoline cans on their heads down the hills. They go to a place where a new building is being built, because there they have water for mixing cement. The people fill their cans with water and carry them up the hills. And later you see the water dripping down the hill in dirty sewage. It is a pitiful thing.

Right next to these hills are the exciting buildings of the Copacabana beach, beautiful apartments, and so on.

And I said to my friends in the Point Four program, "Is this a problem of technical know-how? They don't know how to put a pipe up the hill? They don't know how to put a pipe to the top of the hill so that the people can at least walk uphill with the empty cans and downhill with the full cans?"

So it is not a problem of technical know-how. Certainly not, because in the neighboring apartment buildings there are pipes, and there are pumps. We realize that now. Now we think it is a problem of economic assistance, and we do not know whether that really works or not. And the question of how much it costs to put a pipe and a pump to the top of each of the hills is not one that seems worth discussing, to me.

(from [https://www.nytimes.com/books/first/f/feynman- meaning.html](https://www.nytimes.com/books/first/f/feynman-meaning.html))

</comment><comment><USER15> I thought there was a problem with the Taliban fighting against polio- eradication efforts due to the Bin Laden thing? I would guess that they might need some new tactics to deal with that?

Maybe the CIA is secretly doing some work to make itself look less bad and kill an enemy that used to murder American children? Sounds like a decision they might plausibly make.

Or maybe they're just staying out of the way and we happen to have a bunch of nurses accepting the risk of violent death.

<comment><USER16> The comic really needs a panel that goes something like, "Hey, since vaccination programs are so common, let's take advantage of that by using undercover nurses as scouts so we can kill terrorists!" And then that gets shot down as the completely idiotic idea it is.

I would really like to see an estimate of how many deaths will result from the CIA's subversion of Pakistani vaccination programs, and how it compares to the deaths caused by bin Laden. I'd wager the former will outweigh the latter by a substantial margin.

</comment></comment><comment><USER17> Funny. We had a chat in the office this morning about Gates. Original comment was about how his philanthropic work made him so worthy of enjoying the fruits of his labors. My take on it was that the permanent damage he inflicted on computing was justified by how he is spending the proceeds. It was not a well received comment then, no different from whenever I get to make it (and I fully expect this thread to be no different).

You rock Bill. Rock on.

<comment><USER18> When I look at the field when commercial microcomputing started, it's hard to complain too much about any "permanent damage" Gates' might or might not have made. He was the one who survived, and he was smart, but remember software companies at the time were completely taken over by some of the biggest assholes in modern history. On that topic, "In Search of Stupidity" is a book which is very revealing of the times, and of much worse characters. I completely recommend it for anyone who likes to think Microsoft is especially evil.

<comment><USER19> Agreed. It's also easy to forget that Gates was able to do it all because he was so drastically undercutting the very expensive status-quo.

Had he not insisted on keeping so much control, it might have been even longer before computing was available to the general masses.

</comment></comment></comment><comment><USER20> Miracles can be accomplished when people work together. That may sound trite but today many doubt it, insisting government can do nothing right, reducing funding for research and health programs, etc.

</comment><comment><USER21> Holy crap. That is so dead on in how people are approaching international development lately.

<comment><USER22> Can you give some examples? (To be clear, I'm not at all skeptical but would just love to hear specifics!)

<comment><USER21> Thought of one on my lunch break:

Drones! Lately Drones have been seen as something that is going to revolutionize international development. You can map things quickly! Get tons of info! Etc.

However the problem is something like a drone tends to make host governments pretty nervous. Nepal from what I understand was a great example of that. There was a ton of drone usage there by NGOs, journalists and other groups. This increased the tensions that the government has with foreign aid workers which in turn slowed down the rate of recovery.

As a counterpoint there are great things like the 'contact tracking' apps used in the Ebola response. Various ICT4D companies made a mobile app that allowed field workers and local health workers to track who people had contact with and do followup appointments to make sure that they remained disease free. It's a simple concept but one that proved to be from what I understand very helpful.

</comment></comment></comment><comment><USER23> Mobile apps can actually play an important role in polio eradication

[http://www.polioeradication.org/Research/PolioPipeline/No7Wi...](http://www.polioeradication.org/Research/PolioPipeline/No7Winter2011/Mobilephoneshelpassessqualityofpoliocampaig.aspx)

</comment><comment><USER24> I'll give Gates credit: it only took him about a decade of futile ultra- technological attempts to understand that curing disease is often best done more simply.

<comment><USER25> Source? Would like to read more about this if there's a write up somewhere. My perception was that they were doing was was effective very early on (vaccination drives etc.)

<comment><USER26> What he says is literally impossible.. it hasn't even been a decade since the Gates foundation started funding polio eradication. The first the Gates foundation did anything was in 2007, when they gave $100m.

[http://www.boston.com/news/nation/washington/articles/2007/1...](http://www.boston.com/news/nation/washington/articles/2007/11/27/gates_group_gives_100m_to_polio_fight/)

[http://www.gatesfoundation.org/Media-Center/Press- Releases/2...](http://www.gatesfoundation.org/Media-Center/Press- Releases/2007/11/Rotary-International-and-Gates-Foundation-Together- Commit-$200-million-to-Eradicate-Polio)

And that money (along with $100m from Rotary International) went to the Global Polio Eradication Initiative, which is the World Health Org's immunization program (started in 1988).

<comment><USER24> 8 years, not 10, but: [https://en.wikipedia.org/wiki/Mosquito_laser](https://en.wikipedia.org/wiki/Mosquito_laser)

In 2007, the Bill & Melinda Gates Foundation requested Intellectual Ventures LLC to find a way to fight and eventually end malaria. Intellectual Ventures resurrected the idea of using lasers to kill mosquitoes and now has a working prototype.[2] The idea has been criticized because most areas where malaria is prevalent do not have reliable electrical power.[3]

<comment><USER26> Good point. In fairness though, that began with a $100k challenge to Intellectual Ventures, and they came up with the idea. Gates then gave them $1m to continue developing it with the idea it could be used to protect large areas.

[http://www.theregister.co.uk/2011/11/03/laser_mpsquito_repel...](http://www.theregister.co.uk/2011/11/03/laser_mpsquito_repellent/)

The funding is peanuts compared to what Gates has been spent on Malaria.. here's a couple of the press releases I could find for 2003 ($160m), 2005 (250m) and 2008 ($200m).

[http://www.gatesfoundation.org/Media-Center/Press- Releases/2...](http://www.gatesfoundation.org/Media-Center/Press- Releases/2003/09/Grants-for-Malaria-Research)

[http://www.gatesfoundation.org/Media-Center/Press- Releases/2...](http://www.gatesfoundation.org/Media-Center/Press- Releases/2008/03/Malaria-Partners-Letter)

[http://www.gatesfoundation.org/Media-Center/Press- Releases/2...](http://www.gatesfoundation.org/Media-Center/Press- Releases/2005/10/Gates-Foundation-Commits-2583-Million-for-Malaria-Research)</comment></comment></comment></comment></comment>


The history of the modern graphics processor - <AUTHOR> http://www.techspot.com/article/650-history-of-the-gpu/ <comment><USER2> > The evolution of the modern graphics processor begins with the introduction > of the first 3D add-in cards in 1995, followed by the widespread adoption of > the 32-bit operating systems and the affordable personal computer.

What? No.

The evolution of the modern graphics processor begins with the development of commercial 3D systems in the 1980's. Jim Clark founded SGI in 1982 based on his work into hardware acceleration of geometry computations for 3D at Stanford. By the mid-1980's, SGI workstations were able to handle 3D modeling and animation locally: [http://en.wikipedia.org/wiki/Silicon_Graphics#IRIS_2000_and_...](http://en.wikipedia.org/wiki/Silicon_Graphics#IRIS_2000_and_3000_series).

You can find some of Clark's papers on the hardware here: [http://www.computer.org/csdl/mags/co/1980/07/01653711.pdf](http://www.computer.org/csdl/mags/co/1980/07/01653711.pdf) (1980); [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.359....](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.359.8519) (1982). I can't find a good reference describing the rasterization side of the pipeline, though the second paper describes it very briefly on page 132.

There's a really neat website going into details of early 3D consumer chips: [http://vintage3d.org](http://vintage3d.org). It's very interesting, though again it should be noted that these products came out in the 1990's, well after hardware acceleration of 3D was well-established in the workstation market.

<comment><USER3> I could be wrong but didn't Evans and Sutherland have 3D accelerated graphics in the 70s for military flight simulators? Or is my memory bad?

<comment><USER2> My first inclination was to start with E&S, but my understanding is that their 3D technology in the 1970's was based on vector displays: [http://archive.computerhistory.org/resources/text/Evans_Suth...](http://archive.computerhistory.org/resources/text/Evans_Sutherland/EvansSutherland.3D.1974.102646288.pdf). Which is clearly hardware-accelerated 3D, but not quite how a modern GPU works because it doesn't involve rasterization of triangles into a framebuffer. Of course this was before my time, so I'd be happy to be corrected...

</comment></comment></comment><comment><USER4> It's an interesting topic in that I remember just how much of a revolution the original Voodoo card was to gaming (for me anyway). These new cards didn't just enable slightly prettier graphics like a new card would today, they enabled entire new _genres_ of game. If anything, the art quality actually took a step back for a while (some of those sprites were gorgeous), but the new 3D effects more than made up for it.

I imagine products like the Oculus Rift will hopefully have the same effect on gaming. New ideas that we could barely imagine before will now be within reach.

<comment><USER5> > they enabled entire new genres of game

Such as? There have been great enjoyable DOS-based 3D games for a number of years ever since Wolfenstein so I'm curious what 'new genres' you're thinking of that the introduction of a 3D graphics processor enabled.. ;)

<comment><USER6> Right. Even Unreal had software rendering (and looked damn good - water, sky, fog).

</comment></comment></comment><comment><USER7> A nice complementary text (programmer's perspective) to the history of the hardware is the epic stackexchange answer: [http://programmers.stackexchange.com/a/88055](http://programmers.stackexchange.com/a/88055)

<comment><USER8> Very nice. Though I wonder why the author thought we (3Dfx) were "strongly against OpenGL"? One of our founders, Gary Tarolli, worked on Iris GL[1][2]. We weren't against it, but our pixel pipeline was in the wrong order to implement it precisely. Plus there was the GL tradition of handling things in software that your hardware didn't implement, and we hated the "slow path". Ok, maybe we were against it a bit :-) Coming back to me now.

[1] [http://tech-insider.org/unix/research/1990/1211.html](http://tech- insider.org/unix/research/1990/1211.html) [2] [http://techpubs.sgi.com/library/manuals/1000/007-1210-060/pd...](http://techpubs.sgi.com/library/manuals/1000/007-1210-060/pdf/007-1210-060.pdf)

</comment></comment><comment><USER9> More wrong: the 6845 was not used in the Apple II.

<comment><USER10> Correct. It was used in some of the 80-column addon cards, but Woz drove the video signal directly from a sea of TTL gates. It was pretty amazing stuff for the time.

</comment></comment><comment><USER11> It always amazes me how so bad quality graphics back in the 90s or early 2000 looked so bad but still everybody thought they were great and amazing (at least I thought).

Probably we think now that we have good looking graphics but after 15 years of development they aren't so good anymore.. AMD/ATI and NVIDIA have done great work over the years.

<comment><USER12> Typically the things that previous made graphics 'good' were simply resolution and color depth. Early 8-bit home computers were often limited to just 1 or 2 colors per sprite. Machines such as the NES increased this to 3 or 4 colors per sprite, which makes a dramatic difference.

Along came something like the SNES, which although it shares the same resolution as the NES (256x220 or something along those lines), it had access to 32,000 colors instead of the 64 available to the NES, and it could use up to 16 per sprite. That's the main reason why SNES screenshots look so much better then SNES screenshots.

Once 3D came along, graphics looking 'good' became more complicated than just resolution and color depth. The original Playstation suffered from texture maps that showed artifacts, became distorted, and had edges that appeared to 'jump' around.

As the hardware became faster and fixed those issues, more techniques were added for lighting, shading, and a hundred other enhancement which got us to where we are today.

</comment></comment><comment><USER13> Some interesting history here in a discussion of 3DFX: [https://www.youtube.com/watch?v=3MghYhf- GhU](https://www.youtube.com/watch?v=3MghYhf-GhU)

<comment><USER14> If you go to [http://www.computerhistory.org/collections/oralhistories/](http://www.computerhistory.org/collections/oralhistories/) , and click on the Videos tab, you can view it with a sync'd/searchable transcript. It's a beta feature right now, and I know they'd appreciate feedback.

Incidentally, while only a few of the oral histories have videos up, there's 500 or so transcripts up, will worth a perusal.

</comment></comment><comment><USER15> Ha ha, look at the capacitors soldered across the through-hole ICs on that first ATI board from 1987. Only took a couple years to get to sophisticated SMT boards.

</comment><comment><USER16> An article like that should really cite it's sources.

<comment><USER17> its</comment></comment>


What Is the Event Loop? - <AUTHOR> https://blog.phuaxueyong.com/post/2020-07-08-what-is-event-loop-javascript/ <comment><AUTHOR> Took some time to learn about the event loop. So for all JavaScript developers out there, would love to hear your inputs (: Hope you enjoy</comment>


French Developers can earn double in Silicon Valley - <AUTHOR> http://www.rudebaguette.com/2014/09/02/french-developers-make-50-less-france-silicon-valley/ <comment><USER2> A few things that should be noted because articles like these tend to focus on the mere disparity in earnings:

1) In France, your salary is usually lower because your employer has to pay a lot of taxes. So does the employee.

2) Those taxes are in turn used for a lot of things that make the French model (and those of Sweden, Denmark, etc.) a nice place to live like next-to-free education, health care, transportation infrastructure, public libraries and hospitals, universities, so called "Grandes Écoles".

I'm not saying the system isn't currently broken or that it even works but in the end, it is really not as simple as X in France and 2X in the Silicon Valley cause in the end, you have to shell out for your health insurance, your education and a lot of different services that are just part of the French package when you live in the USA.

A good illustration of this is the price I paid to go to one of the best universities around Paris: the equivalent of $250 a YEAR.

For that kind of quality, I would have easily paid something like $5000 or more in the States.

So really, both systems have their pros and cons, it's really way more nuanced than that.

<comment><USER3> You forgot to add the unemployment allowance and paid retirement, which are a huge benefit. In particular in the tech scene, the unemployment allowance means that you can be paid up to 80% of your previous salary for almost two years (… way to seed startups!).

All this plus what parent poster mentioned are what we call the "deferred salary", it's hard to evaluate precisely but in now way it's negligible.

Also I don't know in which Parisian university you went, but I bet that it would be a lot more than $5000/year to get an equivalent "service" in the US.

<comment><USER4> You need to have been fired for that - you won't get the unemployment benefits if you quit your job. On the other hand, unemployment can be a cushion for employees of a failed startup.

I don't know if founders of failed startups can get the unemployment though.

<comment><USER5> That's not true. To be eligible for the unemployment benefits you must not break your contract with your employer. That is, you can leave if you respect the terms of the contract.

<comment><USER4> It's unclear. It says here [0] that in principle you can't get unemployment benefit if you leave your job on your own, although there are exception to that, mainly if you leave your job for family reason (your partner got an opportunity in a different geographical area), or if you experimented unprofessional behavior at your previous company, such as sexual harassment.

In the link I gave, it says that you can get unemployment if you leave to create your own company, but here [1] it says that if you leave to create your own company and it doesn't take off, you will be able to get unemployment benefit ("Démission pour reprise ou création entreprise : Et, si pour des raisons qui ne sont pas de votre fait cette nouvelle activité s'arrête, vous pourrez alors récupérer le cas échéant votre droit à des indemnités de chômage.").

I am a French expat so my knowledge of this might be a bit off, but I am still interested in that subject.

[0] sorry, in French: [http://www.toobusiness.com/portail/conseil/loi- juridique/all...](http://www.toobusiness.com/portail/conseil/loi- juridique/allocation-chomage.htm)

[1] still in French: [http://allocation-chomage.fr/demission-chomage-pole- emploi/](http://allocation-chomage.fr/demission-chomage-pole-emploi/)

<comment><USER5> Sorry for the late reply S4M.

I think there is a confusion between "leaving your job on your own" and leaving in a consensual way with your employer.

Most of the time, when you decide to leave, you make a departure plan with your employer. If your employer agree with your decision, you generally leave after 3 month or so (depending on the terms of the contract).

You can then ask for you unemployment benefits.

<comment><USER4> For me it's very ambiguous and I would really check it before leaving my job if I was planning to use unemployment benefit to finance a startup. What are your sources?

<comment><USER5> Source : Years of employment. +

[http://vosdroits.service- public.fr/particuliers/F19708.xhtml](http://vosdroits.service- public.fr/particuliers/F19708.xhtml)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> As a recent transplant from San Francisco to Nantes, France, I'd like to point out that my salary is about half of what it was in the US, taking into consideration exchange rate, so the article is right on. However, my purchasing power has gone up about 2x. My apartment in San Francisco was $4000/month for a 2 bedroom. In Nantes, I pay €800 euros for a 2 bedroom that is about 25% bigger. Some things are more expensive in France, but one the whole, it is much much cheaper, and I'd argue that quality of life is way better.

For what it is worth, I am American with a french partner. Probably not as easy for others to get a Visa to work in France.

<comment><USER7> I find this hard to believe. As a Canadian my experience is that everything is cheaper in San Francisco save for rent which doesn't begin to cover the tax and salary disparity ($2.2k for a studio vs $1.3k, big whoop). Given that France seems even more expensive than Canada for electronics, cars, fuel, taxes, etc, where are you realizing these savings?

<comment><USER8> Food is way cheaper in Paris than SF... both groceries, and restaurants.

<comment><USER7> Food in SF is often free at work. Even without that perk I can't see more than $100-$200 a month in savings from food.

</comment></comment></comment></comment><comment><USER9> Little anecdote :

A few years ago, a contact in one of our customer working at a Very Big IT company in silicon valley (and i mean VERY BIG) happened to be french. He had a high role in that company, so he presumably made quite a lot of money. Well, one day his wife was diagnosed cancer, so guess what he did : he went back living in France for her. And i didn't ask so I may be wrong, but i presume it wasn't for the air quality.

</comment><comment><USER10> Not taking into consideration

\- rent

\- cost of living

\- More Paid leave and shorter work weeks (in france)

\- Included health/pension/social benefits

Makes this a very one sided comparison. I could also imagine a brain drain effect might be at play like with India, where the average talent of the French developer who relocated is somewhat higher than the average of the developers in the original country.

<comment><USER11> Also you get to live 2 years longer... 79.4 for males in France, and 77.4 for males in the USA. Women about 6 years longer in France, and 5 years longer in the USA. You get almost 2 years extra holiday over the working lifetime too.

</comment></comment><comment><USER12> So in UK pay goes like this:

Salaried Developer @ £40K £3,333.33 Gross £2,512.89 Net

Contract Developer @ £350 per/day using a trust £7350 Gross £6027 Net

Contract Developer @ £350 per/day using an umbrella £7350 Gross £4,333.68 Net

Contract Developer @ £350 using Ltd £8820 Gross using flat-tax scheme You'll need an accountant to tell you what you can actually get net, if you have a wife that doesn't work it'll closer to a trust, if you don't, it'll be closer to an umbrella, but you can defer to bring it closer to the trust if you're patient.

I'm not sure what people actually get paid in SV, but £350 is fairly low end, you can pull £600 a day in London which'll earn you $250,000 assuming you never take a holiday or are inbetween jobs, which isn't a good idea.

P.S. The salaried developer probably costs the company more too.

FYI you don't need to be in the UK to contract, I just don't know the tax structures elsewhere.

<comment><USER13> Would you mind explaining the trust/umbrella/Ltd schemes? Probably not familiar for folks from outside the UK.

<comment><USER12> umbrella = you become an employee of them. they pay your taxes as if you were a typical pay-e employee, thus you'll hit the 40% tax bracket fairly quickly.

trust = tax avoidance structure, a trust is just one type, there are many others. [http://www.contractoruk.com/ebt/](http://www.contractoruk.com/ebt/)

Ltd company[1] = starting your own offical company. Reason to do this is corp tax is only 20%. You need to pay that on your companies profit[2], but if you're patient it's pretty much all you need to pay[3]. Reason: Dividens are essentially tax free upto 31,865, if you have a spouce that's not earning, double this amount. Add in your tax-free allowance on income tax and a married couple can pull between £70-80k a year "tax-free" and you can defer anything else until later years. Your still paying your 20% corp tax on that income, but you also get resonable expenses. Your laptop, travel, maybe a phone for the most part is what is deemed resonable.

[1] This is the way the .GOV.UK wants you to avoid tax. If you have a non- working spouce, it's pretty much the best way until you start earning > 500 p/d and even then some would debate this is the way to do it.

[2] Profit = your companies income - your salary (not dividens) - expenses.

[3] OK so you'll probably want to set aside ~£1000 a year for accountant fees and ~£500 for insurance. Of course these are expenses, so come off your before your 20% corp-tax.

</comment></comment></comment><comment><USER14> What you can earn is only relevant when compared to what you spend, and what your perceived quality of life is.

<comment><USER15> A very good point.

Also true,some folks may want to make less and have a bunch of things "pre- digested" for them. Others may want more and be able to purchase goods and services (like college educations) as they choose. There is no right or wrong here. This is a "do you like ice cream" question.

Additionally, simply because you're making more and living in the U.S. doesn't mean you can't have a laid back lifestyle. Or if you're making less in living in France you're as free as you want to work and play as hard as you want.

These broad generalizations don't mean much.

Having said all of that, in my own career when I was young I chased the money. Not to get rich: I simply found that people who pay a lot of money for stuff are usually doing something very interesting. There's a lot more stuff going on in SV than in Lyon. This was my choice. Others make different ones.

</comment></comment><comment><USER16> i got a 20% lower salary in paris than i did in SF. but with costs of living, health care, 401k, free education and all, the difference is actually not significant and in fact probably null or negative...

if you need none of the benefits you get in france, you'll get slightly more in SF.

so its not really a clear cut

<comment><USER17> > if you need none of the benefits you get in france, you'll get slightly more > in SF.

Yes : if you are young, healthy and with no kids, you are better off in the USA, Malta or any other fiscal 'paradise' where you benefit from the lack of solidarity. Otherwise you are better off in a country whose fiscal system takes social welfare in consideration.

</comment></comment><comment><USER18> French work week is 35 hours by law, with five weeks of paid leave per year worked. I bet that the double pay looks less attractive when you realize that Silicon Valley programmers work nearly double hours.

[http://www.expatica.com/fr/employment/employment_information...](http://www.expatica.com/fr/employment/employment_information/French- labour-laws_-Working-time-and-leave_16106.html)

<comment><USER19> It's more complicated than this. At a certain level of seniority, which most engineers are, the 35h/week rule do not apply anymore. There still are restrictions but it's really to avoid abuse (make sure you get enough sleep for example, I don't have the details in mind sorry). To compensate for the extra hours, there are extra days of vacations though, call "RTT" (Reduction du Temps de Travail = work time reduction). Here too, I don't have the exact number in mind, about 7 or 8 days / year --- enough that I don't bother tracking my vacation days precisely, as you can see ;)

So the 35h/week rule is mostly for basic jobs, not for people working in high tech.

That kind of situation is quite typical by the way: the French system is over- complicated with too many options and special cases. Foreign coverage tend to stick to the high level headlines (which is perfectly normal) and as a result people often have a distorted view of reality.

</comment></comment><comment><USER20> Also in the UK, under the London bubble salaries are increasing rapidly, a £50k is starting to be a very low salary for skilled engineers.

<comment><USER21> Really? Although I rarely see salaries advertised in job ads, and rarely hear from programmers how much they're paid, I got the feeling that you could get about 40K as a non-junior engineer (about 50K in finance).

<comment><USER22> 55k is average for Ruby in London now: [http://www.itjobswatch.co.uk/default.aspx?page=1&sortby=0&or...](http://www.itjobswatch.co.uk/default.aspx?page=1&sortby=0&orderby=0&q=ruby&id=0&lid=1853)

I'd say £70k+ for senior. Contract rates are £450+, so ~£100k a year.

<comment><USER12> Factoring in tax breaks, you'll need £150k a year before you can compete with a £400 p/d contract.

</comment></comment></comment></comment><comment><USER23> It always amazes me that someone compare gross salaries. It should always be with some form of EBITA with normalization and net profit.

</comment><comment><USER24> Bringing up Ferguson is a bit of cheap shot, especially considering the Paris riots and the situation with policing there. Going from Paris to San Francisco might actually get you slightly less police harassment depending on your background.

<comment><USER19> There's been no riots in Paris, there were in some parts of the suburbs of Paris. I've seen the coverage in the US of the Paris riots and it's true you could feel like Paris was on fire. But living in Paris itself or in the close and nice suburbs (as I do) you would have seen nothing at all.

It's part of the problem: the rioting suburbs are ghettoized and have huge unemployment. There's also a strong stigma if you look for a job with an address there.

It's a real and big issue for France, but for the high-tech jobs and people covered by the article it's a non issue: you'll be in the safe parts and will only see such event on TV. It will have no practical impact on your life.

<comment><USER24> _" for the high-tech jobs and people covered by the article it's a non issue: you'll be in the safe parts and will only see such event on TV"_

I am fairly sure that coders and geeks from within those Paris suburbs would find your assessment more than a little exclusionary. Ability and interest are not defined by being born somewhere safe.

</comment></comment></comment><comment><USER25> Any of these comparisons between countries and cities have to take into account cost of living (rent, childcare, food, transport, insurance etc.). High salaries in a region are often required to cover high costs to live there.

</comment><comment><USER26> Any developer can earn double in silicon valley, especially in san francisco. Being french has nothing to do with it.

</comment><comment><USER27> Revenue tax (impot sur le revenu) is also much higher in the US unless your salary is really high in France.

</comment><comment><USER28> If they're able to speak English that is :)

</comment><comment><USER29> > health car system

health care.

> these points are relatively mute

moot.</comment>


Twitter May Have 500M+ Users But Only 170M Are Active - <AUTHOR> http://techcrunch.com/2012/07/31/twitter-may-have-500m-users-but-only-170m-are-active-75-on-twitters-own-clients/

<comment><USER2> Only 175M of 500M? The people are Techcrunch are so out of touch with reality. That's more than 20% of users. If 20% of all your users are active, you should be commended.

<comment><USER3> I agree that's a lot, but we need to bear in mind that active can have a lot of definitions. From the article:

"active in this sense means the number of accounts that were modified over a three-month period, including changes of avatar, subscribing to a new follower or tweeting"

Three months is a long time for activity - monthly / weekly / daily active user metrics are more common. Also, it (apparently) isn't counting a _visit_ as activity, just these actions. That just makes this a weird metric to benchmark against.

</comment></comment><comment><USER4> In a lawsuit filed against spam tool providers in april; twitter claimed it had 140 million active users. 140 million claim is right on page 1. [http://www.scribd.com/doc/88206156/Twitter-lawsuit-to- counte...](http://www.scribd.com/doc/88206156/Twitter-lawsuit-to-counter-spam)

</comment><comment><USER5> Which also begs the question, how many of those active users are actual people?

<comment><USER6> Semi-related: What's preventing FB from artificially creating users themselves - to make their network look gigantic. I feel like FB would not be able to continue the growth it has - which begs the question, if they faked it internally, would we know? /tinfoil.

<comment><USER7> Faking it internally would probably stray too close to fraud for comfort. They don't want that liability.

Not doing anything against users creating duplicate accounts can be gotten away with easier: Just blame it on negligence, or incompetence.

<comment><USER8> I for once have at least create five to ten Facebook accounts myself, Each time I get into a situation where I am forced to use Facebook I create a new throw away account. As I have a deep distaste for Facebook's approach to privacy and overall business practice these unavoidable logins occur only every few month or so. I think creating and abounding accounts might be the least useful user interaction they can get.

<comment><USER7> Unless they are smart enough to detect that those multiple accounts are really one. Then they can still treat you as one person for their analytics.

</comment></comment></comment></comment></comment><comment><USER9> So what qualifies an active user ? I have a twitter account and even though I have never tweeted (yet) I do follow a bunch of people and regularly read up on what they have to say. I am sure there are several more like me.

<comment><USER10> From the article:

"active in this sense means the number of accounts that were modified over a three-month period, including changes of avatar, subscribing to a new follower or tweeting".

</comment></comment><comment><USER11> its a funny world where 170M is seen in a negative light.

<comment><AUTHOR> 170M actives is not that bad at in my opinion, but 170M out of 500+M is quite strange. And yet, we have to remember twitter is much more suitable for brands and celebrities than it is for the "normal"-less-known people

<comment><USER12> 170M out of 500M seems pretty normal for me, in fact, better than most sites, hip social network startup or otherwise. In most online communities I'd expect the active/inactive ratio to be _worse_.

</comment></comment></comment><comment><USER13> Twitter seems great for celebrities. Not being a celebrity, however, my experience with twitter has been one of extreme isolation. I'd bet most of my followers are either bots or marketers. The rest are mostly strangers with whom I share no common interests.

The result feels like standing on an empty street corner and shouting to one in particular. There's no interaction and no indication that anyone is reading anything I post, ever.* At least on HN or reddit, I get near instant feedback on just about everything I post.

* _I did get a response from Darude one time, which was pretty cool._

<comment><USER8> This is similar to my experience. It probably depends on how many people you already know and who are willing to interact with you on that basis to give you a good start. I am still trying to get into this but the problem is that I often end up falling back into some "broadcasting" mode instead of engaging into conversations. Depending on your personality and pseudo popularity it is difficult and takes a lot of time and effort.

</comment></comment><comment><USER14> That is a very weird use of the word "only".

<comment><USER15> Out of context (just saying 170M), sure. But 170M represents 34% of the reported population.

Alternative title,

>Twitter May Have A Lot Of Users But Only 34% Are Active [Techcrunch]

I'm assuming you'd approve of the use of "only" in that case?

<comment><USER14> >I'm assuming you'd approve of the use of "only" in that case?

Absolutely not. A 34% active user rate is _huge_.

</comment></comment></comment><comment><USER16> When I finally broke down and signed up with Twitter over a year and a half ago, my first half dozen handle choices - all based on my fairly unusual given name were taken by what appeared to be placeholders. (No profile, few is any tweets/followers/following and nothing recent).

I'm surprised that 34% are active. I'd have guessed at something more like 5-10%.

</comment><comment><USER17> I have 6 accounts, and use just 1, and that too once every 2-3 months.

I'm guessing the active accounts follow a Zipfian distribution; and probably the most active ones are bots and corporate accounts (managed by teams of people).

<comment><USER18> For some reason people say RSS is dead but have a love affair with twitter. I like you use it for consumption and to produce consumable links with tag lines. For example my <http://www.twitter.com/pdrintel> has 711 followers (a lot for me)and has only tweeted 488 times a ratio of posts to followers could show quality -

What I don't understand is how its any different than RSS besides size limit in content and easiness to sign up to follow someone.

\- I find more useful as a producer of content; than a consumer of content. I also find it has more parallels to RSS than anyone would want to admit.

</comment></comment><comment><USER19> There's a lot of people logged out or that doesn't change most of her data... so I think that this data isn't accurate.

<comment><USER20> What do you mean? If they're logged out they're not active. Changing data (user info?) shouldn't matter because that's not how active users are checked.

<comment><USER21> The problem is that the analysis can't measure logged out accounts. Instead, they measure activity. From the article:

      ...active in this sense means the number of accounts that were
      modified over a three-month period, including changes of avatar,
      subscribing to a new follower or tweeting, says Guyot.
      "We believe this is close to a monthly login rate," he tells me.

So they are assuming if you haven't done anything, you aren't logged in. I rarely tweet and I don't think I've ever changed my avatar. I do follow or unfollow accounts, but I'm pretty sure I could find a few three months spans in my account history where I haven't.

I generally check Twitter a couple of times a day from a logged in account, but based on the above criteria I would be considered 'inactive'.</comment></comment></comment>


What should I be paying a django/python developer per hour? - <AUTHOR> what's the going rate for a django developer these days? I've got a project, it's pretty straight forward, and I need a good developer. what should I be paying? <comment><USER3> Four options:

1) you are going to hire someone who can help you figure out what you want and will implement it quickly. This person will have a proven track record of implemented sites and will be expensive (over $100/hour depending on experience and their cost of living).

2) Hire a company with multiple experienced Django developers on staff if you want the site done well and on time. Expect to pay slightly more, ~$150/hour.

3) Hire someone who has done zero Django sites, or a few sites of less complexity than what you want implemented. This person will clearly be tech savvy, understanding what you want and promising the world. They will only have small or incomplete projects to show you as portfolio material. They promise more than they can deliver, because they are naive and possibly still on their Django honeymoon period. They will charge somewhere between $25-$75 per hour and will take several times longer to give you something that just barely works and isn't particularly maintainable.

4) Everyone else. Avoid them.

Find a developer or company who can help you to figure out exactly what you need and has proven that they can implement in a timely manner. Then pay them what they ask. Scale back your expectations if you can't afford their time. Hire someone in the US, but outside of NY and Bay Area unless you live in those areas and need to meet face-to-face.

<comment><USER4> Do you really have to have a Django developer specifically? In my mind, a good programmer is a good programmer and understands a thing or two about this stuff. I think you want a good programmer first, regardless of whether they have a great deal of experience in whatever the obscure framework du jour is or what have you. But other than that I do tend to agree with you.

<comment><USER5> _Do you really have to have a Django developer specifically?_

If it is specified as a Django project, then a good programmer who doesn't know Django fits into the _Hire someone who has done zero Django sites, or a few sites of less complexity than what you want implemented. This person will clearly be tech savvy, understanding what you want and promising the world._ category.

I agree with the parent posts conclusions on that.

<comment><USER4> I don't know. The idea that that person would be of slightly lower quality or just in a honeymoon phase, or even naive I think is a bit much of you have a very experienced programmer that just hasn't done Django. I just quibble with the implication of lower quality, naivete, and "promissing the world."

<comment><USER5> Ok - put it like this:

I've been doing web facing Java apps for over 10 years, every weekday, for at least 8 hours a day.

And yet, I still learn new stuff _every single day_. Sometimes not little things either - things that can save hours, maybe days of work.

I've met many better programmers than me. But I know my shit, and I bet I could get a Java webapp up & running quicker than someone like say Donald Knuth, simply because I've done it so many times before.

I've done some Python and Django, but based on my Java experience I know someone with a couple of years experience with it would destroy me if we were racing to build an app. And from the client's point of view, it's always a race because time is money.

<comment><USER4> I disagree and fail to see how that answers my issue but the real killer here is that if that is sole criteria, whether the person has experience with this particular framework, why pick something so niche as Django? Is that the best decision given this mentality?

</comment></comment></comment></comment></comment></comment><comment><USER6> Let me tell you this - Django is one of the worst frameworks to hire people for. Difficult to find devs to maintain it and expensive. If you are outsourcing, go with PHP.

Just like me, you'll regret going with a niche like python/django when outsourcing.

<comment><USER7> i agree.

</comment></comment><comment><USER8> This is my suggestion to anyone looking to have a tech product developed. Find a good developer don't skimp, if you do you will live with it for a very long time and spend multitudes more in maintenance (if the project does not fail outright) than if you had it done right in the first place. If you need to save money, here is how I alway recommend that people do it. Hire that good developer have them build the site and then have them transition the ongoing maintenance of the site to an offshore team. Maintenance cost you far more in the long run. This way, you get the product of a good developer while saving in the long run. As well a good developer is going to do far better than you in identifying a quality offshoring resource. They will be better suited to determine the best person that handle that ongoing maintenance. Most of your good developer are in such high demand that they will relish the fact that they will not be on the hook to maintain the product and you will find the more and more quality developers have existing relationships with an offshore developer that they forward maintenance gigs to.

</comment><comment><USER9> First off, I agree with dinkumthinkum. Note that Django is not a simple framework. To get something running you can get it done in a really short amount of time but to put off a deployable site with proper security + stability + reasonable performance requires someone who is at least mildly experienced with Django.

As to the argument: A good programmer is a good programmer: Well a good programmer is only if he/she can get the task done. How can you truly evaluate someone how good he/she is? The best metric in this case will be to measure how well the person can deploy the site within the Django framework - <USER2> all that's what you are after.

If you pay someone who is cheap but less experienced, there is a very high chance of defaulting. Look at most script lance sites - they are filled with cheap developers from 3rd world countries but from my experience they are pretty terrible to get things done.

Bottom line: You pay for the quality.

<comment><USER10> What sort of security issues do you see with django deployments?

</comment></comment><comment><USER11> I echo the sentiment of many folks on here- you pay for quality. As a development consultant and programmer, I've heard one too many horror stories from non-technical folks who just hired the cheapest freelancer they could find. That being said, freelancers range from $30/hr (for asian low cost providers) to $150+/hr (experienced guys in the USA).

If you're looking to build fairly robust web app that you plan on scaling, I suggest either:

1) Recruiting a technical co-founder and letting him choose a freelancer he's closely screened, and then micro-manage the hell out of the project; 2) Hiring a reputable firm to do it.

Either way, pay no less that $100/hr for good work.

</comment><comment><USER12> I've just outsourced a project to a friend of mine. He's a very skilled Django developer. The rate is around 30 euros / hour. However, I live in Romania.</comment>


Introduction to Computer Graphics [Free Online Book by David Eck] - <AUTHOR> http://math.hws.edu/graphicsbook/index.html <comment><USER2> This looks like a good, modern intro. Thnx for posting!

<comment><AUTHOR> Yes, it covers both OpenGL and WebGL.</comment></comment>


Ask HN: Is it possible to be very good in multiple languages? - <AUTHOR>

Is it possible for someone to deeply understand all of the following languages? Python, Ruby, C, C++, Objective-C, JavaScript, PHP, Go
In the last 6-7 months, I intensively learned Python, and I feel I pretty much know all the important basic principles, I can write idiomatic code in it, I can optimize, profile and know the important tools and libraries. I dig deep into Django, I know my way around it at a level where I'm comfortable with it. (Of course I'm not an expert at all and don't even know the Standard Library deep enough yet.) However Python is a pretty easy language.
What time would it take to learn the other languages at least this level, and is it possible at all to master 7-8 languages let's say in 5 years? If not, 10, 15 years? (By "mastering a language" I mean that you are pretty productive and can get a well paid job with any of the languages you know.)
I already know that I want to do programming for the rest of my life, so should I pick one language/technology and stick to that and learn it very-very deeply, pick up one and two beside that, or should I go all-in and learn every language as much as possible?
I'm aware of that you should learn general applicable programming principles, theories, algorithms, math all the time which you can use in any languages, but I feel knowing the language itself is also very big part of the process. <comment><USER2> All three of these are valid strategies. The larger question is, what specifically do you wish to achieve?

Assuming you're aiming for "pretty productive and can get a well paid job with any of the languages you know", note that skill in programming is, but one dimension in the employability equation. A handful of others include: domain- specific knowledge (both technical, and those specific to the employer's industry), communication skills, ability to juggle tasks, and ability to sell. Strength, or lack in any one, or combination of these skills can be an overriding factor in your pursuit.

You'll often find on these boards, and in software circles people very noisy about language of choice. This has historical, sunken-cost-fallacy, and mid- carrier-crisis backgrounds; none of which are particularly productive to your goal. You'll also find many posts claiming shiny features achieved in one particular language. This has marketing background, and is also not conductive to employment.

In conclusion, given your stated goals, your question is a red herring -it serves to distract you from what you're trying to achieve. It is possible to be very good in multiple languages. You might even aspire, and reach this goal within 3-5 years. Whether the industry will need those skills, and whether you'll be employable in any of these, are separate questions entirely.

<comment><AUTHOR> Interesting. I assumed that there is a linear relationship between the level of technical skills and employability. Would you say that if somebody has a lot of technical skills but lack of the others like communication skills would find a job harder than somebody with less programming knowledge but more of these 'other' skills?

<comment><USER3> There is not a linear relationship between technical skill level and "hire- ability". I would describe it as first a step function, i.e. there is a minimum level of technical skill to get an interview and be taken seriously. Then the function is a linear rise, but it quickly levels off to a flat line. Once hired, higher technical skill will correlate with higher job performance and success, but again only up to a point where the curve will flatten out again.

Once you are in the linear portion of the technical skill curve, your hire- ability is much more strongly affected by the "softer skills": verbal & written communication, ability to think critically and express that thought, and the social skills to quickly assess your interviewers and establish a rapport with them.

After you get hired, better technical skill certainly helps, but it does level off. Also, it is not indepedent of the soft skills: I've known individuals with ridiculously impressive technical knowledge and skills, but their utter lack of communication/social skills not only hurt them career-wise, but actually made their high technical skill a liability at times.

</comment></comment></comment><comment><USER4> In my experience, this is more about memory rather than intelligence / ability to understand. I used to be quite good at C++ and Perl and then I was asked to move to Java and these days I work with Scala + Java. In between, I also learned quite a bit about my domain (financial industry / trading), and ended up getting good at R in the process. Now, I will probably not pass a C++ interview! :-)

At the same time, if I had access to good notes (that I made), it will all come back pretty fast. For example, I picked up the "C++ FAQs" book by Cline, Lomow and Girou from my bookshelf as I was typing this and as I thumb through it, I am experiencing a lot of, "Ah, right, I remember this now".

> I already know that I want to do programming for the rest of my life, so > should I pick one language/technology and stick to that and learn it very- > very deeply, pick up one and two beside that, or should I go all-in and > learn every language as much as possible?

I would say learn one language VERY well AND make notes. Then the rest can often be learned by comparison quickly. The problem is that many times, your employer,a Lead Architect, etc; may decide the language for you, and you may not have that much say...What's worse is being asked to move back and forth between related languages, which can be quite confusing!

My conclusion is that both you and I should probably start using Anki or other memory-aiding software to make notes as we learn! Here's a great article by Derek Sivers on "Memorizing a programming language using spaced repetition software" : [http://sivers.org/srs](http://sivers.org/srs). I've read that article a month ago or so and have been meaning to finally start using Anki along with my Functional Programming in Scala coursera course, but somehow didn't.

However, note that some people make an entire career out of being a guru at one thing. In this path, one key element (that took me too long to grok) is : don't just learn, WRITE about it. Blog about what you learned. Even better, write a book about it, attend conferences, etc; That is the way to extract the maximum return for the effort you placed in learning one thing deep down to the metal! When you meet people in person, it opens up opportunities that are exponentially better than merely going to a job search engine!

That was quite rambling; I hope there is something of use to you in there!

<comment><AUTHOR> Great answer! I thought exactly what you describe; a lot of depends on lexical knowledge about the specific language... I was using Anki to learn key combinations of my IDE, editor, and terminal commands, but I did not thought about to learn a language with it! I will definitely do it!

</comment></comment><comment><USER5> Going by your numbers, you mastered Python in 7 months. Therefore you should be able to master all 7 other languages in no more than 49 months which is about 4 years.

Of course, I don't believe your numbers. You may have been able to master some commonly used bits of Python in 7 months, but it takes about 7 years to master anything. Programming languages are a bit of a special case because there is a lot of overlap so I think that Ruby would take an additional 2 years, but C would likely take another 5 years. Then 5 more for C++, 2 years for Objective-C, two for Javascript, two for PHP and another one year for GO.

Of course if you do it in a different order, the length of time would be different because spending less than 7 years to master something requires that you reuse a lot of existing knowledge.

In human language terms, for an English speaker to master French, Russian and Mandarin would take no less than 21 years. But for that same person to master French, Spanish and Italian would take about 12 years.

The best advice would be to not worry about any of this. Find a job that requires programming and learn whatever tech you need to use in that job. Then move on to another job that uses at least some different pieces. If you are not actually using a language to build real things then you won't really learn it.

</comment><comment><USER6> In my opinion, if you're not good enough to adapt to any given language, you have quite a ways to go before calling yourself a software engineer.

<comment><AUTHOR> I think anybody can, but the question is only in how much time?</comment></comment>


Would visual diff for dependencies make sense? - <AUTHOR> Visual diff is useful for seeing text changes in code files and resources. But for the architecture level, what do you think would it make sense to see how dependencies have evolved?
Example case in my mind is especially situation where new connections (dependencies) have been made to bind two classes together (e.g. association), and some other dependencies cut away. Usually this sort of realization is quite rare at least when looking just code diffs when reviewing code.
If you think that useful in general, what if your preference of the ideal representation:
- table of dependency changes
- 2D graph visualization
- 3D graph visualization
- some other? <comment><USER2> 2D Graph: 1 vote</comment>


How I Paid Only 1% of My Income in Federal Income Tax - <AUTHOR> http://www.huffingtonpost.com/eric-schoenberg/how-i-paid-1-of-my-income_b_852948.html <comment><USER2> Hmm. His total tax rate was about 28% - 27% in state and local, 1% in federal. According to wikipedia, the total tax burden is about 28% of GDP, so he seems right on the money. Additionally, he donated 22% of his income to good causes.

So in total, 49% of his income was spent helping others.

This doesn't even include payroll taxes, which I assume he paid on his Columbia professor income. It also doesn't include taxes paid by the corporations from whom he received investment income. How unfair!

</comment><comment><USER3> He clearly said that he used to make much more ["20 times as much" ~ 4M/yr at the peak]. I'm surprised he wasn't eligible for an AMT overpayment credit (which would have driven his liability to 0)</comment>