Interesting commands for the Linux shell - <AUTHOR> https://www.lopezferrando.com/30-interesting-shell-commands/ <comment><USER4> The ones I get a lot of use out of are:

curly brace substitution:

      $ mkdir -p new_project/{img,js,css}
      mkdir -p new_project/img new_project/js new_project/css
      $ mv some_file.txt{,.old}
      mv some_file.txt some_file.txt.old

Caret substitution:

      # systemctl status mysql.service
      -- snip output --
      # ^status^restart
      systemctl restart mysql.service

Global substitution (and history shortcut):

      $ echo "We're all mad here. I'm mad. You're mad."
      we're all mad here. I'm mad. You're mad.
      $ !!:gs/mad/HN/
      we're all HN here. I'm HN. You're HN.

I have a (WIP) ebook with more such tricks on GitHub if anyone is interested: [https://tenebrousedge.github.io/shell_guide/](https://tenebrousedge.github.io/shell_guide/)

<comment><USER5> Curly brace expansion is one of the most useful and overlooked topic in these kind of posts. And I'm always surprised it isn't mentioned with compiling.

g++ -o foo{,.cpp}

<comment><USER6> Worth noting that for the particular case you've cited, you can just use make, even without a makefile:

      ~ cat test.cpp
      #include <iostream>

      using namespace std;

      int main()
      {
          cout << "hi\n";
          return 0;
      }
      ~ stat Makefile
      stat: cannot stat 'Makefile': No such file or directory
      ~ 1 make test
      g++     test.cpp   -o test
      ~ ./test
      hi

<comment><USER5> Well you learn something every day. That's pretty awesome! Is there an easy way to add options? Like -O2

</comment></comment></comment></comment><comment><USER7> Disappointingly, this list treats "yes" like a toy that just prints things over and over, and doesn't mention actual useful uses for "yes", like accepting all defaults without having to press enter.

Practical example: when you are doing "make oldconfig" on the kernel, and you don't care about all those questions:

yes "" | make oldconfig

Or, if you prefer answering no instead:

yes "n" | yourcommand

Also, the author refers to watch as a "supervisor" ("supervise command" \- his words). That is bad terminology. Process supervision has well defined meaning in this context, and watch isn't even close to doing it.

Examples of actual supervisors are supervisord, runit, monit, s6, and of course systemd (which also does service management and, er, too much other stuff, honestly).

<comment><USER8> Unfortunately it doesn't work when trying to connect via ssh and warning about unknown key pops up.

<comment><USER9> That is intentional behavior on the part of `ssh`. You can still disable that prompt within `ssh` (though it's not recommended):

        ssh -oStrictHostKeyChecking=no 192.168.0.100

...or by adding rules in /etc/ssh/ssh_config or ~/.ssh/config

        Host 192.168.0.*
            StrictHostKeyChecking no

</comment></comment></comment><comment><USER9> Some handy tips there but I would recommend changing some of the `find` examples:

        find . -exec echo {} \;      # One file by line

You don't need to execute echo to do that as find will output by default anyway. There is also a `-print` flag if you wish to force `find` to output.

        find . -exec echo {} \+      # All in the same line

This is think is a dangerous example because any files with spaces will look like two files instead of one delimited by space.

Lastly, in both the above examples you're returning files _and directories_ rather than just files. If you wanted to exclude directories then use the `-type f` flag to specify files:

        find . -type f ...

(equally you could specify only directories with `-type d`)

Other `find` tips I've found useful that might be worth adding:

* You don't need to specify the source directory in GNU find (you do on FreeBSD et al) so if you're lazy then `find` will default to your working directory:

        find -type f -name "*.txt"

* You can do case insensitive named matches with `-iname` (this is also GNU specific):

        find -type f -iname "invoice*"

<comment><USER10> The only forbidden characters in a Unix filenames are '/' and '\0'

Want to mess with such a script?

$ touch "$(echo -e -n 'lol\nposix')"

<comment><USER11> One of the cruelest things you can do is a filename that consists only of a combining diacritic (without a glyph that it could combine with). Will break outputs of various programs (starting with ls) in sometimes hilarious ways.

If you're trying it out now and cannot figure out how to delete it: "ls -li" to find the file's inode number, then `find -inum $INODE_NUMBER -delete`.

<comment><USER12> Wow, that's really horrible. I have a file sitting around with a couple of newlines in the name just so I can see how many programs don't cope with it, but I hadn't thought of using a lone combining diacritic.

If anyone wants a command to make one, try

        touch $'\U035F'

(using U+035F COMBINING DOUBLE MACRON BELOW for no particular reason, see [1] for more)

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

</comment></comment></comment></comment><comment><USER13>
       grep -P "\t"

Not criticising the author here, as grep -P is good, but you might not also know that you can enter tabs and other codes in bash by pressing ctrl-v. So you could also type:

       grep "[ctrl-v]TAB"

<comment><USER14> The first alternative is still preferable, since it's actually readable.

You can also do $'\t' in at least Bash (and probably Zsh).

<comment><USER13> Oh, agreed. But the ctrl-v trick is useful in general anywhere where you'd like to put a special character in an input or command.

</comment></comment></comment><comment><USER15> Doesn't matter how long you've been using a GNU/Linux shell, you'll always learn something new every day. Thanks for this.

<comment><USER9> Funny enough I was saying this to a work colleague yesterday when I was looking at a shell script and scratching me head wondering how it was working when a variable named $RANDOM wasn't assigned a value. After a little investigation it turned out Bash (and possibly other $SHELL's?) returns a random number with each call of the $RANDOM variable. Handy little trick.

<comment><USER16> There is also the inbuilt variable $SECONDS, which seconds since the instance of bash was started. Makes it really easy to do 'time elapsed' at the end of a bash script.

        $ echo $SECONDS
        83783
        $ echo $SECONDS
        83784
        $ echo $SECONDS
        83787

<comment><USER17> That's nifty.

        $ echo "$SECONDS / 60 / 60" | bc
        362.38500000000000000000

<comment><USER18> echo "scale=2; $SECONDS / 60 / 60" | bc

# will give 2 digits after the decimal point, instead of bc -l which gives more digits of precision after the decimal point, than we may usually want for this particular calculation.

<comment><USER19> Recently I needed results that included nothing after the decimal point, so resorted to awk to do the math:

       awk "BEGIN { print int($SECONDS /60 /60)}"

<comment><USER18> Interesting. I suppose you had to type Ctrl-D or Ctrl-Z to signal no input to awk, since it expects some in the above command? Never tried running awk without either a filename as input or stdin coming from a file or a pipe. Will check it and see what happens.

Modifying my example from above:

echo "scale=0; $SECONDS / 60 / 60" | bc

might also work, need to check.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> > 6\. List contents of tar.gz and extract only one file

> tar -ztvf file.tgz

> tar -zxvf file.tgz filename

Tar no longer requires the modifier for the compression when extracting an archive. So no matter if it's a .tar.gz, .tar.Z, .tar.bz2, etc you can just use "tar xvf"

<comment><USER21> And the same for compression..

        tar caf foo.tar.xz foo/

The extension of the file after the `f` switch tells tar what compression to use.

c - <USER2>

a - <USER3>

</comment></comment><comment><USER22> As long as we are on the topic of Linux shell commands I would like to share a tip which has helped me, whenever you are using wildcards with rm you can first test them with ls and see the files that will be deleted and then replace the ls with rm. This along with -i and -I flags makes rm just a tad bit less scary for me. Kinda basic but hopefully somebody finds it helpful :)

<comment><USER18> As mbrock says, you can also use echo instead of ls for that. And "echo *" serves, in a pinch, as a rudimentary ls, when the ls command has been deleted and you are trying to do some recovery of a Unix system. Similarly dd can be used to cat a file if cat is deleted: dd < file

And in fact whenever you want to do some command like:

cmd some_flags_and_args_and_metacharacters ...

you can just replace cmd with echo first to see what that full command will expand to, before you actually run it, so you know you will get the result you want (or not). This works because the $foo and its many variants and other metacharacters are all expanded by the shell, not by the individual commands. However watch out for > file and >> file which will overwrite or append to the given file with the output of the echo command.

<comment><USER23> Knowing how to cope with a deleted `ls` and `cat` sounds like a horrible battle scar to carry. How on Earth did you ever get into that situation?

<comment><USER18> Just saw your comment now ...

Was not really an issue for me personally, since it was not on my machine. Used to encounter such situations with some regularity when I was a Unix (and general) system engineer in the field, for a large hardware + Unix vendor, early in my career. The job involved solving all sorts of software problems (sometimes involving many levels of the stack) for customers of my employer. Sometimes, less technically savvy customers, like data entry operators or end users of the Unix systems sold by that vendor to them, would end up doing things like that - deleting critical files, losing backups or not taking backups and then the hard disk or OS crashed, corrupting the data on disk, etc. Got to handle many and diverse interesting problems in this area, and learned a lot from it; some of those skills have served me in good stead later in my career too - troubleshooting, Unix fundamentals and skills, interaction of apps with the OS, etc.

As sethrin says, you don't have to acquire the scars personally. And thanks, sethrin, for those links - should make for some good reading, I'm interested in this area though I do not work on it from some time. It can be good fun and mental exercises in problem solving.

</comment></comment></comment></comment><comment><USER24> MMV is the latest interesting one I've found recently: [https://ss64.com/bash/mmv.html](https://ss64.com/bash/mmv.html)

For example, I can do the following:

       mmv "flight.*" "flight-new.#1"

and this will rename all of my files that start with flight. to flight-new. preserving the file extension. So useful, when you've got a bunch of different files with the same name but with different extensions such as html, txt and sms.

<comment><USER25> Check out qmv from renameutils.[1] Using it you can use your $EDITOR to batch- rename files. It does sanity checking like making sure you don't rename two files to the same name and lets you fix such mistakes before trying again.

[1] - [http://www.nongnu.org/renameutils/](http://www.nongnu.org/renameutils/)

</comment></comment><comment><USER26> I probably should be embarrassed to admit I didn't know about much of the stuff on this page about parameter expansion:

[http://wiki.bash-hackers.org/syntax/pe](http://wiki.bash- hackers.org/syntax/pe)

Bash is insane.

<comment><USER27> It is a horrible language design, which was impressed upon me after implementing it for my shell Oil. Here are some pathological cases I pointed out:

${####}: [http://www.oilshell.org/blog/2016/10/28.html](http://www.oilshell.org/blog/2016/10/28.html)

Each # means a different thing.

${foo//z//}: [http://www.oilshell.org/blog/2016/10/29.html](http://www.oilshell.org/blog/2016/10/29.html)

There are three different meanings of / there.

"${a[@]}" \-- [http://www.oilshell.org/blog/2016/11/06.html](http://www.oilshell.org/blog/2016/11/06.html)

You need 8 punctuation chars in addition to the array name to correctly interpolate it. Every other way gives you word splitting issues.

</comment></comment><comment><USER28> I guess I'm just overly sensitive (and maybe English is not the poster's first language), but I cringe at "the Linux shell"... I have used ksh, bash, (a little) csh, and zsh over the years, and love the architecture that makes "the shell" just another non-special binary that's not unique to the OS.

And yes, a lot of the things mentioned work in a lot of shells, but some don't, or act differently.

<comment><USER29> I would find it a little if it were called the GNU or the GNU/Linux default shell

</comment></comment><comment><USER30> Here are some that I use in Pet:

Description: Remove executable recursively for all files

        Command: chmod -x $(find . -type f)

Description: List files with permissions number

        Command: ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/) *2^(8-i));if(k)printf("%0o ",k);print}'

Description: Output primary terminal colors

        Command: for i in {0..16}; do echo -e "\e[38;05;${i}m\\\e[38;05;${i}m"; done | column -c 80 -s '  '; echo -e "\e[m"

Description: NPM list with top-level only

        Command: npm list --depth=0 2>/dev/null

Description: Show active connections

        Command: netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | sed -e 's/::ffff://' |cut -d: -f1 | sort | uniq -c | sort -rn | head

<comment><USER31> While we're here sharing random cli-fu, you might like `find`'s native ability to spawn processes. Check out the `-exec` flag:

        find . -type f -exec chmod -x {} \+

<comment><USER32> This is more correct than the previous poster's approach, because it will work with files that contain space characters, while the previous poster's version breaks in this situation.

Another approach that works is

      find . type f -print0 | xargs -0 chmod -x

although find's built-in -exec can be easier to use than xargs for constructing some kinds of command lines.

<comment><USER11> You probably want a -r with that xargs. -r makes it exit without executing the command line if stdin is empty.

<comment><USER32> I totally forgot about the case where find gives no output.

</comment></comment></comment></comment></comment><comment><USER33> Nice! Point 23 is a bit misleading though: comm only works on _sorted_ input files. Also, "disown -h" in Point 21 works on bash but not on zsh. Also, in Point 22, "timeout" only works if the command does not trap SIGTERM (or you have to use -k).

</comment><comment><USER34> > If a program eats too much memory, the swap can get filled with the rest of > the memory and when you go back to normal, everything is slow. Just restart > the swap partition to fix it: sudo swapoff -a; sudo swapon -a

Is this true? Not impossible, but I am surprised. If true, what is this fixing? In my naive view (never studied swap management), if at the current time a page is swapped out (and by now we have more memory -- we can kill swap completely and do fine), it should get swapped in when needed next time. As there is more memory now it should not, in general, be swapped out again.

If true we are exchanging a number of short delays later for a longer delay now, which to me hardly looks like a win.

<comment><USER35> I haven't used a swap in the past 10 years and have not noticed any problems. Is it relevant anymore?

<comment><USER36> Yes. You need swap to hibernate a laptop.

<comment><USER11> But is hibernate relevant? I've found suspend to be much more reliable, and good enough in terms of energy consumption (thanks to modern low-power states in CPUs).

<comment><USER36> I find it relevant. I use it to store the state my work laptop is in at the end of the day, and then restore that state when I get back to work the next work day. That way I don't need to keep it switched on when I'm not using it/transporting it.

Is there a better solution to this other than hibernating?

</comment></comment></comment></comment></comment><comment><USER37> nice collection! upvoted for "15\. `namei -l`" alone, which is far too little known.

a better "20\. Randomize lines in file":

      shuf file.txt

instead of

      cat file.txt | sort -R

(sort -R sorts by hash, which is not really randomisation.)

<comment><USER38> And prefer redirection to cat.

        whatever < file.txt

not

        cat file.txt | whatever

Also, there is no need for - or z on GNU tar in t or x modes:

        tar tf whatever.tgz
        tar tf whatever.tar.bz2
        tar tf whatever.txz
        ...

        tar xf whatever.tar.gz
        tar xf whatever.tar.Z
        ...

all work just fine

<comment><USER39> I know whatever < file.txt is slightly more efficient, but there is value is keeping things going left to right with pipes in between. It makes it easy to insert a grep or sort, or swap out a part.

<comment><USER40>
        <file.txt grep foo | sort

<comment><USER41> Ok, if that actually works, that's amazing. Wow.

<comment><USER18> It works because of the general principle that I mentioned here:

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

The shell (not the command) is the one expanding those metacharacters, so (within limits), in:

cmd < file

or

< file cmd

where you put that piece (< file) on the line does not matter, because the actual command cmd never sees the redirection at all - it is done [1] by the time the command starts. The cmd command will only see the command line arguments (other than redirections) and options (arguments that start with a dash). Even expansion of $ and other sigils (unless quoted) happens before the command starts.

[1] I.e. the shell and kernel set up the standard input of the command to be connected to the file opened for reading (in the case of < file).

</comment></comment></comment></comment></comment></comment><comment><USER42> Never knew about _readlink_ for files, but I use

      pwd -P

all the time to get the real full path (no symlinks) of the current directory. Really easy to remember as well, _P_ rint _W_ orking _D_ irectory.

<comment><USER43> That is not the same use case.

You could use this to get the current location of the script being run (not the location where it runs).

       readlink -f $0

</comment></comment><comment><USER44> I really like the "ag" command. Very convenient to grep in a bunch of files filtered by type. Example:

        ag --ocaml to_string

Very fast and simple syntax.

<comment><USER21> Now try rg (ripgrep). It has a much more robust file ignore handling than ag in my experience.

When I last tried, ag couldn't handle this in .ignore file:

        !foo.1
        foo.*

That would ignore all foo.* files except foo.1 in rg.

Also rg is a bit faster than ag for my use cases.

<comment><USER45> Is it possible to register new file formats in ripgrep though (say for example slim files so that I could do rg -tslim PATTERN)? Last time I checked it was somehow possible but way too complicated for so common a task.

<comment><USER21> From its README:

        rg --type-add 'foo:*.{foo,foobar}' -tfoo bar

\---

You simply make the below into an alias:

        rg --type-add 'foo:*.{foo,foobar}'

Or, if the type you need is generic that other users can also use, submit a PR. The developer was kind to except mine.. [https://github.com/BurntSushi/ripgrep/pull/107/files](https://github.com/BurntSushi/ripgrep/pull/107/files) .. it's a trivial 1-line PR.

</comment></comment></comment></comment><comment><USER46> cached version: [https://webcache.googleusercontent.com/search?q=cache:JQ7qBa...](https://webcache.googleusercontent.com/search?q=cache:JQ7qBa09bekJ:https://www.lopezferrando.com/30-interesting- shell-commands/+&cd=1&hl=en&ct=clnk&gl=fr)

</comment><comment><USER47> You'll definitely want to check `free -m` before calling `swapoff` to make sure you really have enough memory for everything in swap, lest you want to invoke the wrath of the OOM killer.

</comment><comment><USER48> Not a command as such, but I recommend skimming the readline man page[0] and trying some of the bindings out to see if you're missing out on anything. I went _years_ without knowing about ctrl+R (search command history).

[0] [http://man7.org/linux/man- pages/man3/readline.3.html#EDITING...](http://man7.org/linux/man- pages/man3/readline.3.html#EDITING_COMMANDS)

</comment><comment><USER18> Not really a single command, it's a one-liner - a pipeline, but might be interesting, not only for the one-liner but for the comments about Unix processes that ensued on my blog:

UNIX one-liner to kill a hanging Firefox process:

[https://jugad2.blogspot.in/2008/09/unix-one-liner-to-kill- ha...](https://jugad2.blogspot.in/2008/09/unix-one-liner-to-kill-hanging- firefox.html)

</comment><comment><USER49> Throw this in your ~/bin as a script named math:

      #!/bin/sh
      scale=4 # results will print to the 4th decimal
      echo "scale=$scale; $@" | bc -l

Now you can do math.

      $ math '1+1'
      2
      $ math '2/3'
      .6666

This is especially useful in shell scripts with interpolated variables:

      x=10
      x=`math $x - 1`

<comment><USER31> Alternatively, you could use an alias:

        # .bashrc
        alias bc='bc --mathlib'

and a .bcrc file:

        # .bcrc
        scale = 4

Actually, this is what my .bcrc looks like:

        scale = 39

        k_c = 299792458                   # Speed of Light
        k_g = 6.67384 * 10^-11            # Gravitation
        k_atm = 100325                    # Atmospheric pressure
        k_h = 6.62606957 * 10^-34         # Planck's constant
        k_hbar = 1.054571726 * 10^-34     # H Bar
        k_mu = 1.256637061 * 10^-6        # Vacuum permeability
        k_ep = 8.854187817 * 10^-12       # Vacuum permittivity
        k_epsilon = 8.854187817 * 10^-12  # Vacuum permittivity
        k_e = 1.602176565 * 10^-19        # Elementary charge
        k_coulomb = 8.987551787 * 10^9    # Coulomb's constant
        k_me = 9.10938294 * 10^-31        # Rest mass of an electron
        k_mp = 1.672621777 * 10^-27       # Rest mass of a proton
        k_n = 6.02214129 * 10^23          # Avogadro's number
        k_b = 1.3806488 * 10^-23          # Boltzmann's constant
        k_r = 8.3144621                   # Ideal gas constant
        k_si = 5.670373 * 10^-8           # Stefan-Boltzmann constant
        k_sigma = 5.670373 * 10^-8        # Stefan-Boltzmann constant
        k_mt = 5.97219^24                 # Mass of Earth (Tierra)
        k_rt = 6.371 * 10^6               # Mean radius of Earth (Tierra)

        pi = 3.1415926535897932384626433832795028841968

        # requires --mathlib
        define t(x) { return s(x)/c(x); }
        define as(x) { return 2*a(x/(1+sqrt(1-x^2))); }
        define ac(x) { return 2*a(sqrt(1-x^2)/(1+x)); }
        define at(x) { return a(x); }
        define csc(x) { return 1/s(x); }
        define sec(x) { return 1/c(x); }
        define cot(x) { return c(x)/s(x); }

<comment><USER32> It's not nearly as flexible as bc overall, but GNU units has lots more constants built-in and also trig functions.

I checked and it has all of the ones that you mentioned, sometimes under slightly different names. I was surprised that e is defined the elementary charge rather than Euler's constant!

<comment><USER11> units(1) is my go-to calculator for everything. Really nice tool. I recommend

      alias units="units --verbose"

because the verbose output is much less ambiguous.

<comment><USER32> Nice, thanks for the suggestion.

</comment></comment></comment></comment></comment><comment><USER50> ctrl-r for fuzzy searching your history is all you really need to know.

</comment><comment><USER51> Related Resource: [http://www.commandlinefu.com/commands/browse](http://www.commandlinefu.com/commands/browse)

</comment><comment><USER52> CentOS 7 specifies `man rename` : rename [options] expression replacement file...

The rename example fails with "rename: not enough arguments".

<comment><USER53> Unfortunately, there are two incompatible rename programs in the wild. :(

Debian ships this: [https://metacpan.org/pod/distribution/File- Rename/rename.PL](https://metacpan.org/pod/distribution/File-Rename/rename.PL)

Most(?) other distros ship the one from util-linux: [http://man7.org/linux/man- pages/man1/rename.1.html](http://man7.org/linux/man-pages/man1/rename.1.html)

</comment></comment><comment><USER54> Thanks, every once in a while these lists are useful!

</comment><comment><USER55> .... or just use a modern os where all this stuff is intuitive and easy :P</comment>


IPods and iPhones banned in the Gates Household - <AUTHOR> http://www.businessinsider.com/melinda-the-ipod-is-banned-in-the-gates-household-2009-3

<comment><USER2> The one good thing about Microsoft is that they always eat their own dog food — it's made them build better products over the long run. And I say this as an Apple fanboy...</comment>


1000 Words A Day - <AUTHOR> http://uberjack.com/2013/09/1000-words-a-day/

<comment><USER2> This is really motivating. I have been putting off writing and it's been killing me. I keep getting all these excuses to not start now but I will probably have to make a commitment like this and stick to it. Thanks for sharing.

<comment><AUTHOR> It's tough, but it's good to have others to look to. Thanks for the reply.</comment></comment>


Of Course Gas Stations Will Use Facial Recognition Tech to Serve 'Relevant' Ads - <AUTHOR> http://www.theatlantic.com/technology/archive/2013/11/of-course-gas-stations-will-use-facial-recognition-tech-to-serve-relevant-ads/281118/

<comment><USER2> _GAP Sign: Hello Mr. Yakamoto and welcome back to the GAP!

John Anderton: Mr. Yakamoto?_

\- _Minority_Report_

I'm surprised we haven't seen overt retail use of face recognition yet.

</comment><comment><AUTHOR> This is just too creepy.</comment>


By sharing self-driving cars we can cut car population to a third - <AUTHOR> http://dspace.mit.edu/handle/1721.1/82904

<comment><AUTHOR> From the Abstract:

... we consider replacing all modes of personal transportation in a city such as Singapore with a fleet of shared automated vehicles, able to drive themselves, e.g., to move to a customer's location. Using actual transportation data, our analysis suggests a shared-vehicle mobility solution can meet the personal mobility needs of the entire population with a fleet whose size is approximately 1/3 of the total number of passenger vehicles currently in operation.</comment>


Will Shaq turn Twitter into a mainstream success? - <AUTHOR> http://www.alleyinsider.com/2008/11/twitters-new-mvp-following-shaq-is-fun

<comment><USER2> "THOSE R NOT TYPOS, JUST SAVN MONEY, MORE U TYPE MORE U PAY, LOL"

That feels poignantly brilliant.

<comment><AUTHOR> Yeah. Love it. Hope he keeps it up.</comment></comment>


Ask HN: Freelancers, how do you collect payments? - <AUTHOR>

Those that don't use Elance, Odesk, etc, how do you collect payments? <comment><USER2> The old fashioned way: invoices, usually emailed. Payments arrive in the form of paper checks, which get deposited. O. G. OLD SCHOOL.

</comment><comment><USER3> I send an invoice.

I usually know right away if the customer will pay or not, since I always invoice every 2 weeks.</comment>


Indico – Open source tool for event organization, archival and collaboration - <AUTHOR> https://getindico.io <comment><USER2> _[Disclaimer: Indico Project Leader here]_

There are over > 200 active servers world wide. It's used by many Universities research labs (mostly in High Energy Physics, for historical reasons) but also in organizations such as ESA and the United Nations.

Since we're celebrating the Web's 30th birthday these days, it's worth listing some of the other valuable Open Source projects CERN contributes back to society, such as Invenio, Zenodo and ROOT just to mention a few.

<comment><USER3> Maybe you could take ROOT back though. I think a lot of grad students would thank you. I know 2007-2011 me would.

(I'm _mostly_ kidding)

<comment><AUTHOR> It's getting better! But yes, releases before 6.0 are best viewed from a safe distance.

</comment></comment></comment><comment><USER4> I periodically help to organize meetups with invited speakers and am looking for a solution that would help me manage communication with all guests + event attendees.

I would like to track - which guests have been confirmed, which have not yet. With whom we have had an pre-event call, etc. Would Indico work for this? Are there better tools?

<comment><USER2> There is an "invitation" and even a "check-in" feature. You can also tag participants using your own custom fields. So, I'd say that's possible.

</comment></comment><comment><USER5> This is amazing, just what we've been looking after to setup for a local communal.

Can this handle multiple organizations in the same installation? (Basically giving user access to organization to handle their own events)

<comment><USER2> Yes, events are organized in a category tree. You can set permissions with variable degrees of granularity. In your case you could have a category per organization.

<comment><USER5> Thanks a lot, I'll try that immediately!

If this works, we can contribute with a lot of usability improvements, more payments plugins and Swedish translation.

<comment><USER2> Wow, that would be great! Feel free to pop by our IRC channel (#indico on Freenode) or forum ([https://talk.getindico.io](https://talk.getindico.io)) if you have any questions/suggestions.

</comment></comment></comment></comment><comment><USER6> Would love to know if anyone is actively using this, especially with some kind of G Suite integration?

<comment><USER2> As I mentioned in my reply to OP, > 200 known servers. There's no built-in G-Suite integration, but there's always the possibility that someone will write a plugin for it.

<comment> ThiefMaster- And if anyone is interested in contributing - be it G-Suite related or anything else: Feel free to pass by our IRC channel, #indico on Freenode!

</comment></comment></comment><comment><USER7> it's just too complicated at the first glance. Too much options.

<comment><USER2> Would you mind elaborating? What seems complicated to you?</comment></comment>


Mimicking an impact on Earth's early atmosphere yields all 4 RNA bases - <AUTHOR> https://arstechnica.com/science/2017/04/mimicking-an-impact-on-earths-early-atmosphere-yields-all-4-rna-bases/ <comment><USER2> Ribonucleotides are very very very reactive / unstable - definitely in today's atmosphere / world, and likely even in a neutral / reducing abiotic world. (almost every surface we touch today will be left with very robust RNAses, for instance, which makes working with RNA a particularly fun experience in lab.., but I digress).

I am struggling to imagine a clear path from ribonucleotide synthesis during an atmospheric impact to polymerization (which again requires protected / specific conditions), to the point where the randomly assembled RNA polymerase has catalytic activity, and specifically, ability to self replicate.

I recognize that the article is not claiming the nucleotides can polymerize, etc. Still, I fail to see how enough nucleotides could be created through such processes and remain stable through their descent to the surface to form polymers / ribozymes.

I understand that these are probabilistic events, so a low probability event is still possible.

However, my contention is that atmospheric synthesis of ribonucleotides, followed by polymerization into a catalytically active RNA polymer (which is equally unstable) which then has to have a readily accessible pool of mono- nucleotides or peptides / amino acids to act on, all during high atmospheric impact / subsequent descent to the surface, seems, well, challenging to envision.

So, to summarise, I think this is a cool result, but I don't think it moves us forward much in terms of understanding how life got started. And I speak as an advocate of the RNA world hypothesis.

<comment><USER3> I don't see any likelihood of RNA polymers forming during the impact. Just monomers. The monomers themselves are fairly stable in dry, cool locations.

Presumably said monomers are synthesized in the blast, land somewhere that favors polymerization without too many of them being degraded (glycosidic bond breakage, modified base or sugar). And presumbly that location is moist with high surface area and a thermal cycle, say porous rock near a hydrothermal vent.

</comment></comment><comment><USER4> Let's fire PALS at TRAPPIST planets, so we don't get disappointed as to whethher we find life there.</comment>


"So many people spend their working lives doing jobs they think are unnecessary" - <AUTHOR> http://www.theguardian.com/books/2015/mar/21/books-interview-david-graeber-the-utopia-of-rules <comment><USER2> Most people who criticize "bullshit jobs" simply lack the perspective to see how these jobs are critically important for society. Take the list from the article itself, one of the "bullshit jobs" listed is actuary. Well, without actuaries, insurance would not be priced correctly, and would be prohibitively expensive or too cheap and insurance companies would go out of business. Either way, insurance would be less available than it is today.

And what does a world with less insurance look like? Insurance lets people trade a small amount of money for protection against a loss of a life-ruining amount of money. Without health insurance or fire insurance, people have to save up as much money as they can in the case of a catastrophic accident which they probably won't have, and possibly declining to spend that money on important things like higher education, etc. And when people are underinsured, they're constantly in a state of baseline anxiety, worry about "what ifs."

Is that the world this author wants to live in? One where he's constantly worrying about what might happen if he gets sick? That's not a world I want.

<comment><USER3> When most people say "bullshit job", it seems to me like they really mean "job that could be solved by a well-built machine". Farming used to be a bullshit job until we built gigantic combines and automated watering systems and agricultural data storage systems, and now our farming problems are electronic, not logistic. (except for water, but that's another story.)

So for the example of an actuary, ideally their job would also be automated by an advanced program. Not an impossibly advanced one, mind you - it certainly would not have to be smarter than even the 50th percentile of programs out there today. If we took every actuary working 9 to 5, and instead threw all of their tens of thousands of daily working hours at coding a program to do their job, how soon do you think we could automate an entire industry?

This extends to all jobs, eventually. You are seeing it happen today, with farming. Tomorrow, we will see taxi and Lyft drivers replaced with self driving cars, and mail/package delivery given entirely to robots and drones.

The moral of the story is we should automate jobs that people don't like doing.

I don't appreciate the fact that you run so far away with this doomsday scenario of "no insurance means we all get sick and die". Try to focus on the discussion the article wants us to have, not on the side-scenario that you want to use to rationalize actuaries or other poorly optimized vocations.

<comment><USER4> > The moral of the story is we should automate jobs that people don't like > doing.

who decides what jobs people dont like doing? Just because you might not like being a taxi driver, farmer, actuary, etc, doesnt mean you should demolish the job with automation -- plenty of people find these jobs provide a fulfilling workday and are passionate about them. any automation there would deprive them of doing them as a profession, which is somewhat sad.

ill take it a bit further: how would we feel if tomorrow, we woke up and some guys from stanford published new research on AI which can automagically produce working software given a set of requirements -- and they give it away for free. the role of software development is no longer required, since this AI can do the job in seconds without bugs (you know, assuming requirements can be written without bugs!). what then of software developers? our jobs no longer make economic sense. you'll need to find one of those jobs not solved by a computer.

<comment><USER5> Allow me to turn it back on you: what if your sentiment had prevailed at any time during our current revolution in automation? Say a group of factory workers protest automation not because it puts them out of a job, but because they like what they do (a totally unnecessary distinction - part of the reason I like my job is that it lets me eat and pay bills). Are you sympathetic to preventing automation then? Or is our current level of automation just right because it has presented you with the least amount of challenge to your job?

No, we should encourage automation full-tilt. Jobs are lost every day to automation, and the promise of a world where the workweek is short to nonexistent is one we should embrace, not reject because some people like their jobs. If we work hard enough to bring this to fruition, the actuary can crunch numbers on his own time if he wants -- or is free to explore thousands of other hobbies.

</comment></comment></comment></comment><comment><USER6> The entire asset management industry is a candidate for the bullshit job title. Within the equity asset class for example, aggregate performance is worse than passive investments and there is ample evidence that substantially all managers are unable to actually provide the service they are selling.

As an industry, it effectively taxes savings and distributes those taxes to the employees within the industry, sometimes as eye watering salaries and bonuses.

One may argue that the consumer is free to choose not to consume the service, but the reality is that most countries have mandated retirement savings mechanisms that efficiently funnel employee pensions and savings into the industry.

[1] [http://www.umass.edu/preferen/You%20Must%20Read%20This/Picki...](http://www.umass.edu/preferen/You%20Must%20Read%20This/PickingWinners.pdf)

[2] [http://web.stanford.edu/~wfsharpe/art/active/active.htm](http://web.stanford.edu/~wfsharpe/art/active/active.htm)

<comment><USER7> Wow, I'm surprised to see a comment so critical of Venture Capitalists on HN. But I guess it's fair: The VC industry as a whole badly underperforms the S&P index on a risk-adjusted basis. Or aren't those the asset managers you were talking about?

<comment><USER6> Well VC is a very small part of the asset management industry and you are correct that that's not really the area I was referring to.

The bulk of asset management is in listed equities and government/corporate bonds and this is what I was primarily referring to.

</comment></comment></comment><comment><USER8> I read this as a rant from someone saying technology hasn't come far enough, but spent decades of his own time not doing anything about improving technology for society himself. He sounds like a consumer, complaining about the service he is receiving. The fact that he could have lived his bohemic lifestyle shielded from this so long is evidence of how well it has been working. There is certainly a problem with inefficiency, but usually that is driven by the humans inside of an organisation, people, like him, who get comfortable with their position and who only think about their here and now and not about the long term impact on themselves and society in general. Now, at this age, he comes up with theories and ideas of that sounds like that of a student with a naive understanding of the world, with 'better' ways of doing things and blaming 'the powers out there' on the problems, it's no wonder that he gets widespread support from the student age populations of social networks.

<comment><USER9> instead of insulting Graeber, what do you think about his ideas? For example, do people think their jobs are worthwhile?

</comment></comment><comment><USER10> Instead of asking ourselves which particular jobs are "bullshit" and which are not, maybe we should ask why we need or want "jobs" at all. If every citizen received some minimum universal basic income, what might we do with our time instead of going to jobs we hate?

I think the point might be that we've reached a state of technological progress where many of the functions of a modern civilization can be handled by a very few people. Maybe it's time to redefine what we mean by "work" and why we do it.

[https://contributoria.com/issue/2014-12/543d1c2487628e9a6500...](https://contributoria.com/issue/2014-12/543d1c2487628e9a6500001b)

<comment><USER11> Wouldn't a UBI simply be inflationary? That is, rather than making 0 you make 1500 (say). But since everybody is making 1500, then it would be the same as making 0 again.

So unless we have strict blocks on pricing things, UBI seems nonsensical.

<comment><USER12> At the very least, it skews peoples' motivations for work. I.e. Do nothing and get 1500, or work as a low-wage say woodcutter/garbage man, and get 1600. You're effectively doing a shitty 9-5 job so you can get 100 (or whatever $X) more than the guy next door doing nothing all day.

People say that's liberating and "equality" for all, buy I say it's completely the opposite and directly unfair to a lot of people.

And now that I re-read your post about it being an inflationary scenario, it makes more sense. All of a sudden, you have a reduction in individuals willing to do hard/hateful labor for a small amount more than basic income. This reduces their supply, and thus the salaries go up. Essentially, it sounds like it would make 1500 the new 0 as you put it. Not sure where to follow that train of thought further, though.

Anyone care to continue it from there?

<comment><USER13> There is some reduction in incentive to work, but the idea is that most people will still want more money so they'll keep working.

Also you're assuming people have the right incentives today. Is working two minimum wage jobs to make ends meet really what you want people to do?

This is really about changing the relative negotiating power between employers and employees. Having some fallback income makes it easier to take time off to go to school, start a business, or find a better job. Also it goes right back into the economy as revenue for some business, so it's hard to see how it can be bad for business.

</comment></comment></comment></comment><comment><USER14> I can't say I'm surprised and I much agree with this. I've held many positions in both the private and public sector. While the public sector was always inefficient (honestly it was significantly worse than I pictured before starting...far far worse like you could easily eliminate hundreds of jobs without impact worse) private sector is pretty bad in many places as well.

It's also amazing what networking can do to get around many processes that people normally go through which kinda shows how worthless they are. So many times I've been told something that would take weeks or months ended up taking days or hours because I knew someone who could put me on "the rush list" which typically bypassed much of what was required in the first place.

<comment><USER15> > While the public sector was always inefficient (honestly it was > significantly worse than I pictured before starting...far far worse like you > could easily eliminate hundreds of jobs without impact worse) private sector > is pretty bad in many places as well.

I've worked in a public sector department that was run like a business. It was a contact centre that provided information and assistance with various government functions, but to do so it, it competed with private sector providers at open tender for the business of those various government departments.

Of course, it had a massive price advantage, as it was a) small and focused and b) not required to turn a profit.

That aside, it was run like a business, because if any customers were significantly displeased, the clients could easily move to another provider. So the focus on quality was high.

It ultimately provided a quality service to users, cheaply. But, and this was the important takeaway for me, the person running it burned all of his political capital protecting this highly performant section of a ministry from interference from other mandarins within the ministry.

He was a good man, and he expended his career protecting efficiency in the midst of public sector "meh".

Anyway, my long winded point is that public sector isn't inherently inefficient, and private sector isn't inherently efficient. Any sufficiently large organisation sprouts a self-sustaining bureaucracy. Public or private. In my mind, it's merely correlation that public sector organisations are typically inefficient. The causation is organisational complexity (that is, a large strata of middle managers)

<comment><USER16> Graeber's argument in the book is that businesses are actually run like the government, ie are bureaucratic institutions (that pretend to be "markets"). He has an interesting story about how they were modelled on the post office originally, when large businesses arose in the late nineteenth century.

<comment><USER17> In Europe, companies were originally gifts of a private trading monopoly made by a monarch. The Post Office model happened a lot later.

There should be more of a distinction between "efficient" used to mean "gets things done effectively and invents new and clever ways to get things done while saving everyone time and money", and the capitalist meaning of "accumulates profits by screwing _everyone_ except senior management and perhaps the stockholders."

It's perfectly possible for the latter kind of "efficient" company to be very inefficient in the first sense.

In fact if you have a market with a very limited number of established large players, it's pretty much the default.

</comment></comment></comment></comment><comment><USER18> " _in 1930, economist John Maynard Keynes predicted that by the end of the century technology would have advanced sufficiently that in countries such as the UK and the US we'd be on 15-hour weeks. "In technological terms, we are quite capable of this. And yet it didn't happen. Instead, technology has been marshalled, if anything, to figure out ways to make us all work more. Huge swaths of people, in Europe and North America in particular, spend their entire working lives performing tasks they believe to be unnecessary._ "

Sounds about right actually...

<comment><USER19> Interestingly enough, for most white-collar professions, _actual_ work probably takes about 15-20 hours a week. The rest of the time is spent socializing with coworkers, navigating massive corporate bureaucracies, browsing the web, and so on.

</comment></comment><comment><USER20> My takeaway from the article and also based on personal experiences is that governments have shielded themselves from automation. There's just insane fat wherever you look

<comment><USER18> I'd go as far to say that this isnt only a problem in governmental institutions but also in many private companies.

Since employment is the key growth factor/number that is regarded (you need money to live), it is vitally important to make sure companies will hire as many people as possible, thus giving benefits going into that direction.

So even if you sit on your butt browsing HN, imgur, what not all day long (which many do), you'll get paid at the end of the month, and that's "all that matters".

Seems to be rather inefficient use of time, use of life.

</comment></comment><comment><USER21> David Graeber pointed out on his article "The answer clearly isn't economic: it's moral and political"

I don't agree. The answer is strictly economic. There are bullshit jobs just because people want to amass fortunes. The problem is not to have a guy working as a "legal consultant" or as a "ska drummer" but to have thousands of them doing the same thing. There's a point when a 101 legal consultant adds no value, but the job still exits. Why? because companies in that industry need to grow and to do so they expand beyond the target to whom they add value. This is it, they expand where the service is not actually needed.

So services/products expanded to targets to whom they add no value is when bullshit jobs are created, and the reason behind this is just to make more money instead of solving problems to the world.

</comment><comment><USER22> We are living in a post-industrial service economy. Many jobs are not unnecessary, just routine and unglamorous.

<comment><USER23> I live in Sweden and right now we are automating the service industry as well.

You order fast food from a touch screen, you buy your train tickets from a machine and the supermarket cashier is being replaced with a self-checkout.

Meanwhile I still have about 50+ working hours every week. I pay about 65% of the money I make in tax so the people that were laid off through service automation can receive unemployment benefits.

I think there is room for improvement within this economic system.

<comment><USER24> However, the good part with buying train tickets from a machine is that the machine always knows your local language (in this case, Swedish, and English, and possibly a variety of other languages). This is not necessarily true with low-paid service workers. I'm pretty happy to buy my Arlanda Express tickets from a machine. You'd never have enough service booths if they had to have people in them.

</comment></comment></comment><comment><USER25> Honest in places, but overlooks the Tyler Durdens who have a 'rapscallion' element to their character and behind the front of work, they dutifully play to make the day go by quicker. Also see: dossing.

</comment><comment><USER26> The real problem here is complexity - people don't understand what is the goal of what they do, and often there really is no goal because their bosses do not understand the system too.

Maybe we should start treating law and bylaws as code and fight the complexity with decoupling, encapsulation, no side effects, etc?

<comment><USER27> That would presume we are all collectively interested in reducing complexity and work. Too often these complexities exist to benefit a small minority at the expense of the majority. For example: [http://techcrunch.com/2013/03/27/turbotax-maker-funnels- mill...](http://techcrunch.com/2013/03/27/turbotax-maker-funnels-millions-to- lobby-against-easier-tax-returns/)

<comment><USER26> Agreed - this will not be that easy to fix, but still if we want to fix it than we need to think about reducing the complexity.

I have also a very tentative idea that this might actually lead for more democratic organizations - because removing the inefficiencies that come from the complexity will bring a lot of advantage for the companies that would do it - and this will require more creative thinking and good will from everyone in the organization. This is just like science would not thrive in a too autocratic institution - so the universities had a lot more internal democracy than for example production companies. And today production companies will have the same need for creativity and good will as the universities had in the past.

</comment></comment></comment><comment><USER25> Form filling is like a muscle you have to flex. If you insulate yourself from the well oiled machine of the postal system for too long, it has a habit of reminding you of its presence. Usually this reminder comes when you least expect it. When you have a caffeine headache, when you cut down the enormous tree in the garden, when you've finished a Sudoku puzzle, or when you've just finished a lofty tome ― the letter will arrive when you have brain fog, and you better be prepared. This is why we have 'busy body' types who have nothing better to do than play with the postal system. They fill out those surveys you get to bulk up broadsheet newspapers, and send away for competitions. Their form filling muscle will not be allowed to atrophy.

</comment><comment><USER28> A more humorous/playful take on bullshit jobs

[http://www.jamesaltucher.com/2013/04/why-do-people-hate- thei...](http://www.jamesaltucher.com/2013/04/why-do-people-hate-their-jobs/)

</comment><comment><USER29> The supporting material mentioned in the article make for exceptional reading:

[http://www.lrb.co.uk/v37/n05/john-lanchester/the-robots- are-...](http://www.lrb.co.uk/v37/n05/john-lanchester/the-robots-are-coming)

[http://www.futuretech.ox.ac.uk/sites/futuretech.ox.ac.uk/fil...](http://www.futuretech.ox.ac.uk/sites/futuretech.ox.ac.uk/files/The_Future_of_Employment_OMS_Working_Paper_1.pdf)

</comment><comment><USER30> An interesting thing to ponder is how people employed in imminently- automatable jobs will react. Bearing in mind that no one can openly oppose automation when it makes business sense. So barring retraining to a still- needed skill, what might they do instead? I feel like there is some interesting application of game theory to be had here.

</comment><comment><USER31> Here's a possible cure for user-facing Government bureaucracy - you should never have to tell the Government something it already knows. This requires that government agencies get their data interconnection act together. Most companies already do this.

It's basically what Salesforce does.

</comment><comment><USER32> I found very little meat in that article... Right when I had been excited about points that seemed like they were about to be made, the article unfurled into a biography and promotion of Graeber's next book :/

</comment><comment><USER33> The interesting point that no one is discussing here is his assertion that the research program was changed in reaction to the hippies, to focus on tools of social control instead of ways to reduce time in wage labor.

</comment><comment><USER34> The way I understand it is this (sorry,a bit long winded):

The world is run by gigantic bureaucracies and owners of capital - who all value continuity and predictability above all else. Given that the world has historically been a madhouse of crazy, and most of us are doing _materially_ better than before, it's hard to pinpoint exactly what would be wrong with these priorities. "May you live in interesting times" is a curse, and for a good reason.

Sadly, a specific vehicle of stability and predictability is disengaging most adults from the majority of their waking hours. After the maslovian needs of food, sex and shelter are fullfilled the average 9-5 desk job does not seem to provide in average fulfillment for the higher level needs.

One element of establishing stablity is organizing work in the large scale in industrial taylorian fashion where the labor input of the individual _position_ is predictable. The easiest way to do this is to divide the work of the organization to small enough pieces so that individual work responsibilities are easy to communicate, transfer and, perhaps even more important, _measure_. Small, piecemeal duties are often felt as non-important since they are so simple to perform and thus not mentally fulfilling.

The three stages of engagement from best to worst are commitment, compliance, conflict - most employers are satisfied by compliance, and one of the easiest ways to statistically enforce compliance is through observing the work directly or through reports: thus we get the endless reporting. The reason this works even if no-one is reading the reports 24/7 is that most people are extremely uncomfortable with cognitive dissonance of doing one thing and saying the other, and usually align their actions with their reporting.

Thus we get the disengaged, prozac-crunching desk jokey of the early 21st century.

I think the best leaders recognize the critical difference between commitment and compliance for organizational output. Thus we get the start-ups "we want only passionate people here" spiel - they aim for organizational commitment from composing the organization from atomic committed individuals. But this does not work in the long run unless the organization culture as a whole is dedicated to maintaining commitment. There are various cultural tactics to achieve this. Most of them are about maintaining a team spirit and there are agressive and compassionate ways in which to achieve this. But since it's about culture and human condition I'm not sure if there are any text-book approaches to maximizing organizational commitment unless one engages in full- scale brain washing as employed by cults and historically by some states.

Since there is no ethically recognized textbook-standardizable sure-fire "commitment tactic" it is understandable to me most choose the "compliance tactic".

I don't believe these are necessarily conscious choices, but rather a product of cultural evolution of various industrial management memes.

<comment><USER35> In my current employment, the environment provided me doesn't exactly feed commitment, but it at least marginally allows for it. We are soon moving office and the new environment is definitely one of those "the best you can hope for its compliance" type environments. But I have a hard time trying to tell my boss that without incriminating myself.

</comment></comment><comment><USER36> 70% of U.S. workers are not engaged at work

[http://www.gallup.com/services/178514/state-american- workpla...](http://www.gallup.com/services/178514/state-american- workplace.aspx?utm_source=WWWV7HP&utm_medium=topic&utm_campaign=tiles)</comment>


One Hundred Users in Two Weeks - <AUTHOR> https://joecmarshall.com/posts/one-hundred-users-in-two-weeks/ <comment><USER2> > The disadvantage to this strategy is that it's a one-shot thing. You can't > keep spamming these forums with the same stale content because it's both > ineffective and pretty offensive. To move forward, we'll need another > content strategy.

Check out your submission history, lol.

To be honest, I don't like that kind of posts. There is no value in them at all. It's the type the of posts where people claim they've built a startup in a day/week. Seriously, it's harming more than helping. What you have achieved is some market validation, but still, you don't know if anyone is gonna pay. Your "users" don't actively use your service, they just subscripted to your newsletter, probably that would be more accurate, but it wouldn't bring so many clicks to your blog, wouldn't it?

</comment><comment><USER3> Interesting product, but possibly more telling about how much developer inventory in being brought into the market, often with significant debt attached, that is struggling to find work.

I'm a bit nervous due to remembering friends that went from developer jobs to working at a grocery store during the dotcom crash. Hopefully the industry will continue to grow, because especially boot camp degrees are not very transferrable to other professions.

<comment><USER4> Yes, it seems there is a lot of talent left out in the cold. It does seem to be an issue of supply and demand, but the market I am in is starving for senior developers, but swimming in entry level developers. (Good juniors with 1-2 years of experience are hard to find too, but not as hard as senior talent.)

I suspect there will be another winnowing of software development jobs. However, we aren't back at the dot com days when it felt like there was so much demand that hiring standards fell. If anything it feels like hiring standards (match all of these technologies and your experience must have been at scale) are higher than they have been in the past. (Could just be an artifact of the jobs I have applied to in the past vs recently.)

<comment><USER5> I think the problem is that initial training for developers usually drains significant developer resources. For example, the best onboarding is typically done by well qualified developers who then devote significant time ~20-30% to the new hire. That's effectively taking 20-30% of a senior developer's salary and giving it to the entry-level developer. IMO it is an investment that pays off but it is still a large investment that may be difficult to swallow for start-ups and small/medium sized companies who cant absorb $XXX,XXX into the abyss.

<comment><USER4> That's a good point. The question is, is the return from training up someone worth it? Do they spend more time at the company than someone hired in with more experience? Do they get the company more in income than they cost in training?

The cost is in the near future and fixed, whereas the benefit is in the future. Which is why a company can't answer those questions, and often goes with the safe route and tries to poach or hire a senior person (which, honestly, is just a junior person who has made mistakes and learned on someone else's dime).

However that has its own risks because it's not like interviews are cost free.

I just think there's a tremendous market flaw that someone is going to take advantage of by finding talented entry level folks and hiring them for less and then making money somehow. That or eventually entry level folks will leave the profession of software development.

</comment></comment></comment></comment><comment><USER6> I have five websites with hundreds to thousands of users. The first hundred to every website are the poor souls who have to experience the broken interfaces, find the bugs, and eventually leave.

But they are also the most valuable because that lets you scale. Learn why each customer left and fix it. In a few hundred customers you'll have the next thousand or tens of thousands.

</comment><comment><USER7> Where did you get the job listings from?

</comment><comment><USER8> This reads like a 13 year old who read some buzzwords regarding "lean startups", made an HTML input box, spammed some social media sites, then patted themselves on the back and wrote this article.

</comment><comment><USER9> Congratulations. In my opinion, by keeping it simple you are in fact innovating.

</comment><comment><USER10> Nice one! I just signed up myself :) keep it up</comment>


Are Tim Cook's Days as CEO Numbered? - <AUTHOR> https://markstcyr.com/2017/10/08/are-tim-cooks-days-as-ceo-numbered/ <comment><USER2> I think the author misses a few key points here. A) as long as apples stock price continues in an upward trend Cook is safe. B) lack of lines at product launches is most likely engineered by Apple itself. It no longer wants to be seen as a company that caters to first adopters and fringe users, any one should be able to get access to the next product. This is supply chain optimization, not lack of innovation. Lastly, we are in an inbetween period when it comes to consumer products. The current form factor for most of Apple's product offering is going to see major shifts in the very near future, only the tech needs to catch up. Apple, or any company can't really do much more with what they have. Better processors, cameras, display pixel resolution, sure. Remove the headphone jack, add an oled touch bar, why not. In my mind Cook is riding this out well. Apple has had a lot of missteps, both pre and post Jobs, but I don't see any indication that Cook is anywhere near on his way out.

</comment><comment><USER3> No they are not.

It's not perfect, and Apple under Tim had no ideas at all, but the money is pouring in and nothing else counts. Just ask Steve Ballmer.

</comment><comment><USER4> I can't get over the sleaziness of this site...</comment>


'Volcano' on gulf sea floor: Containing the longest known offshore oil spill - <AUTHOR> https://www.washingtonpost.com/graphics/2019/national/couvillion-gulf-oil-spill-containment/ <comment><USER2> That Taylor company is basically just one employee - the wife of the founder (since passed). She's very politically connected in the area, and I'm surprised she hasn't been able to make this go away before now. Hopefully the good guys will win one.

</comment><comment><USER3> What a great story. It's so easy to lie about environmental troubles in the oil industry, especially if they aren't visible on the surface.</comment>


What is Gradual Typing? - <AUTHOR> http://ecee.colorado.edu/~siek/gradualtyping.html

<comment><USER2> This seems to be what Common Lisp does, or am I missing some subtlety?

<comment><USER3> It seems they're trying to formalize what Common Lisp and other languages do.

</comment></comment><comment><USER4> Similar, but different:

[http://www.haskell.org/ghc/docs/latest/html/libraries/base/D...](http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data- Dynamic.html)

</comment><comment><USER5> I notice that they left Objective-C out of their examples, which is curious because of how close it is to what they're advocating.</comment>


Steve Jobs and Flash Get Personal - <AUTHOR> http://www.foxtrot.com/

<comment><USER2> Wow. It wasn't until reading this the second time I caught the reference to Flash (the plugin). I feel silly.

</comment><comment><USER3> Sad thing is that apple usually doesn't have a sense of humor. IIRC someone actually got banned from the app store from critiquing apple.

<comment><USER4> If you mean <http://news.ycombinator.com/item?id=1205239> it was probably for the chargebacks.

</comment></comment><comment><USER5> Permalink: <http://www.foxtrot.com/2010/03/03212010/></comment>


Study shows High Protein diets may increase risk of cancer - <AUTHOR> http://www.cbsnews.com/news/meat-dairy-may-be-as-detrimental-to-your-health-as-smoking-cigarettes/

<comment><AUTHOR> The abstract for the study is here: [http://www.cell.com/cell- metabolism/abstract/S1550-4131%2814...](http://www.cell.com/cell- metabolism/abstract/S1550-4131%2814%2900062-X)

Unfortunately it's not clear from the article what else was being ingested... is it just high protein with little fat and carbs? Is it high protein with high fat and carbs? Have the mice been fed a sludge made of meat and sugar? Without those details, it's hard to judge whether this is relevant to people who are, for example, eating a high-fat diet that also happens to be high- protein, but has very little sugar. That they link high-protein to diabetes is a bit odd, for example, unless they're also giving a lot of sugar to these mice...

<comment><USER2> This study was actually of humans, not mice but I too am suspicious of the results. Unless they locked these humans up in a cage like a mouse for 20 years and then fed them specific and controlled diets, the results are dubious. Self regulated and self reported diets are notoriously inaccurate.</comment></comment>


A portable high-resolution timestamp in C++ - <AUTHOR> https://blogea.bureau14.fr/index.php/2014/06/a-portable-high-resolution-timestamp-in-c/ <comment><USER2> If you want to see what a rabbit hole looks like, parse this sentence from the article :

 _" The beauty of this is that with a precise enough timer, you also solve the multithreading issue because nothing ever happens at exactly the same time."_

In the first part the author expresses a technique which narrows the window for failure, and adds a fallacy which sounds good but isn't true.

This way of thinking (narrowing windows to the point where they are probabilistically rare "enough") has been the source of many bugs.

Urs Hoezle (VP at Google) once said something I really liked which was "At a large enough scale, statistically impossible things happen every day." It is painful to accept but I've seen it in action.

<comment><USER3> I had the same feeling when people suggested using completely random UUIDs for things like cookies and transactions.

<comment> X-Istence This just comes down to probability. It is extremely improbable to the point that the heat death of the universe would probably happen first, yet it is something that can worry...

</comment></comment></comment><comment><USER4> I don't understand the use of clock_getres() here. A second of posix monotonic clock time means a second of real time, the clock resolution has no bearing on that. Seems to me that on any system where the claimed CLOCK_MONOTONIC resolution isn't 1ns this code will advance the clock at the wrong pace.

> This is not a hard task. Nothing we've done above requires more than reading > the documentation carefully. Attention to details like this is what makes > the difference between working and rock-solid software. #frencharrogance

Um, right...

</comment><comment><USER5> This really looks like a problem with the Windows implementation of std::chrono::steady_clock more than anything else. This clock is nano-second resolution on most *nix platforms (incl. Mac OS X) and offers the strictly increasing guarantee required (without possibility of discontinuities).

It seems like (in the long term) it would be better to push some std::chrono::steady_clock Windows patches to stdlibc++/libc++/MSVC and use this instead of re-inventing the wheel.

<comment><USER6> Spot on: [http://connect.microsoft.com/VisualStudio/feedback/details/7...](http://connect.microsoft.com/VisualStudio/feedback/details/753115/) and [https://connect.microsoft.com/VisualStudio/feedback/details/...](https://connect.microsoft.com/VisualStudio/feedback/details/719443/), and the last response:

 _Hi,

Thanks for reporting this bug. We've fixed it, and the fix will be available in the next major version of VC (i.e. after 2013).

steady_clock and high_resolution_clock are now synonyms powered by QueryPerformanceCounter() converted to nanoseconds. QPC meets the Standard's requirements for steadiness/monotonicity.

Additionally, the CRT's clock() has been reimplemented with QPC. While this improves precision and conformance to the C Standard (as QPC is monotonic), we are aware that this is not completely conformant. Our CRT maintainer has chosen to avoid having clock() return CPU time advancing faster than 1 second per physical second, which could silently break programs depending on the previous behavior._

So it is expected that VS2014 should have the fixes.

On a sidenote, I've seen most of the code, if not all, posted by the OP already before while searching for the same functionality (eg the piece after "you will write your own function:" is followed by something that to me seems like a straight up copy from some FOSS project, even the comments seems to match - ok I cannot be 100% certain on this but if it's the case it would be nice to mention the source). I can't find it atm, but I am sure a C++11 clock compatible implementation using QPC has been posted on StackOverflow.

</comment></comment><comment><USER7> Function you are looking for Windows is possibly not QueryPerformanceCounter(). It's unreliable when you consider various hardware, especially in multithreaded applications on multi-core/CPU systems. Even more if you use Windows under VM. QPC can use RDTSC(P), but it's only one of its options, and even if RDTSC(P) is used it doesn't mean anything reassuring actually.

Go with timeGetTime(), remembering about calling timeBeginPeriod(1) early (usually at the beginning of application) to set minimum resolution for periodic timers to 1 ms (well, it will happen only if HW provides that much resolution), and calling timeEndPeriod(1) after you stopped working with time (usually at the end of application). Milliseconds don't give you high- resolution, but at least working in this resolution is reliable. Having us or ns garbage is hardly any better...

<comment><USER8> In recent years QueryPerformanceCounter is actually quite reliable since it's guaranteed not to change frequency during runtime.

timeGetTime() and company though operate at the highest frequency that application has specified, and as such can be quite a drain on portable power systems (laptop etc). So when one application calls timeBeginPeriod(1) it means the laptop needs to wake up more frequently and hence is less power efficient.

<comment><USER7> What does it mean "in recent years"? Did QPC become better (and Sleep()/WaitForSingleObject() saner, as we're touching time-related stuff) in XP before EOLing? Assuming having Vista+, does it really work reliably even when called from a thread bound to only one core on various (not necessarily latest) hardware? Have you played with it under VMs?

QPC was buggy and is still buggy for many users out there. After 15 years Microsoft is likely getting closer to sane behavior and maybe in latest Windows 8 (8.1) and Sever 2012 (2012 R2) it really works reliably in different setups and loads (haven't tested it yet). OTOH "getting better" by sole die out of setups, where it was working incorrectly, is not really getting any better.

Viewpoint is important here. If you build your own infrastructure, you choose your HW/SW stack, can thoroughly test QPC behavior, then if it seems you go with same setup for your servers or what not [1]. But if you write software for all Windows users out there, then you don't have that much luxury. QPC is simply not good enough. You can always try with building some logic that falls back from QPC to lower resolution functions whenever odd behavior is detected, but unless you have HW/SW instances that you could test it on, then there is (high?) possibility you won't do it right, so maybe you shouldn't do it in the first place?

1 ms resolution at best should be enough in most cases. Increasing timer interrupt frequency from default 64 Hz (15.6 ms resolution) to 1000 Hz (1 ms resolution) indeed affects system behavior and can harm battery life, but it may be necessary evil. If we're talking about high-resolution time, then 1 ms resolution is simply that kind of thing for Windows (as ridiculous it may sound) if we take reliability into account. E.g. games, your multimedia applications and so on are already using timeBeginPeriod(1). Good news is that reportedly since Windows 8 the harm on battery is much less.

[1] But if you really have control over HW/SW stack for your servers, then you'll quite likely happily avoid using Windows...

</comment></comment></comment><comment><USER9> FTA: "Assuming servers are kept synchronized enough (the enough depending on your application), you may just solve the problem by acquiring time precisely enough."

How on earth are "sub-microsecond timers" supposed to be synchronized _anywhere_?

<comment><USER10> Precision Time Protocol: [http://en.m.wikipedia.org/wiki/Precision_Time_Protocol](http://en.m.wikipedia.org/wiki/Precision_Time_Protocol)

<comment><USER9> OK but the point in the article is to reduce reliance on shared state. This doesn't work in a database.

</comment></comment></comment><comment><USER11> I'm pretty sure rdtsc is/was broken on Intel core 2 duos, especially those with power saving feature (like laptops).

<comment><USER12> Not broken, per se. Rdtsc counts instruction cycles. It's not an accurate indication of time when the clock rate is variable (and in fact pausible).

<comment><USER11> I believe it is actually not monotonic, which was a requirement for this library. That's why you end up using the high resolution timer which has a 10mhz clock rate instead.

I ran into this problem trying to get better than 1us resolution for a daq system which was hooked up to custom GPS hardware which had better than 10ns resolution.

</comment></comment></comment><comment><USER13> A minor correction: POSIX only mandates CLOCK_REALTIME and CLOCK_MONOTONIC is optional (POSIX Advanced Realtime Extensions). Linux provides both as well as CLOCK_MONOTONIC_RAW, and some BSD like FreeBSD provide CLOCK_MONOTONIC_PRECISE.

For OS X, use mach_absolute_time, described here: [https://developer.apple.com/library/mac/qa/qa1398/_index.htm...](https://developer.apple.com/library/mac/qa/qa1398/_index.html)

</comment><comment><USER14> What is the reason for using std::uint64_t? Shouldn't uint64_t work? C99 types should be already included in C++.

<comment><USER15> uint64_t is a typedef defined in stdint.h. std::uint64_t is defined in the std namespace in <cstdint>

<comment><USER16> Yes, though which do you propose should be used? It's nice that the type is wrapped in the std namespace, but for something like a basic standardized type, seems like a waste. I think I'd rather include stdint.h.

<comment><USER17> If it bothers you so much, just use 'using namespace std;' or 'using std::uint64_t;'.

[http://en.cppreference.com/w/cpp/language/namespace](http://en.cppreference.com/w/cpp/language/namespace)

Or just '#include <stdint.h>'. C++ is TIMTOWTDI too!

<comment><USER16> Yes, thank you (TIMTOWTDI)! I was just curious to see what other's used, and was sad to see this comment: "You're writing C++ code, no need to regress back to C." Really? Sure it's from C, but it's a part of C++.

Going the route `using std::uint64_t`, you'd have to do that for every basic type. Which is fine. I'd just use that in a general header that's included everywhere in a project (stdafx, or what have you). Though at that point it doesn't really matter which you pick.

</comment></comment></comment></comment></comment><comment><USER18> how about being _portable_ to non-Intel platform?

Really, nothing new to see...

<comment><USER19> Here's our (Bloomberg) version of this. The bsls::TimeUtil component is used to implement the bsls::Stopwatch. It supports high-res timestamps on OSX/Windows as well as Solaris, AIX, and HP-UX (SPARC, POWER, IA64). It's a good base to start from and we'll continually tweak it for more performance as platforms change (I think there a few patches in the pipeline).

[https://github.com/bloomberg/bde/blob/master/groups/bsl/bsls...](https://github.com/bloomberg/bde/blob/master/groups/bsl/bsls/bsls_timeutil.cpp#L540)

Component docs: [http://bloomberg.github.io/bde/group__bsls__timeutil.html](http://bloomberg.github.io/bde/group__bsls__timeutil.html)

</comment></comment><comment><USER20> Eh, what about not relying on timestamps at all in distributed systems? Use lamport or vector clocks if you want a notion of time in a distributed system. This article makes me more reluctant to consider quasardb.</comment>


It Cost Me $64 to Vote in the Georgia Primary Elections - <AUTHOR> https://www.theroot.com/it-cost-me-64-to-vote-in-the-georgia-primary-elections-1844756995 <comment><USER2> My partner and I both have phds and live and vote in Georgia.

The amount of effort we have put into ensuring we not are able to vote but are informed voters is insane. I've voted three times this year, twice I've requested an absentee ballot that didn't come. Instead I've voted at three different precincts waiting between zero minutes (wealthy area) and 4hrs (poor area). Every time it is a hassle and requires more steps than can possibly be necessary. My partner and I work together in this and it stills takes an Abuja yes amount of effort. We live together and got sent to different precincts. She got a man absentee and I didn't. I signed up to be a poll worker months ago, heard nothing.

I mention the education thing only to indicate neither of us are stupid or lazy people. Voting in this country is unnecessarily difficult and I one benefits from it

</comment><comment><USER3> Postal voting is beset with problems but I would hope that it is not a racial issue, as the author seems to be suggesting.

It does sound like a right mess though.</comment>


Red Hat Enterprise Linux for ARM arrives after seven years of development - <AUTHOR> http://www.zdnet.com/article/red-hat-enterprise-linux-for-arm-arrives-after-seven-years-of-development/ <comment><USER2> I'm asking this half for me, half for the thread - does this mean RHEL on Raspberry Pi?

thanks.

<comment><USER3> AFAIK Pi 3 supports aarch64, so ... maybe? But AFAIK RHEL is probably targeting commercial servers first. But maybe a CentOS/SL for Pi 3 wouldn't be out of the question. The tricky bit is that Redhat probably doesn't have a market for creating and supporting the Pi 3 boot image. But they've done all the legwork for getting aarch64 support in their distro, so that could be reaped in CentOS/SL once you combine it w/a bootloader.

<comment><USER4> [https://wiki.centos.org/SpecialInterestGroup/AltArch/Arm32](https://wiki.centos.org/SpecialInterestGroup/AltArch/Arm32)

Having tested this, Debian and Ubuntu on a RPi2, I prefer Ubuntu for the packages available.

Correction, Ubuntu's official releases only support RPi2 [http://cdimage.ubuntu.com/ubuntu/releases/17.10/release/](http://cdimage.ubuntu.com/ubuntu/releases/17.10/release/)

</comment></comment></comment><comment><USER5> There seems to be a giant gap between low cost ARM boards and server ARM boards. I think a moderately fast, yet low power ARM server would be interesting for things like a private cloud. The cheap ARM offerings are usually very limited in terms of RAM (2GB max) with no option to expand it.

Right now this market is (under-)served by some Intel Atom boards.

<comment><USER3> Agreed, it would be nice to see an "inexpensive" ARM platform that could include 8-16GB or so of memory.

<comment><USER6> And a pcie bus.

<comment><USER7> Marvell MacchiatoBIN, Overdrive 3000, Gigabyte MT30-GS2 (ThunderX), Gigabyte R120-P31 (X-Gene1)

</comment></comment></comment></comment><comment><USER8> How does ARM compare to Intel or AMD from a "cost per power" perspective (meaning, if ARM is twice weaker then AMD, is it less than 50% as expensive?)

<comment><USER9> Qualcomm are claiming great things for their Centriq processors.

 _[Qualcomm] says that the 48-core Centriq 2460 offers a 4x uplift in performance-per-dollar and a 45 percent performance-per-watt improvement over Intel's Xeon Platinum 8180_

(The quote is from the first link)

[https://hothardware.com/news/qualcomm-ships-48-core- centriq-...](https://hothardware.com/news/qualcomm-ships-48-core- centriq-2400-series-server-cpu) [https://www.extremetech.com/computing/259036-early- qualcomm-...](https://www.extremetech.com/computing/259036-early-qualcomm- server-cpu-benchmarks-mean-big-trouble-intel)</comment></comment>


$100M for "starshot": laser-accelerated nanocraft for interstellar travel - <AUTHOR> http://breakthroughinitiatives.org/Initiative/3 <comment><AUTHOR> This is a pretty cool initiative — I looked into beamed propulsion a bit while teaching a course this past fall, and it seems to me that if we (or human technologies) are going to reach a star in our lifetimes, this is by far the most likely way. Still _very_ challenging though.

For a quite detailed recent treatment of optical/IR propulsion see: [this paper by Philip Lubin]([http://www.deepspace.ucsb.edu/wp- content/uploads/2015/04/A-R...](http://www.deepspace.ucsb.edu/wp- content/uploads/2015/04/A-Roadmap-to-Interstellar-Flight-15-h.pdf))

For a thorough, if somewhat outdated, treatment of the ["starwisp"]([https://en.wikipedia.org/wiki/Starwisp](https://en.wikipedia.org/wiki/Starwisp)) idea using microwaves rather than optical/IR lasers, see [this paper]([http://path-2.narod.ru/design/base_e/starwisp.pdf](http://path-2.narod.ru/design/base_e/starwisp.pdf)) by Robert Forward.

To poll the success of this overall endeavor, as well as start to make predictions about which components will/won't work, [Metaculus]([http://www.metaculus.com/questions/#/?order_by=-publish_time](http://www.metaculus.com/questions/#/?order_by=-publish_time)) is launching a series of questions —check it out if you have expertise or opinion.</comment>


A Taste for Pork Helped a Deadly Virus Jump to Humans - happy-go-lucky http://www.npr.org/sections/goatsandsoda/2017/02/25/515258818/a-taste-for-pork-helped-a-deadly-virus-jump-to-humans <comment><AUTHOR> "The new virus — eventually called Nipah — is on the World Health Organization's list of viruses most likely to cause a global pandemic. It's the virus that inspired the 2011 movie Contagion. And just this past January, governments and philanthropists pledged hundreds of millions of dollars to develop a Nipah vaccine because it poses such a big threat."

Am I the only one concerned that this doctor, regardless of his sincerity, just _packed these in his carry-on and took them on an international flight_ without using standard biohazard protocols?</comment>


Looking for work/hackers? We make it easy. - <AUTHOR> http://hackrio.herokuapp.com/

<comment><USER2> I entered my email address and the submit button wasn't working.

Chrome 22.0.1229.94 m, Windows 7, using a Lenovo Thinkpad.

~

This was bugging me so I opened my console and tried to submit again to see if it was a Javascript error, here's the dump:

 _POST<http://hackrio.herokuapp.com/newdev> 500 (Internal Server Error) application-49a9d247b95d318698fdc4d924ac3870.js:16_

 _XHR finished loading: "<http://hackrio.herokuapp.com/newdev>. application-49a9d247b95d318698fdc4d924ac3870.js:16_

<comment><AUTHOR> Darn it, I swore I checked up on that. Heroku is having some troubles with my app - contacting them.

</comment></comment><comment><USER3> I'd really appreciate a bit more info before I give you my email address.

How do you match developers to startups and how do you analyze enthusiasm?

<comment><AUTHOR> We take into account (for the startup):

* Funding * Company culture * Technology stack * Number of employees * Founders * Business model * How well its doing right now, and what its goals are

For the developers:

* Obviously resume, experience, etc. * We ask questions relating to work that's been done by them * We look for what kind of stuff they've done outside of school/work * Involvement in open source * Code samples * Graduated from (if recent) * What kind of salary they're looking for * Kind of company culture they want * Tech. stacks that they want to work with * etc.

We match them up by seeing how well they correlate with one another.</comment></comment>


Dealing with corruption - <AUTHOR>

We have recently been approached by a huge client in India which looks really promising. One of our distributors has told us his experience in India is that all dealings are done with backhanders and it's all corrupt. Does anyone have any experience with India? Is this the norm or the exception? I wouldn't feel comfortable doing business this way even if it was the norm.<p>Maybe I am just naive, but I refuse to believe it's this way everywhere. Any relevant experiences would be appreciated. <comment><USER2> The most accurate answer would probably be 'depends'. If this huge client of yours is in anyway even remotely related to the government, then there is an extremely high possibility of having to deal with corruption.

OTOH, there are a lot of companies that meticulously try to keep their hands clean in all dealings. So, the best thing to do would be to inquire around about your particular client.

Disclosure: I'm Indian and have lived in India for a majority of my life.

<comment><AUTHOR> Thank you will do that.</comment></comment>


Ask HN: gmail sends all messages to Trash - <AUTHOR>

Anyone experienced something like that?
Effective this weekend, all e-mail messages sent to my gmail account are now automatically forwarded to trash folder. I did experiment with filters a week ago, trying to reduce spam, but some of the senders are specifically marked as never send to spam and it is not helping. <comment><USER2> Its one of those things that unless we have direct access to your gmail account we'll just go running around in circles second-guessing...

</comment><comment><AUTHOR> In case anyone's interested - it was the me@ filter. I noticed a batch of spammers/scammers whose bulk messages were addressed to email@example.com Unfortunately google was not able to recognize it as spam and all this garbage was showing up in my Inbox. I added a filter and several days later (not right away!), google started to delete ALL messages individually sent to my e-mail addresses. I removed the filter, will have to keep manually deleting the spammers from my inbox. I think this is a gmail bug.</comment>


Things you can do to afford Mixergy Premium in 2012 (and why you should bother) - <AUTHOR> http://www.workingsoftware.com.au/page/A_list_of_things_you_can_do_to_afford_Mixergy_Premium_in_2012

<comment><USER2> Yes it is;

<http://www.imakerz.com></comment>


Keeping Your Eyes Healthy - <AUTHOR>

Like most of you probably do I spend a lot of hours a day looking at a monitor, TV, or reading.  Surely, this can't be the healthiest practice for your eye health.  I am lucky and do have 20/20 vision, at least the last time I checked, and I would like to keep good vision as long as possible despite my viewing choices.  So, what are some good ways to keep your eyes healthy? <comment><USER2> An ophthalmologist did a great job of describing me the whys and hows of this a few years ago.

Your eyes focus through muscles which make tiny adjustments to the lens of your eye. These muscles are just like any muscle that gets over or under-used. The underused ones get weak while the over-used get tight and can't relax.

If you think about what we did until about 100 years ago, we where scanning the horizon, or making tools, throwing things, etc. etc. This meant lots of changes to the muscles. The muscles relaxed to allow us to see far away things, and tightened when we needed to focus on things near our face.

Now, we spend most of our time looking near distance, and very little time on medium to far distance. So the muscles are constantly engaged which leads to tightness which leads to a constant reshaping of the lens. Because we are not used to relaxing the right muscles and tightening others, we end up with myopia.

I started working on this myself years ago, and I definitely notice a difference if I am working too much and not getting outside enough. So as ascuttlefish mentions, get outdoors.

But when you are outdoors, there are a few tricks I rely on. #1, I assume you live in a city. Don't walk around looking at the ground. Try to pick out far away things. How far can you see. Try and work your eyes in ways you don't currently.

I spend some time trying to read a sign as far away as possible.

Driving isn't good for your eyes, as you probably don't realize how much time you spend focused on the back of the car in front of you. This is not long distance. But I wouldn't work on your eyesight while driving, let's just keep everybody safe.

I find cycling (and particularly mountain biking) to be really good as you are constantly adapting to looking up the trail as far as possible, and taking quick glances at what is right in front of you. Very challenging for your eyes, particularly if you are just starting out (lots of people only look right in front of them, and they can't go as fast). The same can be done with trail running.

Make a game of it if you can. I'd like to say that I step away from my computer every 5 hours or so for about an hour, though there are definitely times that I'm unable to do that.

</comment><comment><USER3> Go outdoors often. An increase in myopia (near-sightedness) correlates with an decrease in outdoor activity by children. Giving your eyes a chance to focus on the near and far distances is probably helpful, too.

<http://www.sunilreddy.com/?p=1429>

</comment><comment><USER4> Computer glasses?</comment>


Is an Open Marriage a Happier Marriage? - <AUTHOR> https://mobile.nytimes.com/2017/05/11/magazine/is-an-open-marriage-a-happier-marriage.html <comment><USER2> Yeah right....I doubt many open marriages start because of a terminal illness (and from the woman's side no less).

I'm sure it has NOTHING to do with male sexuality and overall "the grass is greener".

Give me a break!</comment>


Introducing "Mozilla Webmaker:" helping the world make the web - <AUTHOR> https://blog.mozilla.org/blog/2012/05/22/introducing-mozilla-webmaker/

<comment><USER2> Okay, so apparently it's more of a community endeavour with existing tools than a new tool that they've constructed for the purpose.

The original WorldWideWeb browser by Berners-Lee actually was able to edit hypertext, although I'm not certain of the specifics. I've wondered a lot why the Web grew up as an authoritarian network -- with DNS and such -- rather than a peer-to-peer hypertext-trading network. The success of sites like Wikipedia show that it's not because people simply don't remix other peoples' content. I think it might have to do instead with the fact that non-server computers are still unreliable and unreliably connected. When I go home from work, my laptop changes IP addresses and is off-line for 20 minutes.

One crazy idea for a startup: create the infrastructure so that this isn't an issue. The closest things I know of to a social hypertext site are Wikipedia and Github's blog-and-gist systems, and they don't really solve the problem. One crazy problem with the idea: I really don't see how you'd get a revenue stream out of it.

</comment><comment><USER3> Is it just me, or can anyone else not find a single Summer Code Party event? I'm in California, and I can't find any near any of the main metropolitan hubs. Maybe the site just went up?

<comment><USER4> We have only been able to find 3 in the entire United States so I believe the site is rather new. We're actually in the process of planning one of these events (HackJam sized) for Syracuse, NY and hopefully others will follow soon.

</comment></comment><comment><USER5> duplicate of <http://news.ycombinator.com/item?id=4011929></comment>


The Hard-Luck Texas Town That Bet on Bitcoin–and Lost - <AUTHOR> https://www.wired.com/story/hard-luck-texas-town-bet-bitcoin-lost/ <comment><USER2> It doesn't appear that this town bet or lost anything minus some administrative time which is a fairly standard risk for any big development project.

<comment><USER3> Seems also they bet on Bitmain, not on Bitcoin, which is arguably recovering better.</comment></comment>