Ask HN: How to handwrite faster? To get into Stanford. - <AUTHOR> With my school exams coming up, and no computer tests available, I have recently realized how important it is to be able to write faster (and readably).
Would it be worth adjusting my style of holding the pen to the recommended method?
Also, I was thinking of using WorkRave (workrave.org) breaks as a means of setting times for me to practice writing on lined paper, has any research been done on the best methods of practicing, in general - ie should I do 1 minute of writing every 10 minutes, 30 seconds every 5 minutes, 2 minutes every 20, etc? (looking at ratios, rather than absolute time, which will expand to fill my available time)
Any other general tips or similar experiences you have had? Would you be interested in improving your handwriting speed as well? <comment><USER2> Are you writing for other people, or taking notes? [edit: I fail at English comprehension, sorry. Post preserved for posterity to laugh at.] Writing for other people is largely an artistic pursuit these days, outside of class at any rate. Writing for yourself, you will _destroy_ any achievable longhand speed by learning to outline effectively.

Among other pursuits, I have been a professional interpreter. The best exercise for note taking (aside from college debate, where they teach it) is watching the news in your native language. Write down key points only, develop personal symbolic vocabulary to quickly capture important concepts, practice practice practice.

Where is my notebook? Here we go:

w/ ^ glob 来 challop. Succ 社 現 stup roi.

Apologies for the Japanese, I swap when it saves time. The full sentences the speaker said were:

With increasing globalization come challenges and opportunities. Successful companies will realize stupendous return on investment.

I am rate limited by speaker speed for anyone slower than the micro machine man, which is an occupational requirement when you have to be translating at the same time.

<comment><USER3> > _Are you writing for other people, or taking notes?_

He says he's writing exam papers. Legibility is highly important and a consistent standard writing style is expected (proper grammar, punctuation, etc.).

That said my Mum is a maths marker and she takes great pains to try to read even the most unintelligible and poorly written/drawn answers.

</comment></comment><comment><USER4> In terms of improving the legibility, you can try this method: [http://www.amazon.com/Write-Now-Complete-Program- Handwriting...](http://www.amazon.com/Write-Now-Complete-Program- Handwriting/dp/0876781180)

Personally, I find it's a tradeoff between legibility and speed. I also found, back in my school days (when dinosaurs roamed the earth, and "portable computers" still weighed about 40 lbs, and were thus useless for classwork) that I'd do much better to think quickly and write slowly than the opposite.

In other words, writing speed really shouldn't be the bottleneck.

</comment><comment><USER5> I would recommend using gel pens (vs. ballpoint). These let you write on paper with a lot less effort compared to ballpoint, allowing you to write faster and without getting tired as quickly. If you don't already do so, you should write smaller (~15 words per line) and with very finetip pens, so you can cover more words in the same amount of time.

In high school, these were my favorite pens: <http://www.jetpens.com/product_info.php/products_id/82>

<comment><USER6> Pilot G2 gel pens have really nice dark, flowing ink, and are cheap and readily available.

The pens themselves are decent, though I got a Karim Rashid pen* as a gift and was delighted to find the g2 pen refills fit it perfectly. I've heard they fit many other custom pens, too.

* It looks like the blocky one in the middle here ([http://www.aspshop.net/customs-wholesale/Pens/Karim-Rashid-I...](http://www.aspshop.net/customs-wholesale/Pens/Karim-Rashid-Imago-Roller-Ball-6380.htm)). That one may or may not work for you - I have big hands.

</comment></comment><comment><USER7> Firstly, as a left handed person, if you are also left handed, learn to use your right hand(You probably don't have time for this though).

I would recommend the Palmer mothod, His book from 1935 is available to download here for free. <http://www.iampeth.com/ADOBE_PDFs/Palmer%20Method%201935.pdf>

Or if you like dead tree, Amazon [http://www.amazon.co.uk/dp/1432596713?tag=callilearn-21&...](http://www.amazon.co.uk/dp/1432596713?tag=callilearn-21&camp=1406&creative=6394&linkCode=as1&creativeASIN=1432596713&adid=1A2A7QSAVZKFBTPXFVPR&);

As someone who hated and avoided cursive writing (all my writing is print until I made an effort a couple of years ago) this really helped, but it takes a couple of months if you're left handed (learning to use your right hand) I'm sure a lot less if you're right handed.

<comment><USER6> I'm left-handed, too. What's your reason to write right handed - because you smudge ink/graphite less?

</comment></comment><comment><USER8> I'll second the recommendation of getting a pen you really like.

The next step is going to depend on your boredom threshold. If you can do it, find an article or two, ideally a few pages each, and copy them word for word in longhand. The goal of this exercise is for your brain to get bored enough to naturally push you to go faster. For legibility, add in that if it's unreadable by your partner/friend, you have to redo that article (and not pick another article: that would be too interesting :).

If you have more time, handwriting a nightly journal or regular letters to someone is a more pleasant way to achieve the same goal. As writing more than a few words at a time becomes rote, it will naturally get better and faster.

</comment><comment><USER9> I don't have a reference, but several years ago I read an article that described improving one's hand-writing by engaging the entire arm up through the shoulder. The amount of movement further up the arm is small, but it transforms the overall effort. As I recall the article describing, many people "freeze up" their arm, resulting in all the effort being made in the wrist and hand. This also increases strain and fatigue.

I tried what they suggested, a few times, and it did seem to have some effect, but I didn't stick with it methodically.

Sorry not to have a reference, but maybe Google will find it, if it sounds of interest.

<comment><USER10> Found this link that talks about the correct technique for writing (engaging the forearm and shoulder instead of 'finger-writing') <http://www.paperpenalia.com/handwriting.html>

</comment></comment><comment><USER11> The only suggestions I have are:

1) Get a good ergonomic pen that works for you. This can help.

2) If you write small, legibility may be helped by getting a fine point pen rather than a standard medium point. This was a trick my ex-husband used.

Good luck with this.

</comment><comment><USER12> I'm missing something important. How does this relate to Stanford?

<comment><USER13> I think he is preparing for the written portion of the SAT.

</comment></comment><comment><USER14> <http://en.wikipedia.org/wiki/Shorthand>

<comment><USER4> Shorthand will help with note-taking, but the OP wants to write exams. I doubt his professors will be interested in reading them in shorthand.

</comment></comment><comment><USER15> Get a pen you like.

Take a deep breath and relax all your muscles.

Hold the pen _very_ lightly. Pretend it's about to fall apart in your hand.

The tighter you hold the pen the worse and slower you'll write.

</comment><comment><USER16> My mother-in-law always takes notes in stenography. Yes, she's that old (she learnt it at school during WWII). It's really fast as hell.

</comment><comment><USER17> Shortly before the test, you might try handwriting a page or so as a warm-up, in order to get the muscles loosened up.

</comment><comment><USER18> write in cursive.

<comment><USER11> Or Italic, which I believe is even faster than cursive.</comment></comment>


Powering a Google search - <AUTHOR> http://googleblog.blogspot.com/2009/01/powering-google-search.html <comment><USER2> > Dr Wissner-Gross's study claims that two Google searches _on a desktop > computer_ produces 14g of CO2

.. it sounds a lot like NOT performing two Google searches on a desktop computer would produce between 13-14g of CO2.

I read in another article that some other study tried to factor wether or not you would need to start your computer up or not .. and how far around the world the data would have to travel.

I may just be cynical, but this sounds alot like an attempt to make ordinary people feel guilty about killing the planet, just by living -- in turn to make them turn to the whole buying indulgences for your climate sins (including Googling, apparently) trend.

</comment><comment><USER3> I think this press release is a response to the research mentioned in this article: <http://news.bbc.co.uk/1/hi/technology/7823387.stm>. Whether or not this type of statistic is relevant, it probably pales in comparison to the increase in global GDP as a result of this powerful search tool. Besides... a further question, would the internet be as usable without it?

</comment><comment><USER4> The doctor's report accounts for a) your computer viewing the page for X minutes, b) the overall searches per power used by google's datacenters, and c) some other random guessing I'm assuming.

Google's figure accounts for usage of power the google search actually utilizes.

Both of these are skewed figures, reflecting the agendas of the two. The doctor has a site he wants to promote, google has a "green" label they want to keep.

</comment><comment><USER5> _Thus, the average car driven for one kilometer (0.6 miles for those in the U.S.) produces as many greenhouse gases as a thousand Google searches._

Honest question: is that correct grammar? ("as many greenhouse gasses")

<comment><USER6> It could be if it meant types of gas (CO2, methane, ...) but in this context discussing quantity of gas, it doesn't really fit.

However, there is a meme of dodgy word endings in use at the moment, popularized by Jeremy Clarkson on top gear talking about cars having x many torques instead of x N/m of torque. This may be deliberately in that style.</comment></comment>


Have You People Noticed the New Past and Web Buttons on HN Posts? - <AUTHOR> This feature is awesome and helps one to have an in depth knowledge of the submitted post. It removes the burden of writing keystrings on Google. <comment><USER2> for more details, official announcement was here: [https://news.ycombinator.com/item?id=10223645](https://news.ycombinator.com/item?id=10223645)

<comment><AUTHOR> Thanks :)

</comment></comment><comment><USER3> Had not noticed it before, thanks for pointing it out

<comment><AUTHOR> The pleasure was all mine.</comment></comment>


Using Potrace for cleaner image masks - <AUTHOR> http://engblog.polyvore.com/2013/05/under-hood-how-we-mask-our-images.html

<comment><AUTHOR> Polyvore removes the backgrounds from millions of product images in its index.

This post explains how were able to use Potrace to clean up the jagged edges of the objects in these images.

</comment><comment><USER2> Great info</comment>


MIT Hacker Tools: a lecture series on programmer tools - <AUTHOR> https://hacker-tools.github.io/ <comment><USER2> Hi all! We (@anishathalye, @jjgo, and @jonhoo) have long felt that while university CS classes are great at teaching specific topics, they often leave it to students to figure out a lot of the common knowledge about how to actually use your computer. And in particular, how to use it efficiently.

There's just no class in the undergrad curriculum that teaches you how to become familiar with the system you're working with! Students are expected to know about, or figure out, the shell, editors, remote access and file management, version control, debugging and profiling utilities, and all sorts of other useful tools on their own. Often times, they won't even know that many of these tools exist, and instead do things in roundabout ways or simply be left frustrated about their development environment.

To help mitigate this, we decided to run this short lecture series at MIT during the January Independent Activities Period that we called "Hacker Tools" (in reference to "hacker culture", not hacking computers). Our hope was that through this class, and the resulting lecture materials and videos, we might be able to bootstrap students' knowledge about the tools that are available to them, which they can then put to use throughout their time at university, and beyond.

We've shared both the lecture notes and the recordings of the lectures in the hopes that people outside of MIT may also find these resources useful in making better use of their tools. If that turns out to be true, we're also thinking of re-doing the videos in screen-cast style with live chat and a proper microphone when we get the time. If that sounds interesting to you, and if you have ideas about other things you'd like to see us cover, please leave a comment below; we'd love to hear from you!

We're sure there are also plenty of cool tools that we didn't get to cover in this series that you all know and love. Please share them below along with a short description so we can all learn something new!

Anish, Jose, and Jon

<comment><USER3> > ...[universities] often leave it to students to figure out a lot of the > common knowledge about how to actually use your computer.

Now I'm out in the real world (MIT class of '86!) I think this is more of an MIT thing -- many graduates of other schools get explicit training in things that the MIT faculty, fairly or not, assumes students will simply pick up. And this is despite the heavy emphasis on actually doing stuff, especially in the school of engineering. Actually I've had hit or miss results hiring freshly- graduated MIT grads (maybe less so VI-A) for this reason, though once they are up to speed they've mostly been great.

Really good use of IAP by the way!

<comment><USER4> > many graduates of other schools get explicit training in things that the MIT > faculty, fairly or not, assumes students will simply pick up. And this is > despite the heavy emphasis on actually doing stuff,

uh...I graduated from a low tier state school that was notable in our state for focusing on practical matters....and we didn't get 'explicitly trained' on this either. Most people _do_ just pick it up.

<comment><USER5> I got a CS minor from a top-5 program, and while a lot of the core classes definitely covered some of these topics in various degrees, it's really nice to see all of these aggregated in a concise way.

While you definitely do pick stuff up over time, this is arranged in a way that I could see myself preferring to reference this rather than find that one stack overflow answer that clicked with me at the time. Now that I at least have a better understanding of these concepts 3.5 years into real-world web development, this seems like a good resource to cover my bases better now.

</comment></comment></comment></comment><comment><USER6> The equivalent UCLA course is CS35L: Software Construction Laboratory ([https://web.cs.ucla.edu/classes/winter19/cs35L/](https://web.cs.ucla.edu/classes/winter19/cs35L/)). It's taught by Paul Eggert (big open source/coreutils/emacs contributor + author of diff/sort).

<comment><USER7> Paul Eggert is also the maintainer of the timezone database and designer of the uniform naming convention for time zones, such as America/New_York and Europe/Paris.

What a champ!

</comment></comment><comment><USER8> Here's the CMU equivalent course, which interestingly was also designed by students:

[https://www.cs.cmu.edu/~15131/f17/](https://www.cs.cmu.edu/~15131/f17/)

<comment><USER9> CMU did (maybe still does?) have a mandatory, once-a-week course to orient new students to logging in to *nix workstations, setting file permissions and copying files around on AFS, etc. Whether this was just for CIT or university- wide I cannot recall.

<comment><USER10> Didn't they recently nuke the unix infrastructure and replace it with cloud services? Or have reports been exaggerated?

<comment><USER11> The unix infrastructure is still in place and widely used by nearly all cs courses.

</comment></comment></comment></comment><comment><USER12> Please note that the Software Carpentry [0] project exists as well. All welcome .

[0] [https://software-carpentry.org/](https://software-carpentry.org/)

</comment><comment><USER13> MIT went with the Berkeley editor. A lost opportunity to introduce programmers to the beauty of using Emacs and Lisp.

<comment><USER14> But almost all IDEs and editors have a VIM mode - learning VIM is a good way to teach people how to keep their fingers on home row, and the skill is (because of what I stated previously) easily transferred to whatever editor you like.

From my perspective, I tried to learn Emacs, and decided it's a great editor, once you spend weeks to months to get it actually "working good," and learn shitloads of commands (let alone keybindings). Given my initial goal was "keep hands on home row," it was far, far faster/better for me to spend 3 days learning/memorizing VIM commands, installing a vim plugin into VScode, and just doing that.

Would love to use Emacs, but it's a nightmare to set up. I still haven't managed to get it feature parity with vscode.

<comment><USER15> > Would love to use Emacs, but it's a nightmare to set up.

Maybe you would like spacemacs then? It is a Configuration Bundle for Emacs focusing on "Evil Mode" (aka the Vim emulator in Emacs). It is just a few minutes to install and if you already familiar with vim then there should not be much change what the normal editor usage is concerned. Of course the customization is Emacs lisp which has a bit of a learning curve, but just to get started with Emacs and evil you don't really need to customize anything.

</comment></comment></comment><comment><USER16> This looks good. I would also recommend the Software Carpentry program:

[https://software-carpentry.org/](https://software-carpentry.org/)

</comment><comment><USER17> This is a great series. I'm going to share with my team, just to make sure they can fill in any items they're missing, like using bash functions for shortcuts or aliasing.

BTW, Stanford did an online training course 5 years ago or something called CS 184 Startup Engineering. They had some excellent tutorials on the CLI and Emacs [1]. -I wish I could find the materials, if anyone else can find them.-

Actually, I found them online: [1] [http://docshare.tips/cli-git-emacs- dotfiles_57592eb2b6d87f37...](http://docshare.tips/cli-git-emacs- dotfiles_57592eb2b6d87f377c8b46af.html)

[2] Link to their dotfiles for beginner config: [https://github.com/startup- class](https://github.com/startup-class)

</comment><comment><USER18> So one lecture covers window managers for tiling. I used dwm for years and love it, but am stuck on Windows at work. Is there anything for Windows 10 that has a similar approach of having a stack with your unused applications and a big window for the app that is in focus? And then you can easily move window from stack to focus and vice versa?

I looked at the Wikipedia article [1], but none of the alternatives seem to do that.

What can you recommend?

===

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

<comment><USER19> ~Year ago, I had plenty of success with bug.n - [https://github.com/fuhsjr00/bug.n](https://github.com/fuhsjr00/bug.n). It's a DWM clone written in... AutoHotkey, of all things.

<comment><USER20> Ok,this blew my mind in thousands pieces. I'm going to try it right away.

</comment></comment></comment><comment><USER21> I strongly believe man is a product of his tools, my slow but steady increase of their mastery is a source of pride. I've spent nights just mindelessly browsing the web in the search for a tool I didn't know about (it can be a service, a browser extension, a text editor plugin) so just looking at the title of this post made me ready for an injection of dopamine.

I have a branch on my todo list solely focused on my tools, because there are so many things to configure continuously. I schedule these tasks for the occassion I feel like I'll have a couple of minutes to improve and their priority are often labeled as "Compounding Rewards" as opposed to "Critical".

<comment><USER22> Love it! Do you have any favorite tools you'd recommend, and/or favorite places for finding new ones?

</comment></comment><comment><USER23> We had a student run course at Purdue for a while to teach new students fundamental tools outside of class. [https://github.com/Purdue- CSUSB](https://github.com/Purdue-CSUSB)

</comment><comment><USER24> Really useful! I was looking something introductory for teaching, this will do.

</comment><comment><USER25> is this some sort of MIT class to undergrad or general public?

<comment><USER26> At MIT, the month of January is a reserved time separate from the normal terms called IAP - Independent Activities Period. During IAP, there are many seminars, panels, talks, and short courses (and some long courses taught in an intensive fashion) on a huge variety of topics. Many are taught by students, faculty, staff, and area alumni. While a few classes do give credit, fulfill requirements, and the like, oat exist simply to learn cool, neat, useful, interesting, wacky, etc stuff.

<comment><USER25> ohh. Only if it was to public, hop on the red line and walk 10 mins.

</comment></comment></comment><comment><USER25> can't see anything on that projector :-(

<comment><USER2> Yeah, sadly the screencasting software malfunctioned on some of the sessions. We're thinking of re-doing some of them with a proper microphone and screencast though (see also [https://news.ycombinator.com/item?id=19081669](https://news.ycombinator.com/item?id=19081669)), and will certainly announce when/if that happens! For what it's worth, the lecture notes should capture most of the actual contents, and in the same order.

</comment></comment><comment><USER27> wow this is so cool!!!

</comment><comment><USER28> Thank you Sir For This Amazing Post.It Really Helped Me To Buy new Tolls For My Industries.

</comment><comment><USER29> > [https://hacker-tools.github.io/lectures/](https://hacker- > tools.github.io/lectures/)

Literally none of these have anything to do with proper information security/hacking/penetration testing. Will you please consider to stop abusing the term "hacker"?

<comment><USER2> So, the term "hacker" and "hacking" has traditionally meant someone who is exploring the limits of systems (whether computer-based on otherwise) in a playful manner, often finding "clever" ways to make the system behave in unintended ways. The term is arguably even broader than that — see the Wikipedia entry on Hacker Culture[1] for more. The use of "hacker" to mean the exploitation of computer systems is more recent, and was traditionally referred to as "cracking". The two terms do have a decent amount of overlap, but the latter is much more commonly associated with malicious intent, whereas hacking really just means that a desire to push systems to their limits and see what kind of cleverness you can pull off!

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

</comment></comment><comment><USER30> Forget university, most of these this should be the content of K-12 computing/programming classes. It's simpler and has much more real world value than a lot of the crap the tech, like graphical iPad programming or how to use a specific version of word.

</comment><comment><USER31> The article on editors is basically "here's the names of 5 editors, now learn vim"

I know this will piss off vim users but in my experience vim users are seriously out date when it comes to dev tools. It's like they never left the 70s. vim might be great, it might be available everywhere but when I see a vim user I then see them use something like gdb and have clearly never experienced a modern debugger because if they had they'd be infuriated at how their debugging tools haven't improved in 30 years.

I'm sure others could go into all the features a modern editor or IDE provide. The vim users will say they don't need that crap. They sound like some grandpa saying "back in my we had to walk to 5 miles to school, no one had invented bicycles or cars or buses. Don't need those new fangled things, now Get off my Lawn!"

<comment><USER30> My experience of IDE users (myself included much of the time) is that they don't know how limited their debugging experience is, just breakpoints and how to step through code. Things like breaking when a variable is set, debugging from a core dump, creating a core dump under certain conditions, viewing the assembly, setting variables on the fly etc, are features of a good debugger (often the one they're using) that are obscured from them.

If you want that shallow level of debugging you can do it from inside vim though: [https://github.com/idanarye/vim- vebugger](https://github.com/idanarye/vim-vebugger)

<comment><USER31> Exact opposite of my experience. IDEs let me easily add conditional break points, toggle between source, disassembly, source+disassembly, set variables just by clicking on them, view multiple areas of memory in different tabs/windows. Set how that memory is viewed (bytes, words, dwords, floats, as a type of class/struct, array of classes/structs), show different contexts at once, have multiple windows per thread/process, never seen someone use one that didn't know those features exist as they are all obvious to discover in an IDE.

sounds like you've never used one but then that's what I'd guess from watching most vim users. All of those have been standard features of visual IDE debuggers for over 30 years. Mean while instead of seeing every thing update live I watch the vim users type various gdb print and dump commands at the command line and then watch that data scroll off their terminal instead of being updated live as they progress like an IDE debugger.

<comment><USER30> > sounds like you've never used one but then that's what I'd guess from > watching most vim users

You'd be mistaken, I've spent a huge chunk of my adult life inside Visual Studio. IME most devs don't even know you can add a condition to a breakpoint (hiding feature behind right clicks aren't obvious) and anything complicated turns into a very convoluted process very quickly. Even setting conditional breakpoints are basically an input into the command interface, essentially what the windows run menu is to the command line.

Take this short tutorial ([https://amazingdim.wordpress.com/2014/02/01/gdb- script/](https://amazingdim.wordpress.com/2014/02/01/gdb-script/)) on gdb scripting and show me how to do similar through an IDE. With Visual Studio at least it is much more complicated, here are a few google results on that path:

1\. [https://docs.microsoft.com/en- us/visualstudio/debugger/using...](https://docs.microsoft.com/en- us/visualstudio/debugger/using-dump-files?view=vs-2017) 2\. [https://blogs.msdn.microsoft.com/debugger/2009/12/30/what- is...](https://blogs.msdn.microsoft.com/debugger/2009/12/30/what-is-a-dump- and-how-do-i-create-one/) 3\. [https://stackoverflow.com/questions/47513337/howto-debug- a-n...](https://stackoverflow.com/questions/47513337/howto-debug-a-net-dmp- file-in-visual-studio-2017) 4\. [https://docs.microsoft.com/en- us/windows/desktop/wer/collect...](https://docs.microsoft.com/en- us/windows/desktop/wer/collecting-user-mode-dumps)

<comment><USER32> >IME most devs don't even know you can add a condition to a breakpoint (hiding feature behind right clicks aren't obvious)

Can confirm: I sure didn't. ...honestly most of my debugging is with print statements.</comment></comment></comment></comment></comment>


Instagram submits to Russia censor's demands - <AUTHOR> http://www.bbc.com/news/technology-43070555 <comment><USER2> In the end, you either play by their rules and get to play, or you don't, you get kicked out and don't get to play. They saw that happen with Google in China and saw native players take hold -even if they were initially inferior.

While it is submission (morally, politically, legally, etc.) it's the long game to play, otherwise you risk not having any future say --unless there is an internal revolt which upends things. But even then there is no assurance the new shire reeves will play nice with the alien enterprise.

<comment><USER3> You also have to play by the "US rules" which means no nudity or anything that would get you kicked out of the Apple App Store.

It is a self censorship which is just as bad if not worse.

<comment><USER2> The US is not equal to Apple and vice versa. You have alternatives to the App Store. In China the App Store does not get to determine what's acceptable and not, it's the gov.

But back to the matter at hand, we're talking about the kerbing of political freedom. Sometimes you have to submit, in these cases, you don't have a choice. As Bond's villains are wont to say, "your only choice is to not play" but that gives the native players complete control over the market, as they will be happy to comply -and you only have your principles to point to --but that's an illusion because someone else is breaking them in your stead, so the cause is effectively broken. And given we don't reciprocate [the tactics], that means those players one day will get to compete against you in your own territory...

It's a prisoners' dilemma where you know what your "accomplice"/adversary will chose to do in advance.

<comment><USER4> US = corporations. Look at the war on fake news. This started from politics. Now the corporations are scrambling to implement it. It doesn't matter how many alternatives to App store US has, they will all implement it. And obviously, if a US court decides a video needs to be blocked, it will be blocked by all corporations (likely it will be blocked globally), without making the news. It's only news if it's Russia. You are suckered by PR if you believe FB or any other corporation has any other principles apart from making money.

<comment><USER5> And it's yet another clear illustration what the whole "Fake News" effort is about. It's not even about meddling in elections, it's making sure some rich sleazeballs prostitute pics don't make it to their wives, or the press. And of course, that when that does happen, "revenge" is exacted and traces of it get removed.

</comment></comment></comment></comment></comment><comment><USER6> My HN feed right this second:

        46.
    	Instagram submits to Russia censor's demands (bbc.com)
    	90 points by uptown 15 hours ago | flag | hide | 15 comments
        47.
    	Federal Judge Says Embedding a Tweet Can Be Copyright Infringement (eff.org)

so yeah.

and especially hilarious considering this is a request to block social media posts which might have bearing on the election - when only a few months ago "social media" was balking about the use of social media by foreigners to interfere in domestic political affairs..

but I suppose 'forgone conclusion' and 'them bad us good', so obviously this isn't a one-way door

</comment><comment><USER7> Unsurprising from Facebook.

</comment><comment><USER8> While there are certainly some very sleazy rule-bending individuals involved in this, I'm curious. The claim is that the chick recorded private conversations and published them without getting any kind of permission, which surely looks like a violation of privacy. In the States, can you sue someone for recording and leaking private conversations? Can such leaked conversation be censored by the judge, like a gag order or something?

</comment><comment><USER9> Apart from obvious business implications for FB, "privacy rights violation" claims have some basis. The whole story was more about sluts, than about "corruption" from the very beginning. Which is kinda funny to think about, when it leads to some serious consequences, like it did.

<comment><USER5> Privacy works with how your treatment differs from a "reasonable expectation" of a person in your position. For a high governnent official, generally accepted treatment is zero privacy for the person himself, unless a crime is committed (you don't get to break in to film them, but feel free to use a zoom lens). For their family stricter norms are usually held.

So there could not have been a reasonable expectation of privacy on the deck of a yacht in the middle of public space in the first place.

Secondly you get to spread pictures as long as you're (reasonably) in them.

</comment></comment><comment><USER10> It was ordered by court to block those photos\video while case is in progress. What is censor here?

</comment><comment><USER11> Was it completely deleted or just restricted from view in Russia?

</comment><comment><USER4> this is news only because Russia. videos get removed every minute in all countries for all kinds of reasons. why is this video any more special.

it's also especially funny since the West now has started the war on fake news which is by definition censoring. this is done outside of any court cases. it is silent censoring, the best kind of censoring

<comment><USER12> All of your posts are yelling about Russia. Put down the vodka and get back to work.</comment></comment>


Apache NiFi - <AUTHOR> https://nifi.apache.org/ <comment><USER2> Dear Apache NiFi people: almost every technology featured on HN could be described as "an easy to use, powerful, and reliable system to process and distribute data." Please consider using a tagline that will tell people something about your project. E.g., intended audience, chosen problem space, desired benefit.

You'll note that a lot of the discussion here is, "What is it? Is it like X? Is it good for X?" Those are great questions to answer on the home page.

<comment><USER3> > almost every technology featured on HN could be described as "an easy to > use, powerful, and reliable system to process and distribute data."

Really? I feel like it's more: "usable, powerful and reliable: choose one ... if you're lucky".

<comment><USER4> The point is that it doesn't say anything about what it does. A programming language could be described as a "easy to use, powerful, and reliable system to process and distribute data." It processes and distributes data? That just sounds like a computer.

</comment></comment></comment><comment><USER5> I was thinking, "wow, reading in data, processing it, and outputting data. Reminds me of Interface Engines in healthcare." Then I saw "HL7" on the diagram.

That's what I did for a long time. HL7 contains information such as "Admissions, Discharges, and Transfers (ADT)" which is sent from the Hospital Information System (HIS) to other department's systems (radiology, pharmacy, medical records, and possibly dozens more) and vice versa (LAB results back to HIS, for example).

HL7 interface engines unpack the HL7 data into separate segments, fields, and subfields, identify the type/subtype of message, route to various destinations based on the type and any other fields, map the data and reformat as necessary for the destination, encode back into HL7, and send it. It also needs to queue the messages as needed, re-transmit or set aside the message, or just stop sending depending on what it gets back in the form of response codes. So you can see in the diagram some of those steps. The also handle input/output either in the form of TCP/IP ports, reading/writing files (for batch processing), or pretty much any other method you can send and receive data (serial ports, in some old cases).

I'm kind of curious how (and how easy it is) to define which fields in the input for a given event goes to the output (and do certain transformations on those fields if needed).

<comment><USER6> Yep, this reminded me of a not-crappy version of Mirth Connect.

<comment><USER7> Hey what's wrong with Mirth? I've long since moved on but I was one of the original engineers building Mirth. I wrote a lot of the HL7 parsing logic and the tcp transports.

<comment><USER2> User interview protip: if you actually want to know what's wrong with your product, never tell people that it's your product.

At my last startup, we did user tests every week, and my cofounder was very careful never to let on which test items were made by us. We didn't have our name on the door or on the buzzer. Nothing with our logo was visible between the entryway and the user interview room. And when he started showing products, he'd always start with somebody else's.

It was great. We got some incredibly honest feedback (sometimes brutally so) on what we were building. It helped us kill a lot of bad directions early. Most people just don't want to tell you that your baby is ugly, but they'll happily dish if they think it's somebody else's.

<comment><USER8> Any tips for when the user definitely know it's your product? I can't think of anything besides starting with butchering some aspect of it. Then again that might trigger some empathetic response, and end with even less actionable feedback.

<comment><USER2> I think people can't un-know something, so I'd try very hard to get test subjects in a way where they don't think the people they are talking to are the ones who make the product.

For example, you could set up a fake market research org, and have them say they are "conducting a study on [your market] and are looking for users of products like [competitor 1], [competitor 2], and [your product]". Then for the user testing sessions you could rent a conference room from somebody like Regus, or even rent a user testing lab. Then during the tests, make sure to start with general questions and test (or show screens from) the other products before you get to testing yours.

I'm not sure if those specifics will work in your environment, but I hope you see what I mean.

</comment></comment></comment></comment></comment></comment><comment><USER9> Just in case you don't know the interesting history of NiFi:

[http://www.zdnet.com/article/nsa-partners-with-apache-to- rel...](http://www.zdnet.com/article/nsa-partners-with-apache-to-release-open- source-data-traffic-program/)

Thanks, NSA!

<comment><USER10> Thank you. I was looking all over the project's site to see who was behind it. Not a peep, but I guess they're good at that!

<comment><USER11> When people participate in Apache projects, it is emphasized that they do so as _individuals_. Affiliations are downplayed. If a contributor takes a new job at a different company, their participation within the project is completely unaffected.

Furthermore, as a 501(c)(3), the ASF is limited in what it can do with do with donations and very, very rarely accepts targeted donations aimed at a specific project -- it's just not worth the hassle or risk. So while outside entities might contribute by sponsoring people to work on the project, no project at the ASF has someone "behind" it in the sense of direct funding.

This is all part of maintaining project independence.

Hope this helps to explain why it is not always easy to discover "who is behind" an Apache project. :)

More info: [https://www.apache.org/foundation/how-it- works.html#hats](https://www.apache.org/foundation/how-it-works.html#hats)

<comment><USER10> Sure I understand that. And you're right, it is important for project independence.

But it is usual to be able to deduce at least something about contributors from email address, github accounts, other contact info. But in this case there was _absolutely nothing_. It was almost as if they were experts in covering their tracks! I just thought it was quite funny.

</comment></comment></comment></comment><comment><USER12> We were wowed by NiFi when we looked at it originally. Once we put it in Local env to build test flows, we found that the most complex tasks for data flows were fairly simple to setup. And the simplest tasks ended up requiring complex workarounds because the system was trying to be extra smart about what it was doing. In the end, we decided not to use it in Production due to the 80/20 split of simple/complex tasks we had.

Hopefully it's better than what it was in Jan/Feb timeframe.

<comment><USER13> Interesting. Any details on the things that you found particularly easy or particularly difficult to do with it?

<comment><USER12> Simple use cases that were more complicated

\- We wanted to collect files from various locations and push that in hdfs. Nifi seemed like a good way to build a self service setup. Once we setup source and sink, if we read + processed + removed file from destination, Nifi copied it again. We did not have control of always removing source files as soon as it was copied on destination. Components we used were GetFile, PutFile and some options in Conflict Resolution settings for these components

\- Inspect file name, run a script to generate new subdirectories for partitions and place the file in appropriate partitions. Attaching a script was easy. Changing the destination path on the fly was not.

Some Complex cases - there are other ways to do this but setting this up in Nifi was a breeze

\- Set up file collection from ftp, sftp, file copy from 20+ locations. This was painless, few minutes per source

\- Add REST interaction within data flow easily

\- Read CSV files and convert to Avro/Sequence files

\- Read files and route part of data to different processors

We also ran into some strange bugs where Nifi got stuck in some type of loop and kept copying data over and over again.

We were able to do all this testing in 2 weeks. Give it a shot, it might work out for your use case.

</comment></comment></comment><comment><USER14> Been using this for a few months at work. I was originally a skeptic, as my experience with "drag-and-drop" coding hasn't been positive, but I've come around after using it for awhile.

The guys developing it are incredibly responsive. I submitted a bug one morning via the mail list at around 9 am, and by 11am they had a patch slated for their next release.

</comment><comment><USER15> It's rare that I step into a conversation in software fields where I am completely at a loss for what is being discussed. This is one of those conversations. I have no idea what the description of the project means, and after reading the conversation here at HN, including people quoting references and such that explain what it does, I _still_ don't really know what it does.

I'm not complaining about not understanding, I just had one of those moments of "wow, the world of software is really big and there are vast, heavily funded, corners of it that I've never even heard of".

<comment><USER16> The short version: any complex data processing done at scale will have a lot of steps and fail a lot. To avoid having to constantly monitor everything, you have systems called "workflow managers" that help you make sense of those multi steps monsters and manage their dependencies, their failure etc...

If you never had to process that kind of data (we're talking about Google, Facebook and Twitter kind of data) then you probably have no exposure to this kind of system.

</comment></comment><comment><USER17> There's a really informative discussion about NiFi on the Flow-based Programming mailing list [1].

One thing that is discussed is how NiFi, in contrast to "proper FBP", has only one inport, to which all incoming connections connect, so incoming information packets are merged, and subsequently need to be "routed".

[1] [https://groups.google.com/forum/#!searchin/flow-based- progra...](https://groups.google.com/forum/#!searchin/flow-based- programming/nifi/flow-based-programming/_lQhsJR_Ihg/krSGxKgbNqcJ)

</comment><comment><USER18> Graphical dataflow programming is super powerful. It's the bread and butter of Ab Initio Software, which powers the data infrastructure of many of the world's largest corporations. I'm glad to see an open-source project entering that market too.

<comment><USER19> What is your opinion on LabVIEW then? I find their graphical interface to programming to be incredibly limited.

<comment><USER20> I remember using LabVIEW around ~2000 to read/display data from a high altitude balloon coming in over packet radio. In that case it seemed at least somewhat useful. It provided a quick and dirty way to grab data from various sources and throw it into some pretty graphs.

Years later, I had to maintain a software application built by a bunch of idiots who thought it would be a great idea to use LabVIEW as their GUI layer (because apparently that was easier than learning/using a proper GUI toolkit). This monstrosity communicated with a back-end running on Solaris via LabVIEW's freaking horrendous TCP control. The whole thing made absolutely _no sense_. Though LabVIEW _did_ provide a rather nifty visualization of spaghetti code.

I suspect this was a resume-padding exercise for the original authors. Rumor had it that one of the engineers responsible for the decision to use LabVIEW had been hired away by National Instruments. And we all cursed him.

So anyway, after that experience I'm pretty well prejudiced against graphical 'programming'. I took one look at this NiFi thing and said 'Ha! Nope.'

</comment></comment></comment><comment><USER21> DataFlow programming[1] (which NiFi) is created to do is _NOT_ the same as your typical extraction/transform/load (ETL) tool with a nice user interface!

Wikipedia says _Dataflow programming languages share some features of functional languages, and were generally developed in order to bring some functional concepts to a language more suitable for numeric processing._

The thing closest to Dataflow that is most commonly used is the concept of DAG operations in Spark, but Dataflow usually makes time windowing a first level concept. Spark Streaming is moving towards this type thing.

It is true that there is overlap with ETL tools, but that undersells what Dataflow is.

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

<comment><USER22> Can you expand on how they are different? The first thing I thought of after reading about this was that it was primarily an ETL engine.

<comment><USER21> So ETL is mostly about getting data _into_ some kind of processing system. That means there are lots of functions for dealing with things like csv data and polling directories and transforming json data into flat structures and... etc.

Dataflow is a _programming model_ for performing actions on data. A system that implements dataflow programming will probably have functions to load external data into the structure needed for the system, but it isn't primarily about moving data to another system.

For example, Google Dataflow[1] has functions for reading files etc, but there aren't really the huge number of things for cleaning and processing data that a real ETL system has. Instead, you load the data into the system, and then process it for a specific task.

[1] [https://cloud.google.com/dataflow/what-is-google-cloud- dataf...](https://cloud.google.com/dataflow/what-is-google-cloud- dataflow#Sdks)

</comment></comment></comment><comment><USER23> "Apache Nifi is a new incubator project and was originally developed at the NSA. In short, it is a data flow management system similar to Apache Camel and Flume. It's mostly intended for getting data from a source to a sync. It can do light weight processing such as enrichment and conversion, but not heavy duty ETL. One unique feature of Nifi is its built-in UI, which makes the management and the monitoring of the data flow convenient. The whole data flow pipeline can be drawn on a panel. The UI shows statistics such as in/out byte rates, failures and latency in each of the edges in the flow. One can pause and resume the flow in real time in the UI. Nifi's Architecture is also a bit different from Camel and Flume. There is a master node and many slave nodes. The slaves are running the actual data flow and the master is for monitoring the slaves. Each slave has a web server, a flow controller (thread pool) layer, and a storage layer. All events are persisted to a local content repository. It also stores the lineage information in a separate governance repository, which allows it to trace at the event level. Currently, the fault tolerance story in Nifi is a bit weak. The master is a single point of failure. There is also no redundancy across the slaves. So, if a slave dies, the flow stops until the slave is brought up again." from [http://www.confluent.io/blog/apachecon-2015/](http://www.confluent.io/blog/apachecon-2015/)

</comment><comment><USER24> Is this like Yahoo Pipes?

<comment><USER25> That was my first reaction, too. It seems to at least have borrowed the design patterns from it.

<comment><USER26> I doubt it borrowed from Y! Pipes in particular. There is a category of server software called the "integration engine" that has been around for a while. The purpose of it is to integrate multiple third party vendor systems, so you aren't locked in to one vendor for everything. You see it a lot in industries that use software but aren't about software like health care or finance.

</comment></comment></comment><comment><USER27> That seems to be quite much what my friend built in one company as customer proprietary system. Basically it looks exactly the same. Those boxes are just code modules / microservices with custom code. It's also important that everything can be configured, modified and routed in realtime by adding new boxes etc. I really loved that design. Ok, technically same results can be reached using multiple differenet architectures, but that suits microservices concept very well. Yet, it could lead to high latency depending from multiple different aspects and how modules are technically connected.

</comment><comment><AUTHOR> I was pointed at this as something that can be used very effectively for IoT.

Still investigating.

<comment><AUTHOR> [https://www.youtube.com/watch?v=sQCgtCoZyFQ](https://www.youtube.com/watch?v=sQCgtCoZyFQ)

</comment></comment><comment><USER28> So is this like Pentaho but more general purpose? [http://www.pentaho.com/product/data- integration](http://www.pentaho.com/product/data-integration)

<comment><USER29> ...and a bit more focused on "flows".

</comment></comment><comment><USER30> In general I'm curious how people handle managing diffs in the workflow over time. I've found when working with Microsoft SSIS, that I end up preferring something in code where changes are obvious.

<comment><USER31> I'm not sure what the preferred approach is, but since it seems to have a REST API with full query and update ability on the flow graph, it seems like you should be able to do a workflow where you make an update on a dev server (updates are immediately live), run a process that captures that via the REST API, serializes it, and pushes the serialization to version control, and have another process that takes a serialized version and pushes it to other servers (prod, etc.) via the REST API.

 _Why_ visual programming tools don't (at least in documentation) address version control is an interesting question, given how important that is in programming generally, and the fact that those tools are often focused on enterprise audiences.

<comment><USER32> I worked on a product once that provided users an interactive graph. The users could apply layout algorithms AND modify the grqph by moving nodes and edges around. From time to time, nodes and edges would be added and removed by the system.

So there's a distinction there between the graph, and layout of the graph ie x,y coordinates of nodes, and routing of edges. What would version control track? This is a non trivial problem imo. Edit; specifically, storing a graph in some canonical form so that trivial changes would not create massive 'false positives' in the diff. For example changing an edge indicatin an entire sub graph was added or removed. The problem is similar to xml tree diffing.

This is why I think versioning in these tools is pretty much non existent, imo of course.

</comment></comment></comment><comment><USER33> I'm interested. This looks like the proper evolution of a cohesive Camel+ActiveMQ+Felix system. Classloader isolation is so important, and it's where most of the big applications servers failed.

</comment><comment><USER34> It looks like DTS from MS SQL Server. Is it a competing product?

<comment><USER35> For the last couple of releases it's been called Integration Services, but yeah NiFi looks very similar to it.

</comment></comment><comment><USER36> Big Data ELT (Extract Load Transform) similar to Informatica (bleh), Talend, Kettle, etc... but designed for big/fast data warehousing, data mining systems.

I haven't tried this, but this looks f'n awesome for what we do. We've been using LinkedIn's Azkaban or Confluent as two seperate paths waiting for cloudera's dataflow.

</comment><comment><USER23> FYI: Hortonworks buys Onyara, the company behind Apache Nifi: [http://hortonworks.com/press-releases/hortonworks-to- acquire...](http://hortonworks.com/press-releases/hortonworks-to-acquire- onyara-to-turn-internet-of-anything-data-into-actionable-insights/)

</comment><comment><USER37> Is there a list of examples available?

<comment><USER38> This was linked from the Youtube video linked above, which looks useful: [https://www.youtube.com/watch?v=LGXRAVUzL4U&list=PLHre9pIBAg...](https://www.youtube.com/watch?v=LGXRAVUzL4U&list=PLHre9pIBAgc4e-tiq9OIXkWJX8bVXuqlG)

</comment></comment><comment><USER39> Could someone explain what one might use this for? I have read both the website and a bit of the documentation, but cannot think of a use case. Obviously there is one, but I am very ignorant as to what it might be.

<comment><USER22> At my last job, we worked with a lot of financial transaction input files (e.g. bank transactions, share transactions etc) which we called data feeds. They came from a lot of different sources (SFTP, FTP, WebDAV, HTTPS, SSH) and as a result we ended up with a bunch of different scripts, many of which we would occasionally forget about. This would appear to be perfect for that situation: gather the data; extract the files; check the data; put it somewhere; and optionally modify it.

</comment></comment><comment><USER40> Is this Apache's equivalent of Microsoft's BizTalk?

<comment><USER41> Apache ServiceMix is the more direct equivalent: [http://servicemix.apache.org/](http://servicemix.apache.org/)

</comment></comment><comment><USER42> Could be very useful if you can script jobs in code, and the gui just writes to code as well, so you can use version control and diffs to see what actually changed.

</comment><comment><USER43> How does this compare to Mulesoft's CloudHub or ws02 ESB?

</comment><comment><USER44> How does this compare to Spring Integration?

</comment><comment><USER45> how does this compare with airflow or luigi?

<comment><USER17> At least luigi, and I think also airflow, are batch workflow systems. This is more of a streaming system as far as I know, and also allows for more control over data routing, as in airflow and luigi mainly define dependencies between whole tasks, while in NiFi you can route each output of every task separately.

</comment></comment><comment><USER46> i wonder how this contrasts with spring XD

<comment><USER47> It is a lot like Spring XD. They both use a data flow model: [https://en.m.wikipedia.org/wiki/Dataflow_programming](https://en.m.wikipedia.org/wiki/Dataflow_programming)

I have been playing with both, and I prefer Spring XD's DSL. It looks a lot like Unix pipes, which I could easily grok (and it has the full suite of Spring monitoring and logging tools built in). That being said, they are both excellent projects.</comment></comment>


Page Cache, the Affair Between Memory and Files (2009) - <AUTHOR> https://manybutfinite.com/post/page-cache-the-affair-between-memory-and-files/ <comment><USER2> If you enjoy this article, I highly recommend the other articles in the archives [1], especially the 2008-2009 series.

By the way, the author also created Grokbit [2], a search engine for source code that's just… amazing.

[1] [https://manybutfinite.com/archives/](https://manybutfinite.com/archives/) [2] [https://grokbit.com/](https://grokbit.com/)

<comment><USER3> Note to self (and anyone else): check out [https://grokbit.com](https://grokbit.com) after all the traffic from this post gets handled.

Looks like it (attempts to) serve a very popular need. Time to bring my side- project up a couple of notches.

</comment></comment><comment><USER4> Any similar online resources describing low level operations in such detail?

<comment><USER5> [https://www.nginx.com/blog/thread-pools-boost- performance-9x...](https://www.nginx.com/blog/thread-pools-boost- performance-9x/)

Nginx, non blocking io, thread pools, etc.

<comment><USER4> Thanks for the share.. I was just reading about asynchronous io this weekend.</comment></comment></comment>


Accounting for Computer Scientists - <AUTHOR> http://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html <comment><USER2> (2011)

Previous discussion: [https://news.ycombinator.com/item?id=2298471](https://news.ycombinator.com/item?id=2298471)

Nice explanation even for people who have a good grasp of the basics. The visualization, seeing the flows is particularly interesting.</comment>


To be great, be good repeatably - <AUTHOR> https://blog.stephsmith.io/how-to-be-great/ <comment><USER3> On habit building- If you're like me and have tried time and time again on enforcing new habits and failed time and time again: try mindfulness. It's easy to not live in the moment, especially so when a tech centered world makes it so easy to live vicariously. It's okay to make lists of things you want to accomplish and do, but it's not okay to do that often and not do what you originally set out to do. It will become cyclic.

Be mindful in the morning and reflect on it before you go to bed. Be in the present and realize you are the one making the decision whenever the situation arises. Taking action or not, be present and mindful of your decision.

I've found simple google calendar reminders put me in the situation where I have to make the decision to take action or not. They don't require any interaction (apple reminders will stay until they're cleared) and they tap me on the wrist and present an option: Run? Write? Work on project?

</comment><comment><USER4> > "No one who can rise before dawn three hundred sixty days a year fails to > make his family rich"

That almost sounds like sarcasm to me. I currently live in South East Asia and you know who gets up early every morning grinding 12 hour shifts with little to no vacation? The million of poor people who don't earn much more than "survive" money.

Okay, probably it's about context so if you are in a first world country you just work hard and the wealth will come pouring in? Still sounds like sarcasm tbh.

Of the top of my head the five most well-off people I personally know didn't work harder than the average and I am sure wouldn't say so about themselves, either.

<comment><USER5> > if you are in a first world country you just work hard and the wealth will > come pouring in? Still sounds like sarcasm tbh

No. Later in the writeup, the author talks about 'Habit of Progression' which adds more context:

> "There is one thing to clarify: this habit of progression must come with the > right inputs. Being consistent with something leading you in the wrong > direction will unsurprisingly lead you in the wrong direction. So if this is > the way you are constantly moving (excluding short periods of local minima), > pivot until you determine what the right inputs are."

So it's not just about working hard. It's about working hard in the right direction by analyzing the outcome of efforts and using it to refine the approach to move forward.

<comment><USER6> To quote J. Cole, "The good news is you came a long way. The bad news is you went the wrong way"

</comment></comment></comment><comment><AUTHOR> I spent the last few days writing this piece as I was reflecting and frustrated with my short-term progress (or lack there of). This led me to consider what I think greatness even is, which was almost therapeutic to think through.

Curious to know what people think about this. Can "greatness" really be achieved quickly?

<comment><USER7> While I agree with much of your article, it's interesting to me that you cite this tweet:

 _Building products, writing, and painting are not mental excercises, they are physical ones.

Reading to improve is like watching someone else workout – it does almost nothing for you.

To run better, run. To paint better, paint. To write better, write. To build better, build._

I certainly agree that practice is the core of all increase in skill. However, I've found that the differentiation factor of my skills comes from being someone who reads, who looks for _better ways_ to run. From being someone who constantly reflects on the practice that occurs. This is something that's _well_ supported by research (the notion of deliberate practice).

Deliberate Practice: [http://projects.ict.usc.edu/itw/gel/EricssonDeliberatePracti...](http://projects.ict.usc.edu/itw/gel/EricssonDeliberatePracticePR93.PDF)

<comment><AUTHOR> OP here. This is a good point. While I certainly think there is value in reading _how_ to do things better, IMO there is an upper limit on this. I more often see people reading about X, Y, or Z, never to actually take action, rather than the other way around. I also think you learn iteratively by doing.

However, I do agree that it is necessary to take a step back and learn from others along the way.

<comment><USER8> Are you suggesting that scientists shouldn't read about the latest developments in their field? They should just start from scratch and try to figure out everything without any prior knowledge or learning from others?

<comment><USER9> Clearly she is not suggesting that, as nobody reasonable would ever suggest that.

> Please respond to the strongest plausible interpretation of what someone > says, not a weaker one that's easier to criticize. Assume good faith.

</comment></comment></comment></comment></comment><comment><USER10> This post is amazingly written. I have been thinking about things related to this topic and how to implement them in my life. It's been only a few months since I actually started thinking about this. I realised that I am an average person but slight burst of decent things in time. And to become great I have to work towards it.

I have learnt that building habits is a big part of this. You need to build good habits to actually reap the benefits of the compounding. My thinking of habits came from Anki. While reading up on Anki, I noted the benefits of compounding and consistent effort.

What I am still trying to achieve is the iterating process. To figure out the right inputs to get the desired output. Once I saw there are a lot things that I need to do parallelly, I created a schedule to work on them everyday, but that was very difficult to follow. Something or the other was left out. So i had to drop a few things from the routine. I am still trying to find a good way to experiment and find the right path. This blog post gave words to what I am trying to achieve, and how I can approach it.

Thank you for writing and sharing it.

<comment><AUTHOR> OP: Thank you for sharing your perspective! I think we all struggle with this, which is one of the reasons I wrote the article. We are taught to believe others are born great, but really everyone struggles to get from A to B. Focusing on a few things that are more important (ie: cutting out noise) certainly helps. Another book which I didn't mention in the article is Essentialism, which may be a good book for the particular obstacles you're facing.

</comment></comment><comment><USER11> IMHO I've found greatness is also very much a result of environment as well. Not just in the "you are the five people you interact with most" kind of thing, but also in the kind of bounds you face when shipping greatness. It definitely impacts your scalability curve. Shipping a great product and having business impact is kind of an O(1) deal; people see the great product, git blame the source or look at release notes, and find out you're behind it, and then think you're good at programming. Shipping a bad product because of business or technical org constraints and then having to explain to people the design decisions and compromises you had to make is very much not an O(1) deal. I think the former definitely lets people stand on their own two feet and merits, while the latter concentrates power in those who control perception.

</comment><comment><USER12> I wonder what Alexander the Great would think about this. Did he think he achieved greatness? Was he happy and satisfied? Or did he suffer from the impostor syndrome like many "greats" of today?

<comment><USER13> > Alexander wept when he heard Anaxarchus discourse about an infinite number > of worlds, and when his friends inquired what ailed him, "Is it not worthy > of tears," he said, "that, when the number of worlds is infinite, we have > not yet become lords of a single one?"

(Plutarch)

(But as far as we know he did think he was great. "Only sex and sleep make me remember I am mortal", "If I were not Alexander I would wish to be Diogenes", and so many other lines suggest he thought he was awesome, note those quotes are my paraphrasing.)

<comment><USER14> Bunch of punks - Caesar cried at Alexander's grave too.

Still, to me, Alexander's father was the man who made Alexander, so he was greater. (I don't mean by birth, the army and previous conquests)

<comment><USER15> Many people don't know that Alexander was tutored by Aristotle! So yeah, he had a great upbringing.

<comment><USER14> His father spent a lot of effort facilitating that as well, so he really was a pretty cool guy.

<comment><USER16> Yeah he even was proud when (as story goes) Alexander at a very young age managed to ride a horse.

</comment></comment></comment></comment></comment></comment><comment><USER17> In my personal experience, many people (including yours truly) give up because we have vague ideas of what exactly great is. What exactly does it mean by being a great programmer? Peer adulation? LOCs per day ? I believe that until anyone finds a decent enough definition of what great is for him/herself, it is rather hard psychologically to achieve anything resembling greatness. "If you can't measure it, you can't change it" Peter F Drucker.

</comment><comment><USER18> > _"No one who can rise before dawn three hundred sixty days a year fails to > make his family rich" - <USER2>

Yeah, billions of hard working people would disagree. Tons of factory workers woke before dawn (and worked 10 hours or more) and never got anywhere...

<comment><USER19> He clarifies it later, saying that you must in the right direction. His whole article is written from 1st world perspective, imho.

<comment><AUTHOR> She* :)

I would agree that the concepts are relevant to all. Certain parts may be more difficult for those in varying circumstances, but I think the core principles are still valid: 1) Iterating until you find a "good" path 2) Working towards that "good" consistently

</comment></comment></comment><comment><USER20> This is why Shaq is the Big Aristotle</comment>


AMD 6-core Phenom II $222 (5 times cheaper than Core-i7 980X) - <AUTHOR> http://www.geek.com/articles/chips/amd-phenom-ii-x6-6-core-2-8ghz-processor-shipping-for-222-29-20100426/

<comment><USER2> Hmmm, not really a good article:

To get about the same clock, you need to pay $325.

The Core-i7 980X is made on a smaller process node, 32 instead of 45 nm. The two processors aren't easily compared, the cores in the Core have half the L2 cache of the Phenom (256 vs. 512KB) and the shared L3 is twice as big (12 vs. 6MB).

As for the pricing, according to Wikipedia there's just this one unlocked Core desktop part, vs. a couple of dozen Xeon server parts and 8 4 core dual processor parts. It sure looks like to me like Intel is selling all the server parts it can and is throwing out this one desktop version for the enthusiasts with a price to match.

Anyone have an idea of what the different L2 and L3 cache tradeoffs will mean in practice?

<comment><USER3> You can't compare Xeons to Phenoms, you need to be looking at Opterons for that. AMD recently released their 12-core Opterons (4 different models) and they have 3 8-core and 5 6-core Opterons as well (9 if you distinguish between 2-socket and 8-Socket versions).

<comment><USER2> I'm only comparing them as a business decision WRT allocating fab lines. I'm assuming the profit margins are higher on server chips and the high end enthusiast desktop ones and proposing this as an explanation for Intel's product mix. There's got to be some reasons Intel is only selling one model of the latter while selling a couple dozen of the former with this microarchitecture and on this process node.

</comment></comment></comment><comment><USER4> To give people a rough idea, the 1055T X6 scores 5960 points on average in the PassMark benchmark while the i7 980X scores 10165.

As always, benchmarks are not useful for deciding how your application will perform on a certain CPU and you should do some tests for yourself, but considering the huge difference in this synthetic benchmark, I'd say some people would be willing to pay difference.

<comment><USER5> Or you could just spend it on a second AMD machine. Intel certainly leads on raw power but that's certainly not the only consideration...is the Intel brand worth 3x the price after you normalize for performance? I think AMD will sell a ton of these.

<comment><USER6> The power consumption of two AMD machines over their lifespans, compared to that one Intel machine, might be an issue though I've not run any calculations.

<comment><USER5> For a server farm, that is definitely a big issue. for office computers (not maxed out most of the time), the difference is pretty marginal IMHO.

</comment></comment></comment></comment><comment><USER7> The article is missing the elephant in the room - the 6 core Phenoms are intended to compete against quad core i7s. Nehalem multithreading gives an incredible boost for multithreaded apps, usually 50%+ even for heavy tasks like rendering.

On top of that, Intel is way ahead in the IPC game. I don't know what the lay of the land is currently, but back when it was a choice between 45nm Phenom X4 and 45nm Core i7 9x0 chips, in some circumstances a Core i7 _thread_ performed the same as a Phenom _core_.

Relevent Anandtech article:

[http://www.anandtech.com/show/2978/amd-s-12-core-magny- cours...](http://www.anandtech.com/show/2978/amd-s-12-core-magny-cours- opteron-6174-vs-intel-s-6-core-xeon/6)

Which shows a _12_ core, 2.2ghz Magny Cours chip being beaten by a _6_ core 2.93ghz Xeon (the server equivilant of the 980X).

</comment><comment><USER8> If performance, compared to intel, is anything like magny-cours - it's nothing to write home about. [http://www.anandtech.com/show/2978/amd-s-12-core-magny- cours...](http://www.anandtech.com/show/2978/amd-s-12-core-magny-cours- opteron-6174-vs-intel-s-6-core-xeon) I would like to see some benchmarks though (especially rendering like cinebench).

<comment><USER2> True, but it's price/performance that I think most of us are concerned about: [http://www.anandtech.com/show/2978/amd-s-12-core-magny- cours...](http://www.anandtech.com/show/2978/amd-s-12-core-magny-cours- opteron-6174-vs-intel-s-6-core-xeon/15)

We're also now in a leapfrogging situation, where year by year this may change. AMD is one process node behind Intel; I'm not sure how to count microarchitectures, but ignoring processor interconnects (which Intel has only just started to address by copying the AMD approach) if you consider Core to be more advanced than K8 and Nehalem more than K10 then AMD is also one microarchitecture behind.

</comment></comment><comment><USER9> Does "5 times cheaper" equate to "1/5 the cost"?

</comment><comment><USER10> Price is just one factor. What about performance and power consumption?

</comment><comment><USER11> The difference in price between the two processors is basically equal to the rest of the components in a decent system. Intel is going to have to drastically cut their prices down soon. More and more, it's the GPU that bounds the system, CPUs have long ago surpassed the needs of most users...and I'm not just talking about people who only use office and email.

</comment><comment><USER12> Until they get to 32nm like Intel, it's going to make your power meter spin like you are running a hair dryer.

Wait a year for 32nm, then there will also be $100 4-core chips that unlock to 6!

</comment><comment><USER13> No hyperthreading though.

</comment><comment><USER14> On per-chip performance, if price is disregarded, Intel still wins, but AMD has since long given better performance per $, and is a far better choice for the average consumer not keeping their machine at a constant 100% cpu use, not requiring the best available performance for something akin to a single work- horse type machine.</comment>


Lessons from GitHub's First Year - <AUTHOR> http://tom.preston-werner.com/2011/03/29/ten-lessons-from-githubs-first-year.html <comment><USER2> This is a great article. I especially like this:

 _Here's a seemingly paradoxical piece of advice for you: Listen to your customers, but don't let them tell you what to do. Let me explain. Consider a feature request such as "GitHub should let me FTP up a documentation site for my project." What this customer is really trying to say is "I want a simple way to publish content related to my project," but they're used to what's already out there, and so they pose the request in terms that are familiar to them. We could have implemented some horrible FTP based solution as requested, but we looked deeper into the underlying question and now we allow you to publish content by simply pushing a Git repository to your account. This meets requirements of both functionality and elegance._

<comment><USER3> Customers want a solution to their problem. To save time they will formulate what they think is a solution and give it to you, in the hope that it will speed up proceedings.

Think like a doctor. When the patient turns up, he or she may have a diagnosis in mind. But it is up to you to study the symptoms and deduce the condition _independently_ of what the patient thinks.

Remember: a potted request from a client is a symptom of some deeper problem they wish to solve.

</comment></comment><comment><USER4> This is one of the best startup articles I have read in a while. Some real gems in there. The metaphor by Martin Fowler that the article mentions is particularly noteworthy.

 _Imagine you're tasked with building a computer controlled gun that can accurately hit a target about 50 meters distant. That is the only requirement. One way to do this is to build a complex machine that measures every possible variable (wind, elevation, temperature, etc.) before the shot and then takes aim and shoots. Another approach is to build a simple machine that fires rapidly and can detect where each shot hits. It then uses this information to adjust the aim of the next shot, quickly homing in on the target a little at a time.

The difference between these two approaches is to realize that bullets are cheap. By the time the former group has perfected their wind detection instrument, you'll have finished your simple weapon and already hit the target._

<comment><USER5> Sounds very similar to the section of The Pragmatic Programmer on "Tracer Bullets". There's an interview with the authors that has more discussion here -> <http://www.artima.com/intv/tracer.html>

</comment></comment><comment><USER6> Very interesting to hear that a bunch of git early adopters "couldn't have done it" without Campfire. I would have pegged them in the IRC demographic.

<comment><USER7> IRC, by its nature, is very distracting. (why bother be on a network if you're not in multiple channels?)

OT: I think convore will go the same way, unless the crew can seriously address the SvN problem.

<comment><USER6> Web-based chat, by its nature, is also very distracting. One click and you are reading HN instead of your internal chat room :)

Anyway, when I worked at an all-remote company, we just ran our own IRC server. Then all the channels were work-related. Of course, it was pretty easy to also join other networks, which we did (but would do anyway).

</comment></comment></comment><comment><USER8> Wow, that's a great article. Perhaps even more interesting because of Github's growth in the three years since it was written.

I wonder if he didn't publish it because he started with the idea of publishing _ten_ lessons. Might have been better to assign the number after the article was written.

</comment><comment><USER9> "Pay attention to Twitter". I was wondering if a service is doing exactly that? Watching twitter, "understanding" the post, and giving you a real-time update of your service/product? If not, that might be useful!

<comment><USER10> A lot. I work for one which has a similar product. Though we are much more than just twitter, a bit less real-time, more in-depth analysis though.

</comment></comment><comment><USER11> No, 9 1/2. That 1/2 a thing is killing. Great article! When DVCS's would be compared, GitHub would be a great plus in Git's favor.

</comment><comment><USER12> he brings up about givign people what they want and not what you ask for. that is so hard to do. how many times have you built what you envisioned and then went, "This is what i asked for, but it doesn't feel right." The key is conversation, the more back and forth you have with customers, the more you will get a feel for what they really want.

</comment><comment><USER13> How have the things in the article changed since then? Does GitHub still have no office and four employees?

<comment><USER14> From the 1st paragraph (it might be an updated section)

"In the time since I wrote this we've grown from four people to twenty-six, settled into an office, installed a kegerator, and still never taken outside funding"</comment></comment>


Reddit AMA: Jason A. Donenfeld, Creator of WireGuard etc. - <AUTHOR> https://www.reddit.com/r/linux/comments/hzyu8j/im_jason_a_donenfeld_security_researcher_kernel/ <comment><USER2> Is there any history of AMAs on HN, and would they be welcome?

<comment><USER3> [https://hn.algolia.com/?q=AMA](https://hn.algolia.com/?q=AMA)</comment></comment>


Canadian Music Group Proposes 'Copyright Tax' on Internet Use - <AUTHOR> https://torrentfreak.com/canadian-music-group-proposes-copyright-tax-on-internet-use-181006/ <comment><USER2> I wonder how people get so out of touch with reality. If you wanted to download a single game on steam that's been out for 2 or 3 years (GTAV) while staying under the 15GB limit in order to not be subject to the fee, you'd have to do it over the span of FIVE months without using your household's internet connection for anything else.

I'm pretty sure just cloning a random project and running `npm install` will get you over the limit.</comment>


Komponent: Organizing front-end code in Ruby on Rails, based on components - <AUTHOR> https://github.com/komposable/komponent <comment><USER2> This is fantastic! Can't wait to test it out.

<comment><AUTHOR> Thanks for your encouragement. Don't hesitate to give us feedbacks if you using it in your projects.</comment></comment>


Ask HN: Who Is Testing in Production? - <AUTHOR> I would love to understand your experiences. How do you detect issues? Are you using feature flags? Have you had any disasters? How do you deal with problems? What are the biggest pain points? Kubernetes? Etc? <comment><USER2> What's there to know? You divert some orthogonalizable flow (orders, accounts, widgets, etc.) to a parallel setup. The trick is orthogonalizable because if something in the main flow depends on something in the test flow, you're in for it.

<comment><AUTHOR> But how do you detect when something is broken or know when it is good enough to deploy everywhere?

<comment><USER2> How do you know something isn't broken in production?

</comment></comment></comment><comment><USER3> At first I interpreted this as a spin on "everyone has a test server; some of us are lucky enough for it not to also be prod."</comment>


YouTube is closing its private messages feature - pi-squared https://techcrunch.com/2019/08/21/youtube-is-closing-its-private-messages-feature-and-many-kids-are-outraged/ <comment><AUTHOR> As a web user, beyond vaguely hearing about something like this, I didn't know this existed or where to find the feature. Oh, apparently there was a button for it on the top right. Who knew?</comment>