Ask HN: How can a intermediate-beginner learn Unix/Linux and programming? - <AUTHOR> For a long time, I've been in an awkward position with my knowledge of computers. I know basic JavaScript (syntax and booleans and nothing more). I've learned the bare basics of Linux from setting up a Pi-hole. I understand the concept of secure hashes. I even know some regex.
The problem is, I know so little that I can't actually do anything with this knowledge. I suppose I'm looking for a tutorial that will teach me to be comfortable with the command line and a Unix environment, while also teaching me to code a language. Where should I start? <comment><USER2> I disagree with lots of advice here.

My strategy to solidify my linux skills was simple: commit to linux desktop. We spend most of our time on our desktop, may as well let that time earn you skill points. I picked ubuntu and use the same on servers. You naturally learn a bit every day through daily use. This really adds up over time without extra effort of using a side system. Getting good at windows or osx is a waste of your time unless you are specifically into those platforms.

As for a language, pick one that is (1) easy to start with (2) covers advanced use cases, (3) sound in its design, (4) general purpose, (5) concise. That rules out C (due to 1), JS (due to 3 and 4), php (2,3,4) and most things really.

For me that left me with ubuntu and python, I never looked back. (Yes I know many other things but that is my home base.)

<comment><USER3> > , (5) concise. That rules out C (due to 1)

That's interesting, most people I've started on C have found it easier to start out in that than say, Java, which has been on a hell of a lot of introductory courses for a decade now

<comment><USER4> C is way more concise than Java. It's one of core 5 in any journeymans toolbelt.

</comment></comment></comment><comment><USER5> _The Missing Semester of Your CS Education_ [1] is a set of tutorials from MIT that gets you to speed with using the CLI, using a text editor (Vim), version controlling (using Git), basic debugging, etc. Some tutorials aren't perfect (e.g., an earlier version had things like `for f in $(ls)` [3]), but at least they link to good tools and resources. There's also Software Carpentry [2], which has similar goals. You might also want to check out _The Bash Guide_ [4,5], which is hands down the best Bash tutorial written.

[1]: [https://missing.csail.mit.edu/](https://missing.csail.mit.edu/)

[2]: [https://software-carpentry.org/lessons/index.html](https://software- carpentry.org/lessons/index.html)

[3]: [https://mywiki.wooledge.org/ParsingLs](https://mywiki.wooledge.org/ParsingLs)

[4]: [https://mywiki.wooledge.org/BashGuide](https://mywiki.wooledge.org/BashGuide)

[5]: [https://guide.bash.academy/](https://guide.bash.academy/)

<comment><USER6> I wonder if introducing newbies to makefiles and vim is super empowering, or ends up gatekeeping by making it look "as complicated as you feared it would be."

I feel like before any of that:

1\. Do practical stuff with Python

2\. Learn the semantics behind the Linux directory tree

3\. CLI, piping stuff together, a little bit of bash.

<comment><USER7> But at some point isn't it helpful to know that some things _are_ as difficult as you fear, and you just have to power through? I picked up vim early in my programming career and I think it was one of the best decisions I've made; I use it every day. Yeah, there's a time and place for learning "easier" things, but there's also a time to buckle down, get serious, and dig in.

<comment><USER8> i am a student and even using nano makes me feel less efficient and productive.

is there something I am missing out by not using vim?

<comment><USER5> > _is there something I am missing out by not using vim?_

Being able to use vi is a very handy skill if you're a sysadmin or SSH into other computers/clusters very frequently. Since vi is part of the POSIX specification, all Unix systems would have some implementation of vi. Of course, Vim is much more powerful than a text editor like nano, but also requires more investment to learn. It won't make you a better programmer, but it might make you a faster programmer.

</comment></comment></comment></comment></comment><comment><USER9> My advice is to start working on a project you care about and then learn everything required to make it happen. If you already know JavaScript, maybe build and deploy a static website. Once you've done that then perhaps make it interact with an API.

<comment><USER10> This. Having something to actually accomplish is much more important than finding the ultimate book or online course. There are lots of those.

Pick one and move on to defining a realistic project that seems interesting and achievable.

Most important of all, finish it, and write what you did down somewhere. It took me 20 years to realize how important this is.

</comment></comment><comment><USER11> If you are on Windows I recommend setting up Windows Subsystem for Linux. With VScode. You now have a Linux server with remote code editing. I note you have an Raspberry pi, what follows will work with the pi as well with whatever remote machine. Complete these tasks

1) install the language of your choice and start a simple web site using the languages webserver. View the website in your browser on Windows. A Python Flask 'hello world' or a Node one?

2) Set up an SSH server and remote in from the Windows machine. Learn how to set it up to use keys only instead of passwords. Find out why that is a good idea

3) learn Git. Github has some nice tutorials.

4) set up NGinx to run your website above.

5) set up Nginx for https

6) set up LetsEncrypt.

7) set up a free AWS account, start a server and put your website on it using SSH and git.

8) look through the ssh log files to see login attempts, and the Nginx logs. Imagine there were millions of rows, how would you find a certain one, or the last few? (head, tail, grep, cat).

That should get you somewhere.!

<comment><USER12> Thanks this is helpful to get started.

</comment></comment><comment><USER13> Some resources I've found helpful to learn some command-line:

\- [https://cmdchallenge.com/](https://cmdchallenge.com/). This set of increasing-in-difficulty challenges should help with structure in terms of learning a bit more.

\- [https://explainshell.com/](https://explainshell.com/) can be helpful as well.

\- Don't forget the man pages! `man <command>` can be quite helpful! For a different approach on teaching some, bropages.org could be helpful.

\- I haven't used it personally, but there is a lot of info at [http://www.opsschool.org/](http://www.opsschool.org/)

As for learning to program, I suggest a very good starter language is Python, and its built-in, first-party language reference/tutorial I found helpful when I learned it: [https://docs.python.org/3.8/tutorial/index.html](https://docs.python.org/3.8/tutorial/index.html)

As for "what" to program after that, I don't have any great resources for what constitutes some good initial programs. Off the top of my head, here are some ideas about places to start which are doable with only inputting and outputting text:

\- FizzBuzz

\- Play Rock Paper Scissors with the computer

\- Play Tic Tac Toe with the Computer

\- Sieve of Eratosthenes

\- Conway's Game of Life

\- Given a piece of text, count how many occurrences of each word there are and display the top ten.

</comment><comment><USER14> My approach to teaching Linux and programming leans heavily on using existing resources and ensuring students get a wide base of knowledge before beginning the "exploratory" stage of learning.

Start with installing a distro of your choice in a virtualization tool, I always recommend Ubuntu on VMWarePlayer because it was what I started with. Distro/Virtualization Software doesn't matter, what matters is that you use it.

Then I have students work through Linux Journey [1] one module at a time, while being available to answer questions as they go.

Once a student has finished the LJ modules I have them play the Bandit Over the Wire [2] game up to challenge 15.

After that I usually teach Hardware and Operating Systems, but if you are just looking for general ability to do things, skip to the CyberAces Linux modules. [3]

Once you have finished those, do the CyberAces Bash Scripting module and the CodeAcademy Python [4] course and you'll have enough scripting ability to be dangerous.

From there, just keep using Linux as your daily driver and you will continue to improve, especially if you take on programming projects.

All of this can be done by yourself, but I teach a free online course on Computing Fundamentals and Security if you are interested in it being more of a guided experience. [5]

[1] [https://linuxjourney.com/](https://linuxjourney.com/) [2] [http://overthewire.org/wargames/bandit/](http://overthewire.org/wargames/bandit/) [3] [https://tutorials.cyberaces.org/tutorials.html](https://tutorials.cyberaces.org/tutorials.html) [4] [https://www.codecademy.com/learn/learn- python](https://www.codecademy.com/learn/learn-python) [5] [https://www.hoppersroppers.org/course.html](https://www.hoppersroppers.org/course.html)

</comment><comment><USER15> a really good book is Richard Stevens Advanced Programming in the UNIX environment[1]. (sounds daunting but it's not too bad when you combine it with another introductory text on C). If you stick with C you'll eventually know UNIX/Linux a lot deeper than anyone. It takes time though so go easy on yourself.

Also check github for a bunch of repos that contain biolerplate code that is used in most deamons illustrating signal handling, forking, etc.[2]

Also I suggest taking some open source projects from Daniel Bernstein (DJB) as examples on how to write secure code. qmail, djbdns, daemontools ... there are lots of great ideas there[3]

Write a couple of simple programs that utilize your code and expand from there, learn the plumbing, e.g. write a Makefile, learn autotools/autoconf, how to write tests, how to use gdb, how to create shared libs and link a program LD_LIBRARY_PATH/ldconfig, etc ...

Most important think about something that you like to write and go from there. Back in the late 90ies I studied RFC's (MIME, SMTP, etc) and then implemented things that I could actually use myself. Here is a recent project I did some weeks ago (an extreme edge-case for security maximalists which will never be used by anyone other then myself, ... but I really enjoyed writing this and learned a bunch of new stuff while doing so)[4]

if you need ideas or help with looking at your code, don't hesitate and send me a mail.

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

[2] [https://github.com/jirihnidek/daemon](https://github.com/jirihnidek/daemon)

[3] [https://cr.yp.to/djb.html](https://cr.yp.to/djb.html)

[4] [https://github.com/DyslexicAtheist/nfq/](https://github.com/DyslexicAtheist/nfq/)

<comment><USER16> > _Also check github for a bunch of repos that contain biolerplate code that > is used in most deamons illustrating signal handling, forking, etc.[2]_

docker-systemctl-replacement is a (partial) reimplementation of systemd as one python script that can be run as the init process of a container that's helpful for understanding how systemd handles processes: [https://github.com/gdraheim/docker-systemctl- replacement/blo...](https://github.com/gdraheim/docker-systemctl- replacement/blob/master/files/docker/systemctl3.py)

systemd is written in C: [https://github.com/systemd/systemd](https://github.com/systemd/systemd)

> _examples of how to write secure code_

awesome-safety-critical > Coding Guidelines [https://github.com/stanislaw/awesome-safety- critical/blob/ma...](https://github.com/stanislaw/awesome-safety- critical/blob/master/README.md#coding-guidelines)

</comment></comment><comment><USER17> Download Ubuntu and run it as a virtual machine inside your current machine (use Google for instructions - it's fairly straightforward with a piece of software called virtualbox). That should stop you from running into hardware related compatibility issues.

Get familiar with the interface and the concept of a "terminal".

Then try do some simple stuff. Maybe set up nginx (or Apache) to run a web server that you can access via your host machine.

Thereafter try doing some Linux admin tasks, like creating users, switching users. Maybe even set up SSH and try accessing the virtual machine from your host machine via PuTTY.

After, maybe try spinning up a simple node web app on the virtual machine and access it from a browser on your host machine.

By this time, you'll probably get a sense of what you want to explore next! And remember, Google it's your friend for all of the above!

All the best :)

<comment><AUTHOR> I'll probably use my raspberry pi instead of installing a VM.

<comment><USER17> Sure - the only benefit of a VM is that you can mess up the VM's filesystem without worrying about it too much.

<comment><USER18> Making terrible mistakes on real machines teaches you much more though (by sheer necessity if nothing else).

<comment><USER17> It might, but I'm not going to suggest that to someone trying to learn the ropes!

</comment></comment></comment></comment></comment><comment><USER19> Jump in on the deep end. Install Arch, a tiling wm of some sort, and make it yours. Soon enough you realise this isn't the deep end anymore. You get a lot for free by just using linux every day and dealing with whatever problems might pop up.

Keep the terminal open, if it can be done in a terminal it may turn out you prefer it when you get used to it. Torrents, IRC, playing music, email, file explorer, whatever makes you stay in there. It makes you comfortable navigating the system and you get to see what a GUI hides from you.

Programming? You're not gonna benefit from diving into any deep ends there, continue with JS if that's what you like. Learn databases and web servers, here your new linux skills comes in use. Try some stuff and see what you like.

</comment><comment><USER20> I would recommend learning Linux the way I did 15 or so years ago: get rid of other operating systems and use a more 'advanced' distribution (such as Arch or Gentoo). In my case, I fucked up my Windows install on a new laptop when I was 12. At that point, I was stuck and just decided to stick with Linux. It's remarkable how quickly you learn when you absolutely need to in order to use the computer.

My second piece of advice would be to learn C from this book: [https://en.wikipedia.org/wiki/The_C_Programming_Language](https://en.wikipedia.org/wiki/The_C_Programming_Language)

After finishing it and completing all the exercises, you should be ready to go learn anything else you want to.

<comment><USER21> Better is the way I learned it 25 years ago. Burn up your 386sx CPU while doing a kernel build, then get a loan for a nicer computer. It should have at least 4 MB of ram. Spend about 200x minimum houry wage on a nice monitor, then be very careful with manual modeline settings in your xfree86 config so that you don't destroy the monitor.

Get yourself a bulldog clip to hold that send book open to the page you are repeated referring to. When you graduate to Stephens' UNIX Systems Programming, the bulldog clip won't be needed.

If your monitor doesn't stand tall enough, 4 reams of copy paper are much cheaper than the same thickness of X programming manuals.

</comment></comment><comment><USER22> For programming, start by having a project. Think about something you'd like to build and focus on one thing at a time. This will guide your research.

For Unix, install linux on your computer and use it daily. You'll be forced to learn.

<comment><USER23> >For Unix, install linux on your computer and use it daily. You'll be forced to learn.

I tried this years ago and it didn't end well. With how complicated current- gen distros are, you need to understand what's going on under the hood before you can effectively mess with it. In my experience you'll just end up with one screen that's only at 720p and a crashed pulseaudio that you never fix because you just want to watch netflix right now, and for some reason that still works as long as you use bluethooth. Even though you didn't _want_ to use your bluetooth headphones, it's easier than fixing the problem with your sound driver or whatever so you'll just end up using them anyway.

It might be easier to start with server management because you don't have to figure out much human IO stuff... Linux is really good at talking to Linux. VPSs are cheap and give you root access. Plus if you mess up, it's generally pretty easy to just format the VPS and start over. You can't easily do the same on a desktop. Also it forces you to learn about Linux and not whatever software your distro uses (for example, learning how to use apt is a lot more important than the ubuntu app store)

<comment><USER22> I don't know how long ago you've tried it, but that was pretty much my experience as well. However, in my case we are talking late 90's. Things have changed a lot since then.

<comment><USER23> About 3-4 years ago. I disagree with most poeple that say it's just as easy as using w10 now, it takes way more work to make it as stable as windows (which takes none). It's just a lot more powerful and easy to modify when you want it to be.

BTW if the OP (or anyone else) is wondering, now I run w10 and minimal Ubuntu with i3. The knowledge transferred basically 1:1 from server management (except for window manager stuff, but that was easy to research)

</comment></comment></comment></comment><comment><USER24> Here's a couple of tutorials on various tools that might be useful for a beginner: [https://missing.csail.mit.edu/](https://missing.csail.mit.edu/)

</comment><comment><USER25> Raspberry Pi and free trials to O'Reilly Online (which I currently now subscribe and don't need credit card to sign up for). They've been giving 50% off Black Friday Special, so keep eye out for that.

Here are some of my favorite books:

[https://learning.oreilly.com/library/view/ubuntu-server- cook...](https://learning.oreilly.com/library/view/ubuntu-server- cookbook/9781785883064/) \- really good one for learning real uses of linux

[https://learning.oreilly.com/library/view/raspberry-pi- cookb...](https://learning.oreilly.com/library/view/raspberry-pi- cookbook/9781492043218/)

[https://learning.oreilly.com/library/view/raspberry-pi- netwo...](https://learning.oreilly.com/library/view/raspberry-pi- networking/9781785280214/)

[https://learning.oreilly.com/library/view/exploring- raspberr...](https://learning.oreilly.com/library/view/exploring-raspberry- pi/9781119188681/)

[https://learning.oreilly.com/library/view/raspberry-pi- hacks...](https://learning.oreilly.com/library/view/raspberry-pi- hacks/9781449362737/)

</comment><comment><USER26> Its very easy to get good with unix. I usually use the tee rule for this (look up tee on google ;) )

1) Get a good linux, you can start with ubuntu. After getting comfy with ubuntu try another os, debian,And eventually to the hardcore ones like Arch, Artix and others. Try to do your usual thing with commandline. For example, How to copy using terminal,How to open a file with terminal, How to get lots of terminals inside terminal. Stuffs like this (trick is simply go ahead and add "How to do it in terminal" ;) ) Google them up. (www.giyf.com) Try to rice your system. It teaches crucial aspects about the appearance,usability etc.

2) Get a good book. No starch press has some good ones, even O reilly gets you into shape. The trick to good book is simple: Get a book, read it. If you love it finish it. There are open source notes as well. Awesome cli github is similar.

3) Try to create your own tools using 1,2 this will allow you to bend your brain. Stuffs like How can I get hackernews comments in my terminal, How can I create a shell script to remind me that 20mins have passed (pomodoro) and stuffs like that.

I have some starred repositories and Some simple tools of my own (Aeres-u99 @github) to check for some example.

I think with this (depending how extensively you do them) you can be decent

</comment><comment><USER27> There are many ways, but here is one:

Read and lightly work through The C Programming Language (K&R). Code along with the book, don't feel you have to really deep-dive anything.

You don't have to learn C well at this point. Just learn from it.

Then start reading The Art Of Unix Programming. Do this casually. Read a bit, code a bit. Between K&R and TAOUP, you'll be inspired by to write at least two small projects.

To supplement K&R and TAOUP, begin reading Unix Network Programming.

If you have access to a Mac or a Linux machine, explore the man pages.

If you're on a Mac, explore the man pages __and__ the code that lives on your system.

One way to do this is to use something like vscode's intellisense to "Go to Definition." E.g., when you're coding an example from K&R, right click on one of the included headers, and click "Go to definition." It will take you to the header file. Look through the code. Then you could look at the code from FreeBSD or OpenBSD on GitHub.

Edit: Just wanted to add, by doing the above you'll get exposure to your system in new ways. Moreover, you'll find yourself learning Unix out of necessity, for fun, and by accident. You can practice the art of Unix programming in almost any language at this point. C is unix-y, but so is Rust.

<comment><USER28> Not sure about TAOUP. THere's a lot of verbiage there.

</comment></comment><comment><USER29> Use Slackware, do these exercises:

\- Customize your bash prompt, create aliases for some common commans (ls, df are good)

\- Build a LAMP stack, compile everything from source tarballs. Get it working so that you're able to browse your webserver from your phone.

\- Update a sound or video driver

\- After you're comfortable, recompile the kernel

\- Through these, do as much in the command line as you can. Get comfortable with mv rm chmod chown and so on.

Any time you have edit a text file, use vim, nothing else.

</comment><comment><USER28> I strongly recommend Rochkind - Advanced Unix Programming.

Despite the title, it's not that advanced; the "advanced" here refers to system-level programming, not application.

Note, for this you probably need to learn C.

K&R ed2 remains an excellent book for this.

Honorary mention - Kernighan and Pike - Unix Programming Environment. But it's a little dated.

Above all, _do_. Get a Ubuntu or Centos image, install developer tools (gcc), manpages, and write some code.

</comment><comment><USER30> Hm, in my case, I followed a very boring/the right way of doing things, For example : try getting the book "the Linux programming interface" it s very handy and explains pretty much everything u de want to know about anything in a Linux operation system, it lists and explains the POSIX interface made for you to use in you C code , with example, which surprisingly, u get to find similar interfaces/system calls/library functions that you can use in python to do the same thing.

For regular expressions, watching a small video which explains how they work is definitely more productive, but if you could find some time to spare , try checking how compilers are made, / what constitutes a language (language theory), and automata, it definitely has some math in it , but it s worth it, it gives you an extra mental image , which helps you get a better understanding of where you stand and what you can do. Since apparently regex is also a language, which helps you describe chunks of an other languages and it also has some limitations to be aware of.

</comment><comment><USER12> I'm primarily a windows user and am programming to create products. Since I don't work a programmer job, my learning is unstructured. Is bash the main benefit of learning something like Ubuntu?

I have delayed making the switch because I have lot of things to learn (currently relearning math, testing out different deep learning architectures, and learning JavaScript (second language after Python)) and not sure if should prioritize learning it.

I still need to get better with GitHub which is something I clearly see the benefits of. Also need to get better with a text editor , using Visual Studio Code , mainly just for text completion in Python and JavaScript, so need to learn the additional benefits. Also want to test sublime text.

I see recommendations for vim, but I wonder if that will make me too twitchy and will start to type before thinking.

So due to the amount of things I am trying to learn, I have delayed learning Ubuntu.

I know Windows 10 now has built-in bash capabilities but I wonder if there are other benefits I am missing with Linux and worth learning.

<comment> john-radio > I'm primarily a windows user and am programming to create products. Since I > don't work a programmer job, my learning is unstructured. Is bash the main > benefit of learning something like Ubuntu?

That's one advantage. The big advantage is that most enterprise web sites and webservices run either on a rented Linux server or on a Linux instance that's "serverless" (meaning it can run processes and access databases, but can't save stuff permanently to the filesystem). If you have familiarity with Linux, then that lends itself well to the work of troubleshooting the complications that come with that setup.

</comment></comment><comment><USER31> I learned SunOS (and later Linux and HP-UX) by full immersion with a non-root account on a multiuser server. It was non-graphical, though I was able to tunnel X over SSH across the Internet and actually have an almost usable desktop.

I was learning C programming at the time, so beyond dealing with bizarre things like my program crashing due to "segmentation fault"s, I was trying to understand what was going on. The first time I opened vi, I couldn't figure out how to get out. Once I did, I used `:sav %` followed by `:q` for longer than I care to admit.

If I had to recommend anything to someone just learning, I'd recommend learning these commands:

cd ls touch rm # but be careful! ps head tail nano who whoami man apropos # this is technically man less

These will help you do a lot of what you need to do on Linux about as well as you can do similar things on Windows. Once you've mastered those commands, learn about piping `|`, grouping `{ foo; bar; }` and sub-shells `$(foo)`. Learning about variables `$foo`

Then read up on:

grep sed cut find awk # really just `awk '{ print $2 }'` xargs env export test # [ foo ] source # . foo crontab top # or even better `htop` shell control flow

When you're done with that, learn

vim # `vimtutor` can help emacs

After that, there's tons of other tools you'll pick up as needed:

dd df du fsck and a bunch of other system-related tools

You'll learn a ton as you move along.

Just remember that for the most part, each tool solves approximately one problem, and the complex behavior comes from chaining tools together. Chaining mostly involves `|`. Once you see that at work, you probably won't want to go back to the crutch of point-click-drag.

Best of luck!

</comment><comment><USER32> Learning is always easy when you can scratch your own itch with spare time.

Since computing was my escape from a pretty unhealthy environment at home (alcoholics, TV) and computer games/hardware were prohibitively expensive beyond Quake 2, routine saved the day: go to high school, come home and zone into computer for 4 years. A couple years in I started getting small gigs, then a lot of them, then got on the FTE track and hit $200k/yr by 30.

As an adult, I've had 6 years of fitness starting with forcing myself to spend 45min/day with no plan in the gym until it felt weird to not go, and now I could easily get on track to become a trainer if I wanted. I got 50lbs overweight over a few years from being so steeped in building software and networking with beer and pizza. I'm mistaken for early 20's at age 35 universally.

You have to intrinsically enjoy it, and then make time for it.

</comment><comment><USER33> Buy this book: [https://nostarch.com/tlpi](https://nostarch.com/tlpi)

Some may argue that you can get the information in this book for free, by consulting man pages and such. Sure you can, but it will just take you much longer. This book will save you time.

</comment><comment><USER34> You can either reach out to some influencers and ask them to help them in their projects for free in exchange for receiving knowledge or you can head to some websites regarding the language you are planning to run.

My personal suggestion would be to do both. Follow Scott Berkun - his blog, Twitter, he knows his stuff.

You also need to some sites and courses to guide you throughout your journey. This article ([https://blog.codegiant.io/5-best-websites-for-learning- progr...](https://blog.codegiant.io/5-best-websites-for-learning- programming-b7e8ebe9ff79)) has some cool sites for learning programming.

All in all, the best way to excel is to find a mentor.

</comment><comment><USER35> If you are interested in a course to get comfortable with the shell in unix I highly recommend this course. I'm taking it now and it's quite well done.

[https://www.edx.org/course/unix-tools-data-software-and- prod...](https://www.edx.org/course/unix-tools-data-software-and-production- engineering)

More info about week 1: [https://www.reddit.com/r/linux/comments/flmr8o/enjoying_the_...](https://www.reddit.com/r/linux/comments/flmr8o/enjoying_the_free_edx_course_on_unix_tools_as_a/)

</comment><comment><USER36> Learning to use the command line is a requirement for all serious programmers and its great you want to start.

It can be pretty overwhelming to use the terminal so you may have to some reading to get yourself really comfortable.

I usually go to books/(book pdfs) to help me start out because they have conceptual explanations about the syntax which really helps my understanding.

Maybe this one would be good? The Linux Command Line, 2nd Edition: A Complete Introduction

Once I'm comfortable based on the book, using StackOverflow and other websites becomes much, MUCH easier.

In the process, you'll learn BASH which is used for scripting.

<comment><USER37> > _Maybe this one would be good? The Linux Command Line, 2nd Edition: A > Complete Introduction_

Free PDF in the author's (William Shotts) homepage: [http://www.linuxcommand.org/tlcl.php/](http://www.linuxcommand.org/tlcl.php/)

</comment></comment><comment><USER38> There are lotss of responses here advising Ubuntu to teach Linux skills. I'd like to put in a vote for Manjaro instead:

The automatic driver detection when you install it can be handy, the Arch repositories are easier to use and include the same software you would find on any other machine, and the Arch wiki still applies, allowing you to find information on any part of the system you have questions about.

In addition, I think Arch derivatives in general encourage a healthy reliance on the command-line, which is actually what you want to learn how to use.

</comment><comment><USER39> Keep hacking your raspberry pi. Customize your shell with a profile; maybe alias LS so it always uses color? Find some packages to install. Cowsay, and SL are great, udderly useless ;) programs. Check em out.

Keep projects small, just patch together open source code for fun, and read the open stuff you do use.

You could also switch the GUI environment of your raspberry pi. Install headless raspbian and install he GUI from the CLI. Just hack!

My koan is video poker, I've rewritten a whole game about 3 times. I also like writing prime number finders in new languages.

</comment><comment><USER40> Start by downloading Ubuntu and using it everyday. It's actually super easy to use, IMO easier than Windows or macOS. Then download the language of your choice and start using. When you build something, at some point you'll have to compile and package it, or start a webserver and deploy it, etc..., all good learning experiences. But just using Linux everyday is a good start (and don't go for one of the hardcore distros, use Ubuntu or Fedora).

</comment><comment><USER41> I became much more comfortable with the Unix environment by completing the Bandit game [0]. It teaches you various Unix tools and forces you to learn the command line. There are about 30 parts, each can be completed in a timespan ranging from a couple of minutes to an hour. It is mighty fun and I highly recommend it.

[0] [https://overthewire.org/wargames/bandit/](https://overthewire.org/wargames/bandit/)

</comment><comment><USER42> I regularly recommend installing VirtualBox, obtaining a Linux distro, e.g. fro. OSBoxes.org, and using it to do a [http://linuxfromscratch.org/](http://linuxfromscratch.org/) project.

LFS is well-document and maintained, and levels you up in a jiffy on the practical basics.

It's not about programming per se, but covers quite a few concepts you're expected to "just know".

Plenty of pointers to more advanced concepts, too.

</comment><comment><USER43> My pointers:

1) Do all day to day tasks with the CLI. It will force you to challenge yourself.

2) Learn line editing with GNU Readline. What is this? E.g., when you have a bash shell open and you hit Alt+B, your cursor moves back a word. This will make your time in the shell a lot more pleasant. Similarly, the basics of VIM, which will make text editing a lot more pleasant. Less friction means everything comes quicker, and you get tighter learning iteration loops. Don't go overboard on this: it's mostly about navigating around and editing text, not installing plugins or anything beyond an hour or two of study.

3) Don't waste time purposefully memorizing userland tools. You'll forget them in a week, and most of the time they're pointless clutter in your head. There is zero value in memorizing all the options for `tar`. Memory will come naturally with use.

4) Do not waste time building the perfect set of dot files (e.g. `.bashrc`, `.vimrc`). Know where they are, but futzing with them should be <1% of the time you spend learning.

5) Do not waste time building a Linux desktop, configuring a window manager, etc. Linux is, first and foremost, an operating system for servers, and the skills needed to get a polished Linux desktop user experience are entirely separate from (and usually dependent on) the skills needed to get a solid Linux server environment up and running.

6) Man pages are your friend. Before Googling how to do `something`, try `man something`. If you don't even know the man page you're looking for, try `man -k something`. If it's totally new, read the whole man page. If you're just looking for an obscure `tar` option, just skip to that section.

7) Cert book for RHCSA. Honestly pretty much every non-junior developer _should_ have the skill level of a RHCSA. It teaches you how an entire system fits together. Note you don't have to pony up some obscene fee to RedHat to actually take the test and get the cert (though, as far as certs go, it's one of the better ones); the point is the content. And actually do all the labs/exercises in whatever book you get.

8) Advanced Programming in the Unix Environment (APUE). This is less critical and only relevant once you are vaguely at the RHCSA level (and know how to program), but it can give lots of valuable knowledge about the programming system interface.

</comment><comment><USER44> Install from zero an advanced linux distribution (CentOS, Debian), make it work properly. This will give you enough things to do to learn and also decide if you like it. Write an application on server side stack, for ex Nodejs. Learn how to set it on a server. Connect your app to a database you setup. Deploy all of this on a cloud. Good luck!

</comment><comment><USER45> Shoehorn Linux into your life, even when there are other solutions that you're familiar with that already solve your problems.

</comment><comment><USER46> 1\. Decide your goal, probably get hired? (Web, Devops, Embedded...)

2\. Learn the stack that follows from 1, just barely, not too much theory. You want to start as k with 3.

3\. Build something using the stack you learned. Start even if you are clueless of how to do it, and google every question you encounter. Stackoverflow will become your friend.

Repeat 2 and 3 for the rest of your life.

</comment><comment><USER47> I strongly recommend "A Practical Guide to Linux Commands, Editors, and Shell Programming". It's a great overview of many things linux & command line. Very approachable for beginners and more than good enough to make them dangerous.

</comment><comment><USER48> These days it's more about the code than the books. I don't think there are any books up-to-date. It's all in the source code (and man pages).

[https://git.kernel.org/](https://git.kernel.org/)

</comment><comment><USER49> Pick up a Linux cert book like rhcsa or something. You don't need the cert or the test, the knowledge shoukd be beginner admin tasks. Along with that dual boot it or switch completely and use it often, try to use the cli when you can.

</comment><comment><USER50> I wrote a free book for getting started with the command line that may interest you: [https://seankross.com/the-unix- workbench/](https://seankross.com/the-unix-workbench/)

</comment><comment><USER51> Try this recent HN submission: Text Processing in the Shell [https://news.ycombinator.com/item?id=22590824](https://news.ycombinator.com/item?id=22590824)

</comment><comment><USER52> I agree to use it on the desktop.

Next, get a book on bash or other shell. You'll learn the most important parts quickly. Then do the same for Python.

If you make it that far, read the art of Unix programming to approach greybeard status.

</comment><comment><USER53> [https://tldp.org/HOWTO/Unix-and-Internet-Fundamentals- HOWTO/](https://tldp.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/)

</comment><comment><USER54> You need a goal which is a tangible end product. Everything else derives from that core requirement. E.g. write a multithreaded chat program with a separate remote backend.

<comment><USER55> That's way complicated for a newbie project... I'd go with something like a snake game

</comment></comment><comment> tek-cyb-org Try lfs(Linux from scratch). Start building your own distros, configure them how you like. You will run into a lot of problems that you will learn how to solve.

</comment><comment><USER56> Grab _The Linux Programming Interface_ and a good C textbook. Rely less on the textbook and more on the readings and exercises in TLPI.

</comment><comment><USER57> Nothing beats a mentor.

Find someone experienced and ask them to mentor you. (Online of course, but use screen sharing and audio.)

</comment><comment><USER58> [https://tldp.org](https://tldp.org)

</comment><comment><USER59> If you want to learn programming, from my point of view, learn C.

</comment><comment><USER60> Install it on your main workstation and don't dual boot.

</comment><comment><USER61> Honestly? When I was in high school I was fortunate enough to find a copy of _The Unix Programming Environment_ [0], which is a marvelously accessible tutorial introduction to incrementally building UNIX® programs using nothing more than the pipe operator, which means you can start writing 'programs' that work on the output of other programs, until your program snowballs into a longer pipeline. The book was published in 1984 and works verbatim on any Linux system today.

Once you grasp how powerful this closed system of incrementally processing text is, you are sort of unstoppable at the command in a *nix system.

Pay careful attention to regular expressions, which are a universal tool in Unix for processing text. Along with Unix' treatment of files as a stream of newline terminated strings, this how Unix gets away with working with unstructured files instead of something like XML or S-expressions): that is, most Unix tools expect you to work with a file (or file descriptor, which is a pointer to any file-like thing in memory), and to process it one line at a time, and to use regular expressions to parse those lines into fields.

Working with lines using regular expressions is how the original editor, /bin/ed, was conceived, before the existence of visual editors like Vim and Emacs: you can find, print, and also edit lines in the file using regular expression syntax in ed, and this knowledge, btw, translates to fluent use of regular expressions in both sed ("stream editor", or basically a non- interactive version of /bin/ed, which essentially executes your editor commands and then exits), and egrep (which searches for lines matching your regular expression).

In fact, once you start to see these pieces come together, look for examples in Kernighan and Pike[0] which demonstrate the use of awk. Awk is an extremely powerful but also extremely simple tool for processing data in Unix, using all the concepts I just described, and not much else. It has a few extra features, like variables and loops, which you'd expect in a programming language, but you are expected to use Awk exactly like you'd use things like grep, ed, and the shell. It's just that now you've got this very compact, powerful notation for splitting records (lines) into fields (regular expression matches), and then doing arbitrary things with them to spit text back out. You could even write your own database using something like Awk, and you can read about how to do database-like tasks in the classic and accessible book on Awk by the original authors of the tool (Aho, Weinberger, and Kernighan, whose last initials together form the name AWK)[1].

Then, much later in life, when you find yourself doing some fancy stuff in Haskell and creating a DSL to do things like process pipelines, you realize that Awk was actually way ahead of its time.

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

[1] [https://en.wikipedia.org/wiki/The_AWK_Programming_Language](https://en.wikipedia.org/wiki/The_AWK_Programming_Language)</comment>


Ask HN: Anybody using Webpack 2 in production? - <AUTHOR> I know it's still technically in beta, but it sounds like that's mainly because the documentation isn't finished yet. Is anyone here using it in production, or should I stick with v1 for the medium term future?<p>P.S. The fatigue is REAL. :) <comment><USER2> I am using Webpack 2 with Aurelia. The breaking changes are a little bit painful (like the latest release), but using it in production and it is completely fine. Documentation is a little scarce, but they're working on it: [http://webpack.js.org](http://webpack.js.org)</comment>


Hair Ice - <AUTHOR> https://en.wikipedia.org/wiki/Hair_ice <comment><USER2> What a coincidence! During the hard freeze on New Year's Eve here in Austin, TX, I discovered a field of this stuff in my back yard. When I first saw it, I didn't even recognize it as ice! It looked more like a fungus at first, and only after touching it and seeing that it was dissolving did I realize what it was. After some Googling, I came across this exact Wikipedia article (thanks Wikipedia!).

Here's a photo album of it: [https://photos.app.goo.gl/EZ74yJaMZX8VuoEp7](https://photos.app.goo.gl/EZ74yJaMZX8VuoEp7)

My favorite examples: [https://photos.app.goo.gl/JX1f8uhrvnj4k6EY9](https://photos.app.goo.gl/JX1f8uhrvnj4k6EY9) [https://photos.app.goo.gl/ADD2cojZoEvvRBjH8](https://photos.app.goo.gl/ADD2cojZoEvvRBjH8)

<comment><USER3> Your location (address photos were taken) and full name are visible from the link you shared.

<comment><USER4> Is that any different than picking a random person from a phone book

<comment><USER5> Someone unhinged who strongly disagreed with one of his previous comments might take this as an easy harassment vector.

<comment><USER4> Fair point, i agree

</comment></comment></comment></comment></comment><comment><USER6> Worth checking out the main source of that article for more details and pictures: [https://boris.unibe.ch/75002/1/bg-12-4261-2015.pdf](https://boris.unibe.ch/75002/1/bg-12-4261-2015.pdf)

<comment><USER7> I skimmed the paper wondering if there could be some fitness benefit for the fungus. Unless I missed it, they don't suggest any. Anyone have a guess?

<comment><USER8> I wonder if the ice might help protect against extreme low temperatures? Fur on animals traps air, acting as an insulator, so it might be similar here. As the fungus (presumably) provides negligible heat output, it would probably only protect against temporary cold flashes, rather than sustained lows - perhaps unusually cold nights?

<comment><USER9> Bigger picture thought here - how many unique survival mechanisms exist in floura/fawna/fungi in species that survived from the ice age(s) to today that are only exhibited in extreme temperatures/unique atmospheric conditions. And particularly,how many have we not yet observed/studied due to those conditions not existing currently.

</comment></comment></comment></comment><comment><USER10> "Hair Ice" sounds flat and un-poetic, like Donald Trump named it.

"Frost Beard" is the OBVIOUSLY superior name of this phenomenon.

<comment><USER11> Even in a thread about ice forming on trees, someone manages to bring up Trump. Amazing.

<comment><USER12> Is Trump the modern equivalent of Godwin? :-)

<comment><USER13> Not yet.

</comment></comment></comment></comment><comment><USER14> It's interesting how lifeforms can mold materials into shapes and states we'd otherwise never think of, or that maybe would even be impossible to produce. The strong silk some spiders make is another example.

Leads me to think that there are a lot of undiscovered properties of materials that could potentially be unlocked by engineering different life forms. We're pretty far from exploring all the possibilities in manufacturing techniques.

<comment><USER15> This is related to another burning question I have (maybe someone knows): why aren't more resources, students, professionals focused on material sciences?

I have friends in AI, biotech, clean tech, web/apps, robotics, but none in material sciences. And yet materials are so important technologically that we name ages after them (Stone Age, Iron Age, Bronze Age). I lived in "Silicon Valley" even — our industries and progress are so tied to materials, why isn't there more of a focus on material science?

<comment> semi-extrinsic There is. It's just that materials science is a bona fide Hard Problem that requires tens and hundreds of millions of dollars in lab equipment (synchrotrons, free electron lasers, the good stuff), supercomputers etc. to advance, so it's studied by top universities, National Labs and so forth. It's not really something you can "disrupt".

<comment><USER16> Nevertheless, there have been recent claims that it _is_ being disrupted, by the current buzzwords, AI and machine learning.

See: [https://www.nature.com/news/can-artificial-intelligence- crea...](https://www.nature.com/news/can-artificial-intelligence-create-the- next-wonder-material-1.19850)

</comment></comment></comment></comment><comment><USER17> i love seeing wikipedia articles making it to the front page. no opinions, just a cool wiki article that probably most people have never heard of.

<comment><USER18> Me too! I love these random chunks of knowledge floating by...

<comment><USER19> [https://en.wikipedia.org/wiki/Special:Random](https://en.wikipedia.org/wiki/Special:Random)

<comment><USER20> Imagine submitting that and everyone will be talking about a different article.

</comment></comment></comment></comment><comment><USER21> Less strange but in my experience even rarer is to have a frozen lake grow bushes of ice crystals like in the first picture here: [https://en.m.wikipedia.org/wiki/Ice_crystals](https://en.m.wikipedia.org/wiki/Ice_crystals)

</comment><comment><USER22> Apparently this can happen in the Washinton area:

[https://www.youtube.com/watch?v=MIOGeVPlbWM](https://www.youtube.com/watch?v=MIOGeVPlbWM)

<comment><USER23> I can report that it does. I've seen this hiking in Snohomish County, WA. Hair ice looks a bit like cotton fluff, like something splitting out of a seed pod. It looks like it is growing out of the pieces of wood or bark. The ice crushes like a lightly packed snowball.

Of course this means you have to go hiking in the cold. Totally worth it.

</comment></comment><comment><USER24> The original 1918 theory confirmed in 2015.

My mind usually defaults to "most things have already been discovered AND confirmed", seeing something like this confirmed only so recently is always cool, as it forces me to rethink some of my assumptions!

(Yes, I know there are plenty of undiscovered, and even more unconfirmed things out there, that doesn't change my mind's default reaction though!)

<comment><USER25> We got good models for pretty good chunk of phenomena of scales from subatomic to galaxy wide and beyond. Astonishing is the fact that same laws give good predictions on both ends of the scale. I think that's the reason behind the assumption we have most figured out.

But in the middle happens most what we cannot comprehend. How does a cell know when to divide. How exactly the process goes. Why do we have consciousness? Having theories capable of describing atoms and stars we can't figure out the middle, this is fascinating.

Imho the issue is the complexity of system. Stars and atoms are actually not that far apart. In the middle the amount of effects with comparable magnitude and stable states are the greatest.

</comment></comment><comment><USER26> Maybe this is worth updating on wikipedia.

They didnt know that around freezing you have equilibrium that is both melting and freezing.

As you leave that the equilibrium shifts to freezing only.

Thinking that each of those fibers from the moss start the strand and the ice grows as a result.

EDIT: Chem engineer here, not sure what to cite on something like this, or even the proper language.

<comment><USER27> This sounds like statistical mechanics thinking to me. At the macro-level, water that is at freezing temperature but that has not frozen yet will appear liquid. However, what's happening at the micro level in the fluid is that small pockets of the water are switching back and forth from frozen to liquid as their bonds tighten up from loss of thermal energy. There's still enough energy in regions of the liquid mass such that these isolated crystals may not be crystals for very long, because the thermal energy transfers from hotter to colder regions, but because the whole mass is bleeding energy into an external system it will eventually reach a tipping point where larger crystals can persist for longer, until eventually the water turns into ice.

</comment></comment><comment><USER28> I saw either this or needle ice while hiking in North Carolina in winter of 2016. I couldn't figure out what to Google at the time. It made an extremely satisfying sound to step on (there was tons of it so I didn't feel bad).

</comment><comment> rising-sky How Hair Ice grows: [https://www.youtube.com/watch?v=uZ_RJ1z22Vw](https://www.youtube.com/watch?v=uZ_RJ1z22Vw)

</comment><comment><USER29> Pleasantly surprised, I thought clicking through would lead to something _much_ grosser.

<comment><USER30> Yeah, I kept reading it as "Hair lice". Glad to have been mistaken.

</comment></comment><comment><USER31> Reminds me of Storm's hair from Xmen [https://img.cinemablend.com/quill/a/2/6/f/7/d/a26f7da9ff28d2...](https://img.cinemablend.com/quill/a/2/6/f/7/d/a26f7da9ff28d22f19bedee23c299e499bfda696.jpg)

</comment><comment><USER32> You need to dig pretty deep in chemistry to find a molecule with a range of properties stranger than H2O.

</comment><comment><USER33> I see this all the time doing winter hiking in Harriman State Park in NY.

<comment><USER34> Well obviously, harri man...

</comment></comment><comment><USER35> Pretty neat any real world applications? I would suspect cryogenics might be a pretty good contender considering that the control of ice-crystal formation is pretty important for preserving tissue. The recrystallisation inhibitor properties of what ever proteins are involved in this seems to be just what is needed as they prevent small ice-crystals from forming larger ones and the large crystals are the problem as they burst tissue.

</comment><comment><USER36> I wonder if hair ice would be better, or worse, on an aircraft wing. I think it can't be structurally stronger, so it should get knocked or blown off easier, but I'm only about 60% more confident. A better deicer solution would be an interesting market disruption.

</comment><comment><USER37> Somewhere there's a commercial application or two for this waiting to be discovered.

</comment><comment><USER38> Stuff of legends. I wonder if there are any local tales about trees with beards?

<comment><USER39> Tolkien wrote Treebeard in LOTR. Grey beard could be this?

"a large Man-like figure, at least fourteen foot high, very sturdy, with a tall head, and hardly any neck. Whether it was clad in stuff like green and grey bark, or whether that was its hide, was difficult to say. Arms, at a short distance from the trunk, were not wrinkled, but covered with a brown smooth skin. The large feet had seven toes each. Grey beard, deep brown eyes, shot with a green light"</comment></comment>


Germany arrests suspected US spy - <AUTHOR> http://www.bbc.com/news/world-europe-28160767 <comment><USER2> Important additional info from the original Der Spiegel report[0]

The suspect initially offered his services to Russian intelligence for financial gain. Apparently this is what alerted him to German counterintel. There was then an offer made to a representative of the USA.

But most important, Spiegel reports that it hasn't been confirmed yet that this USA representative was actually American or acting in the capacity of the government, suggesting that it may have been a counterintelligence operation.

[0] [http://www.spiegel.de/politik/deutschland/bnd-mitarbeiter- so...](http://www.spiegel.de/politik/deutschland/bnd-mitarbeiter-soll-fuer- die-usa-spioniert-haben-a-979199.html)

<comment><USER3> The guy got arrested because it was thought that he had been spying for the Russians. That explains the arrest then an American spy would never get arrested in Germany, Americans – even American spies – are considered 'friends' after all.

That is probably why Chancellor Merkel had to call President Obama: To explain why the Germans caused such embarrassment by arresting an American spy …

<comment><USER4> Sadly, you're probably mostly right -- but let's not forget the story of Robert Seldon Lady in Italy. On occasion European states do the right thing, despite being in bed with the US on most things, international law be dammed.

[http://www.washingtonpost.com/blogs/worldviews/wp/2013/07/18...](http://www.washingtonpost.com/blogs/worldviews/wp/2013/07/18/the- story-of-how-a-milan-cia-station-chief-became-a-fugitive-now-caught-in- panama/)

</comment></comment></comment><comment><USER5> Every time "Germany" and "privacy" end up in the same sentence, inevitably there will be a reference to STASI. There is also a subtle message there: Germans only care about their privacy because of STASI. As if the others that had not been subjected to STASI methods of surveillance should not be worried. "If you see something, keep calm and carry on"... edit: more quotes

<comment><USER6> Stasi is relevant because methods Stasi used are relevant.

Stasi considered arrests and torture to be ineffective and crude methods when controlling people. They wanted something that was harder to detect even for the victims. The oppression and surveillance Stasi directed towards typical citizen or dissident was not brutal as in "you have to fear for your life", especially in the last decades of DDR.

Stasi perfected the technique called Zersetzung. It was form of psychological harassment and character assassination that maintained plausibe deniability. They falsified information and caused mental stress. For high value targets it could include breaking into their house and altering furniture. For most people it was the threat of being inconvenienced, life being derailed and social relationships disrupted. Not getting into school, not getting the job or apartment you wanted. False rumors about you. Social relationships being broken. No-fly list for your life.

There is potential for the same thing happening in the west as a result of more efficient surveillance. Some black box algorithm determines that this guy acts in a way that is above some threshold and your life will be somewhat more shitty from that day onward. You just don't know why.

<comment><USER7> I recently read _The File_ by Timothy Garton Ash, a British journalist who spent a fair amount of time in East Germany in the last decade of the DDR. After reunification he was able to obtain his Stasi file. He learned how the Stasi perceived him as a risk and began contacting those who snitched on him.

The stories of how some of the informants _became_ informants are fascinating. One cooperated with the Stasi in order to obtain exit visas for official travel. Some were Ash's friends seeking to boost their careers, some were just pleased to do their part in furthering the cause of socialism.

Ash was never imprisoned or tortured and could leave whenever he pleased (though he was eventually barred from entering the DDR). He didn't really suffer at the hands of the Stasi but the book is a terrific look at the Stasi's surveillance and intimidation through the eyes of a single individual.

[http://www.amazon.com/The-File-A-Personal- History/dp/0679777...](http://www.amazon.com/The-File-A-Personal- History/dp/0679777857)

<comment><USER8> "he was able to obtain his Stasi file" sounds a bit like this was something special (I'm sorry if this is wrong, English is not my first language).

Just to clarify:

"Everyone has the right to inspect those documents that created the STASI about themselves. More than a half million people have made use of this option since 1992."[1]

[1] [http://www.bstu.bund.de/DE/Akteneinsicht/Privatpersonen/Priv...](http://www.bstu.bund.de/DE/Akteneinsicht/Privatpersonen/Privatpersonen_node.html) (loose translation)

<comment><USER7> That might just be poor wording on my part. Ash doesn't try to make it out as something exclusive, he devotes a significant portion of the book to Germany's efforts to bring the Stasi's work to light and the effects of that effort on German reunification.

</comment></comment></comment></comment></comment><comment><USER9> It's about time something happens.</comment>


A Tale of Two Plagiarists (2019) - <AUTHOR> https://www.chronicle.com/interactives/20191011-Gutkin-Sontag <comment><USER2> Brief summary so you avoid wasting your time on this drivel like I just did.

Two academics married together when they were young. They bitterly separated some years later. She had a notable career, he did not. Now they are dead.

He wrote a book on a vacuous subject while they were together. She at least edited it. Another academic claims she actually wrote it. He has no proof but he dislikes the guy. Also, the book is good while the guy did nothing interesting thereafter. Except of course he did write another book which is at least as famous after they split but it doesn't count. Because.

By the way, there is one inconsequential paragraph in the whole book which is improperly attributed. There is a reference to the original author but it's only on a quotation while the paragraph is lifted with slight alterations. Squinting hard enough you might call it plagiarism. Actually she has been accused of plagiarism for an entirely different work decades later. Does it mean something ? Probably not but the article writer is paid by word.

You're welcome.

</comment><comment><USER3> It sounds like the exact plot of The Glenn Close movie from a couple years ago

</comment><comment><USER4> Identifying writing styles... A cry for NLTK?

</comment><comment><USER5> Ugh. The ghost writer was a plagiarist! Hire a better ghost writer next time. Or, in this case, sleep with a better one.</comment>


Ask HN: What if JavaScript isn't the solution to everything - <AUTHOR> It's starting to feel like the JavaScript 'ecosystem' is broken. Especially npm and the proliferation of small libraries written by inexperienced developers. When is the industry going to move on? Angular is a behemoth.
If the idea is to simplify with modules, I think they miss the point. The 'old' server side libraries, flask, ror, even .net MVC look elegant and simple in comparison.
When will this stupidity end? <comment><USER2> If you stop thinking like a front-end web dev, and take a step back from the whole thing, the status quo is truly insane and embarrassing. A many-billion dollar, world changing industry has been exclusively constrained to _one_ dynamically-typed, weird language cooked up by one guy in a hurry, over 20 years ago.

How can such a phenomenon even exist, without programmers falling over themselves to create a development ecosystem with compilers and multiple language paradigms? The best answer I can come up with is that the history of web development is rooted in a culture that cares only about product design, user experience, and making a million dollars fast. It took a long time for systems programmers to get interested enough to provide the perspective of, well, a systems programmer.

It _could_ be argued that not rocking the boat, and just accepting JS as the standard unconditionally, helped the web succeed. I don't agree with that. I don't see how having a good execution environment in the browser in 2004 could possibly have hurt the web.

<comment><USER3> Because it would have only worked for half the users. HTML/CSS/JS support parity across the browsers is a relatively new thing. If IE had python support and Firefox supported Ruby, what would have all the websites been written in?

It's kind of a messy miracle that that didn't happen and we got to where we are today. Now, with established standards support WebAssembly might be the next step you're looking for.

<comment><USER4> I may be the minority but I don't consider it a burden to need more than one app for something. Even today people have installed a half dozen chat apps to keep up with friends on different networks. If half the sites require Firefox and half Chrome then that's still only two apps enabling dozens of web apps for daily use.

<comment><USER5> It wouldn't be half/half, because many websites would then abstain from using a scripting language at all. Maybe more something like 90% pure HTML/CSS, 5% Firefox, 5% Chrome?

<comment><USER6> > 90% pure HTML/CSS

Like in the good old days

</comment></comment></comment></comment></comment><comment><USER7> The javascript ecosystem is feeling better than ever to me right now.

The only reason that people are getting "javascript fatigue" and complaining that JS is being used for everything is because _so many_ people are working so hard to improve and innovate the language/ecosystem... and so many people are actually finding applicable benefit to that work.

I've built several native iOS apps in Ruby with RubyMotion - no one was upset about Ruby fatigue or that Ruby is being used in a new context... Because why would they? There's nothing to complain about! It's just a product created by people working hard to provide value in a new way.

And that's what people are doing in the JS world too. There's just way more of them and way more people using and applying that work, so it starts to feel overwhelming. But that is not the fault of the language or the community.

No one is forcing anyone to use any language or framework. No one is forcing anyone to use any particular software. Pick the ones best for your needs — why pull down all the people working so hard on JS along the way?

<comment><USER8> The job market right now is pretty heavily skewed towards the whole JS stack, so your last comment is almost like "nobody's got to use the internet".

</comment></comment><comment><USER9> Well, with Webassembly en route, there is a future where we can use whatever language we like if the can target WebAsm.

Currently, there is only support for manual memory management but there are plans to expand with GC.

There is certainly a horizon for expansion. We are already seeing this with languages that compile to JS. Perhaps WebAsm will provide the substrate for better engineered languages and code.

</comment><comment><USER10> Javascript is always dramatically overused at the top of every market cycle: DHTML in 1999, Web 2.0 in 2008, Angular/React/etc now. This too shall pass. And then reappear, worse.

If you are truly sick of javascript, I have something for you:

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

</comment><comment><USER11> What if it is?

JS isn't that bad, the ecosystem big enough to avoid the small libs written by n00bs and easy to acces s thanks to npm. Npm isn't perfect, but better than what most languages have.

Many people already know JS and it's pretty much the easiest language to get started with, you just need a browser and an editor.

Most people don't use the best solution for a problem because often nobody knows what this would be, so they use what they know and make things work.

English is certainly not the best language for the world, still most people speak it and make things work.

<comment><USER12> Any suggestion on which human language is better than English?

<comment><USER13> By certain measures, one might say 'German'.

</comment></comment></comment><comment><USER14> No language or technology is the solution to everything. In fact, they all suck in one form or another. Your job is to pick those that fit the problem at hand well. That's why learning multiple languages, and designs. _You_ are the one size fits most solution. Study and learn and the feeling of everything being stupid should be reduced (never gone but thats good).

</comment><comment><USER15> Madness never ends. You can be sane and stick to few well engineered libraries and ignore the hype.

</comment><comment><USER16> You can avoid the marginal libraries written by inexperienced developers, you know.

</comment><comment><USER17> I'd probably have to re-evaluate all of my life choices. This question is just too hard to consider.

</comment><comment><USER18> Why this was flagged?

<comment><USER19> OP thinks pretends like Angular is the only JS library, obviously did zero research (expressjs is like flask), then baits further with "When will this stupidity end?"</comment></comment>


Ask HN: Seeing all these "overwhelmed with front-end" posts, I have a question - <AUTHOR> What do all of these front-end tools such as React, Angular, and all the other stuff people are complaining about do that good old PHP/MySQL/Javascript can't do?
Forgive my ignorance, I only know HTML/CSS and a little Javascript/PHP.  I'm assuming the frustrating frameworks are used for things like SAAS apps.
But can you give me examples, hopefully with URLs, of applications that you can only build with Angular, React, etc. <comment><USER2> What's "overwhelming" is the volatility of the ecosystem. "New" paradigms seem to appear all the time, people/compagnies publish new and attractive frameworks, other people/compagnies publish slightly different implementations of the same ideas, the "standards" always change, and everybody looks for ways to work _today_ with the technologies of _tomorrow_.

Basically, nothing they do is impossible to do with "good old PHP/MySQL/Javascript" but it certainly is a lot more exciting (and good for your resumé) that way.</comment>


RabbitMQ Chat Post Mortem - <AUTHOR> http://videlalvaro.github.com/2011/05/rabbitmq-chat-post-mortem.html <comment><USER2> I wrote a chat server with Node.js/Socket.io + node-amqp. Message flow was dictated by business goals, and therefore was somewhat odd. Each client had his own queue and a single exchange was created for each room. Message came to N.js over a Websocket, from where it was pushed to a chat room's exchange with a temporary id. Next, message was posted to a Rails powered backend for processing and storing to a database. If Rails responded with success, a real message ID was pushed to the exchange, otherwise a command to kill message by temporary id was sent.

Given all this, I wasn't able to go beyond 2k simultaneous connections. Reasons? Our Rails setup wasn't able to handle that much requests. For the sake of testing I wrote a synthetic tests where Rails requests were mocked. RabbitMQ was running on Thinkpad Edge (quad core email@example.com), node.js client and server was running on dual core pentium@3Ghz. This configuration gave me 3.5-4.5 thousands of message deliveries per second, both PCs were at the top of capacity. Such performance looked suspiciously low for me, so I went further. Reading node-amqp shown that it is totally flawed (i.e. it is allocating 130kb buffer for each message sent). Doing some tweaking I managed to increase message delivery rate to almost 15 thousands of messages/second.

Strange part of the outcome is that processing both 4k and 14k messages created almost identical load on RabbitMQ.

Lessons learnt: 1\. RabbitMQ is very robust and easy to work with. 2\. Do not measure RabbitMQ's performance by LA or CPU consumption. If you feel stuck, try optimizing something. 3\. V8 memory allocation/GC suck. My server was constantly crashing due to std::bad_alloc being thrown after next packet buffer allocation. 4\. node-amqp suck even more. I am going to work on it somewhen soon. 5\. Node.js on it's own is a toy, not a tool. Do not build mission critical systems designated to handle long living connections with it.</comment>


Programmatically solve this Vietnamese math problem for kids - <AUTHOR>

So I found this Vietnamese math problem for kids: http://www.huffingtonpost.com/2015/05/20/vietnamese-math-puzzle_n_7346332.html and tried to find a way to solve it programmatically. I am not a developer just a python beginner. Here is my solution: http://pastebin.com/BZZ3EkGp , I would be curious to see yours. <comment><USER4> <?php while(1) { $numbers = '123456789'; $numStringLength = strlen($numbers); $num1=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num1,'',$numbers); $numStringLength = strlen($numbers); $num2=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num2,'',$numbers); $numStringLength = strlen($numbers); $num3=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num3,'',$numbers); $numStringLength = strlen($numbers); $num4=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num4,'',$numbers); $numStringLength = strlen($numbers); $num5=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num5,'',$numbers); $numStringLength = strlen($numbers); $num6=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num6,'',$numbers); $numStringLength = strlen($numbers); $num7=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num7,'',$numbers); $numStringLength = strlen($numbers); $num8=$numbers[rand(0, $numStringLength - 1)];

$numbers=str_replace($num8,'',$numbers); $numStringLength = strlen($numbers); $num9=$numbers[rand(0, $numStringLength - 1)];

$sum=$num1+13 _$num2 /$num3+$num4+12_$num5-$num6-11+$num7*$num8/$num9-10;

if($sum == 66) echo "Math Puzzle Answer String::".$num1.$num2.$num3.$num4.$num5.$num6.$num7.$num8.$num9."||Sum::".$sum."\n"; } ?>

</comment><comment><USER5> Not what you ask for, and I didn't completely solve it when I saw it a few days ago, but I think it's reasonably solvable by hand. I would first make the search space a lot smaller by assuming that b/c and gh/i are integers (hm, I think they must be, as you cannot end up with an integer by adding just two fractions that have different integer denominators)

And of course, simplify -11 ... -10 to -21. Then, taking out a factor of 12 might help:

      a + 13 * b / c + d + 12 * e - f - 11 + g * h / i - <USER3>
      = 12 * (b/c + e - 2) + (a + b/c + d - f + g * h / i + 3)
      = 12 * x + y

Now I would guess that y is positive (may be not too hard to prove) and x equals 4 or 5. If that leads to a dead end, work your way down for values of x.

<comment><USER6> 1/2 + 4/8 == an integer.

<comment><USER5> Thanks.

</comment></comment></comment><comment><USER6> So we can actually iterate over every possible solution pretty quickly. If I cared more, I'd look into using `fractions.Fraction` so that I didn't need to use floating point math.

        from __future__ import division
        import itertools

        def f(a, b, c, d, e, f, g, h, i):
            return a + 13 * b / c + d + 12 * e - f - 11 + g * h / i - <USER3>

        for choices in itertools.permutations(range(1, 10), 9):
            if abs(f(*choices) - 66) < 0.001:
                print choices

There are also some solution that your code will give that are wrong due to your code using integer division.

</comment><comment><USER7> [https://github.com/duncan-bayne/viet-cl/blob/master/viet- cl....](https://github.com/duncan-bayne/viet-cl/blob/master/viet-cl.lisp)

( I'm seeking feedback here: [http://codereview.stackexchange.com/questions/91444/solving-...](http://codereview.stackexchange.com/questions/91444/solving- the-vietnamese-school-maths-problem) )</comment>


Ask HN: Please review my friends startup - reminderdiary.com - <AUTHOR> http://www.reminderdiary.com

<comment><AUTHOR> Hi Guys,

I've given my feedback but would appreciate your thoughts, his questions to me were...

· Are missed appointments my biggest market or should I be concentrating on other things?

· Do businesses know this is a good way of stopping missed appointments? Are they searching for it? If not how do I reach them?

· What type of businesses should I be marketing at?

· How should I be increasing traffic to my site?

Additionally as a bit of further information he has achieved some traction with some monthly paying clients, I think his problem is whether this can scale.</comment>


When You Fall Into a Black Hole, How Long Have You Got? - <AUTHOR> http://blogs.scientificamerican.com/critical-opalescence/2012/12/14/when-you-fall-into-a-black-hole-how-long-have-you-got/ <comment><USER2> Well, given that you can't travel backward once you've crossed the event horizon, can neural signals travel in a direction opposite the center of the singularity? Meaning, once neural and sensory activity stops then you are dead, even if your body has not yet experienced the crushing gravitational effects. You are dead as soon as you cross the event horizon.

Though it may be possible to design some machines that can do computation in this unidirectional fashion. Consider something like: <http://en.wikipedia.org/wiki/Rule_110>

Another possibility is finding a really enormous black hole, large enough that stuff can live inside it: [http://www.technologyreview.com/view/423608/planets-could- or...](http://www.technologyreview.com/view/423608/planets-could-orbit- singularities-inside-black-holes/) Of course, humans are not wired topologically to survive in such an environment, but if there is an energy source and computing restrictions are followed, it may be possible to grow a civilization inside an event horizon.

A 1 trillion solar mass black hole would have an event horizon at about half a light year, enough room for a few solar systems, depending on our good luck.

<comment><USER3> This is actually one of the problems with black holes, the event horizon is listed as an impenetrable barrier, but if you emitted light (which is in principle no different from an electrical impulse) from just under the barrier what prevents it from traveling past the barrier and away?

And don't tell me that it curves away because that would be a violation of conservation of momentum.

It also can't travel directly up then back down, because light can't do that - at the moment of reversal it's not traveling at the speed of light.

And the light particle can't evaporate (i.e. red shift into nothingness) by loosing all its energy to the blackhole because that would be a violation of conservation of angular momentum (every photon caries some angular momentum).

So what happens to it?

I should mention that after studying all the physics that I could understand I do not believe black holes exist. (Super massive objects might, like the observed objects in the center of galaxies, but not as black holes.)

<comment><USER4> Gravity causes or is (depending on how you look at it) curvature of space so the light goes "straight" but doesnt leave. Sorry if that means it "curves away" but that's what having an escape velocity greater than the speed of light means.

And what does that have to do with conservaton of momentum? If i throw a rock upwards it curves away rather than leaving the solar system — momentum is still conserved and the rock has much more than a photon.

<comment><USER3> The object can not suddenly switch from moving straight to a curve. That's what I mean. In order to curve something must cause it to do so, but there are no lateral forces on it (or more accurately the forces in all directions are exactly balanced).

<comment><USER5> It is still moving in a straight line. Large amounts of gravity tend to distort spacetime, such that a "straight line" appears bent to a distant observer.

It's the same phenomenon as what causes gravitational lensing.

<comment><USER3> Gravity curvature works fine at ordinary masses too. Take a rock, throw it directly away from the earth.

It's not moving in a curved line, it's moving straight - from the POV of a distant observer as well.

In order to curve it must have some lateral motion relative to "down".

<comment><USER6> Different effect. A rock is actually following a curved trajectory through ordinary space. Light always goes straight - but in these extreme circumstances space itself is curved. You can easily verify this by looking at said curving rock: the fact that you can see it without distortions (or at all) implies that its region of space has insignificant curvature and the light from the event is reaching your eyes is an easy indication of it.

Ordinary masses bend space nowhere nearly enough. The Sun bends space just _barely_ enough for the effect to be observable in a solar eclipse (it was used as a verification of Einstein's theories) by causing stars behind it to appear ever so slightly out of place when its disc is just about to overlap them. The light from these stars is NOT being bent - it keeps going in a straight line, but the Sun's gravity slightly alters the very idea of straight in its immediate vicinity. The effect is a tiny distorsion, about 0.00048 degrees.

And the Sun is not exactly small.... but it's not dense enough to have a strong effect. Nothing in our everyday experience is. If you could stuff all of its mass into a tiny volume then in its immediate vicinity you could experience this.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> My friend told me: "Looking out from [falling into] a black hole you see the life of the universe pass before you. That means if you've managed to fall into a black hole, no one in the history of the universe cared enough to rescue you."

<comment><USER8> Isn't that equally true of any kind of hole?

<comment><USER7> Black holes fudge with time and other holes don't.

</comment></comment></comment><comment><USER9> Complete ignorant question: there is always the discussion of "falling" in to a black hole, but could it be possible to "hang" something from outside the event horizont?(given an infinitely strong and quite long wire). If so, could it be possible to send any signal outside? Is it possible for a particle to vibrate in a radial axis away from the blackhole once inside the event horizont?. Does a particle follow in an orbit around the black hole once inside the event horizont? Or the acceleration towards the center is so big that is a vertical fall? I think that this last question is somehow replied on the article but I can't understand it. Amazing topic indeed!.

Edit: some corrections.

<comment><USER10> > Complete ignorant question: there is always the discussion of "falling" in > to a black hole, but could it be possible to "hang" something from outside > the event horizont?(given an infinitely strong and quite long wire).

It's a good question, because it exposes some subtle assumptions being made.

The string breaks, because you cannot have an infinitely strong wire in a universe that allows black holes. If we could have such a wire, black holes would not be formed, since the wire's material would be able to resist being crushed into a black hole. Therefore collapsing stars would compress into this material rather than into black holes, and there would be no black holes.

Once inside the event horizon, every path leads to the singularity. You cannot get further away from it, and you cannot orbit it (or otherwise keep distance constant).

<comment><USER11> All that the math suggests is that the escape velocity from inside the event horizon is beyond the speed of light, so it's physically impossible.

It doesn't seem impractical to be able to establish an orbit inside that radius, though, even a highly elliptical one, provided this orbit never slings you back out. It just seems if your orbit decays even slightly, you'll never be able to recover, leading to the inevitable conclusion of being pulled directly into the singularity.

<comment><USER10> Inside an event horizon, orbiting implies traveling faster than c from your reference frame. No can do.

(Note: this applies to an electrically neutral non-rotating black hole.)

<comment><USER11> Since the event horizon itself is supposed to be a fairly non-event to cross, why can't you just fly in a lazy circle around a large black-hole at a relatively "safe" distance and maintain an orbit that's decaying only very slowly?

</comment></comment></comment></comment></comment><comment><USER12> Greg Egan's Planck Dive short story is worth a read: [http://gregegan.customer.netspace.net.au/PLANCK/Complete/Pla...](http://gregegan.customer.netspace.net.au/PLANCK/Complete/Planck.html)

</comment><comment><USER13> I love how Physics is like the biggest, grandest game of Sudoku ever played. You can get so far, certain that everything is about to fall into place, and then you reach a contradiction. And what better place to find the contradiction than at the event horizon of a black hole. Good stuff.

<comment><USER14> If you reach a contradiction, it means you've done something wrong. To me, this article is a partial confirmation of earlier suspicions that the physics community has lost touch with reality.

<comment><USER15> The history of science shows your conception is a bit too stringent. It sounds a bit like Popper's extreme views on falsification in philosophy of science, whereby a theory must either pass every empirical test that is thrown at it, or be flatly rejected. The history of science (Kuhn, etc) shows that this is just not how it works. In general, when a theory fails a test it is tweaked and revised to accord better with the data, and sometimes (usually after the theory gets much more complex) a new, usually simpler, revolutionary theory replaces it. Now, since we can't go toss stuff into black holes, theoretical physics at this level is more like pure math, where the "observations" are the calculations of the theorists. When the calculations don't add up and a contradiction is found it doesn't mean that they've lost touch with reality. On the contrary, they are bringing their theories into closer congruence with reality.

<comment><USER14> _A theory must either pass every empirical test that is thrown at it, or be flatly rejected._

Well, that's how reality actually works. Statements about reality are either true or false. How many physicists would even agree with that? Therein lies my distrust of modern physics, or at least part of it.

I'm no fan of Popper, though.

 _The history of science (Kuhn, etc) shows that this is just not how it works._

I'm no fan of Kuhn either, though. He also probably wouldn't agree with my litmus test of "Statements about reality are either true or false."

<comment><USER15> This seems to be at odds with your reply to the sibling comment. If Newtonian physics is incomplete, then the statements it makes about reality are, strictly speaking, wrong. Yet to flatly reject Newtonian physics would be silly, since it clearly has some aspect of truth to it, having been useful not only in practical tasks, but as a platform for building more complete accounts of physics. Analogously, modern physics may have contradictions and is clearly "wrong" at some level, yet it is remarkably good at explaining lots of empirical phenomenon, and we would probably be much worse off if we scrapped the whole enterprise and started over from first principles rather than building on what we have until the next breakthrough. Your litmus test may be right, but that's no way to do science. Lastly, since you aren't a fan of Kuhn, do you prefer any one else's account of philosophy of science?

</comment></comment></comment></comment></comment><comment><USER16> Here's a not-so-scientific but rather fun YouTube video on the topic: <http://www.youtube.com/watch?v=3pAnRKD4raY>

</comment><comment><USER17> All this Blackhole talk reminds me of the excellent Frederick Pohl novel, Gateway. And its sequel Beyond the Blue Event Horizon. Both of which deal with humans interacting with these regions of the universe for the first time.

<http://en.wikipedia.org/wiki/Gateway_%28novel%29>

</comment><comment><USER18> The event horizon is the point where the gravitational pull is pulling you at nearly the speed of light so that there is no possible escape velocity for any particle that has mass, correct?

I'm no physicist, but if gravity were to act on a human body with that much force, wouldn't the force alone kill you? I imagine the force of the pull would be stronger than the force holding together the atoms that make up the tissue of your body, and you would disintegrate into a stream of particles accelerating toward the singularity. Am I way off here? If a smaller object approached an object of such great mass that not even light can escape its gravitational pull, wouldn't the smaller mass's particles inevitably be funneled into a single-file line until they are absorbed into the singularity?

<comment><USER5> How much gravitational force does the Sun exert on you? Do you feel any of it?

A constant gravitational field doesn't change anything - everything is accelerating the same amount, in the same direction. What can cause problems is the _difference_ between the gravitational field at two different points (for example, when a planet gets too close to a star, it can be torn apart due to the force exerted on the near side being much greater than the force exerted on the far side). But this isn't the same as the overall strength of the field, and a sufficiently large black hole could have a very survivable field gradient at the event horizon.

<comment><USER18> Oh ok, so what I described (the atoms of your body being stretched apart by tidal force) will eventually happen, but not necessarily until quite a while after you cross the event horizon, if the total mass of the black hole is great enough. Thanks for the explanation.

</comment></comment></comment><comment><USER19> _"[...] observers who are freely falling—whether into a black hole or toward the ground—don't feel the force of gravity, [...]"_

They will if there's enough of a gradient and the observers are not ideal points.

Many years ago, Larry Niven wrote a story (<http://en.wikipedia.org/wiki/Neutron_Star_%28short_story%29> ) where tidal forces killed observers trying to orbit a neutron star.

<comment><USER13> Yes, but in a sufficiently massive black hole, it is still possible to pass the event horizon unscathed. Thus, the paradox still exists.

</comment></comment><comment><USER20> I wouldn't worry so much about the event horizon so much as what is right outside of it.

The tidal forces and the x-rays resulting from said forces are pretty much lethally intense.

<http://chandra.harvard.edu/chronicle/0104/tidal/index.html>

<comment><USER21> The X-rays don't come from "tidal forces" by themselves, they come from tidal forces acting on matter falling into a black hole.

<comment><USER11> Doesn't "tidal force" dictate that it's acting on something? What is a force if there's nothing for it to act against? Just as it takes two to tango, you can't have a force without two participants at opposing ends.

<comment><USER21> _Doesn't "tidal force" dictate that it's acting on something?_

Tidal gravity is equivalent to spacetime curvature, so it's there whether or not there is matter falling into the hole; the term "tidal force" is sometimes used to refer just to that fact. But X-rays won't be produced unless enough matter is falling in and being acted on by the tidal force. If there were no large quantities of matter falling in, a very small object like, say, an astronaut in a rocket ship, could fall in and not encounter any X-rays, but the tidal force would still be there (and could potentially pull his ship and him apart). I wasn't sure if that distinction was clear.

<comment><USER11> I'd always understood that tidal forces were related to objects large enough to have a measurable differential in orbital period from one side of the object to the other.

In the ordinary universe this often plays out on small moons in a low orbit around very large planets such as Jupiter.

A definition (<http://en.wikipedia.org/wiki/Tidal_force>): "The term _tidal force_ is used to describe the forces due to tidal acceleration." You can't have acceleration without an object being accelerated.

Not trying to split hairs here, but to try and establish if it's possible to have a force that's not acting on anything.

<comment><USER21> _I'd always understood that tidal forces were related to objects large enough to have a measurable differential in orbital period from one side of the object to the other_

This is one way of looking at it, but it's not very general. The more general way of looking at it is to look at two nearby "test objects" (meaning objects so small that they don't affect the gravitational field enough to make a difference), both in free fall, that start out at rest relative to each other. If they don't stay at rest relative to each other, then tidal gravity is present.

The term "tidal force", on the more general view, refers to forces felt by objects that are _not_ allowed to follow the free-fall paths that tidal gravity is trying to make them follow. For example, consider a small piece of the Earth on the side facing the Moon, and another small piece on the side opposite the Moon. If these two pieces of matter were in independent free-fall orbits, they would separate due to the tidal gravity produced by the Moon. Since the two pieces of matter are _not_ independent--they are both attached to the Earth--they both feel a "tidal force" because they are being prevented by the rest of the Earth from following the "normal" free-fall orbit they would follow due to the Moon's gravity if they were not attached to the Earth.

 _if it's possible to have a force that's not acting on anything._

If you don't like using the term "force" when there's no object feeling the force, then you can just use the term "tidal gravity", as I did above, to refer to the underlying spacetime curvature that, when objects _are_ present to feel the force, causes "tidal force". So tidal gravity can be present even when there is no object feeling tidal force due to the tidal gravity.

</comment></comment></comment></comment></comment></comment><comment><USER22> The rest of your life?

</comment><comment><USER23> It's not any more possible to get into a black hole interior than it is to get out because black holes don't have an interior.

<comment><USER13> They have an event horizon. Everything past that is inside the black hole. Things absolutely can and do pass the event horizon. That is how the mass of the black hole increases. That is also the problem the article is addressing. This creates a paradox in that it allows a single quantum particle to be poly- entangled - something that is not allowed by our current understanding of quantum mechanics.

Therefore, what really happens? No one knows for sure. If the no-drama principle correct (which is implied by Einstein's theory of gravity), in that you cannot feel gravity when you are in free-fall, you pass through the event horizon just fine, and then die when you are torn apart by tidal forces. (Of course, the tidal forces kick in outside the event horizon in smaller black holes - but that's beside the point). If the no-drama principle is correct, then there is a fundamental and insoluble contradiction in our understanding of physics. That's the point of the article.

<comment><USER23> No, stuff that falls inside the black hole stacks up around the event horizon, which really grinds stuff up to the planck scale and transforms it to maximum entropy hawking radiation.

falling into it, it has enough degrees of freedom to put you into any kind of virtual reality, so you might experience falling into a singularity or somehow travelling into an "asymptotically flat spacetime" but I'm certain that the classical picture of a black hole is completely wrong.

<comment><USER13> And you are welcome to be as certain as you wish. But I would point out that without black holes having an interior, there can be no Hawking radiation in the first place. Your statement is therefore internally inconsistent.

<comment><USER23> there might be something "on the other side" but there's no reason to believe that it has a 3+1 signature or is anything like the space we know at all.

<comment><USER21> _there might be something "on the other side" but there's no reason to believe that it has a 3+1 signature or is anything like the space we know at all._

There is plenty of reason to believe that, if a horizon does form, the region of spacetime on the other side will be spacetime, not something completely different.

There are some (speculative) reasons to believe that quantum effects might possibly prevent horizons from ever forming, but that would mean there is no "other side".

</comment></comment></comment></comment></comment></comment><comment><USER24> I get this feeling we'll see idiot daredevils doing "black hole falls" in 300 years. They'll be posted on YouHoloTube or whatever video display system we're using then.</comment>


When Stars Twitter, a Ghost May Be Lurking - <AUTHOR> http://www.nytimes.com/2009/03/27/technology/internet/27twitter.html <comment><USER2> There should be a convention for ghost twittering for those who want to do it transparently.

For instance, &ghostwriter or *ghostwriter.</comment>


Show HN: Catalog of accredited online university courses - <AUTHOR> http://www.coursehaven.com/ <comment><AUTHOR> Hi, the creator here!

With all the talk about MOOCs, many people seem unaware that distance learning courses have been a thing for several decades, with established providers such as The Open University and University of London International Programmes. It is perfectly possible to do a respectable degree in almost any subject online, while working full time or travelling.

Some time ago I faced a problem of finding an accredited, high-quality undergraduate degree in my field of interest. It was difficult to find one, due to the search results being clogged with 'diploma mills' and university websites often far from user-friendly. So here is a solution, the first side project I have actually finished in many years. I would love to hear your opinions and suggestions!

<comment><USER2> Is there any option to search by price?

<comment><AUTHOR> Thanks for feedback, I will put it on my list for stage 2.</comment></comment></comment>