The single most useful Emacs feature - <AUTHOR> http://stackoverflow.com/questions/60367/the-single-most-useful-emacs-feature <comment><USER3> hi-lock-mode!

Hi-lock lets you specify regexes to highlight anywhere in a file; it's like domain-specific font-lock.

It's _astoundingly_ useful in code review. For instance, given a giant blob of J2EE web handler code, I can eyeball one handler, recognize the annotation mapping the method to URL syntax, and then punch in a hi-lock regex to light up similar annotations everywhere in the file, then glance through the whole file looking for color patterns. I can read any of those functions and recognize the code that checks "am I an admin", hi-lock it, and then quickly spot any function mapped to a URL that doesn't check admin credentials.

That's just one tiny use case. I used hi-lock so much I ported it into our web-based code review tool. I converted one person to Emacs just to get that feature (my office would be thrilled if someone could point out the vim package that does the same thing).

CUA column editing (CTR-SPC arrow-arrow-&c type-type-&c) is probably my #2.

 _Late edit:_

Holy hell how do you forget magit! Magit is a near-complete UI for git; it figures out what git repo you're working from, and then gives you up-to-date status on the contents of your checkout, spots untracked files, allows you to visually stage your commits, gives you single-key revert and a browsable repo history.

Magit is one of the rare Emacs extensions that not only improves Emacs but also the external service it integrates with. I am actually a better git user (or, git is just better) when I've got magit running.

<comment><USER4> Out of curiosity, do you use usually emacs for J2EE code?

I am an emacs user, but have been doing some J2EE stuff for the last few months, and have been getting really annoyed by the IDE's lately, and I was wondering if it was a wise choice to go with emacs for Java too.

<comment><USER5> For Java work, I use Emacs and command line tools.

<comment><USER6> Indeed. Java is only different from the rest of the world if you use Eclipse and think its defaults are sane. For everyone else, you write some sort of build script that builds your project, and that's as easy to run from Emacs as it is from anywhere else.

</comment></comment></comment></comment><comment><USER7> It isn't an official part of Emacs, but _no_ Emacs user should go without installing el-get, the meta-package-manager for Emacs.

<https://github.com/dimitri/el-get>

El-get can install and update elisp from git, svn, http, and EmacsWiki. (It also wraps ELPA and apt-get where packages exist.)

If el-get doesn't have a recipe for your favorite Emacs extension, please consider adding the recipe and pushing to GitHub. (It doesn't take long - <USER2> recipes are only a few lines long.) Don't forget to issue a pull request for the rest of us.

<comment><USER8> I use package.el Any advantage to swapping to el-get?

<comment><USER7> Yes, package.el doesn't install arbitrary snippets from anywhere on the internet.

<comment><USER9> It takes about five minutes to take a library that isn't packaged and publish it on Marmalade, and then anyone can depend upon it.

el-get made lots of sense back in the day when package.el only supported tromey.com, but now that there's a community repository I don't see the point.

<comment><USER7> OK. My old complaints against package.el were as follows:

1\. Packages need to be updated manually by maintainers. I can't use package.el to install the master branch of my favorite project on GitHub, or an old snippet on EmacsWiki.

2\. Marmalade (the community repository) has licensing requirements for package inclusion.

Are those two assumptions incorrect?

<comment><USER9> > 1\. Packages need to be updated manually by maintainers.

Yes, but considering uploading new versions can be done with M-x marmalade- upload-buffer, generally Marmalade encourages short release cycles. So there's not much reason to ever work from master unless you're hacking on it yourself, in which case you already have it checked out.

> 2\. Marmalade (the community repository) has licensing requirements for > package inclusion.

This is not specific to Marmalade since Emacs itself has licensing requirements. Every elisp library is a derivative work of Emacs itself, therefore it must be distributed under the same license.

EDIT: Perhaps you're thinking of elpa.gnu.org? That repository requires copyright assignment for libraries to be included, but Marmalade does not.

<comment><USER7> OK. I was wrong about licensing requirements.

I think you're slightly confused about el-get's purpose: it isn't to replace package.el. el-get supplements package.el and provides options for people who want to run the latest and greatest versions of libraries, or who can't be bothered to monitor the odd elisp snippet and update Marmalade every time it changes.

Personally, I find el-get recipes so easy to install and create that I never use package.el at all, but that isn't the _goal_ of el-get developers.

Here is an example recipe for el-get. I haven't tried creating uploading anything to Marmalade yet, so I can't compare the ease of use.

[https://github.com/dimitri/el- get/blob/master/recipes/evil.r...](https://github.com/dimitri/el- get/blob/master/recipes/evil.rcp)

One last note: You may find that el-get lowers the barrier for contributing to libraries. If you find the odd bug in a mode you use, the source code is always checked out in ~/.emacs.d/el-get and it would be practically criminal to not fix it. With package.el, you have to reinstall the library first.

<comment><USER9> > Personally, I find el-get recipes so easy to install and create that I never > use package.el at all, but that isn't the goal of el-get developers.

That's my main objection. If you write an el-get recipe, it benefits el-get users. If you use package.el, all users (of Emacs 24+) benefit.

<comment><USER7> You made me laugh :)

You're _right_ , of course, but only because the Emacs community chose an inferior solution to begin with. Let the better package manager win. Don't tell people not to use el-get because it is so convenient that they wont use package.el anymore.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I love how every post on Stack Overflow that gets popular on Hacker News always gets closed by SO admins as "not constructive". It's like they really are annoyed when their stuff gets noticed by the world outside their walled garden. What are they - hipsters? "I was a fan of internet startups before they got popular, dude." It's bad enough on Wikipedia, which appears to operate on the principle that a megabyte of hard disk still costs $100, but on Stack Overflow it's just plain foolish.

<comment><USER11> Less cynically, Stack Overflow is about specific answers to specific questions. Any question broad enough to be interesting to a site like Hacker News is too broad for Stack Overflow, apparently.

<comment><USER10> Makes sense, but it's insane. More general answers are more generally useful than specific ones, by definition.

<comment><USER11> Not always. The only question that the linked StackOverflow page can answer is "What Emacs features did a self-selecting set of StackOverflow users find particularly useful as of early December 2011". While it's quite possible that somebody might someday want that very specific piece of information, I can't blame Joel and Jeff for preferring that particular database-space had been used to record a workaround or explanation for some uncommon error message.

</comment></comment></comment></comment><comment><USER12> For Vim users like myself, there's a related Stack Overflow Discussion: _What is your most productive shortcut with Vim?_

[http://stackoverflow.com/questions/1218390/what-is-your- most...](http://stackoverflow.com/questions/1218390/what-is-your-most- productive-shortcut-with-vim)

<comment><USER13> The very phrasing of these two questions highlights the philosophical differences between emacs and vim: "feature" vs. "shortcut".

</comment></comment><comment><USER14> Good god. I've been using emacs since 1981 and this thread is teaching me things.

<comment><USER15> I've "only" been using it since 1998, but I always skim threads like this -- even lots of short articles -- because there's nearly always something new to discover! Sometimes it's hard not to gush, but it's just such an amazing and organic piece of software.

<comment><USER16> i was escaping it since 1992, and now i jumped into it while reading this.. and i admire.

</comment></comment></comment><comment><USER17> TRAMP. Being able to seamlessly remotely edit files and run remote modes.

At work I regularly edit files on 10-15 remote machines. But I never ssh to them and run an editor. Instead I'll just visit them through TRAMP, run Magit to commit stuff that I've done etc.

<comment><USER18> My coworkers often don't even realize I'm editing a remote file or working in a remote shell. It's really that seamless.

Of course, sometimes _I_ forget I'm working remotely, and hilarity ensues. The worst episode was in a recent school project. I thought "oh, I'll just finish this on the train". And then, when I got on the train, realized I had actually been working remotely. Oops.

<comment><USER9> > It's really that seamless.

Not only is it seamless editing, you can actually use tramp to "cd" into a directory on a remote machine using eshell.

</comment></comment></comment><comment><USER19> Undo-tree handles all my undo'ing needs, and non-emacs users like looking at its strikingly elegant tree visualizer.

(<http://www.emacswiki.org/emacs/UndoTree>) Scroll down for screenshot.

And follow-mode on a monitor turned sideways is pretty funny. Doubles your vertical space (good for eyeballing logs and data dumps).

</comment><comment><USER20> The single most useful Emacs feature is the design of Emacs as a platform for hosting ELisp. Without ELisp, and the OS and text editing services provided by the Emacs run-time, none of these extensions would be possible.

Trite but true!

</comment><comment><USER21> It's nothing unique to Emacs, but I get a lot of use out of M-q.

<comment><USER22> I use M-q (fill-paragraph) quite a bit when modifying comments in source files.

Not sure why you were downvoted.

<comment><USER21> M-q is admittedly not very interesting. Just useful. :-)

</comment></comment></comment><comment><USER23> `ansi-term` is probably is for me. Integrating your terminal closer with your editor is really amazing. Using `multi-term` to make it easier to handle multiple terminals, and you've got a really nice integrated environment.

That's probably the killer feature for me.

</comment><comment><USER24> The kill ring. I would marry the kill ring and have its babies. Why have other editors not adopted this? Have they?

<comment><USER25> I wish the Windows Clipboard would implement a version of the kill ring. I really, really hate not having previous cuts and copies available. As a rather clumsy work-around I keep an emacs scratch file open on my task bar and copy stuff I might need more than once to it.

<comment><USER24> Same with the Mac clipboard.

<comment><USER26> The pro version of Alfred has this functionality built in: <http://www.alfredapp.com/powerpack/>

<comment><USER24> I will try this out, thanks.

</comment></comment></comment></comment></comment><comment><USER27> \- ido mode with ido-enable-flex-matching set. \- recentf-mode integrated with ido. Too many to list.

</comment><comment><USER28> record and play macro (someone had to mention)

      C-x (
      <type some magic />
      C-x )
      C-x e

      M-x 99 C-x e

(play macro 99 times)

<comment><USER18> Also note that

        C-u 0 C-x e

plays the macro until it rings the bell (e.g. runs out of buffer space or tries to forward-search for a name that doesn't exist. This is great when you don't know how many times it needs to be run.

<comment><USER29> ^ This. super-useful under appreciated keyboard macro feature.

</comment></comment></comment><comment><USER30> on a side note, whenever i asked such open ended question on stackoverflow, it would quickly get closed by some other user claiming that "there is no right answer" and the question must be closed. But there are so many great open ended questions on there that score so high among users. i guess it's a matter of luck that some anal retentive person doesn't get to it first?

<comment><USER31> It's not exactly luck. Until today this question hasn't been active since 2009, when opened-ended questions were permitted. Now that it's been bumped it'll be closed shortly.

<comment><USER32> Closed now.

I'm actually surprised that someone hasn't gone through all the older questions looking for stuff to close, given how rigid their mods tend to be.

<comment><USER33> The moderation is lazily-evaluated on-demand. Before today it was just a moderation thunk.

</comment></comment></comment></comment><comment><USER34> This is not really a _feature_ , as such, but it is a classic work-around for one emacs' many silly defaults:

                ; Ask for y/n on all queries that normally ask for yes/no.
      (fset 'yes-or-no-p 'y-or-n-p)

<comment><USER18> I personally don't think that default is silly. I've noticed that some (usually less important) questions use y or n already; the yes/no is reserved for important ones. I don't mind having to type a bit more before recursively deleting a directory, for example.

</comment></comment><comment><USER35> For newcomers, C-g is a delight (it certainly was for me). Especially with the arcane reputation of Emacs, it was awfully reassuring to know how to get out of whatever unfamiliar function I'd fat-fingered myself into.

<comment><USER6> Well, it won't get you out of recursive edits. I remember visiting a coworker's machine before telling him about those, and the modeline was something like [[[[[[[[[[(CPerl)]]]]]]]]]].

ESC ESC ESC is a much better "get me out of here!" command to remember.

<comment><USER35> I haven't managed to get into such a position; I may not be as clever as your coworker.

</comment></comment></comment><comment><USER36> It's interesting that it's hard to explain, because the fingers will play the chord by themselves and I need to stop and think to know what I am actually typing.

C-x r k to cut a rectangle, and C-x r t to add one filled with, for example, the comment symbol:

(C-space)this

to comment

C-x r t #

#this

#to comment

<comment><USER18> You can also use the M-x comment-region and M-x uncomment region to comment stuff. If you use it a lot, just bind them to a convenient key stroke.

<comment><USER15> Don't forget M-; is comment-dwim which usually does... what you mean (uncomments the region if it looks commented, comments it otherwise)

<comment><USER37> This was my contribution to the SO thread! Super handy feature. I also use the - highlight block - then 'C shift -' to undo in region

</comment></comment></comment></comment><comment><USER38> The kill ring gets my vote.

Regional undo/redo is a close second.

</comment><comment><USER8> I use `self-insert-command' an awful lot. I'd say it was the single most important feature.

</comment><comment><USER39> slime - emacs package for editing, running, debugging and enjoying lisp.

<comment><USER40> It's the finest IDE I've seen for any language.

</comment></comment><comment><USER41> `C-u SPC` which pops the mark. This allows you to go back to different places in your buffer quickly. For example, if you are editing a program and need to add an import statement, you could do it like this: `C-SPC M-< [add your import] C-u SPC` and you'll be back to where you were editing.

If you are using transient-mark-mode, you can use `C-SPC C-SPC` to active and deactive the highlighted region. That'll still leave a mark.

<comment><USER42> The nice thing is that many commands set the mark automatically. So in your example, there's no need for the initial C-SPC.

<comment><USER41> True. I've just gotten into the habit of doing it manually in case I use a command that doesn't do it.

</comment></comment></comment><comment><USER43> Keyboard macros.

Multiple buffers, and windows against them.

Followed closely by mode-specific buffers (c-mode, etc.).

Buffers with command shells are the bee's knees. I love those things.

</comment><comment><USER44> for me it has to be comint mode and every mode that wraps comint. I run M-x shell all the time, being able to use all my favourite editing commands to go back through shell history is just killer.

</comment><comment><USER45> I like idomenu, which lists variable/function definitions in your file. When you combine it with ido-menu, it's magic. Bind it to C-c s, and you get a list of symbols you can navigate extremely fast.

The downside is that if the symbol locations change in a file, you'd have to refresh it. :(

<comment><USER46> Sorry, is there a typo in here somewhere? Are "idomenu" and "ido-menu" different things?

</comment></comment><comment><USER47> C-x C-t

Transpose the current line with the previous line.

</comment><comment><USER48> I thought StackOverflow was done with such poll-type questions? I was sorry to see the "Best Programming Comics" question go.

</comment><comment><USER49> Undo in region saves me every day.

</comment><comment><USER50> Too hard to pick one, it depends on the task. Maybe I'd go with M-x Occur. Other candidates are regex i-search, registers, yasnippet, kill/copy/(insert)string-rectangle, etc etc.

Also, emacsclient.

</comment><comment><USER51> Hard to argue with C-x C-s being the most useful feature of EMACS......... It's so useful people take it for granted ;-)

</comment><comment><USER5> Breadcrumb for Emacs

</comment><comment><USER52> Ctrl-k

<comment><USER35> It's definitely up there for me, which I find amusing as I thought it was such an odd action to mention early in tutorials - and yet it's so damn handy once you get get it in muscle memory.

</comment></comment><comment><USER53> C-x C-c is to exit :)

</comment><comment><USER54> M-! open <http://www.vim.org/>

</comment><comment><USER55> I can't switch away from Notepad++ to any editor that lacks instantaneous, no- hassle (no extra key presses), buttery smooth current buffer word auto- complete.

<comment><USER6> Presumably you have to press a key to accept a completion. With dabbrev or hippie-expand, you don't.</comment></comment>


A Self-Repairing Electric Scooter: Exactly What Lime and Bird Need - <AUTHOR> https://electrek.co/2018/12/04/superpedestrian-electric-scooter/ <comment><USER2> tl;dr:

1\. Has many sensors, will stop the circuit if the damage-level is critical. 2\. Improved BMS and other circuits help for its "low maintenance" claim 3\. More modular, so adjustable according to local laws. 4\. Powerful motor, not used to its limit = better efficiency

Still in development. Will come weather-tested and is rock-solid.</comment>


A CSS button to press and see full-screen animated morphing effect - <AUTHOR> http://nodejs-appmars.rhcloud.com/?press <comment><USER2> What morphs to what in this example? I see music notes going to a button when clicked and then a pop-up. I agree it's cool but when I see the word morph I expect one thing to change into another.

</comment><comment><USER3> It's just making me sick :(

</comment><comment><USER4> HTTPS Everywhere sure breaks this.</comment>


Another startup launches our idea - <AUTHOR> http://eisokant.com/2008/08/06/another-startup-launches-our-idea/ <comment><USER2> Doesn't this sort of remove the need for secrecy and development that you were thinking about? Did they get there ahead of you because they didn't worry about the sorts of things you did?

<comment><AUTHOR> I think you're raising a good point there. I need to think about it more but I think you're right. It's good food for thought. On one hand I feel the need to stay in stealth till I have a working prototype to give me a headstart on the other hand if I would have been open about it from the moment I had the idea it could have allowed me to gather feedback from the start.

I currently still think I was wise to stay in stealth because my idea has no barriers of entry. However I am going to change my timeline and start being more open soon. I hope to have a private alpha in a few weeks time.

<comment><USER2> I think you made a point against yourself there. If it has no barriers to entry, then what's wrong with publicizing it? Obviously, one person has already done it. Part of what entrepreneurs often do is think their ideas are unique. But someone has just proven that its not, and I think you'll see others will as well. Being open about your idea and getting feedback is not really likely to lead to a bunch of new competitors. If there are no barriers to entry, then your business is all about the long haul and other factors, not surprising the world with it. Execution is where the battle lies now. Getting all the help and feedback you can get and getting the work done is more important than keeping it all inside.

<comment><AUTHOR> This is why I love this site! You're absolutely right and I want to thank you for letting me see that. It is late here and I am going to get to bed. However when I wake up I am going to start with writing out more details on where I am at and what I am doing. I hope to post them here soon.

"A single conversation with a wise man is better than ten years of study." - Chinese Proverb

</comment></comment></comment></comment><comment><AUTHOR> Has this happened to anyone else here on YC HN?

<comment><USER3> I discovered, to my dismay, that a company launched earlier this week doing the same thing I had intended to do. After seeing the implementation, its 80% of what I had envisioned and I probably could have done better, but, after wandering around their site and considering the idea more, I realized that it was not as promising as I had thought.

So, in actuality, the launch saved me from spending a lot of time on something that probably isn't a great idea anyway.</comment></comment>


Erlang creator on how to get started and learning to program - <AUTHOR> http://erlang.org/pipermail/erlang-questions/2011-July/059966.html <comment><USER2> There are several important threads that Joe Armstrong brings up that people are completely missing.

1) Typing in code directly into a shell necessarily implies you ignore all the tools and IDEs that many beginners clamour for. In fact, in my experience, coding into Notepad is a far superior learning experience than using an IDE. Nothing stands between you and your gaping ignorance, and you're forced to grapple with all the hideous details without pretty colours or intelligent auto-completion.

2) Typing in code offers you the chance to _deliberately type it in incorrectly and see what happens_. This is my favourite method of learning. Take a known good example, and say "Hmm, if I just do...that...to that line, what happens?". And then stare at the error output, immerse yourself in it. Just as with people, there is no better way of learning about a language, a tool, or an idea than when it is put under stress or unusual circumstances.

3) Tools necessarily abstract away some process, whereas when you're learning a new concept or idea the last thing you want is to shy away from the details of a process. This point reminds me of learning about long division in Year 7 at secondary school, and being forced to draw all these long arrows making clear which digits were going where. My maths teacher explained the rationale as "You have to go through all the motions, regardless of how silly or tedious they may seem now. Eventually you'll just naturally drop them to one side and not need them any more."

</comment><comment><USER3> One key point he mentions is actually typing in the examples while you're reading and understanding what they mean. This is essential when learning a new language. You simply won't memorize the syntax without doing it (at least us mere mortals won't, there's always super-programmers who can just get it by glancing at it once).

<comment><USER4> My friends always wonder why I take the time to type in example code by hand. I want to know what the code does, not just peace together things arbitrarily!

<comment><USER5> How does typing the code help you understand what the code does? Couldn't the time spent typing actually be used to help understand the code?

<comment><USER6> The point is that the act of typing it does help understand the code.

I don't know if there's any psychological basis for this, or if anyone else does this, but personally I jot down loads of notes when learning things and playing with ideas. However, I rarely read back over them. Instead, just the act of writing them down is sufficient to stick them in my brain.

I guess the same applies to learning with code samples.

<comment><USER5> _The point is that the act of typing it does help understand the code._

I guess it works for some people, but not me. And I've copied a lot of code. I'm from the generation of kids that would copy hundreds of lines of code from Compute! magazine. I rarely understood the code as I was typing it. Only after when I could look at it holistically and tweak it, could I understand it.

<comment><USER7> The primary purpose of typing in modern code is just to make you _slow down_ and really, _really_ read it.

Unfortunately, looking back with hindsight, Compute! et al were not good places to learn about code because the programs in the back were optimized so heavily that there was hardly anything to get a grasp on. Especially the programs that were just a long, long series of DATA statements and a small stub to load them somewhere, then jump to them. Tweaking them afterwards was your only hope.

<comment><USER5> But wouldn't just really-really reading it do the same thing more efficiently.

I've learned tons from using Firebug. In part because I could start with prewritten code and tweak, and read, and tweak, and read. If I had to enter all the code manually into Firebug (no copy and paste), I think I'd have better muscle memory for typing some of the stuff, but I don't think I'd be a better developer for it (not that I'm a web dev, but just sayin).

<comment><USER8> Most people's brains aren't trained for reading things properly unless it's with the intent of immediately applying what they read. They can _try really hard_ to read carefully, but their brains are simply not in the right mode to absorb the material the same way they would if it were being put to use. It's hard to even become consciously aware of how poorly you're learning, because it _feels_ like you're really concentrating.

I've finally gotten to the point where I can tell when my brain isn't learning like it should, but I still can't just will that mental state away.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> "After 30 years you will get the hang of this and be a good programmer."

I wonder if a genuine beginner reading that line would be put off instantly or encouraged to find out if it really would take that long?

<comment><USER10> Given that this sentence occurs immediately after a five-line example of a working program, the beginner would probably say "but, you just got something working in five lines! what are you talking about?"

It takes time to learn the truth. I remember when I first read the results of the various productivity studies cited in McConnell's _Code Complete_ , the ones which estimate that the typical programmer creates a _handful_ of lines of bug-free code per day, on average. It seemed like such a stupidly small number, then. Not so unbelievable now. The _bug-free_ part is harder than it looks.

<comment><USER11> I think we should take it as "You'll still have plenty of stuff to learn even after 30 years, just like today." Which is encouraging if you're a learning- addict like me :)

By the way, I completely agree with him. After years of Eclipse or Visual Studio, it was refreshing for me going back to basics, firing vim and getting stuff done without any distractions.

<comment><USER5> _After years of Eclipse or Visual Studio, it was refreshing for me going back to basics, firing vim and getting stuff done without any distractions._

What distracts you? When I'm coding I see the text editor, that's it. But I guess if it distracts you, then it distracts you. My aunt can't cook with the radio on, because it distracts her. To me it adds to the experience, but I guess to each their own.

<comment><USER12> Personally I think the text editors in all IDEs I've tried are awful anyway. Plus IDEs are sometimes fiddly to get set up right for a given language; it's easy to sink way too much time into getting things set up when you could just be writing working code. Also, it's probably helpful to learn a new language without the instant crutch of auto-completion features.

<comment><USER13> "Also, it's probably helpful to learn a new language without the instant crutch of auto-completion features."

How is that? Why is poring over the API docs of a library to find out if you need GetSize(), get_count() or Count() better than having the computer look it up for you while you're typing? Auto-complete doesn't help in learning a language, only in using an API - and at that it's _good_.

I guess I'm being all Statler and Waldorf here, but the hipster 'look at me I only need a text editor' is bullshit. In the OP the author boasts about using makefiles FFS! If there is one over-'engineered', obscure, bandaid-over- bandaid 'solution' for problems that only exist because of historical cruft and that is inscrutable to beginners, it's make!

<comment><USER12> _I guess I'm being all Statler and Waldorf here, but the hipster 'look at me I only need a text editor' is bullshit._

I'll grant you that it's been a fairly annoying meme over the last year or two, but people are being productive every day using text editors and they probably don't care whether you think it's bullshit or not. Be productive and use what you like. Since you have such a strong reaction to it I'd love to know why you think it's "bullshit".

<comment><USER13> Of course, I use vim every day too. I also use Visual Studio every day, and the things for which I use Visual Studio would take me 3 times as long if I had to do that with vim - and vice versa.

It's a good thing too that most people don't pay too much attention to what I think, it would have a rather devastating effect on the world I'm afraid.

(what I think is bullshit is the reflex where somebody learns something new and before reaching the level of competence where one starts finding flaws and drawbacks of said thing starts advocating it to the rest of the world as the silver bullet that will solve all problems. I recognize the pattern all too well since I've fallen so often for it myself. It's the exuberance of youth I guess.)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I remember the time I wanted to learn "C++" and bought a Visual C++ book. There were so many references to MFC and sdk-specific things that it made the learning process truly frustrating.

This is why I always pick learn-by-example guides when studying a new programming language and this is why I try to understand the core first.

Erlang is also a great programming language to start programming with because it's so simple and based on existing mathematical knowledge that many beginners already have (functions).

<comment><USER15> > Erlang is also a great programming language to start programming with > because it's so simple and based on existing mathematical knowledge that > many beginners already have (functions).

I strongly disagree with that. Erlang is simple neither in semantics nor in syntax (good luck putting your . and ; in the right place when you are learning).

The tools are also extremely poor, starting with the compiler's own error messages. This is the last place you want to confuse beginners if you want them to have fun learning a language.

<comment><USER14> The compiler messages are reasonable. It's inconvenient that errors are reported per function and not per line, but if you write short functions, and you should, the messages are just fine.

You're clearly exaggerating when stating that Erlang has "extremely poor" tools without giving any serious arguments.

<comment><USER16> >but if you write short functions

Yeah, you should do that. You know that though because (I assume) you are a veteran programmer - or at least not a newbie, to whom this might not be as obvious as it is to you and me. Don't forget we are talking about people _learning_ to program here.

</comment></comment></comment></comment><comment><USER17> Reminds of this - Peter Norvig's - "Teach Yourself Programming in Ten Years" <http://norvig.com/21-days.html> -

Nowadays I setup cygwin, have cl.exe in my PATH (too bad the 64-bit bit version is separated). Have the WindowsDDK installed (liked it better than Windows SDK, as it allows me to compile for old systems)

Same for Linux (arm, x86, x64 machines) and OSX. The terminal is always there.

Along with FAR (Windows), Midnight Commander (OSX, linux), emacs (aquamacs on OSX) and build tools - make mainly, or shell script, batch files.

Now why? Well because I can manage it better this way. XCode4 brings the things very nice, yet the created project is quite big to control outside. MSVC same thing, but worse when comes to do multiple settings or dependencies.

Still... for a big company, studio - MSVC is the easiest for most people (I wish otherwise).

<comment><USER18> Hooray for Midnight Commander, I thought I was the only one still using it :)

<comment><USER17> And if you ever happen to use Windows, please take a look at FAR Commander (from the guy that created RAR). It's also open sourced.

</comment></comment></comment><comment><USER19> Joe Armstrong (one of the erlang creators) wrote a book for Pragmatic Programmers. This is the book I used to learn erlang. It was quite an interesting ride, and I think it is an excellent book for learning the language.

I think erlang is a really fantastic language, and the only language that I personally trust for concurrency. It is battle tested, and once you spend a couple weeks learning the syntax, quite a delight to develop in.

</comment><comment><USER20> That's the approach Zed's LPTHW (<http://learnpythonthehardway.org/>) takes.

<comment><USER21> It's more like <http://www.korokithakis.net/tutorials/python/> (full disclosure: I wrote it).

<comment><USER20> Your tutorial works for some one already familiar with programming but not with Python. It may work for the originator of that thread.

But LPTHW is more along the lines of Joe's advice: >> Then buy a decent book and type in the programs by hand. >> One at a time thinking as you go.

LPTHW does exactly that. Actually typing the programs has magic to it.

<comment><USER21> Ah, yes, I didn't consider that. You are correct in that aspect.

</comment></comment></comment></comment><comment><USER22> It's important to be as "close to the metal" as possible, _when you learning_. But once you understand the basics - find and use tools. For example, if you Erlang/OTP programmer in the open-source environment - you need to know rebar PERIOD.

<comment><USER23> One point of view. I learned from the top-down. I learned to pour concrete over rebar before I learned to build frames and rebar.

It's working for me so far. I still don't know lots of low level things that I use every day, but that doesn't stop me from using them. And the unknown is shrinking, too.

<comment><USER24> Rebar in this case is actually an erlang program for automating builds :-)

</comment></comment></comment><comment><USER25> Another thing that I have found useful, is to play with the same toy programs in different languages. For example once I am a bit familiar with basic constructs of the language I try out a simple newton-raphson, taylor series calculation, sieve of eratosthenes, a tftp server (protocol _is_ trivial) etc.

To me, at least, this gives a real feel for the language in something more involved than either fibonacci, or hello- world.

Oh yes, emphatically agree to emacs and the shell thing. No distractions, while learning the core of a language...

</comment><comment><USER26> <trolling> Code examples in that message have bugs. This doesn't work:

      >A=1

      >A=2

It should be:

      >A=1.

      >A=2.

I wonder if the author has much programming experience, particularly in Erlang. </trolling>

On a serious note, I totally agree with Joe - the best way to learn programming is by doing it (unless your initials spell EWD) - one step at a time.

</comment><comment><USER27> A little extreme, but I like the sentiment. Hard to argue that syntax highlighting is a learning impediment thought.

<comment><USER28> he IS using emacs

</comment></comment><comment><USER29> I'd say in addition to shell, editor, compiler, one should also have a version-control system handy. After manually working through a handful of simple examples, a more complex undertaking will be very nonlinear; what better way to reinforce the learning than to keep track of the enhancements, improvements and fixes, and reasons for each change?

This falls into the same category as copying examples by hand: being very deliberate, thinking through and providing rationale for each change you make.

</comment><comment><USER30> The 'Zen of Joe' follow-up

[http://erlang.org/pipermail/erlang- questions/2011-July/05999...](http://erlang.org/pipermail/erlang- questions/2011-July/059996.html)

      "Zen development - no tools - just your brain -
       all we are doing in making pleasing patterns of
       zeros and ones that follow the way of programming.
       If we follow the way the programs will please us."

Mik

</comment><comment><USER31> I agree with most of what Joe has said.

But I love IDEs with features that help me with refactoring. That doesn't seem to be a dangerous shortcut to me.

Granted, by the time you know what refactoring even means AND you know that you should do it, you most probably already know a thing or two about programming, but hey.

</comment><comment><USER32> I agree with this. As a newbie, it's easy to get caught up in finding the perfect tools and waste a lot of cycles with that. I do use textmate because the syntax highlighting makes it easier for me to read, but anything more complex than that seems pointless (at least at my stage).

</comment><comment><USER23> Yeah, that's a terrible tutorial.

a) so much magic going on. He argues against magic (IDE's, build tools), and yet there are about 5 magic commands in 5 lines of code. (module(), compile(), export_all, ->, c()). As a reasonably experienced programmer who's never seen erlang code, I ought to be able to infer most of what those operators/function are doing but I can't.

b) Why would a super smart programmer be the right person to tell me the best way to start learning to program? I would like to hear from a highly successful TEACHER of programming.

c) I started with IDE's (HyperCard, RealBasic, and Xcode). Yes he is right that there is a lot of magic going on you don't understand, but you can slowly chip away at that all the while making useful things.

All that said, I really liked his comment about "After 30 years you will get the hang of this and be a good programmer." That's a great attitude. You'll be a novice for most of your life. Possibly all of it. That's a big part of why I like programming... there is always more to learn.

<comment><USER33> Regarding (a), it depends on what your definition of "magic" is. In this case, the commands he uses are basic OTP primitives that Erlang programmers will encounter on a regular basis. IDEs and such create higher level abstractions that desugar to these primitives.

As soon as you encounter a primitive that the IDE doesn't handle on your behalf, you're lost.

One thing I would add to Joe's comment is that if you don't know what a command/function does, look it up. This is really painful in the beginning but pays off significantly as you hone your skills.

<comment><USER34> It's easy to bash IDEs for their coddling effect, and there are some legitimate arguments against them.

But looking up documentation is precisely one of the things that IDEs are much better at then text editors. Hover over some code and up pops the documentation. Plus you can usually navigate directly to the actual source.

Another example is "includes/requires/imports/pick your language". Typing those in manually is simply busy work that distracts from the task at hand.

Your other comment is also a strawman: "As soon as you encounter a primitive that the IDE doesn't handle on your behalf, you're lost." It could easily be replaced with: "As soon as you encounter a primitive that you don't know how to enter in your text editor, you're lost."

Don't get me wrong. I agree that some aspects of IDEs, especially "Wizards", have a significant negative impact on developer understanding. But they also have powerful positive impacts as well that we shouldn't dismiss so easily.

</comment></comment></comment><comment><USER35> I'm constantly telling off my friend (an established programmer, just not with C#) for using Resharper with VS2010. He responds with "But it helps! It's easier to use!", then asks me "What's the difference between a reference and a 'using' statement?".

</comment><comment><USER36> Yeah, most of amateurs think that they must have Eclipse^Wa typewriter to write a poetry. ^_^

</comment><comment><USER37> I learned C# and ASP.NET this way. Emacs, csc.exe, and Microsoft .NET for Programmers by Fergal Grimes (Manning). Great book if you like learning languages this way.

</comment><comment><USER38> Forget about git? U crazy?

</comment><comment><USER39> There is no meat here. Just use an editor and in 30 years you should be able to program, don't use tools. That's all.

Hey boys, poor content for HN, the only valid point is who is the author of the post.</comment>


iCloud beta - <AUTHOR> https://www.icloud.com/

<comment><USER2> The team involved really spent the time to make the web versions of these apps have an aesthetic unified with the iOS and Mac versions. As someone who does web stuff day in, day out... the difference between working and polished is huge. Apple has pulled out all the stops to make these polished apps. Kudos to them.

<comment><USER3> They don't preload the images for the three iWork apps. Any, any small hint of web loading breaks the 'app feeling'.

<comment><USER4> I'm guessing those are placeholders for full fledged web-versions of the iWork suite, and hence they figured it's too much effort to code a preloading mechanism for those images.

<comment><USER3> 'Too much effort' isn't known to perfectionists, which Apple strives to be.

</comment></comment></comment></comment><comment><USER5> Not everyone with an Apple ID can log in, <strike>only paying developers.</strike> who knows which mysterious rules Apple uses to let people in.

Here are some screenshots:

[http://9to5mac.com/2011/08/01/icloud-com-opens-up-for- develo...](http://9to5mac.com/2011/08/01/icloud-com-opens-up-for-developers- features-ipad-like-mail-contacts-calendar-apps/)

[http://techcrunch.com/2011/08/01/apple-icloud-dot-com-web- ap...](http://techcrunch.com/2011/08/01/apple-icloud-dot-com-web-apps/)

All three apps (Mail, Contacts, Calendar) are very feature rich, responsive and quite shiny. At least Calendar uses local storage (but will ask you before it does). All three apps took no more than five seconds or so to load for the first time, subsequent loads were much, much faster. iCloud saves state, wherever you are when you close the window will be where you are when you go back to iCloud.

I'm not a fan of the re-implemented scrollbars (Mail and Calendar even use pre-Lion and pre-iOS scrollbars). Also, composing a new message opens up a new window which seems very weird.

You should definitely go visit iCloud.com with deactivated Javascript or cookies.

<comment><USER6> _Not everyone with an Apple ID can log in, only paying developers._

I have a free developer account and was able to log in. I don't have a @me.com address so I couldn't check Mail, but the rest worked.

<comment><USER7> I have a free account as well but it says I do not have access.

<comment><USER8> Same here. It says that I need to be associated with any of the two developer programs to have access.

</comment></comment></comment></comment><comment><USER9> Just as with MobileMe, iCloud Web seems to be done with SproutCore and a bit of jQuery[1]. Though it feel funny when they recreate the iOS-style scrollbar with JavaScript, despite Lion already has such a thing... (not to mention the scrollbar is inconsistent between Contacts and iCloud Calendar)

I'm honestly surprised at how "complete" these apps are. At least with Calendar and Contacts, they works exactly like its iPad/OSX equivalent.

[1]: [https://www.icloud.com/system/cloudos/en- us/640/javascript-p...](https://www.icloud.com/system/cloudos/en- us/640/javascript-packed.js)

<comment><USER10> I'm curious if they are using SC1.6 or some custom build. Maybe even 2.0?

</comment></comment><comment><USER11> "Your browser is not supported. To use iCloud, we recommend using the latest version of Safari, Firefox, or Internet Explorer."

Also, there's a cute picture of a sad-face cloud. lol.

I'm using Firefox 3.6.19, since FF4 wasn't working well on my mac when I tried it.

</comment><comment><USER12> Strange, it doesn't recognize my Apple ID at all. It knows the one I use for iTunes but when I try to use my developer ID it says the login doesn't even exist. It's a paid account and it works fine in the developer portal.

(I would ask for help in the developer forums but I can't login to those either. It just keeps redirecting me to the splash page.)

<comment><USER13> It's not just you, I'm getting that too.

</comment></comment><comment><USER14> So I get the skeuomorphic UIs, complete with bits of torn paper at the top of the calendar pad and all, without even the justification of a touchscreen? No, thanks.

Are they going to put a scent generator in my next Mac so my trash starts to stink if I don't empty it?

<comment><USER15> While many people on hacker news might roll their eyes at the UI design, many novice users seem to like these interfaces- it signifies to novice users that they can stop keeping a paper address book and paper calendar and move to the using their iPad and the web, something they might have previously only thought business or techy types did.

Additionally, I don't think the functionality of these apps suffers at all from this.

<comment><USER14> John Siracusa makes the case against these kinds of UIs well in his Lion review: [http://arstechnica.com/apple/reviews/2011/07/mac- os-x-10-7.a...](http://arstechnica.com/apple/reviews/2011/07/mac- os-x-10-7.ars/5)

<comment><USER5> But he is not quite as outraged and his points are a lot more subtle than your rant.

<comment><USER14> Disappointed would be a much better word to describe my feelings than outraged.

</comment></comment></comment></comment></comment><comment><USER16> Tried, got this: <http://postimage.org/image/176470lk4/>

<comment><USER17> Same here. And I'm a paying developer on Lion.

<comment><USER18> It just let me in. I am a paid member as well. You may have to wait for a couple of hours and try again.

</comment></comment></comment><comment><USER19> Running Firefox 3.6 at work, unsupported. Chrome omitted from their suggested browsers ("latest version of Safari, Firefox, or Internet Explorer").

Did I mention the adorable frowny cloud: [https://www.icloud.com/static_pages/unsupported_browser/en-u...](https://www.icloud.com/static_pages/unsupported_browser/en- us/640/source/images/200x150_Unavailable.png)

<comment><USER20> Works for Firefox 5 (not terribly surprising). The SadMac Cloud is goddamned adorable (surprising).

</comment></comment><comment><USER21> This would be one heck of a phishing scam to get everyone's Apple ids. Has anyone verified that the site is legit?

<comment><USER22> If it were a phishing scam, I'd still have to give the phisher a thumbs up for using sproutcore & CSS3 techniques on the site. There's a significant amount of javascript for a phishing page.

</comment></comment><comment><USER23> so easy step 1) so sorry. You are on wrong OS. try again step 2) so sorry. You are on wrong browser. try again step 3) so sorry. You must enable Javascript. try again step 4) so sorry. You must be developer. try again

</comment><comment><USER24> Tried from Safari and Chrome on OS X Lion and it says I am not on OS X lion...

</comment><comment><USER25> My guess is that Apple's move into the cloud space will be a pretty big boost for other online backup, sync and share companies; SpiderOak, Dropbox, Wuala etc.

</comment><comment><USER26> Erm... Okay, so I want to move all my mail (and my address) over from MobileMe. Where's the button?

<comment><USER5> It's a beta, open only for developers. Patience.

<comment><USER26> Ah, that wasn't clear - it just let me log in. Maybe I should have separate Apple IDs for my personal stuff vs. my development stuff...

</comment></comment></comment><comment><USER27> If anything, excellent use of Steve's turtleneck as background texture inspiration.

</comment><comment><USER28> I think "iForgot" is a nice touch.

</comment><comment><USER29> Off topic: What are the other sites doing "your browser is not supported" with chrome?</comment>


Why Companies Like Lyft, Uber, Postmates, Instacart etc Will Never Be Profitable - <AUTHOR> https://hackernoon.com/why-companies-like-lyft-uber-postmates-instacart-etc-will-never-be-profitable-ecdfde647175#.6qcd4980m <comment><USER2> I don't really get the comparison with Pony Express part. As you said they shut down because of superior technology (transcontinental telegraph). So the superior technology to Uber and Lyft will be self-driving cars or teleportation.

The second point is that Uber is not trying to scale driver's earnings but the availability of the service for your every day needs while still making sure drivers can make a living. How many people were commuting to work via taxi before Uber and Lyft? How many people do that now? Making uber ride affordable for every day needs and maintain a certain level of service and customer support that's where they were scaling.

</comment><comment><USER3> People said the same about Netflix, and they're doing amazingly well. Remember those DVDs they used to stuff in the mail? The human Uber drivers are the equivalent of those workers.

Uber is investing heavily in the autonomous car revolution, and that's going to pay off incredibly well.</comment>


What a bad day at work taught me about building Stack Overflow's community - <AUTHOR> https://stackoverflow.blog/2019/07/18/building-community-inclusivity-stack-overflow/ <comment><USER2> Here's my Stack Overflow user hostile experience. I asked a question as to _why_ some very well-used and robust database implementations, as a matter of "principle", don't have auto-increment fields. There must be a reason for it, like it violates the purity of a relational database, etc., but I'm not sure how or why.

This question was quickly edited/changed by someone else to "How do you do AUTO_INCREMENT in Oracle". And then it was marked as a duplicate and quickly closed.

I never asked a question on Stack Overflow again.

<comment><USER3> The entire fact that a moderator can decide what you really wanted to ask even if you are clear that's not the question you want to ask, is, honestly, ridiculous.

<comment><USER4> Then you haven't seen how many poorly written questions there are. Would you rather have your question outright deleted?

<comment><USER5> You're implying that there's no middle ground between "moderators unilaterally edit your question, including substantial semantic changes" and "question deletion".

I find that simultaneously troubling and, given my experiences on SE, unsurprising from someone whom I assume is a SE mod. If that's the position that most moderators take, no wonder it's such a caustic place.

<comment><USER4> Not an SO moderator. I've answered a few questions over the years, and I've browsed the new queue. I suggest you do the same before forming an opinion.

<comment><USER5> No thanks. The SO community made it very clear they aren't interested in having me be a part of it.

</comment></comment></comment></comment></comment></comment><comment><USER6> It's hilarious how self aware they are about the newbie experience[1] while at the same time having engineered an system that reinforces and enables all of those behaviors.

Stack Overflow doesn't care about helping users get answers to their questions; they care about creating a Google-indexed repository of high- quality questions and answers. These two aren't the same because of the concept of a "high" or "low" quality question. If you go to a consultant (or even a helpful fellow employee) with an vague, ill-formed question with a lot of specific detail about your exact context and problem they'll help you through it. Stack Overflow doesn't give a shit. No one is going to waste time giving you a nuanced answer to a complex real-world situation; nor is it with their time to cross-examine you to find out what your real question is. That would be both time consuming and unrewarding - unrewarding because it will help at most one person. No one else will care about your specific situation, so your ceiling is at most one upvote. If you want that kind of help, you have to pay for it, in one form or another. Unfortunately, most new users ask a question about something their genuinely confused about in a topic area they've just started to learn. Big mistake. Such questions were already asked 5 years ago and you'll get closed as a duplicate, or your confusion will be interpreted as cluelessness and closed as unclear. You'll get a ton of downvotes in either case.

I like stack exchange; I have a few thousand points on two different sites. I enjoy answering questions, or even just seeing what kinds of questions are being asked, and of course use it almost hourly when googling for different problems. I rarely ask a question though, and usually regret it when I do. But at this point let's just admit it's basically just a wiki with a psuedo-Q&A gimmick.

[1]: [https://lh3.googleusercontent.com/avINNb1_Dg2h6QfDRJOpnWVFWu...](https://lh3.googleusercontent.com/avINNb1_Dg2h6QfDRJOpnWVFWuokOdxXr_6t97G2jiy- LCbxSrBT8uP5Vs8rWacOnr2za8uPjAhGddAXkMWjipaNOMugKdYv34TtH2PtZ0veQ1S61-QhwaRBLkMjqPLNLaFr8tg)

<comment><USER7> > Stack Overflow doesn't care about helping users get answers to their > questions; they care about creating a Google-indexed repository of high- > quality questions and answers.

I'll add that experienced Stack Overflow _users_ don't care about helping other users. They care about badges and reputation, which is a proxy for helping users but not quite the same.

So to me it's more like a wiki with a pseudo-Q&A gimmick with a LinkedIn- meets-github-repository-activity-bragging aspect to it, which is particularly inviting to people who like taking down others and feeling intellectually superior, even if that means telling someone that their question is stupid – which means breaking a rule that is essentially the cornerstone of any other Q&A setting.

<comment><USER8> >even if that means telling someone that their question is stupid – which means breaking a rule that is essentially the cornerstone of any other Q&A setting.

Although I'm sure that happens, the site is explicitly designed to be a pseudo-wiki (Jeff counted Wikipedia as one of its inspirations), so if you ask a question that's too specific to your use case (i.e. that other users will not be able to put into practice) or a matter of opinion, then there's a legitimate reason to close it as not an appropriate question for Stack Overflow. Most other Q&A settings, such as Quora, are not trying to be pseudo- wikis, so these questions make more sense for those contexts.

For example, if you asked, "Should I use MySQL or SQLite", that's not a great question for Stack Overflow. You might instead ask, "What are the key differences between MySQL and SQLite" which can then provide the insight to answer your original question as well as help other users.

<comment><USER9> > You might instead ask, "What are the key differences between MySQL and > SQLite" which can then provide the insight to answer your original question > as well as help other users.

I'm pretty sure if you ask that exact question, an even if nobody has asked it before so it isn't a duplicate, someone will find _some_ reason to shoot it down.

<comment><USER10> Even worse, it was obliterated: [https://stackoverflow.com/questions/3630/sqlite-vs- mysql](https://stackoverflow.com/questions/3630/sqlite-vs-mysql)

And the reason: closed as not constructive by Kev Feb 28 '13 at 13:12

<comment><USER9> I cannot even see it :-/

<comment><USER11> You can find it in the Wayback machine: [http://web.archive.org/web/20140327041948/https://stackoverf...](http://web.archive.org/web/20140327041948/https://stackoverflow.com/questions/3630/sqlite- vs-mysql)

Note that as time went on, it became one liners and anecdotes... and everyone has their own anecdote of what the differences are and how important those differences are to that person... and that leads to discussions and page finding the answer you're looking for on page 40 of the answers somewhere deep in the comments of an answer.

That wasn't the goal of Stack Overflow.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> One big problem as a Stack Overflow viewer who comes from Google is that many times the top result for a search leads to a question/answer that is a dead end. The question is valid but it is closed because it was asked on the wrong website (Stack Overflow vs. Stack Exchange), it's too subjective, it's a duplicate, etc. Or the question is downvoted and there are no useful answers.

Another issue which comes about from the overzealous duplicate tagging is that not all software engineering questions last forever. If someone is asking how something works in C89 and gets the best answer, and then someone else asks the same question five years later, the answer will be the same. But if it is a question about JavaScript or new C++ or Python, then answers can get stale pretty fast. One workaround the community uses is taking those questions that are top hits or top quality and keeps editing them year after year. But that only works for the high profile questions and answers. The policy hurts the site overall.

<comment><USER12> My favorite is the recursive "just google this" answer in a thread that's the top search result on Google.

<comment><USER13> that's not accepted as a good answer on SO. do you have any examples?

</comment></comment></comment><comment><USER14> A really good post, and good point, but I also want to add that the first thing I thought when I saw the title was: "I don't think Stack Overflow should think of itself as a community".

In fact, SO is fantastic, the best ever at what it does, by far. It does what it does, really well. When it started, I occasionally asked or answered questions; now I don't, and it has nothing to do with community (good or bad). It's because, you know, all my questions are already asked on there, and answered, often multiple times.

This doesn't mean there won't be more questions that need asking, as of course there will for new technologies especially. It means that the ratio of users to questions has risen exponentially, so that the % who need to do _anything_ on SO has dropped.

You want the typical newbie experience? It's this: 1) types question into Google 2) clicks on link to SO 3) may have to repeat steps 1-2 a couple times 4) finds answer to their question 5) goes away

There is nothing in this that resembles "community". Like wikipedia, there may be a core group of ultra devoted users who keep adding new content. And you know what? That's ok. Perfect, even. The problem with SO's community, is that it's thought of as a community.

The worst thing they could do with SO, is try to make it a community. We already have Facebook and Twitter, and they didn't turn out so well. We don't have another substitute for Stack Overflow, if they try to turn it into a social network.

</comment><comment><USER15> > "Newbie Experience" picture

+

> Over the next few quarters, we're going to be taking a step back and re- > evaluating how we deliver feedback to users about their questions. We want > to make sure people are getting necessary feedback without feeling called > out or publicly embarrassed.

My bet: they'll keep the mechanisms exactly the same and hide from the newbie user the information that their question has been flagged for closing, marked as a duplicate, etc., and show a 'temporary ghost score' capped at zero.

<comment><USER16> How is that an improvement to the user? In some ways, it's like a kind of shadowban. The user's question is effectively dead, but they aren't made aware of it.

<comment><USER17> Exactly

</comment></comment></comment><comment><USER18> So Jeff Atwood wrote an article about what SO wants to be when it grows up. ([https://blog.codinghorror.com/what-does-stack-overflow- want-...](https://blog.codinghorror.com/what-does-stack-overflow-want-to-be- when-it-grows-up/))

The answer wasn't a Q&A help site it was a high quality curated wiki of the best answers and questions. It isn't supposed to be a forum where you come to ask your one off questions it supposed to be a place where you encounter a unique technical challenge figure out what the core issue is and then see if anyone else knows how to resolve the core issue and then have that core issue answered forever and always.

The one time I asked a Question on SO it was a very positive experience that went well got answered quickly, but I first had spent thirty minutes documenting everything checking the actual docs and ensuring I had done my due diligence before throwing it out there for someone else to answer.

If you aren't willing to put in work to find the answer to your question why the hell would you expect someone else to.

</comment><comment><USER19> I'm a top 2% on a stack (gamedev), and find it very frustrating when I try to help the new users with an answer or in comments, and have the other mods come down on me for trying to help. I've had my fellow mods berate me in comments for trying to help. "With your reputation you should know better!" was one comment I got. At least I can still try to be helpful in comments on closed questions. And I can vote up questions that I see are getting pushed down with negativity.

To me, a lot of times naive and new user questions are excellent opportunities for learning, mentoring, and sharing. You have this little moment where you influence someone in a positive way, make them feel welcome, and maybe put them on a path to growth as a developer.

</comment><comment><USER20> Closed as duplicate:

[https://stackoverflow.blog/2018/04/26/stack-overflow-isnt- ve...](https://stackoverflow.blog/2018/04/26/stack-overflow-isnt-very- welcoming-its-time-for-that-to-change/)

</comment><comment><USER21> There totally are good examples ui/ux designs that minimize the emotional impact of negative feedback. Stack Overflow might take a page from dating apps. Imagine if Tinder told you all the hot people that rejected you! That's kindof where SO is now. Instead, Tinder takes a terrible experience (rejection), hides it, and only shows you the great experiences (acceptance).

The main constraint to work around is that, currently, question pages are mostly globally public. SO could change that pretty easily. They already have a lot of the mechanisms.

Like, it could be as simple as only showing downvotes and downvoters if you are logged in and have enough user 'points.' Otherwise, just show the newbies the result ('marked as duplicate' etc), and a [-] instead of -7 on the question tally. So it doesn't feel like a crowd of people yelling at you.

And, what could be really super cool, is if the SO team can auto-recommend learning materials specific to the programming language/framework/whatever. Like if I ask a stupid question about Django models, which becomes marked as duplicate, SO NLP's the question then matches it to the Django docs, which they've also indexed via NLP.

If there's some reason why you really need to see specific reasons the elite users decided the question was a duplicate or unclear, SO could use progressive ui design. Instead of blasting newbies in the face with criticism on the question page, make them click to reveal why H4x0r69 said your stupid XSS question confused CSPs and CORS, so the experience is a dialectic rather than public shaming.

<comment><USER4> Then how would you ever learn? I don't know if you've ever spent time looking for questions to answer on SO. Before weighing in on the climate, please do so.

You'll encounter an absolutely shocking amount of utterly stupid questions. Yes, I know, stupid questions supposedly don't exist. Judge for yourself after spending an hour looking at the new queue for PHP and JavasScript questions.

Once you've done this, and still think the experience for new users should be made better, I commend your kindheartedness and patience.

<comment><USER21> I'm not suggesting encouraging stupid questions. I'm suggesting that you can minimize the emotional impact of public shaming to newbies through progressive ui design, while keeping the same high standards for content. And also auto- suggesting documentation for newbies exactly so they can learn.

<comment><USER6> Right. "Closed as Duplicate" could be renamed "Great Question! We have an answer for you over here!" without change in functionality and it would be an improvement. They could take it further and keep the duplicate as a "rephrasing" or "alternative statement" of a question - shouldn't it improve Google search-ability, having several different ways stating a question? And asking a duplicate question in your own words shouldn't be penalized; it is, prima facae, both a good and frequently asked question. It would be so _easy_ to make the question-asking experience better for the vast majority of users... and yet they don't.

</comment></comment></comment></comment><comment><USER22> I feel like there's an "elite" of old users who are discontent that there are both people asking questions they don't like and people eager to answer those questions. If they could just elevate those old users to a different space where they don't interfere with this asking/answering which is the point of the site to begin with, everyone would probably be much happier.

<comment><USER23> It must be a little soul-crushing to be one of the old-time users and seeing the same questions over-and-over. I think instead of booting those elite users, SO should have a quarantine (or nursery) where badly-asked/homework/do- my-job questions can be shunted off to the side instead of closed immediately. Probably with do-not-crawl robots.txt.

I use SO multiple times a day and sometimes feel the urge to contribute back. I don't have enough expertise to help with deep problems, but am patient enough to work a newbie through their bash/awk/sql questions and it's enough for me to hopefully make one struggling person's day a little better.

<comment><USER22> Those aren't the only types of questions being hunted down. It's gotten really bad. Also, it's just natural that most questions are repeated. Every year there's a new generation needing to ask those same questions. Looking back doesn't always work, as technology moves to fast, last years advise can already be obsolete.

I think part of the problem is that those old users think of the place as something for eternity, when in reality it's transient. Repeating questions is desirable. Instead of closing the new questions as duplicates, it should be occasion to retire the old question. Sure, there are some answers that still hold true 10 years later, but how is the one looking for an answer supposed to know that?

</comment></comment></comment><comment><USER24> I have a somewhat different intepretation of the value StackOverflow provides. To me, part of what makes SO useful is the somewhat inconsistent, but still fairly obvious, requirement to do significant personal research, before asking a question. If a Here, let me google that for you link to the top result answers a users question, shouldn't there be some sort of negative feedback to cull those types of questions from the platform?

My point is, by discouraging behavior that the community is "generally" opposed to, SO helps in ways beyond just answer questions. That said, if they can make it a little nicer to ask a question, without losing the core value they provide (IMO - quality questions & quality answers), then by all means lets give it a try.

<comment><USER6> Sometimes. I once asked how to find the "successor" of a floating point number. I _had_ Googled this, in several different ways in fact, looking for phrases like "smallest floating point number strictly larger than", "next nearest IEEE 754 float" and so on, but I hadn't hit the magic combination of words that would bring up the correct answer. My question was flagged as a duplicate of this one:

> [https://stackoverflow.com/questions/10160079/how-to-find- > nea...](https://stackoverflow.com/questions/10160079/how-to-find-nearest- > next-previous-double-value-numeric-limitsepsilon-for-give)

Which is a _terrible_ way of phrasing that question. "next/previous double value?" "like numeric_limits::epsilon but for given number?" "Quite self explanatory?" I didn't - and couldn't have - found this question via Google because it doesn't actually _ask_ the question it purports to - it makes vague allusions to it and hopes the other party will know what they mean. The page would be much improved from a better question with a precise technical description of the exact problem asked because then the page would actually contain the keywords that people would be looking for. But stack overflow, by design, believes that the One True Way to ask a question is the way it was asked first, and that everything subsequent is a duplicate and should be closed.

</comment></comment><comment><USER25> Stack Overflow is a huge community and they want to keep the quality of both the questions and the answers high. If they wouldn't downvote low quality questions, then the search function would degrade significantly. So newbies will always have a good chance of having a negative experience, even if it's done in the most respectable way with constructive criticism. I'm not sure much can be done against that, except perhaps better preparing first time question askers by having them go through a short tutorial before they can ask a question, or having first-time questions handled differently from regular ones (ie, only visible to moderators, so they don't attract too many negative comments from regular users).

</comment><comment><USER26> One issue is moderation vs answering. Users interested in moderating questions are more prominent than users looking to actually answer questions.

1) Grace period. For new questions (and especially for new users) - add a grace period where the downvoting, closing questions, and voting to close are all prohibited. Could be 4 to 24 hours - some optimal window where questioners can read comments, clarify their question, add/revise code examples, etc. Getting downvoted or closed is an extremely toxic experience and tends to position the well for all questioners, be they newbies or veterans.

2) As an answerer I also need a way to watch a question and see if it improves over time. So when I provide feedback in a comment, or flag/watch a question, I need a historical view of all my threads.

Right now the experience is upvote or downvote right away, proffer an answer right away, vote to close or otherwise flag right away; there's too much immediacy in the interface. It feels like a churn. And churn is a game that appeals to rule enforcers (moderators).

3) Chat. A bad question may be intrinsically bad - incoherent and confused and unanswerable by anyone. Or a question may be bad in context.

SO is like email. It's asynchronous and creates a conversation history. In this context a good question is direct, concise, and descriptive.

Many questioners approach SO like it was a chat. They need to ask several small questions before they can formulate a real question. They need an informal conversation (chat) to set up a well structured, intelligible question (email). Many users are looking for help through the whole process: exploration > formulation > resolution. SO is optimized for the last step and ruthlessly moderates out the antecedent steps.

SO already has a chat at [https://chat.stackoverflow.com/](https://chat.stackoverflow.com/) \- but usage seems sparse. Instead of "vote to close" being the only option for bad questions, maybe recategorize them instead. "Send to chat" or "Request for comments" to flag a question that needs help getting to an answerable state.

</comment><comment><USER27> I have never participated in StackOverflow. In the early years, it was because they didn't allow logins except through Google/Facebook. And then it was because as an experienced developer with answers, I can provide value to the site but I don't have enough "reputation" to anything useful. I have to do a bunch of meaningless crap to earn the privilege of doing anything useful.

Most of you probably don't have this problem because you've long contributed to Stackoverflow. But the user experience isn't just hostile to newbies asking questions but also really anyone who hasn't been contributing for a long time.

<comment><USER28> Exactly this. There have been numerous occasions I could answer a question or at least add some helpful information. But I couldn't because I didn't have enough reputation, with no helpful way to get it.

I think they have it backwards. They should prioritize answering questions and adding comments, not asking questions.

</comment></comment><comment><USER29> What I find deeply frustrating and unhelpful on Stack Overflow are answers that don't offer a solution but instead give reasons why the OP shouldn't be doing what they're doing in the first place. Q: How can I do this in jQuery? A: You don't need jQuery. You should be using vanilla JS for that. Q: How can I hide scrollbars using CSS? A: That's bad UX and you shouldn't be doing that in the first place.

The lack of regard for the context of the problem the OP is trying to solve/trust that they have their reasons and project constraints for doing so is annoying and disrespectful.

</comment><comment><USER30> The best questions on Stack Overflow are, without fail, those marked as "not a good fit for Stack Overflow"

<comment><USER16> this. I used to write long screeds about my latest experience or why I didn't like how it worked there, but no more. Now I just say, "my most productive experiences at SO were on questions that would never be allowed today."

</comment></comment><comment><USER31> Over the years, I have spent a fair bit of time on Stack Overflow and other Stack Exchange sites (at the moment, 816 answers and 70 questions, across the sites), in many of the sites from their early days. What I find happening on multiple sites, repeatedly, is similar to what I've seen on many other online communities like Wikipedia etc:

1\. It starts as a community of people eager to share their knowledge, help people, etc.

2\. Initially, the small community of users scours every (or a large fraction of) new questions that come in, jumping at opportunities to help (and perhaps also demonstrate their expertise etc: it feels good to answer a question well, like disposing off a level of a video game or whatever).

3\. Over time, as many users come in, the community develops its own norms of what's good and bad, its own in-jokes and in-group markers / shibboleths, etc.

4\. At some point, the number of new user actions that come into view becomes too much for one user to manage. Somewhat overwhelmed, and given their overdeveloped "connoisseur" tendencies at distinguishing between good and bad questions ([https://xkcd.com/915/](https://xkcd.com/915/)), they tend to look for shortcuts to dispose of questions ("this question is bad because ____"). Any question that does not match the in-group standards of a good question can easily be disposed off instead of engaging with them. It is easy to forget that these standards are somewhat arbitrary, and often not even encoded well anywhere... and even if they were, new users won't read it anyway. It is also easy to forget one's original motivation and purpose, of helping others.

The end result is that new users asking their questions in what way seems natural to them (remember Sturgeon's law) almost uniformly have a bad experience, though from the perspective of the regular answerers of the site, they are continuing to answer good questions at the same rate.

I have not had a bad experience asking my questions; I'm pretty sure I can still go to one of these sites, ask a question, and have it be well-received, but that's because I know the norms, the superficial things that make a question look like a good question "worthy" of being answered. But whenever I look at say Stack Overflow (the oldest, biggest site, and by far the worst offender in this regard), I see many horrifying instances of a new user's question being "rejected" for trivial reasons, when in the old days we'd have helped the asker improve the question and worked harder to extract the "pearl" inside the question.

(My last phrase reminded me of the title of a post from 2011: [https://stackoverflow.blog/2011/06/13/optimizing-for- pearls-...](https://stackoverflow.blog/2011/06/13/optimizing-for-pearls-not- sand/) which ends with:

> Therefore, the only logical thing to do is to maximize the happiness and > enjoyment of answerers. If this means aggressively downvoting or closing > unworthy and uninteresting questions, so be it.

I think this was the right choice to make at the time, and if Stack Exchange Inc in order to make the sites more welcoming ends up making the sites a less fun place for answerers there won't be much of value left, but still there's a lot that can be done to understand why otherwise initially well-intentioned answerers end up behaving this way over the course of years, and finding ways to keep answerers on the site without regularly crushing those seeking answers.)

</comment><comment><USER32> Now I want to know what the controversial new policy was.

</comment><comment><USER33> Hostility is an issue that has plagued every major discussion board, comment section, and social network. I applaud any network that makes a real effort to manage the hostility. It is a very difficult problem to manage, since people rarely intend to sound hostile, yet most readers assume the worst.

My sister leaves Facebook every few months because she perceives there's too much hostility there, then rejoins again a few months later to see what's going on in the family. I see most of the posts and comments she sees, and I can see why she thinks people might be belittling her, so I don't blame her. I'm glad she doesn't try to get into technical discussions where the appearance of hostility can be far worse.

</comment><comment><USER34> I think this is an important lesson for an awful lot of online communities -- in a public forum* some mild, warranted criticism is then published to your friends and they are then encouraged by the algorithm to put in their tuppence-worth. Should any of those be inclined to comment -- perhaps less sensitively, slightly more inflammatory -- then the cycle begins anew, with more fuel added to the fire.

* Mostly looking at Twitter and Facebook with their explicit "engagement means my friends will see this" algorithm

</comment><comment><USER35> SO's problem was they wanted to a community that rewrote manuals and documentation, rather than be a community that helped programmers answer problems.

That created a problem that has snowballed and is probably to big to ever really fix now. It is caustic, its not user friendly (even to users with experience).

</comment><comment><USER13> this reads a bit like a parody of the all-inclusive movement. the first half of the article chronicles how she took offence where none was offered, and instead of "my bad", there's a whole 'nother half of it talking about "improving the way people give each other feedback".

as others have suggested, (part of) the issue is with the nature of the site itself. we can talk about elitism, seniors shitting on "noobs", whatever. the truth is, there's all walks of people on SO. there's a continuous barrage of bare-naked prompts for "do my homework for me", there's a continuous barrage of "(i don't even know which side is up, but) what's wrong with this gymnastics equipment i'm using?" questions. if you're any kind of regular in that kind of environment, you'll eventuaatlly get exhausted. the only way they can improve the site for "beginners", however ill-defined that term is, covering both the blatant homework cheaters and honest learners, is to limit engagement by force. "you seem burnt out, you can't post comments or answers for a week. come back when you're in a better mood." that seems like a sure- fire way to drive away their knowledge pool and ultimately their revenue stream. another way is to rate-limit the crappy input, but that doesn't seem to be what the article is hinting at at all.

for all the bitching about how toxic SO is, this is not my personal experience. however, that doesn't mean i think the format of the site has merit. IMO, if you want to fix the experience for honest neophytes, you need to enable dialogue. a newbie asks a ill-posed question, a senior points out the misconceptions, asks for clarifications. the newbie comes back with more information, improved followup. senior is finally in position to provide a red-meat answer.

i just described a mailing list, and that's a format you cannot sell with the kind of margin SO has been raking in. they _could_ ditch their programmers and employ a bunch of writers to collate the wisdom of various product-specific mailing lists into an encyclopedia, but they're not interested. i understand that, it'd be a hell of a pivot. but if they push on catering to the lowest common denominator, they're doomed.

</comment><comment><USER36> For me SO has been useful when I search on google and the 1st result is a similar question on the platform. Almost never get the answers on stack overflow, but I find alternate ways to search on google for the answers that I need, which is often found on other sites. With the focus on questions and phrasing , the site has become an useful resource to find ways to rephrase your questions, but very rarely find the required answers on the site.

</comment><comment><USER37> Does Stack go the way of Yahoo answers at some point? The former has served me on countless assignments/reports, hope it remains useful.

</comment><comment><USER38> HN is far more hostile than stack overflow :)

<comment><USER16> I think that's hyperbolic. I find HN to be slightly more forgiving. However, it does surprise me how hostile HN can be to a bit of humor.

<comment><USER19> Yes. Also, you don't always see people asking, "Hey I don't quite understand what you mean with this comment - can you clarify?" Instead there's a tendency to just down vote.</comment></comment></comment>


$13B Silicon Valley Community Foundation, Bay Area's Largest Nonprofit, Crumbles - <AUTHOR> https://www.marketwatch.com/story/silicon-valley-billionaires-favorite-nonprofit-crumbles-beneath-mounting-greed-2018-06-28 <comment><USER2> H.L Mencken was right, the urge to save humanity is almost always a false front for the urge to rule.</comment>


Natural Language Processing with Deep Learning - <AUTHOR> http://web.stanford.edu/class/cs224n/ <comment><USER2> The machine learning Stanford courses are probably the best open education contributions I've encountered. From Ng's CS229 material to Karpathy's rendition of CS231n. These are some of the best pedagogical materials on machine learning/deep learning available.

<comment><USER3> Unfortunately the videos for this course won't be made available until after the course has finished.

<comment><USER4> [https://youtu.be/8rXD5-xhemo](https://youtu.be/8rXD5-xhemo)

<comment><USER5> Thanks for the link, just subscribed.

Years ago I took Chris Manning and Dan Jurafsky's Coursera NLP class and it was excellent. I also own, I think, every book they have written including Jurafsky's book on food.

It is extremely generous of top universities to make their classes available online. Of course, watching the videos and trying the homework assignments on one's own is not the experience of going to Stanford, but it is less expensive!

</comment></comment></comment></comment><comment><USER6> I took this class and can vouch for it. They update the class every year to go over recent research - not an easy task in such a fast moving field. For example, this offering covers the Transformer architecture which has recently been used to obtain state of the art results across a wide range of NLP tasks.

<comment><USER7> Are you a student at Stanford ? I was wondering if I can join just for this course...

<comment><USER6> The videos from the winter 2017 offering are freely available on YouTube.

[https://www.youtube.com/playlist?list=PLqdrfNEc5QnuV9RwUAhoJ...](https://www.youtube.com/playlist?list=PLqdrfNEc5QnuV9RwUAhoJcoQvu4Q46Lja)

The assignments are at the class webpage too.

<comment><USER8> And this is the 2019 playlist: [https://www.youtube.com/watch?v=8rXD5-xhemo&list=PLoROMvodv4...](https://www.youtube.com/watch?v=8rXD5-xhemo&list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z)

Quote from course page: "This year, CS224n will be taught for the first time using PyTorch rather than TensorFlow (as in previous years)."

</comment></comment></comment></comment><comment><USER9> Is there a good course for standalone Natural Language Processing?

I came across MIT OCW's Advanced NLP - [https://ocw.mit.edu/courses/electrical-engineering-and- compu...](https://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-864-advanced-natural-language-processing-fall-2005/) , but does someone has a similar or a better standalone NLP course in mind? From MIT OCW, Stanford , Coursera, Udacity, et al?

I am very much interested. Could be free or paid.

Even PDF's of lecture notes could do.

Edit - Found one standalone NLP course by CMU, looks good - [http://demo.clab.cs.cmu.edu/NLP/](http://demo.clab.cs.cmu.edu/NLP/)

<comment> alok-g The following is also good:

[https://web.stanford.edu/class/cs224u/](https://web.stanford.edu/class/cs224u/)

While you asked for a course, checkout my introductory presentation on the subject here (PDF slides available for download):

[https://www.siliconvalley- codecamp.com/Session/2014/introduc...](https://www.siliconvalley- codecamp.com/Session/2014/introduction-to-natural-language-processing-nlp)

An attendee, claiming to have read 1.5 books on NLP, called it the broadest coverage of NLP he had ever seen. Some of the attendees told me that I had inspired them to turn their careers to NLP.

<comment><USER9> I skimmed through your PDF. It's very exhaustive and all-encompassing.

But what really got me excited was that you had included 2 of Steven Pinker's books in your "Suggested References". Few weeks ago, I was going over the Wikipedia entry this book by Steven Pinker - "A Sense of Style", and wondering if it has any implications on linguistics.

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

So, my question to you is, does "The Sense of Style" bears any NLP-relevant context in it?

Thanks for such an awesome PDF :) Can't wait for my day to end!

<comment> alok-g Glad that you like it so far. :-)

I wish I had recorded the session I gave. It was several times more interesting and engaging than what the slides read on their own.

I haven't read this book, but have read a blog by Pinker on the same lines. I just also skimmed through the Wikipedia link you mentioned.

The book would not be a recommendation from NLP algorithms perspective. I am sure though that it would be a good book as Pinker is a mind-opening writer.

I'll nevertheless give you some deep food for thought relating to languages:

Check out slide 14 in my talk, especially the remark on its right side. It is a powerful thought.

There is an equilibrium process involved in the shaping of the language over the time, though language must by definition have at least some standardization for it to work, which means it would resist change.

What Pinker is saying at the high level is that the official rules of grammar sometimes deviate away from the equilibrium point. For example, technical jargon and acronyms are often easier for the speaker than the listener. A poor handwriting is likely less tiring for the writer than easier for the reader.

There would also be deviations which make it harder for _both_ the speaker and the listener.

Yet, in both of the cases above, the language would resist change.

As writing came into being (keep in mind that we have been talking for a few million years, and writing only for a few thousand, so no comparison!), written material stands for much longer than vibrations in air molecules, or our memories, do. That further slows down language velocity as standardization now sits across time too.

We now stand where language is standardizing across the world, and getting frozen in the Internet, there's further velocity reduction involved. (Albeit, newer concepts are adding increasingly faster to the languages...)

How do you, in such cases, make the above deviations from the optimum go away?

There are some rules of language, grammar, that shouldn't be. They are like legacy code.

Pinker is educating us about such rules. He's trying to make style come back to that optimal.

Let's take a simple example. Did you know, comma classically sits inside quotes? Here's an example I picked from [1]:

"Good morning, Frank," said Hal.

Note that the comma after Frank is inside the quotes! Why should it be that way? No wonder putting comma outside is gaining acceptance. :-)

There are even weird rules for what happens when multiple paragraphs are to be included inside a single quote. (Hints: Number of opening and closing quotes is not equal in some English dialects under this scenario. Weird, hmmm.)

These rules should just go away. It's better to choose the optimals for the language and make those cultural, style, shifts happen in our language.

Take care. Good discussion. Feel free to reach out again.

And please feel free to refer others to my slides page as you see fit. :-)

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

<comment><USER9> Wow, the info you have provided is so much valuable.

What you said above definitely sounds like Steven Pinker-ish.

I feel like I am embarking on a learning process that's gonna stay with me for a long time, courtesy our short correspondence.

I know I will be needing you again, so I am going to save your email ID in my contacts. I will send you a Hi on your email ID , if you don't mind?

And I am recommending your PDF to my batchmates who have enrolled for the same course :)

Muchas gracias for the wonderful explaination!

<comment> alok-g Sure! alokgovil hot mail :-)

Also, feel free to connect on LinkedIn: /in/alokgovil.

</comment></comment></comment></comment></comment></comment><comment><USER10> Skimming through I came across a fun example (new to me at least) in the introduction to translation, lecture 8 slides page 55.

"hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn hn" in Somali gives "Serious Therapic Anxiety syndrome" on google translate.

Perhaps not surprising, but fun. The link from the slide (below) has previously been submitted to hn without notable discussion.

[https://www.skynettoday.com/briefs/google-nmt- prophecies](https://www.skynettoday.com/briefs/google-nmt-prophecies)

</comment><comment><USER11> Chris Manning is responsible for so much work in this field. I can't wait to go through this video series. Thanks for all your hard work and I want you to know how much it's appreciated.

</comment><comment><USER12> I also like CMU's neural net for nlp class: [https://www.youtube.com/watch?v=pmcXgNTuHnk](https://www.youtube.com/watch?v=pmcXgNTuHnk)

</comment><comment><USER4> Great lectures, with a lot of intuition about recent research and clear explanations.

Some videos are already online, starting with [https://youtu.be/8rXD5-xhemo](https://youtu.be/8rXD5-xhemo)</comment>


IBM produces first 'brain chips' - <AUTHOR> http://www.bbc.co.uk/news/technology-14574747 IBM has developed a microprocessor which it claims comes closer than ever to replicating the human brain. <comment><USER2> Previous submissions of the same story:

<http://news.ycombinator.com/item?id=2900896> (hothardware.com)

<http://news.ycombinator.com/item?id=2900685> (cnn.com)

<http://news.ycombinator.com/item?id=2900593> (technologyreview.com)

<http://news.ycombinator.com/item?id=2899885> (popsci.com)

<http://news.ycombinator.com/item?id=2899850> (cbsnews.com)

<http://news.ycombinator.com/item?id=2899643> (cbsnews.com)

<http://news.ycombinator.com/item?id=2899299> (computing.co.uk) <\- some discussion

<http://news.ycombinator.com/item?id=2898229> (venturebeat.com) <\- lots of comments</comment>


Ask HN: Hypothetically, would you take your salary in Bitcoin? - <AUTHOR>

I'm not proposing a product or service to do this, just curious whether HN folk are sensitive to BTC's volatility as a medium-term store of value. <comment><USER2> Apropos of nothing, the word salary comes from the Latin for salt. The Romans used to pay their armies in it. It has use value and can be traded for other things that you want.

Would you accept your salary in salt in 2014? Well, that would be suboptimal. If you want salt, just take your salary in dollars and buy salt. If a company proposes to pay you in salt, run.

<comment><USER3> There's no evidence this was ever true, the whole salary/salarius thing is basically an offhanded potential backronym mentioned by Pliny. It's particularly unlikely as 'payment' to the Roman fighting forces in the time he was referring to was almost exclusively in spoils.

</comment></comment><comment><USER4> No, I would not take my entire salary in Bitcoin; even disregarding the current inability to use it in everyday expenditures, it's simply too volatile. Would I take a portion of my salary in BTC? I don't think so either, simply because I would want it to be such a small percentage that it wouldn't be worth it.

There's an interesting article on the matter over at CoinDesk: [http://www.coindesk.com/getting-paid-in- bitcoins/](http://www.coindesk.com/getting-paid-in-bitcoins/)

</comment><comment><USER5> I would take a portion of it in Bitcoin, like 5%.

Infact, there is a company that does this, you give HR an additional routing number + account number, and they buy Bitcoin and send it to your deposit address. (I have not actually done this yet)...

</comment><comment><USER6> I think the buy-sell spread would definitely be a problem, unless the company has money in bitcoin already and you don't plan on selling it immediately. It's just not viable until bitcoin usage is more widespread and selling btc for cash becomes a thing of the past.

</comment><comment><USER7> It is too volatile right now.. I have seen it drop from 1k to 400 in a relatively very short period of time. Plus, it has issues in India. There aren't any good exchanges (any more) here.

</comment><comment><USER8> Yes. As long as there was a hedge type clause saying if it dropped below a certain threshold it would revert to USD. Sounds a bit like working in Argentina or Zim but those would be my terms.

</comment><comment><USER9> I would definitively do It... Something like 30%... The part that I want to save medium-long term.

<comment><USER10> 1) There are a finite amount of ways to spell inde-finite-ly

2) Why don't you invest 30% of your savings in Bitcoin right now then?

<comment><USER11> Re 2. Takes extra effort. People are lazy.

</comment></comment></comment><comment><USER12> If I want to gamble I would do it with my own money.</comment>


Secret Sharing and Erasure Coding: Guide for the Aspiring Dropbox Decentralizer - <AUTHOR> https://blog.ethereum.org/2014/08/16/secret-sharing-erasure-coding-guide-aspiring-dropbox-decentralizer/

<comment><USER2> If anyone's interested in seeing a simple implementation of something like this, but without the payment protocol implemented, I made a toy implementation earlier this year[1].

It encrypts files client-side, uses a "wallet" file to store your encryption keys, and performs challenges at regular intervals to ensure files are being held appropriately and automatically restoring redundancy if not.

Code rot aside, it should still be working, at least if there were any servers/nodes set up.

[1] [https://github.com/ConceptPending/fincrypt](https://github.com/ConceptPending/fincrypt)</comment>