Show HN: Would love some feedback on my weekend project (built in 3 days) - <AUTHOR> https://www.teamclerk.com?utm_source=hn <comment><USER2> What?? Three days of work and no meta description??? I feel betrayed.....;)

(just kidding)

I just signed up and am going to work through a few things. I'll keep notes as I go, so some of these may seem a little rough, but I hope that they help.

First, my environment:

\- Ubuntu 14.04 \- Chromium 47.0.2526.106 \- Resolution - 1366 x 768

and

\- iPhone 5c \- iOS 9.2 \- Safari

My thoughts:

1.) You sign your confirmation "Team Clerk Team". That isn't wrong per se, but it's kind of awkward.

2.) I know you have only put three days into this, so this is a really shitty thing to say, but when I first loaded this up in mobile, I had to really seriously zoom in.

3.) After I signed up (on desktop), I was presented with a tooltip that reads "Click here to create a project". In my environment, the 'c' in create is cut off.

4.) This may be a time zone problem, but when I created my first project and set it for being due today, it immediately showed up as being overdue.

5.) After I started up that project, I created a task and assigned it to myself. When I checked in mobile, I couldn't figure out how to view that task. In good news, your account settings page looks great in mobile. :)

6.) I wanted to test if I could log out of mobile and then assign a task to myself in desktop to see if the task would show up again when I logged into mobile. I couldn't figure out how to log out in the mobile view.

7.) I couldn't figure out how to show that a project was completed.

Overall impressions:

I like this a whole lot - it's one heck of a good application considering that it only has three days of dev behind it. With a few little tweaks to the experience, this is definitely something that I'd use. Great work! :)

<comment><AUTHOR> In short - you are awesome! Thanks so much for taking the time and putting thought into your feedback. Very much appreciated! I'll be working out these bugs for sure!

</comment></comment><comment><USER3> Project management SaaS is a suuper crowded space. You appear to be targeting businesses, educators, designers, organizers, writers, web developers, logistics planners, therapists, and probably more that didn't fit on the screen. If you're a one man band, you're better off picking a really targeted niche that the existing players in the project management space find too small to care about. Otherwise you'll end up competing with people who have more manpower, more experience and more money.

Apart from that, getting to this stage in three days is really impressive. Congrats on finishing & shipping, and doing it fast.

<comment><AUTHOR> Thanks. You make some good points. I built it more with the idea that I could use it personally and, talking with some friends, realized that other people would probably find it useful too. The industries on the homepage were more me fishing for use cases than anything else. My hobbies / jobs are kind of all over the map so I wanted a simple tool I could use to manage anything I was working on. Thanks for the feedback and taking the time to check it out!

</comment></comment><comment><USER4> Not really a feedback but... how did you do the landing page? It's so slick! Also you have one picture missing for Designers as your target audience: [http://imgur.com/Sq0cFNg](http://imgur.com/Sq0cFNg) (at least on Firefox 43 on Debian).

<comment><AUTHOR> Thanks! I actually started with a free bootstrap theme for the lander and then took out all the sections it came with and built my own in their place. Kinda silly, I know, but it saved me some time instead of building it from scratch and I didn't decide not to use the stock sections until the end... :)

<comment><USER5> I was trying to figure out which bootstrap theme you used, and discovered that the CSS embed for [https://www.teamclerk.com/home/css/owl.theme.css](https://www.teamclerk.com/home/css/owl.theme.css) is resulting in an error

I also see you use Laravel. No wonder it only took you three days :-) Laravel is awesome for fast development. I use it pretty much exclusively lately.

<comment><AUTHOR> It was this theme: [http://www.bootstrapzero.com/bootstrap-template/small- apps-t...](http://www.bootstrapzero.com/bootstrap-template/small-apps- themefisher)

</comment></comment></comment></comment><comment><USER6> I would appreciate if either a short video is provided or a demo without registration is available. The former is probably quite easy without any code changes if you don't want to keep refreshing the demo instance :-)

I think the pricing is pretty good, especially for people who don't have the expertise in running Atlassian Jira or managing process in Jira.

<comment><AUTHOR> Thanks for the feedback. And, yeah video is definitely in the works!

</comment></comment><comment><USER7> Looks like a simple version of Pivotal Tracker. Am I right?

As someone familiar with those kinds of tools, it's obvious to me. To someone who is has not used tools like Pivotal, it will not be as obvious.

Perhaps some examples of benefits from using teamclerk.com would be a good addition.

Nice work!

<comment><AUTHOR> Thanks! Yeah I'm a long time pivotal user, but I work on a lot of other types of projects than programming. I also do music, art, construction, etc and Pivotal doesn't really fit with those things. I've wanted to build a similar tool that could be used by any kind of business for a while - without all the crazy features that come with things like asana and without the specific tasks types/workflow of pivotal.

<comment><USER8> > Who is Team Clerk for?

It's missing construction (educators I've a doubt... do they try new things? Are they viral? Do they spend money? etc.). There is a lot of money in construction plus they still may have few good softwares. I don't know, just finger in the wind.

<comment><USER9> AP4 Project Managers focuses on the construction industry. I've used it for design projects though: [https://www.ap4projectmanagers.com](https://www.ap4projectmanagers.com)

AP4 does the job, but if Team Clerk will do file attachments, it's the better of the two.

<comment><AUTHOR> File attachments are on the way!

</comment></comment></comment></comment></comment><comment><USER9> Looks great. Your pricing is reasonable too. I don't see a way to attach files though. Is that functionality on your roadmap?

<comment><AUTHOR> Thanks! File attachments are on the roadmap, just haven't quite gotten there yet.

</comment></comment><comment><USER10> Don't make me create another account, just use Google/Facebook/Github and, if you really want to, give the option to create an account just for your site.

</comment><comment><USER11> It's minor, but in the 'Who is...'section, 'Team Clerk' should be title case since it's your brand name instead of 'Team clerk.'

Nice work!

<comment><AUTHOR> You're totally right! Thanks! Fixed!

</comment></comment><comment><USER12> I would replace the text with screenshots (or simply add more images) when you click on features. It hasn't convinced me to sign up yet.

Ask yourself, what do you love about what you built? and work on passing that message along, either through screenshots, short text, 'GIF' like video of you doing it, or an actual video (although it's tricker to do)

<comment><USER12> And better yet than asking yourself, is now, as apparently you have lots of feedback here and new users, ask your users! (what you love might be different from what your users love).

Cheers

</comment></comment><comment><USER13> A few issues I came across

1\. Sign up btn on main page didn't seem to work but the one at the bottom worked. I browsed aroudn a bit before I clicked on signup and not sure if that had a effect.

2\. Post sign up, I got a tool tip asking to create a task. But there were no other texts on screen. I can see a few button and even a arrow menu(top right corner) and none of these have a text in them.

I will check again later

<comment><USER14> I have the same issue as well when using Chromium (Version 47.0.2526.111 (64-bit)). Works fine in Firefox.

<comment><AUTHOR> thanks. I wonder if it has to do with Google Fonts....

</comment></comment></comment><comment><USER15> It's very impressive that you were able to make this in 3 days! I signed up for an account and it was painless enough. My biggest gripe would be on the overall design, I like the layout but it severely lacks polish.

In terms of product, it's definitely something I've looked for in the past (Pivotal Tracker for simpler/non-programming projects). Nice work!

<comment><AUTHOR> Thanks, yeah I'm not a designer, but I try. Hopefully I'll be able to polish it a little better over the next few iterations.

</comment></comment><comment><USER16> Found a typo if it hasn't already been pointed out - "Prioritze" is missing an "i" in "..tize". This is under the heading "Track Your Team's Performance. Get Results."

BTW - Excellent job. I've built something quite similar for the company I work for to keep track of tasks and work load internally.

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER17> Small typo of "monitor" under Businesses... "Team clerk can help manage your team and moitor their progress."

<comment><AUTHOR> thanks! fixed!

</comment></comment><comment><USER18> 3 days, I call bullshit on this marketing ploy.

<comment><AUTHOR> Call it what you will. I registered the domain on Jan 9. look it up. But thanks, that makes me feel pretty good :)

<comment><USER18> Well, you must have pulled all nighters or had some pre-made snap in parts to do that. Domain dates don't prove anything as you could have built it prior as well. I pulled off kitgui.com in a month and had a 3 day thing for a component I sold not including marketing. Maybe you kept it simple. Good job if so but it does reek of marketing.

</comment></comment></comment><comment><USER19> When I click a task to edit, I can't go back to the task list without refreshing the page or hitting delete? I think there might be an issue with scrolling, looks like I should be able to scroll as the description box is cut off a bit but alas I cannot.

Man this is seriously awesome. Really clean design too I like it!

Can I ask what you build this using?

<comment><AUTHOR> Thanks I'll check it out. There should be a save and cancel button underneath the description box. What device/browser are you using?

To answer your question, I just used Laravel (PHP), jQuery and Bootstrap. Pretty simple setup.

<comment><USER19> Chrome and mbp 2015 :).

</comment></comment></comment><comment><USER20> Having not spent much time on it is not a badge of honor! If you're not proud of what you're sharing, put in some more effort until you can submit it as "Proudly presenting, my project management prototype" :).

<comment><AUTHOR> Haha. Not trying to pass it off as the next google :) I have about 20 of these kinds of side projects. Don't worry, its not my day job. I'm proud of a lot of stuff I do. I posted this to get feedback from HN, not to present my life's work. Thanks for your input though.

</comment></comment><comment><USER21> Like the guts to ask for money. More people should.

<comment><AUTHOR> I agree. If you don't ask for it, no one will ever pay you.

</comment></comment><comment><USER22> I'm very impressed, I've often thought that Pivotal / Jira / Trello wasn't well suited for more generic tasks.

Have a few points which may or may not be of use to you.

\- I'm not a fan of the 'No risks. No credit card required.' subtext to the sign-up call to action. It may be just me, but when someone explicitly states there's no risks, it makes me consider that there might be risks. No need to put doubts into someones mind.

\- Love the interface, really intuitive (Just thought that needed its own point)

\- I think the permanent call to action to 'Upgrade Today' on the dashboard view is a little too in your face, and takes up a fair amount of real-estate which.

\- The 'Add a member' option could also do with having a 'Add a team member' option (it may have it on the paid tiers, but for the free tier it would be a good call to action to upgrade)

\- The difficulty field on a ticket doesn't seem like it intuitively will make sense for all tasks, perhaps as an optional field, or allow users to customise the names and values of the fields at the project level. I.e. if instead of high, medium and low priority, I wanted 'Later, Soon, Now and Yesterday' for my priorities.

\- I think the Project Tasks and My Tasks could be collapsed into one column, freeing more space to work with, or maybe even a dedicated create task column. Just a filter of 'show my tasks' or 'show all tasks' would work well. Especially on the free tier it's a lot of wasted space.

\- I'd shy away from using points and other metrics like that, as most of the time a 1-3 or even 1-8 scoring system becomes restrictive and not representative of the time taken to do a task, over time it just loses meaning to a user in my opinion.

And a minor issue or two:

\- If I have two tasks assigned to a project, one high priority and difficult, the other low priority and easy and I complete the high priority task the 'Tasks Completed' in the project overview jumps to 75%, which isn't what i'd expect.

\- The text on the 'Time Elapsed' and 'Tasks Completed' seems centred on the progress bar and not the container, and the small white font makes it hard to see.

\- You can't access any of the support / terms of use etc.. without first logging out of your account.

Aside from that all I'd do is iterate a little bit on the text of the website, as it just doesn't quite bite yet.

But all in all, very good work. I've bookmarked so I can come back later and see if I can get more use out of it. :)

<comment><AUTHOR> Thanks so much for the feedback and taking the time to write all this down. I really appreciate it! You've made some really good points and I'll be adding them as tasks :)

</comment></comment><comment><USER23> Impressive achievement in just three days!

<comment><AUTHOR> Thanks a lot!

</comment></comment><comment><USER24> What framework did you use to build? Is there a standard framework that you can use for sass product?

<comment><AUTHOR> I used Laravel for this one. I know Taylor (who built Laravel) is working on something for SaaS. Spark is what its called, I believe, but its not really ready for production yet last I heard.</comment></comment>


China bans Scratch, MIT's programming language for kids - <AUTHOR> https://techcrunch.com/2020/09/07/scratch-ban-in-china/ <comment><USER2> Banning a kids' programming language because it mentions Taiwan? The PRC are _truly_ pathetic.

</comment><comment><USER3> Not familiar with Scratch or this issue so paid a visit to their website and searched for 'hongkong'.

Just on the first results page there are several extremely political apps and comments.

I am not sure Scratch is an appropriate platform for this sort of content. But in any case it's pretty clear that a lot of it will be seen as unacceptable by Chinese authorities. The usual remedy for this sort of 'situation' is to block the whole site, as they have just done. I don't think this will be temporary.

</comment><comment><USER4> Censorship is ridiculous. Given the current political climate, the chinese government can't really do much to the U.S. (as it knows it's no match), small retorts like these are their way to signal discomfort. Plus they've had a long infamous history of doing exactly this with U.S. based software, so it comes as no surprise.

</comment><comment><USER5> Is there any news on how well China follows GPL licenses? There's a lot of patent issues in the physical world, but I'm curious how all of this open source code will fare.</comment>


Why We Chose K3s to Power Our Kubernetes Service - <AUTHOR> https://www.civo.com/blog/why-we-chose-k3s <comment><USER2> I often see the claim that K3S is much more "lightweight" than upstream K8S. Is this difference really that significant in practice?

I just bootstrapped K3S and kubeadm single node clusters to compare.

k3s-master Ready master 24m v1.17.3+k3s1 10.10.10.64 <none> Ubuntu 18.04.4 LTS 4.15.0-88-generic containerd://1.3.3-k3s1

kubeadm-master Ready master 17m v1.17.4 10.10.10.21 <none> Ubuntu 18.04.4 LTS 4.15.0-88-generic containerd://1.2.13

root@k3s-master:~# k top nodes

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%

k3s-master 43m 2% 643Mi 16%

root@kubeadm-master:~# k top nodes

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%

kubeadm-master 65m 3% 769Mi 20%</comment>


CoffeeScript's Scoping is Madness - <AUTHOR> http://donatstudios.com/CoffeeScript-Madness

<comment><USER2> I don't miss shadowing in CoffeeScript at all. I agree with the idea that the larger the scope of a variable the more descriptive its name should be and the small its scope the shorter its name can be.

I also don't think it's good to get carried away with closure depth, stacking them n levels deep.

</comment><comment><USER3> I guess in theory you could do something like this:

      y = 0
      test = (x) ->
        `var y = 10`
        x + y

The language is open source... we could fix it!

</comment><comment><USER4> I do tend to agree with the blog author that shadowing is far preferable to what CS does. I believe the fork that led to Livescript grew partly out of this concern.</comment>


Npm Raises $2.6M Seed Round - <AUTHOR> http://blog.npmjs.org/post/76320673650/funding <comment><USER2> Per his blog, Fast.ly is now hosting the npm registry, so the money is not going for hosting. It's to build some kind of sellout business.

Back in July he must've seen this coming because he switched the npm license from MIT to the more restrictive Artistic 2.0: [https://github.com/npm/npm/commit/c32391b1efd70a861cebc77e0c...](https://github.com/npm/npm/commit/c32391b1efd70a861cebc77e0cc784a46af5de21)

He's already taken away the download numbers on npmjs.org, so maybe he intends to sell the "analytics" back to the community.

The guy calls himself a Supreme Emporer on his LinkedIn.

<comment><USER3> It's not accurate to say that Fastly is hosting the registry; Fastly are providing CDN services to our registry -- a globally distributed cache -- for which we're very grateful.

As of five days ago ( [http://blog.npmjs.org/post/75707294465/new-npm- registry-arch...](http://blog.npmjs.org/post/75707294465/new-npm-registry- architecture) ) we are hosting the registry ourselves; it was previously hosted by Nodejitsu (who still operate a downstream mirror).

As for the download counts, per Twitter ( [https://twitter.com/npmjs/status/422823647619710976](https://twitter.com/npmjs/status/422823647619710976) ), we removed the download counts because our original solution for those counts (keeping them in CouchDB) wasn't scaling. I am literally, as we speak, working on the replacement system to restore download counts.

And Isaac's LinkedIn title is a joke. I hope that's obvious.

<comment><USER4> thanks for answering the questions. i depend on node at my day job, so i am particularly interested in npm's future.

i understand someone has to pay for the servers and development time, but would it be possible to give a hint for the types of things you plan to charge for? Even just a rough sketch of "we will offer private repositories" or "we will offer support." I appreciate the "reassurances" that nothing will change today for me, but the ambiguity prevents my latent paranoia from going away.

<comment><USER3> I appreciate your paranoia :-) We are wary of announcing all the stuff we're planning given that we don't know how long it will take to build yet and don't want to be accused of vaporware. However, we are planning to announce at least our initial product plans pretty soon. (Probably not in a comment on a HN thread though ;-))

<comment><USER5> I just want to say that I would gladly pay for private npm hosting. Something along the lines of github's private vs public repos would be extremely valuable. Yes, we could set up our own private npm server, but this seems like an obvious thing to outsource to a service as long as the pricing is not crazy. Best of luck!

<comment><USER6> We've been using Gemfury[1] for our private modules which has worked out well, no problems in over a year of use.. though I'd probably switch over to npm if they offered private hosting.

[1] [http://www.gemfury.com/](http://www.gemfury.com/)

</comment></comment></comment></comment></comment></comment><comment><USER7> One thing I'm a tad annoyed by - this deal was being put together simultaneously with the "scalenpm" crowdfunding drive. A shoutout to the supporters of that drive would have been nice...

<comment><USER8> Quite true. Even though I didn't donate, I wonder why they went for crowdfunding while they were going raising VC funding. I would expect (partial) refunds.

<comment><USER9> This is a common confusion. The scalenpm crowdfunding was done by the good folks who ran the npm servers for free (mostly nodejitsu) up until the recent switchover to the new infrastructure with Npm, Inc.

You can still use the nodejitsu registry for free if you'd like[1]. They arent likely to need as much scaling anymore, but there's still a big cost to running those servers. I don't think there was any foul play when it comes to the scalenpm money as I'm fairly sure they were not aware of the intent for Npm, Inc to take over default hosting.

tl;dr the money did not go to the same people, and the people who crowd funded thought they'd still be hosting npm going forward at the time.

[1] [http://blog.nodejitsu.com/simple-hosted-private-npm-and- regi...](http://blog.nodejitsu.com/simple-hosted-private-npm-and-registry- nodejitsu-com/)

<comment><USER10> Does this actually make it any better, though? I mean presumably the people who took part in the crowdfunding _also_ assumed they were contributing to the long term hosting costs of npm and the success of the platform itself.

<comment><USER9> I don't believe they had much say in the change. They are still using the money to do what they said they'd do in their campaign, and many people are setting up their registry as their default. As far as I know they just got caught in a situation that was less than ideal (while also getting rid of some financial burden). I think they deserve an applause for running it at high cost to their business for free for years rather than be villainized because they got caught in a situation that they weren't in control of. If you donated, or are worried about what Npm, Inc. is doing (hint: so silly to feel this way) you should set your default registry to theirs (it's already set as your failover, btw).

The cynicism in this thread is so bizarre to me. No one is being evil. There's no secret foul play. Everyone go write modules and share them and be happy.

<comment><USER11> > (it's already set as your failover, btw)

Say what?

The Nodejitsu replica is a downstream replica, not a failover. Very different. 100% of `registry.npmjs.org` traffic goes to npm, Inc infrastructure.

> The cynicism in this thread is so bizarre to me.

Welcome to Hacker News. I see it's your first time here. :)

> Everyone go write modules and share them and be happy

Couldn't agree more.

</comment></comment></comment></comment></comment></comment><comment><USER12> I understand the fact that it can be fairly expensive to run a large, popular module site such as npm and rubygems. What I'm curious about is how they intend to monetize npm, and how it affect users, if it does. Typically, VCs hope to get a return on their investment.

<comment><USER13> There are 3 obvious areas of monetization:

\- paid private repositories on npm or a parallel system (think github)

\- paid internal npm servers with support (think github enterprise)

\- statistics that used to be available, like download counts (think imgur pro)

<comment><USER11> Download counts are coming back. This is literally in progress right now, and was only removed due to technical difficulties.

<comment><USER14> Thanks Isaac. Are there any additional metrics being made public as well?

</comment></comment></comment></comment><comment><USER15> Privately run 'open source' code repositories are not what the open web should run on.

I would say that this marks the beginning of the end for npm as anything viable for front-end code repositories and probably for anything related to node.

I propose an open-source alternative for front-end JavaScript libraries and dependency management.

Anyone calling for npm modules and browserify to rule the day for front-end JS should question their opinions on the matter.

<comment><USER16> The infrastructure of npm is open-source: [https://github.com/npm](https://github.com/npm)

</comment></comment><comment><USER17> I'm kept wondering how the whole npm structure will look like. At the bottom of npmjs.org it states: 'Powered by Joyent', but Nodejitsu ran the 'Scale npm' donation campaign to get funds to scale the public npm registry. But Nodejitsu acquired IrisCouch and now offers private npm services.

And now izs starts a new company npm inc. that will, well, who knows. But he's former Joyent who power npm, so will running npm transfer to npm inc.? But how does Nodejitsu or the 300K that they raised with their campaign fit into this picture?

<comment><USER18> Here's the history, hope it helps.

I wrote the original version of the npm registry in a day or two on top of CouchDB. I built it quickly and didn't think much about scale.

Isaacs continued to improve and maintain that code. At one point he even wrote up an open standard for generic js package registries for CommonJS but they didn't seem to care (they were too busy arguing about promises).

At the time I wrote the initial code I was employed at CouchOne and we had a small CouchDB hosting platform operated by Jason Smith which is where we ran the registry free of charge. Later on, after CouchOne was aquired by Membase and became Couchbase, it decided to break off the hosting company and give/sell it to Jason Smith, which became IrisCouch.

IrisCouch continued to run the registry for free for several years. They had no venture funding and limited resources but they provided this service for our community anyway. They announced a product for enterprise (hosted) NPM but as far as I know it wasn't really marketed or sold. Last year IrisCouch was acquired by Nodejitsu.

Nodejitsu continued to host the registry for free. Some time last year the infrastructure hit a breaking point, mostly around CouchDB. Remember, I wrote this in a weekend when less than a hundred node packages existed. Many of the semantics from me and Isaacs' initial "prototype" persisted until just a few weeks ago. For instance, this single database held all the package binaries, for every version of a package, attached to the document for that package.

Once the registry started to have serious stability issues a few things happened. Isaacs started to work on ways to improve the reliability by changing how the registry worked and Nodejitsu sought community support for keeping the current registry up. At some point Isaacs also decided it would be best if he worked on NPM full time and built NPM Inc.

In the early days we weren't thinking about 58K modules, that was just crazy, we were just figuring out the simplest way to store a couple packages the node community was writing. Since founding this company Isaacs has already managed to re-write the way the registry works to fit the kind of load we have now.

Nodejitsu is now free of the financial burden that was dragging them down as well and Isaacs' new infrastructure can keep the registry up more cheaply than the previous system and more reliably.

<comment><USER19> Thanks for sharing this.

</comment></comment></comment><comment><USER20> Multiple points:

1\. Why are people happy about this? They did a crowd funding round taking common people's money, gave them squat, then took Investor money and gave them a share. (Would make me mad if I was part of the crowd)

2\. What is the business model? In what world does PIP or any other package manager have a revenue stream? Ads? Spyware? There are no good models for this.

3\. Does anyone else think that having a company title of Supreme Emporer is a sign that this is not a founder focused on community?

I'd say we bounce and use something else, but I did that a long time ago, so I can only suggest everybody else make like an external node. (a leaf ;-) )

<comment><USER21> Exactly. Which is why I am actively gearing up to switch to Dart and (back to) Python as soon as is even painfully feasible. I am also sick to death of all the socio-political posturing and other narcisspewage surrounding the so- called node/ _npm_ "culture".

</comment></comment><comment><USER22> Why npm needs funding? ($2.6M) They want to hire team or it's for...?

<comment><USER23> What's the exit going to be? Who are they going to sell to? What revenues are they going to bring in? We're talking VC money, not a grant.

Did they just hand over the keys to the node community to someone else?

<comment><USER24> Money corrupts.

It's amazing how things have changed in 10 years.

CPAN.

Perl.

A real community of programmers, system admins, enthusiasts.

<comment><USER25> Is funding better or worse than corporate sponsorship? The most successful (depending on your metric of course) projects have been backed by corporate dollars. Also, not every project can be a Go or Angular with a multi-billion dollar company behind it.

All of the CPAN mirrors are paid for by somebody. Nothing's free; money is in the equation at some point.

Of course, that's a different model than VC funding. However, you're intimating that NPM isn't "real" with your last statement. The project has run for several years now. This isn't some project that came out of the chute with funding (such as Meteor).

Similar model is GitHub: long-running project/organization, took VC after a few years. In the time since they took the VC, have they become corrupted? Are they not a real community?

<comment><USER26> The difference is in the goal. Donated/sponsored dollars don't expect to get dollars back. VC invested dollars expects invested_dollars * multiple in return.

</comment></comment></comment></comment></comment><comment><USER27> Going to be watching Nginx and other deals very closely as far as their long- term health.

I could take a giggly pot-shot at web development in general by proposing that they want to monetize node.js via a browser-base service to live one's entire developer life, but I'm in serious agreement with others' concerns that there's something ultimately harmful in VC money getting confused, panicky, and deciding to GSM (Google Mobile Services) the licensing of new code or come up with some ridiculous contributor licensing agreement like what I'm hearing about Ubuntu.

Take heed, FOSS communities don't negotiate except on an endless table that runs from one side of the universe to the other.

</comment><comment><USER28> Soon there will be a new node.js package manager to compete with npm but it will be supported by a non-profit foundation rather than a private profit- driven company.

This npm inc. is one of the dumbest startup ideas that I have ever come across. Kudos to the founders for managing to hack the VCs, but VCs that dumb ain't gonna be around for long.

</comment><comment><USER29> I want my donated money back.

</comment><comment><USER30> I'm a huge fan of Node.js, but I'm getting an uneasy feeling about all the different changes and things happening. I still haven't made up my mind if it's a justified feeling or not.

</comment><comment><USER31> I don't get it. The community was thriving even without investment. What do the investors get from this?

</comment><comment><USER32> Well, this is a bit concerning. How are the investors plan to get that money back? Something tells me we will not like the solution.

</comment><comment><USER33> npm install funding

</comment><comment><USER34> NPM is one of the more interesting opportunities out there right now... And plenty of competition. Watch the throne.

</comment><comment><USER35> So... someone enlighten me here; why does a project like npm need funding at all? If projects like GCC, which are far more complex, can subsist via contributions and donations alone, so what makes npm, a package manager, different?

<comment><USER36> gcc isnt a service?

<comment><USER35> I suppose... though other package managers exist without funding... but hey, I wouldn't turn down 2.6 mil to make my project better either.

I don't understand how they intend to monetize this, but whatever.

<comment><USER37> Canonical hosts packages for Ubuntu, and they pay for that by charging for other services. Free packages means more people using Ubuntu means more people seeking enterprise support.

There is always funding for everything that lives. Even if you're hosting something for "free" yourself, your job is the funding.

<comment><USER35> Well, sure, but $2.8m? Seems like a bit much for this sort of thing.

</comment></comment></comment></comment></comment><comment><USER38> Big money for a simple (lucky) project. I think it is time to move to another JS package registry.

</comment><comment><USER39> I would like to see npm become a more generic solution for package management in all languages.

<comment><USER40> I wouldn't. Most of the languages I use already have far superior solutions for package management.

<comment><USER5> Examples (genuinely curious)? In my casual experience, it seems to be easier to use than gems or pip and has much larger ecosystem than anything else I have tried, which is the #1 selling point of a package manager IMHO. A good package manager (by my standards) should have:

1\. super easy publishing 2\. A package for practically everything you can think of and if not, see #1 3\. Most of the market share for its particular language so that you can be reasonably sure a particular module maintainer has an up to date package

</comment></comment></comment><comment><USER41> I don't see the issue here. Node has Joyent as a backing and it's doing fine.</comment>


PHP 5.3.0/Lighttpd On Debian (Lenny) (+Imap, MySQL, Sqlite3 And ImageMagick) - <AUTHOR> http://www.howtoforge.com/install-php-5.3.0-lighttpd-on-debian-lenny-with-imap-mysql-sqlite3-and-imagemagick-support <comment><USER2> I'm a rather low-tech guy, but does anyone have any experience installing such a Linux setup on a external HD.

I've got no PC (or Intel-based) machine around, but I'd like to be able to set up a local serve for my beginner development projects - using a long-in-tooth (667MHz) PPC Powerbook. And I've got an external (firewire) HD (250GB).

This seem workable to anybody? (I'm between jobs and trying to ramp-up my trial projects.)

</comment><comment><USER3> This takes you through just about everything you need, all packages, etc. (but assumes you already have Debian set up)

For folks on Mac, etc., you may want to just Google about pre-packaged MAMP - Mac/Apache/Mysql/PHP. (I'm not sure whether there is anything set up for PHP 5.3 and latest MySQL yet.)

For a local testing server you shouldn't need to worry about performance.</comment>


How to do remote-pair-programming? - <AUTHOR> Please share your experience ! <comment><USER2> Use Visual Studio Code and Live Share: [https://code.visualstudio.com/blogs/2017/11/15/live- share](https://code.visualstudio.com/blogs/2017/11/15/live-share)

<comment><AUTHOR> did you tried it ?

<comment><USER2> yes, but not on a regular basis

</comment></comment></comment><comment><USER3> Use-Together.com : [https://news.ycombinator.com/item?id=17507864](https://news.ycombinator.com/item?id=17507864)

Screen.so : [https://news.ycombinator.com/item?id=22676040](https://news.ycombinator.com/item?id=22676040)

</comment><comment><USER4> Slack has a screen share option. We were customers of the company they bought to get the functionality, and it worked great back then. I assume it works similarly in slack

</comment><comment><USER5> Screen share and go.

<comment><USER6> Or if you're feeling risque, two connections to the same tmux session.

</comment></comment><comment><USER7> tmux is the most direct option</comment>


Never Use toString() for Behaviour - <AUTHOR> https://java.christmas/2019/4 <comment><USER2> >If left unoverridden, it only yields a description of it's class and location in memory

It contains the hashCode(), not the memory location. The default implementation of hashCode could use a memory location to generate the hash, however that isn't the case in all implementations. OpenJDK seems to have used an RNG by default in the past and currently derives a value from the thread state[1]

[1][https://srvaroa.github.io/jvm/java/openjdk/biased- locking/20...](https://srvaroa.github.io/jvm/java/openjdk/biased- locking/2017/01/30/hashCode.html)

<comment><USER3> for most implementations it would not be possible to use the location in memory because most java garbage collectors will move stuff around in memory. they could use the location initially and cache it afterwards but this would seem tricky to do without breaking the hash code contract.

<comment><USER2> I think the code also has the option to read and store the address. However I also think it would have other problems. Heaps with less than 4GB size would put a limit on possible hash code values and object alignment requirements would make it even worse, so you never get use out of the full 32 bit hashCode. Then you have generational GCs and if I understand those correctly you could end up with a lot of objects that started out at the same address and if you call hashCode on them before they are moved to a long lived generation you almost guarantee a large amount of hash collisions down the line.

</comment></comment></comment><comment><USER4> Agree in general, but note that Java itself does not follow this rule: StringBuilder's and StringWriter's toString methods use toString for behavior — creating a string from accumulated chars, and I'm fine with that.

<comment><USER5> This also definitely does not apply to .NET where there are many classes that override ToString for meaningful, well-documented behavior (StringBuilder is one, funnily enough). It's best to check the docs or look at IntelliSense before applying this rule in a blanket fashion.

That said, it does seem like Microsoft has since moved away from overriding ToString for such things. In all honesty, Object.ToString was probably a mistake to begin with.

<comment><USER6> There's nothing wrong with returning something well-specified from toString, but I agree this should never be relied upon. And even if toString actually return something well-specified, the same functionality should be available as a distinct method.

Any form of (semi-)automatic SomeObject -> String should be treated as a convenience for the developer to avoid getting a non-descriptive memory location reported.

Having the automatic toString isn't the problem, but maybe the name of the method is. It could be called "asDebugHelpRepresentation" or something more descriptive.

</comment></comment></comment><comment><USER7> Java's eccentric uncle Objective-C called this method "description" instead of "toString". That was a better name IMO because it avoids the suggestion that it's some kind of canonical string representation.

<comment><USER8> Yeah, it really would be helpful if the method name made that clear.

The language documentation does make it clear what toString() is for. And it's convenient to be able to (for example) stick objects and strings together with the "+" operator and have conversions automatically happen.

But (understandably) not everyone reads the language documentation cover to cover before they start writing Java code, so you can't count on that making it obvious.

<comment><USER9> java.lang.Object has a few methods though. At least those should be known when one starts writing productive code. Otherwise one produces even worse bugs than relying on toString behavior (equals and hashCode, god forbid).

Cover to cover would mean understanding the memory model and maybe garbage collection. That's too far certainly but a few basics would do no harm. toString is surely one of them.

<comment><USER10> I'd hazard a guess that 0.1% of Java developers are aware that on some operating systems Object.wait() can awaken spuriously. Heck, it wasn't even in the Javadoc until 1.5. And don't even get me started on how you should handle an InterruptedException.

Most Java developers I know consider rolling your own multi-threading scheme about as wise as rolling your own cryptography, and just pretend notify/notifyAll/wait don't even exist.

<comment><USER11> Ironically, that's one of the few things I _do_ know off the top of my head about Object.wait(). I'm far from an expert on Object's threading methods, but "this will burn you, don't try it" is becoming more pervasive than "here's how to do this". Which is almost certainly the right order to learn those things in.

</comment></comment></comment></comment></comment><comment><USER12> We use lombok, and the toString annotation is immensely helpful for logging and avoiding this type of thing.

<comment><USER13> How does Lombok help to avoid this?

<comment><USER14> Lomboks annotation @ToString will automatically generate the typical overridden toString() method based on the fields.

<comment><USER9> I just tried this in Java and I ran quickly into circularity issues (one of the fields has an indirect reference to the same object, say a list which the current instance is part of). How does Lombok cope with that?

It's not that easy as I thought (see my sibling comment).

</comment></comment></comment></comment><comment><USER15> > If you used the returned Country to construct an API request including the > name of the country, this will now produce strange countries named as > "Optional["Norway"]"

I am not too familiar with java, but should't you call get() from optional to get Country from Optional<Country> and toString of Country will behave as expected.

<comment><USER16> As the sibling comment says, the post's advice is really about making your code refactoring-friendly with regard to type checking.

You generally would not want to call '.get()' without an 'isPresent()' check because it will throw a NoSuchElementException if the Optional is empty. This is a foreseeable case, so most would like to handle it somewhat explicitly.

Today, it is idiomatic to use '.map' to transform it:

        Optional<String> foo = optionalCountry.map(Country::getName);

You can also throw a domain-specific exception from that point:

        Optional<String> foo = optionalCountry
            .map(Country::getName)
            .orElseThrow(...);

<comment><USER9> orElseThrow does return a String, not an Optional. You also could use orElse(null) or orElse("null") depending on the use case (eg. using as a part of toString).

<comment><USER16> I'm useless without a compiler to check my types!

</comment></comment></comment></comment><comment><USER17> Cool article! It's a simple mistake to make when starting out - good to get a nice explanation of why it's a bad practice

</comment><comment><USER18> Additionally, relying on `toString()` could cause problems when multiple different representations are desired.

</comment><comment><USER19> Never use a language that puts a toString() implementation on every object regardless of whether or not that object implements toString()

<comment><USER20> The ability to convert any object to a string is very useful for debugging and most languages support this. Even in C it's frequently useful to print %p to identify objects.

Serialization should require involve separate APIs.

<comment><USER21> It should be opt-in though. A compiler-flag for debug builds or similar.

<comment><USER22> Why so, what are the downsides? It's not like it introduces any meaningful overhead at all, and there are plenty of situations where it is useful even in production (eg for logging in catchall "can't happen" top level exception handlers). Adding yet another compiler flag seems like a worse solution to me.

<comment><USER19> What you lose is the ability to model objects based on the behaviours that they can perform.

I want to be able to design objects that have toString() and I want to be able to design objects that don't have toString().

The same goes for clone(), hash(), getPtr(), getEndian(), equals(), toBytes(), toJson(), encrypt(), delete(), isNumeric(), toXml(), serializationVersion() or compare().

<comment><USER11> I suppose you could define toString() to throw an error, but obviously that's a messy hack in place of having that control. I can definitely appreciate the logic for making nothing intrinsic, and I can also see an argument for making equals() the only method of Object. (i.e. everything should have an identity function, but nothing more.)

Now I'm wondering... are there languages which formalize "implement with a throw" into some kind of explicit refusal to implement a method? Obviously there are method-sharing approaches other than inheritance, but I've never heard of "you must implement this, or explicitly choose not to".

<comment><USER23> I'm not quite sure what you mean, but it's standard in python if you have a method in a class that must be subclassed and overridden you can have the default raise a NotImplementedError

<comment><USER11> I was thinking about a condition that's specifically for "inherited but not supported", but that's pretty close to what I had in mind, yes.

Java doesn't have a language-level exception that's specifically for unusable methods, which can be a bit awkward. UnsupportedOperationException is the recommended answer, but it's relatively nonspecific as to _why_ your operation wasn't supported. Apache's Commons extends that with NotImplementedException for cases where the call isn't definitionally impossible (e.g. adding to an unmodifiable map), but no implementation exists.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> That was a complete waste of time.

To sum it up: don't rely on the format of a generic toString() method. Prefer country.getName() over country.toString(), even if toString() returns getName().

<comment><USER25> It's cool to read, but yeah, it's like reading Beginner's Java, lesson 3.

<comment><USER6> More like "beginning software architecture". While this is "common knowledge" after coding for years, it's actually hard-earned, battle-scarred knowledge. Sharing experience on how to design software is very useful for all the people just starting out.</comment></comment></comment>


I Tried to Trip Using Only My Breath - <AUTHOR> https://www.vice.com/read/i-tried-to-trip-using-only-my-breath <comment><USER2> This does not sound healthy.</comment>


Judicial combat between a man and a dog in 1361 - <AUTHOR> http://www.thebookofdays.com/months/oct/8.htm#JUDICIAL%20COMBAT%20BETWEEN%20A%20MAN%20AND%20A%20DOG <comment><USER2> That never actually happened; it's a legend that was already found in songs from the 1100s. The 1361 or 71 date is from an invented marginal comment in an edition of Montaigne's works: [http://gatinais.histoire.pagesperso- orange.fr/Chien_de_Monta...](http://gatinais.histoire.pagesperso- orange.fr/Chien_de_Montargis.htm)

Judiciary combat probably wasn't that common in the late 1300s, although it still existed.

</comment><comment><USER3> I would buy a printed book of all these stories. I am also compelled to redesign their website for free.

<comment><USER4> > I am also compelled to redesign their website for free.

I think it's fine the way it is: clean, light and straightforward

<comment><USER5> Charming, even.

</comment></comment></comment><comment><USER6> Trial by combat was only abolished in England in 1819, after the much- publicized case of Ashford v Thornton in which the defendant successfully called for it. (No combat took place - the plaintiff withdrew rather than fight the much larger defendant.)

</comment><comment><USER7> [https://www.pinterest.com/pin/343469909058478785/](https://www.pinterest.com/pin/343469909058478785/)

</comment><comment><USER8> This is fantastic. We need to do things this way more often.

</comment><comment><USER9> Oh, I'm reminded of this (the 1st article I've read about this curious oddity that used to be the norm in the past) - [http://www.slate.com/articles/life/history/2013/02/medieval_...](http://www.slate.com/articles/life/history/2013/02/medieval_animal_trials_why_they_re_not_quite_as_crazy_as_they_sound.html)

</comment><comment><USER10> How apropos of my username here.

This famous duel subverted the will of the King of France, helping to bring about the end of judicial combat:

[http://www.thearma.org/essays/DOTC.htm#.VrZbiHNMHqA](http://www.thearma.org/essays/DOTC.htm#.VrZbiHNMHqA)

</comment><comment><USER11> Could not a man with a familiar dog, perhaps a hunting animal, the property of a rival, cause it to rise against a particular person at a signal? I suspect the 'friend' of manufacturing the entire event, being the murderer himself. We have only his word on the history of the dog. He may have assumed its ownership upon the killing of the real owner; he was aware of the curious tradition of combat; he contrived a cute storey of animal loyalty to cover his vile act and misdirect attention onto another for the crime.

</comment><comment><USER12> Does anyone know: If there are any pictures of "the chimney in the great hall of the chateau of Montargis"?

The the name of the name of the "popular melodrama" that was based on this story?

</comment><comment><USER13> Making a murderer season 2?

Shouldn't a man with a cudgel be able to beat a dog in a duel?

<comment><USER14> Depends on the dog. And the man. And the cudgel. Kidding aside, dogs weren't bred to be gentle house pets back then. Think something closer to a domesticated wolf.

<comment><USER15> > _dogs weren 't bred to be gentle house pets back then_

dogs have been bred for all sorts of purposes since the beginning of dogs.

<comment><USER14> Bred certainly, but not... teacup poodles, you know? This was probably some "working breed" and it sounds like it was on the large side.

<comment><USER16> The Pinterest link to the statue submitted earlier ([https://news.ycombinator.com/item?id=11049681](https://news.ycombinator.com/item?id=11049681)), if it's supposed to be a depiction, makes the dog look pretty _damn_ big by today's standards. I would not fancy my chances against it with just a cudgel... :)

</comment></comment></comment></comment></comment><comment><USER17> Air Bud 1361

<comment><USER18> Vainqueur Bud 1361

* I had to read the French wikipedia Judicial Combat section on the Dueling page in order to find that word.</comment></comment>


IBM Bet Billions That Watson Could Improve Cancer Treatment. It Hasn't Worked - <AUTHOR> https://www.wsj.com/articles/ibm-bet-billions-that-watson-could-improve-cancer-treatment-it-hasnt-worked-1533961147 <comment><USER2> Let's simplify things: AI is nothing more than feeding a decision model a lot of data so that AI can 'intelligently' copy decisions. Doctors only have unproven theories about the causes of cancer and the traditional therapies do not cure but merely kill. When the best AI system of the far future is fed with the data of today, it will fail also because the data does not contain a solution.

</comment><comment><USER3> Totally agree. AI is decision tree models and correlation analysis. But the massive computing power can crunch huge amounts of data looking for relationships that may hold a clue to causality and possibly even a cure. But raw power alone is not enough. And decision tree models cannot evolve on its own without creative human insight.

</comment><comment><USER3> And one of the great limitations of AI is it doesn't work well with non numerical data. Health sciences data are more qualitative in nature so doesn't lend itself to AI like other engineering sciences.</comment>


TSA Needs a Risk-Based Approach to Airport Security - <AUTHOR> http://reason.com/blog/2010/11/17/tsa-needs-a-risk-based-approac

<comment><USER2> Strange days indeed: Reason Magazine advocating a federally-issued biometric ID card.

I suspect that the body-scans and frisky-frisks are just door #1 and door #1 in a grand plan to get people to enthusiastically adopt (as yet unannounced but coming soon) door #3, national biometric ID cards and/or an official federal 'risk rank' per person, that would be based on background checks or even 'Total Information Awareness'-style data mining.</comment>


Almost human: Xerox brings higher level of AI to its virtual support agents - <AUTHOR> http://venturebeat.com/2014/10/27/almost-human-xerox-brings-higher-level-of-ai-to-its-virtual-customer-support-agents/

<comment><AUTHOR> Disclaimer: I've been working on this ;) We hope to open a public beta soon.

<comment><USER2> The article seemed really weak on details. I have done some work on text analysis from a couple of different major camps so I can read between the lines a bit, but for the HN audience it would be nice to point to a more technical write-up, including links to academic papers and patent filings that this is built on. Is that kind of write-up available?

A comparison with the approach IBM is taking with Watson might also be informative. Thanks</comment></comment>


Ask HN:  Rate my start-up.  (Multiple Instant Search) - <AUTHOR>

I'm not sure what to write here.  I busted my ass for almost 3 weeks to get this out.  I'd really appreciate any feedback you can offer.  Even if it's "this is stupid" or "cool".  Anything at all helps me rationalize the fact that I did essentially nothing except work on this for a substantial amount of time.
Lay it on me, HN. <comment><USER2> Very cool. My first thought upon just looking at the site was, "I don't know why I would use it rather than the search engine bar in Firefox." I then did a search and I found that I enjoyed how it retained/ran the search against the various engines/sites.

</comment><comment><AUTHOR> Link: <http://www.dashler.com/>

</comment><comment><USER3> i think it's pretty cool... how did you do the auto suggest? is it through an api? i don't really like the results in the section (frame? div?) where you might have to scroll. seem like layout could be more integrated.

<comment><AUTHOR> Auto suggest is via a Google API, and a bit of JS hacking to make a reduced number of calls and to make the menu "feel" nearly browser native.

You can disable the results in the iframe by unchecking "Live Preview"

</comment></comment><comment><USER4> I like it. Any way to show multiple searches at one time?

<comment><AUTHOR> Not as of yet. I cannot think of a sensible way to show many different sets of results at the same time. Unless you have a huge monitor, it would likely be too cluttered.

You can search multiple sites easily by typing in your search, then clicking on whatever providers (or typing into "filter"), and it will update the results. Or, you can hit [up] and [down] keys to toggle between search providers.

<comment><USER4> Yeah, I think the functionality of toggling between search providers is really well done. It just came to mind.

You know what be pretty amazing, IMO, is listing top 10 or so URL's of Bing, Yahoo, Google right next to each other for comparison sake (removing the display window).

<comment><AUTHOR> You could enter your search, the middle click on the "Go" links for Bing, Yahoo, Google, and whatever else. This will open new tabs in your browser, containing the results for those search engines.

I really can't say I see much value in comparing 3 different search engine results _at the same time_. I'd rather just look at Google, then Bing, then Yahoo.</comment></comment></comment></comment>


Invisibility Cloak Made From Silk - <AUTHOR> http://news.discovery.com/tech/silk-invisibility-cloak.html

<comment><USER2> Excerpt from the article:

 _For the first time ever, scientists have created an invisibility cloak made from silk, and coated in gold.

The new metamaterial, as invisibility cloaks and their kin are technically called, only works on relatively long terahertz waves (a region of the electromagnetic spectrum between radio and infrared light)_[...]

In other words, they haven't "created an invisibility cloak". They have discovered some interesting properties of a new material based on silk.</comment>


How we hacked Google's production server and received a $10K reward - <AUTHOR> http://www.freshtechapps.com/security-researchers-hack-google-using-xxe-vulnerability-2/

<comment><USER2> Discussion of the original Detectify post, with more information: [https://news.ycombinator.com/item?id=7571942](https://news.ycombinator.com/item?id=7571942) (1092 points, 3 days ago, 193 comments)</comment>


The Joy of Typing - <AUTHOR> https://medium.com/message/the-joy-of-typing-fd8d091ab8ef <comment><USER2> "because you're no longer struggling with the tool at hand."

I saw this coming somewhere around the first paragraph. Those students who are trying to transcribe lectures and not actually learning anything? My guess is it's because they're burning cycles mentally saying "'the', I need to find 't' and an 'h', aaaaaand 'e'. 'quick', where the hell is 'q'?"

As a parallel, take Jimmy Page (Led Zeppelin) as a guitar player. Sure, his playing was sloppy as hell when playing live. But the man knew the fret board. He knew all of the places any note could be played, he knew which boxes will allow the riff he wants to play (in fact, I doubt he thought "which box?" but rather "here's where I need to be"), the man was _comfortable_ with his tool and the guitar has the appearance of being an extension of his hand when he plays. He never looks like he's mentally saying "okay, I need an A# next, which is...". This allows him to move on from rote mechanics to making incredible music.

Typing is the same IMO. If you struggle with typing, the first thing you're likely to do is reach for the mouse for anything other than text entry. Which means you reeaach over to the mouse, then mooooove the mouse, click, and...what was it you were doing again? Then when text entry time comes it comes out as "M...y...C...l...a...s...s... ...*...f...o...o". The tool is taking up mental cycles when it should be more of an extension of your thoughts.

It's been argued on HN and elsewhere that typing speed has little bearing on productivity for programming since one spends more time thinking than typing. My counter to that is that the two probably intersect more often than you think they do, and when they do you don't want to be burning cycles figuring out which finger to use to reach the "w" key.

<comment><USER3> >Those students who are trying to transcribe lectures and not actually learning anything? My guess is it's because they're burning cycles mentally saying "'the', I need to find 't' and an 'h', aaaaaand 'e'. 'quick', where the hell is 'q'?"

I wouldn't be so sure. I can write and type just fine, but I always learned better in class by listening to the teacher instead of trying to produce a pile of notes. All of the kids I remember that wasted their time writing down everything the teacher said without really _listening_ to them, did just the same with computers or old-fashioned pen and paper.

<comment><USER4> One can listen and take notes at the same time. I found that taking notes helped a lot, even though I hardly ever to never reviewed them later. But it helped to strengthen what I was listening to.

The simple takeaway is that different people learn differently. Don't assume what works for you will work for others and vice versa.

<comment><USER3> I wasn't really trying to judge anyone's preferred method of learning (though I see how I came off that way), just arguing that the "guy who takes tons of notes but learns very little" phenomenon has nothing to do with typing skills. I had a few people in mind from my school days who would practically transcribe each lecture, producing pages of minutes and never putting their pen down for a moment, yet understand less by the end than the stoner in the back who slept through half of it.

</comment></comment></comment></comment><comment><USER5> > one 2007 study measured a small group of 21 college students and found their > average typing speed was an abysmal 12.2 words per minute

That blows my mind. That's less than a tenth the speed I type at. How do they get anything done??

<comment><USER2> I can type that fast on a phone. I'll assume for the sake of discussion that this number is accurate across a general population. If you sit at a keyboard long enough, how can you _not_ get faster than 12.2 wpm? So much for "kids growing up with computers". All that time in front of a keyboard since kindergarten, and you're output is still restricted by your abysmal typing speed?

OTOH, do typing classes even exist anymore, are are we to assume that kids will just learn it by osmosis? When I was in high school I took typing class. On a real typewriter. And it was a _manual_ typewriter...that we could only use in a blinding snow storm while walking uphill. Anyway, I type around 100 wpm now which I attribute to that typing class. Had I just been left to my own devices to hunt-and-peck my way around, I doubt I'd be anywhere near that speed.

<comment><USER6> "which I attribute to that typing class. Had I just been left to my own devices to hunt-and-peck my way around"

I learned on a manual as well. But by using a book. It took about 3 weeks. I actually stopped at the part where you practice numbers (and regret it to this day).

"that we could only use in a blinding snow storm while walking uphill"

I was lucky to be able to convince a college instructor to allow me to bring in the manual typewriter so I could type the answer to an essay instead of using one of the blue books. Same blinding snow storm that day!

<comment><USER2> > I actually stopped at the part where you practice numbers (and regret it to > this day).

We learned that in typing class, but I never did "get" the number row. Bane of my existence to this day. I mean, mostly hit what I want but it's not thoughtless tapping like the rest of the keyboard. Don't know if it's my dainty little fingers or what the deal is.

> Same blinding snow storm that day!

Nah, probably not the same storm. Blinding snow storms were so common back then, it just seemed like it we shared the same weather pattern. Not like the constantly pleasant weather these kids today grow up with.

</comment></comment></comment></comment><comment><USER7> I like that the OP references the NYT piece on how handwriting had cognitive benefits...I guess I didn't read that NYT piece as presenting a dichotomy, only asserting that handwriting had its own cognitive benefits independent of how fast you could produce content. In fact, when I'm stuck in a problem- solving bind, I'll sometimes sketch charts/tables on paper, even though I almost always immediately throw the paper away.

That said, I wholly agree with the OP that _speed_ in production unlocks its own benefits. Working with novice coders, I've become acutely sensitive to how much lack of keyboard-shortcutting can hamper a novice's ability to understand code, especially across a project. The 5 to 10 seconds it takes for them to hunt-and-click for a file among Sublime Text tabs is enough for them to forget what bug they were trying to fix in the first place.

If I had to run a learn-to-code bootcamp...I think the first thing I would do is to remove the lab computers' default mouse input and replace them with the 80s-era steel-ball mice until students realized that using a mouse should be the edge case.

<comment><USER8> "I think the first thing I would do is to remove the lab computers' default mouse input and replace them with the 80s-era steel-ball mice until students realized that using a mouse should be the edge case."

I'd fire you immediately if you did that. The mouse is not an edge case.

</comment></comment><comment><USER9> This is definite check-your-privilege/assumptions territory for me. Reading the headline alone, I assumed this was going to be some sort of "you should slow down, zen out, and think more clearly, by not typing so fast" post. The idea of 60 wpm as being _fast_ took me a while to grasp.

</comment><comment><USER10> 60 wpm? The monks who taught us to type in Catholic school would have beat us for having that kind of sorry-ass typing speed.

</comment><comment><USER11> I think those kids wrote longer and better essays also because when typing you know you can edit, insert or remove whatever part whenever you want. This I believe also makes the person less thoughtful about what he writes for the first time. Contrary to writing, when you need to visualize the whole essay first and then start writing. Which is much more difficult. So the result, ie typing gave better result can also be because of the flexibility to modify any part of the content. What if no edits were alloyed while typing ? does that change the outcome ?

While writing essays or quick replies, typing can be better both because of its transcription fluency and flexibility in editing (iterative style of writing).

But in note taking, one needs another kind of flexibility. Like ability to change the handwriting or write in any direction anywhere. How many times we write illegible words, just to getaway with it and focus on the knowledge while in classroom. Also while pondering on an idea, we need this flexibility. We don't get this in typing. Only if we could scribble while typing (something to solve) ....

Writing is certainly loosing its territory to typing. Emails replaced letters, editing softwares, etc. But IMO once touch screen computers and tablet takes over. We might see people preferring stylus pens and resort back to writing. But Graphite is still going to loose.. :)

</comment><comment><USER12> Perhaps Steve Yegge's post is germane, [http://steve- yegge.blogspot.com/2008/09/programmings-dirties...](http://steve- yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html)

I'm not sold on typing per se, but mastering an appropriate output method for your domain seems key. For programming, that is typing. For math, it could be either manuscript or TeX. For the humanities it could be either manuscript or typing. Typing always removes a transcription step, but that is unlikely to be the limiting factor for any deep knowledge work.

As a homeschool dad, I think it is important to get kids to a relative level of proficiency as quickly as possible. Difficulty writing or typing or whatever certainly limits output. Different kids will prefer different options and thats fine.

PS. Even if typing is faster, writing allows more free form expression(maps/diagrams/etc) and that may mitigate the speed issue.

</comment><comment><USER13> 60 words a minute is still very slow, when it comes to thinking speed. Unless I'm just off my rocker, of course.

This is also why folks that take really good notes by hand often have some sort of shorthand system.

My question, then, is it worthwhile to investigate some of the more advanced typing techniques out there? I'm curious, but highly skeptical.

<comment><USER5> I average 140wpm without any "advanced typing techniques", so I don't think they're really necessary. I can't speak to whether or not they would be helpful, though. I do think it's very worthwhile to be able to type this fast - people speak somewhere around 150wpm on average, and being able to type as fast as you speak is useful for instant messaging, etc.

<comment><USER14> How did you get so fast? I seem stuck at around 55 wpm.

<comment><USER15> I developed speed from text MUDs. I'm the type of person who dislikes customizing my setup and prefer to play straight; as a result, I had to consume, digest, and react to pretty large quantities of barely-differentiated text in tenths of a second.

It was good immersion practice.

</comment></comment></comment></comment><comment><USER16> Back in college, I dictated the bulk of my (humanities) papers using Windows Vista's built-in speech recognition. It unlocked a new paradigm of revising where I could speak an entire paragraph, delete it without hesitation, and re- write, all in a minute's time. Including pauses and corrections, I probably got less than 100 WPM. That alone isn't impressive, but it came with minimal fatigue and friction. It was very liberating to edit my logic and reasoning at a multi-sentence level.

<comment><USER17> Could you explain what you mean? Maybe speech recognition has features I don't understand.

Decent text editors can delete and move sentences and paragraphs almost instantly. How is speech recognition different?

<comment><USER16> Sure, deleting is fast, but I meant that typing something back isn't. Speaking makes it faster and easier to start over with multiple sentences until one works. Maybe it's just laziness -- when typing, I am more hesitant to redo entire paragraphs. When typing, I also feel more caught up in the details and words inside my sentences. (Though that may not be a bad thing!)

</comment></comment></comment><comment><USER18> I think I have found the absolute worst typing test[1] on the Internet thanks to this article. It keeps a timer running until you "hit tab and click stop". You're telling me that I need to stop tying, move my hand over to my mouse, dragm the mouse button to that "stop" button and click the button? That'll lose me typing time...

[1]: [http://www.calculatorcat.com/typing_test/](http://www.calculatorcat.com/typing_test/)

<comment><USER19> You misread. It says "hit tab OR click stop". So just hitting tab out of the text entry box stops the timer.

</comment></comment><comment><USER20> I can certainly type sixty words a minute, but when it comes to retention there's no comparison between typing and handwriting for me and I don't find myself transcribing.

I have a notion that the permanence and chunkiness of writing keeps thoughts 'whole' whereas the ease of backspacing allows the same words to become abstracted. I'll have to try typing with backspace mapped to newline or something to see how the idea plays out.

</comment><comment><USER21> This is especially interesting to me. I've been relearning how to type on an Alphagrip and for much of the process (20-50wpm) I have felt like it was dumbing me down because my thoughts all have to wait for me to slowly output them. Now that I'm past 50wpm on alpha text the effect isn't as bad, but I still feel hindered. (But.... that's worth it for not exacerbating carpal tunnel issues, right?)

<comment><USER21> Btw, I would recommend this (learning a new keyboard layout) as a refreshing exercise for anyone who has forgotten what the learning process feels like. I imagine trying to read a book in another language is similar.

</comment></comment><comment><USER22> Unless you're a professional typist, 40 wpm as an average speed is definitely OK. Realistically there are few people that average over 120 wpm ([http://en.wikipedia.org/wiki/Words_per_minute](http://en.wikipedia.org/wiki/Words_per_minute)). As far as schools go, I hope they stick to using pens, as I don't know anyone who got RSI after using one.

</comment><comment><USER23> I cleaned my keyboard and ended up swapping two keys because of their proximity to the keyboard when I reset their positions. A co-worker mistyped one of the keys, then backspaced, then typed it again and on several other places on the same line before stopping, looking confused, then staring at the keyboard asking "You swapped your keys?"

"You look at the keyboard when you type?"

</comment><comment><USER24> """One of the reasons we formally teach handwriting to young children is that you don't want a bottleneck between the ideas they're forming and the writing. """

Talking with my son's teachers and pediatricians, one big reason that early classes emphasize writing is not just about literacy, but rather about developing hand muscles.

</comment><comment><USER25> Great content. It's a pity that author didn't mention that average typing speed for adults - 41 wpm according to infographic at [http://www.ratatype.com/learn/average-typing- speed/](http://www.ratatype.com/learn/average-typing-speed/)

</comment><comment><USER26> Seems like GNU Typist is quite popular in this thread. I was wondering how do you learn to use right fingers for right buttons. I could use GNU Typist but I might just be practicing with wrongs fingers.

</comment><comment><USER27> Did you know that you can type the word "typewriter" on top row of your QWERTY keyboard? It was part of sales demonstrations.

</comment><comment><USER28> It is not my university education that makes my living. Its touch-typing skill.

</comment><comment><USER12> [http://steve-yegge.blogspot.com/2008/09/programmings- dirties...](http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest- little-secret.html)

I could figure out how to post this w/o it showing up as a dupe but I just don't care enough.

</comment><comment><USER29> I was really hoping this would be about type systems.

</comment><comment><USER30> Next up: The Joy of RSI

</comment><comment><USER31> This is why the quality of text messaging is notoriously abysmal.

</comment><comment><USER32> I think there's also much to be said about the "standard" way of teaching typing, which I find to be excessively constraining and inefficient [1]. Instead of forcing a strict "one key, one finger" correspondence, it's better to teach _where_ the keys are, and to encourage the use of as many fingers as possible. It's also not explicitly taught, but the skill of breaking up sequences of letters so that you're typing complete _words_ and common pieces of words (e.g. "ing") is also very important. Fast, fluent typing comes from being able to quickly know which keys to hit for a given word - which finger exactly to use matters only tangentially. I've seen people type 100+ wpm with only 2 fingers on each hand, but they know which keys to hit, and know where the next key they need to hit is.

[1] [http://www.onehandkeyboard.org/standard-qwerty-finger- placem...](http://www.onehandkeyboard.org/standard-qwerty-finger-placement/)</comment>