Animals We Ate into Extinction - <AUTHOR> https://www.britannica.com/list/6-animals-we-ate-into-extinction <comment><USER2> Humans likely hunted several species to death after reaching North America, including:

\- North American horses (several species)

\- North American camels

\- Giant Bison

\- Tapirs (several North American species)

\- Llama's (several North American species)

\- Stag Moose

\- Gomphotheres (several species, similar to elephants)

Several other species of North American megafauna, such as North American lions and giant beavers likely went extinct due to human activities even though there's no evidence they were hunted directly. e.g. The extinction of most of their prey likely did the lions in.

It's actually quite shocking what humans with rocks, sticks, and empty bellies were able to do. There can be little doubt that the domestication of animals for food has spared countless other species from a similar fate over the last ten thousand years.

<comment><USER3> Humans did the same thing, causing a mass extinction of around half the large mammals in Australia and many other species when they reached the continent around 40,000 years ago. Not only did we hunt large animals, but we burned the forests regularly, driving more to the brink.

The same thing happened around 1000 years ago when we reached New Zealand and Madagascar.

Most of the damage of the Anthropocene may already have been done.

<comment><USER4> > Most of the damage of the Anthropocene may already have been done.

Unless global warming gets sufficiently bad, in which case that will be the worst damage.

</comment></comment></comment><comment><USER5> No moa [1] Britannica, really? It's not even on the 'birds that don't fly' on the next page!

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

<comment><USER6> Came here to say just this, and the Haast Eagle as well...

<comment><USER7> They died for the glory of the british empire. Civilization and animals everyhwere beware!

<comment><USER8> Actually it was the Māori not the British.

</comment></comment></comment></comment><comment><USER5> A nice alternative version of this would be 'Animals We Ate into Proliferation'

<comment><USER9> We can play the home version:

chickens cows pigs

I think that's it! Sheep are mostly used for wool, goats for milk and the odd lambchop.

I guess there's some geese and ducks.

I would salmon, but does farming of them displace more of the habitat loss we've cost them with damns, mining, oil fields, etc?

<comment><USER10> I think it depends where you are, regarding the use of sheep.

In Australia and New Zealand, lamb consumption is quite popular. Australian figures from 2016 show 9.5kg of lamb consumed per capita[1]. From the article:

"This means that with underlying population growth, the total volume consumed in Australia is forecast to edge above 240,000 tonnes cwt by 2020, which will account for 46% of Australia's lamb production."

Which means there's a further 250,000 tonnes exported.

The UK appears to be even higher in absolute numbers. Average purchase per week per person of mutton and lamb was 35 grams, which equates to 1.82kg per annum[2]. With a population of 63 million, that is once again a fairly large consumption of sheep.

[1] [https://www.mla.com.au/prices-markets/market- news/2016-austr...](https://www.mla.com.au/prices-markets/market- news/2016-australian-lamb-consumption-figures-demonstrate-resilience/)

[2] [https://www.statista.com/statistics/284346/weekly-uk- househo...](https://www.statista.com/statistics/284346/weekly-uk-household- consumption-of-mutton-and-lamb-in-the-united-kingdom/)

</comment></comment></comment><comment><USER11> > Humans are not always great at self-moderation

Humans are _never_ great at self-moderation.

<comment><USER12> I was going to post a snarky reply to this, but thought better of it.

</comment></comment><comment><USER13> Can I commend the writing on this Web site? I know traditional encyclopedias have been over shadowed by Wikipedia, but the standard of writing and information density does not compare to what went before.

</comment><comment><USER14> 10? How about hundreds? (in Australia and Americas alone) [https://en.wikipedia.org/wiki/Lists_of_extinct_animals](https://en.wikipedia.org/wiki/Lists_of_extinct_animals)

<comment><USER15> How about billions? [https://en.wikipedia.org/wiki/Extinction](https://en.wikipedia.org/wiki/Extinction)

The evolution itself is made of extinctions. All current species exist because their ancestors have pushed some of their contemporaries to go extinct. These lists are just those we know about.

</comment></comment><comment><USER16> We are in the middle of the Holocene extinction event, the extinction event with the highest extinction rate. Killing the animals is part of what we have done to destroy species, there's also habitat destruction.

And if we are smart enough and we melt the East Siberian Arctic Shelf we are next in line after we release enough methane to recreate Permian-Triassic extinction event.

"Be fruitful and multiply, and fill the earth, and subdue it; and rule over the fish of the sea and over the birds of the sky and over every living thing that moves on the earth." ... then go extinct.

<comment><USER17> "the extinction event with the highest extinction rate."

Sorry, that is not correct. The K–Pg extinction event wiped out around 75% of _all living species_ , apparently within the span of a couple of years.

<comment><USER16> The P-Tr extinction event is acknowledged as being the most severe of all. One of the causes is the sudden release of methane present in seabeds... which is a self-reinforcing phenomenon: as temperature raises, methane release accelerates, reinforcing the temperature raise which reinforces the methane release and so on... That could realistically happen again within our lifetime.

<comment><USER18> So does anyone know exactly what brought the planet back to normal after the release of all this methane? Why didn't the Earth careen into an unstoppable spiral of planet-wide heating like Venus did?

<comment><USER19> That is what I was wondering as well. The climate on eart seems to be very britty and very robust at the same time. What stops it from going completely crazy?

<comment><USER20> Maybe it's a variation of the anthropic principle? Earth is not a Venus simply because we're here to observe it.

We don't (yet) have data about climates on Earth-like planets in other solar systems. It could be that Earth is an extreme outlier in having a stable climate system.

<comment><USER21> Yes and no - I think it is life that is the stabilising factor. Venus probably never had any. Also it's much closer to the sun.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> Who knows - we could see the resurrection of the woolly mammoth - [https://www.theguardian.com/science/2017/feb/16/woolly- mammo...](https://www.theguardian.com/science/2017/feb/16/woolly-mammoth- resurrection-scientists)

</comment><comment><USER23> Eat more mosquitoes.

<comment><USER24> Ironically, they're saying the exact same thing of us. On their HN, none-the- less.</comment></comment>


CSS Is So Overpowered It Can Deanonymize Facebook Users - <AUTHOR> https://www.bleepingcomputer.com/news/security/css-is-so-overpowered-it-can-deanonymize-facebook-users/ <comment><USER2> CSS is a disaster of a programming language and a pretty great markup language for styling. It seems like many front-end projects and frameworks are a disaster of overbuilt tooling and compiling where things need not be.</comment>


The Grumpy Programmer's Guide To Building Testable PHP Applications - <AUTHOR> http://grumpy-testing.com Introductory guide to get PHP devs down the road to building their applications in such a way that they are easier to test using testing frameworks like PHPUnit <comment><USER2> I've been doing php for 12 years, and I still learned a lot. This book pointed out a number of areas in which I can improve my own code & processes. Well worth reading.

Disclosure: I know the author, but I didn't know he was this smart ;)

</comment><comment><USER3> It's an easy read - not something you can always say about technical books.

I thought it did a good job filling the gap between 'how to write automated tests' and actually writing tests for real world code.</comment>


Self-driving cars: Who to save, who to sacrifice? - <AUTHOR> https://ici.radio-canada.ca/info/2019/voitures-autonomes-dilemme-tramway/index-en.html <comment><USER2> A lot of time will pass with actual self-driving cars, before AI reaches the point where such moral dilemmas are even taken into account.

And the first question is whether such moral considerations should be included into what is essentially tools or mechanisms, ie. we're not talking about GAI here.

So basically, Tesla's autopilot works by "dumb" machine learning where the artificial neural networks are built to recognize images from the cameras, and determine driving commands from them. This learning is based on a big quantity if examples, recorded from existing Tesla cars, driven manually or automatically.

The important point is the big number of examples needed to learn a classification of the situation and derive a driving command.

Already, self driving cars have less accidents than human drivers.

So let me ask: WHEN will we have a big enough number of morally questionable situation examples, before we can teach to those artificial neural network what choice to make (and clearly, this will be human programmers who will make the choice, by labeling the situations and indicating what choice must be made)?

This will never occur.

All those examples are theoretical. The rare cases where a human driver can find himself in such a situation where he can turn left to kill a kid or turn right to kill a old man, are situations in which a self-driving car would never find itself in, because it would have reacted differently before the situation occurs.

In practice, since there will be no learning, there will be a random bias, a determination that will be done considering other criteria, and over a thousand of years of self driving, when such a case where a moral choice could have been done, the choice will just happen to be random, and can very well be actually the right choice. But it should not matter.</comment>


Google cloud outage - <AUTHOR> https://status.cloud.google.com/incident/cloud-networking/20004 <comment><USER2> Heyo Googler here.

The problem was a mix between another cloud provider and GCP.

Dare I say, there should be little customer impact as of 13:37 PST.....

The status dashboard is going to be your best idea on information.

<comment><USER3> Is the another cloud provider AWS? I could see tons of connection timeoutes between GCP & S3/Elasticsearch service.

Hope everything is resolved now for good.

<comment><USER4> Seems AWS, connection to gmail's smtp relay also started timing out.

</comment></comment></comment><comment><USER5> We were seeing timeouts in east-1. I don't know what "normal" looks like, but Pingdom's map seems to show the whole east coast as affected [https://livemap.pingdom.com/](https://livemap.pingdom.com/)

</comment><comment><USER3> yeah, our GKE pods running in us-east1 were dying ~90minutes ago like crazy... hope they are gonna resolve this soon. not the luckiest day for Google, nor us

</comment><comment><USER6> I was bummed out when Siteground moved all their cloud accounts over G, without telling their customers beforehand

</comment><comment><USER7> This is extremely concerning as somebody looking to move or build on top of GCP for the long term. I wonder why anyone would choose GCP if outages are occurring on a regular basis.

<comment><USER8> Any evidence they happen more frequently that the other clouds?

</comment></comment><comment><USER9> "We had a router failure in Atlanta".

WHAT? You kidding us?

Urs Hölzle, technical infrastructure at Google Cloud senior vice president, said, "We're very sorry about that! We had a router failure in Atlanta, which affected traffic routed through that region. Things should be back to normal now. Just to make sure: This wasn't related to traffic levels or any kind of overload, our network is not stressed by COVID-19."

<comment><USER10> Was it like... a hardware failure? If you serve more than 100 people you probably should have redundant routers. Was it a configuration issue that replicated over to multiple devices at least, I hope?

<comment><USER11> Have you worked with redundant routers? They certainly reduce the number of outages, but sometimes the hardware (or software) fails in exciting ways that doesn't engage the redundancy, or doesn't engage it properly, and you still get an outage (or you get an outage that wouldn't have happened). Or sometimes, one circuit is out of service for repair or upgrade, and the other circuit is connected to the router that failed. And routing for the AS that travels on that circuit was set not to fallback to transit because the last time that happened, it caused major issues.

I have no specific knowledge of today's events, but this sort of thing happens. You can get the number of incidents down pretty low, but not to zero.

<comment><USER10> I have. I am just highlighting that the problem surely should be more complex than described. Or that their redundancy for these events was not adequately devised.

<comment><USER11> Google often releases a pretty solid post-mortem, which will give the detail of the event. The level of detail appropriate for same-day release is really 'router failure' or 'power failure' or 'software failure' or 'vehicle drove into the building failure'. Expecting more than 'we know what it was, and we fixed it' or 'we don't know what it was, but it stopped happening' or 'yes, we're working on it' on a same-day twitter post is unreasonable.</comment></comment></comment></comment></comment>


Huge List of Quality WP7 Development Tips - <AUTHOR> http://blogs.claritycon.com/blogs/kevin_marshall/archive/2010/10/26/wp7-development-tips-part-1.aspx

<comment><USER2> This is a great list and a must read for anyone doing WP7 development.

In my opinion, you will always be better off using the bare minimum amount of XAML. XAML is completely unnecessary and is a huge barrier to adoption of WPF/SL. You've been better off avoiding XAML this Since SL2; heck you've been better off since WPF beta. That means no databinding, avoid converters, and do the layouts in C#. I.e., not the way the documentation tells you to do it. In fact, much of the list boils down to the above advice.</comment>


Hacker News UI Tweak - <AUTHOR> http://codepen.io/lixonic/pen/LwnKH

<comment><USER2> That quite nice, simple and clean. But you've missed the currently signed in user and points.

<comment><AUTHOR> updated [http://codepen.io/lixonic/debug/LwnKH](http://codepen.io/lixonic/debug/LwnKH)</comment></comment>


Free software is at risk in the EU - <AUTHOR> https://www.fsf.org/blogs/community/free-software-is-at-risk-in-the-eu-take-action-now <comment><AUTHOR> "If Article 13, embedded within the proposal, becomes official policy, it will be impossible for developers to build off of one another's code"

I'm not happy about laws dictating content distribution, but can't we still host our own content if this passes? All this seems like it will only hurt content-hosting-as-a-service type businesses, which are typically not libre and tend to converge into a de facto monopoly. I feel like, if passed, it will encourage individuals to host their own content and share it via links to URLs they own. Isn't that something FSF encourages?

<comment><USER2> Even if you host your own web server, this could apply to your ISP. It could definitely apply to cloud service providers.

I'm not sure how you get around unless we have some new WiFi worldwide mesh protocol (which would be awesome).

<comment><AUTHOR> ISP's couldn't function if they had to check all content, and they shouldn't be able to if SSL works. Cloud service hosts would have to know something about how the content is going to be used. It's legal to back up my MP3 collection in the cloud, it's just not legal to share it. Even if they make sure I can't link directly to it, I could write some code to fetch it with my credentials and serve the bits through a web app I don't even host with them. And that's assuming the content isn't encrypted before uploading it to the host, preventing them from analyzing it.

</comment></comment></comment><comment><USER3> I disagree. Why would it block modified licensed code instead of looking for a COPYING or LICENSE file?

On the contrary, it could enforce copyleft by detecting GPL code that's made it into a proprietary codebase (or a more permissive one).

</comment><comment><USER4> I am curious about the rationale behind this action... hmm...</comment>


Hadoop powered BI and Analytics - <AUTHOR> http://www.atlantbh.com/hadoop-powered-bi-and-analytics-part-2/

<comment><USER2> Having worked doing BI work for a bit during a semester off it seemed like there is so much money to be made in the 'BI for the masses' space. Interesting to see some competition for SAP , MS and Oracle popping up, I'm rooting for them.

</comment><comment><USER3> Pentaho and Tableau are nice. Jaspersoft not so much but they have the best reporting design software. All of them are a refreshing break from Oracle/Microsoft

<comment><USER4> I just found Pentaho few days ago and we plan to use it for BI on our huge mongo db data set. Any hints you could provide?</comment></comment>


Show HN: Pushup alarm – A React app that uses your webcam to count pushups - faris-ssj https://pushupalarm.com/ <comment><AUTHOR> Feedback:

\- I flat out love the idea. I have a two year old and for me, the biggest thing that I've noticed about parenting is that it's made working out harder. I love food, so needless to say, I've watched my level of fitness steadily decline. This is very bad for me. An app like this would force me to get up and be active because frankly, the sound is worse than a pissed off toddler.

\- The sound is worse than a pissed off toddler. My girlfriend said it sounds like a nuclear bomb siren. The sound is bad enough that it would motivate me to do pushups, just to get it to turn off. But, it's in a frequency range that causes lots of people problems. If you choose to keep developing, I'd suggest that having the ability to change/install a custom sound would be a great place to start.

\- The pushup detection was poor. Either that, or either my form sucks or we have different definitions of what a pushup is. I did 10 pushups and it registered one and to shut down the infernal alarm, I ended up doing the 'raise the roof' motion. Oddly, the 'raise the roof' motion registered as a pushup every single time. I'm a nerdy 40 year old, so I should likely never do the 'raise the roof' motion. It's arguably even more personally limiting than air drumming along to Led Zeppelin (which is, incidentally, a wonderful workout though when you become known as 'the guy who drums at work', you'd be surprised how few people invite you out for lunch). :)

\- You could be onto something amazing. Getting someone into the habit of dropping and doing pushups a few times a day would transform lives. I would pay for it if it checked my form and counted proper pushups for me. Though, it didn't seem to register my pushups, so maybe it does check my form.

Nice work and congratulations on front paging HN! I've got a lot of respect for what you've done and you should feel proud of what you have accomplished. I would be incredibly proud if I were in your shoes.

<comment><USER2> > An app like this would force me to get up and be active because frankly, the > sound is worse than a pissed off toddler.

There are dozens of apps that would help you exercise in short periods of time.

<comment><AUTHOR> I might be misunderstanding your comment. If so, please suggest apps!

It's not so much a function of knowledge as it is a function of doing it. I know that I'm highly biased, but my kid is flat out cool. She loves figuring things out and has a wonderful mischievous attitude to boot. Simply, when she's awake and I'm not working, I'd rather spend time with her (rather than stay active which would keep me alive longer, thus meaning more time with her).

For me, it was the sound that got me hooked on this particular app. It's the kind of godawful noise that would wake the dead just long enough so they can do their pushups and shut the damned thing up...:)

</comment></comment></comment><comment> faris-ssj I've been working on a web app which counts your pushups via your webcam.

You place your laptop/phone on the floor, do pushups whilst looking at the camera, and the app counts how many you do.

I integrated this functionality into an alarm clock which you can only turn off by doing a preset number of pushups.

I've posted it here for two reasons.

First to see if it works. It work well for me. BUT, there must be a data/sample bias based on how I do pushups.

Second, to see if people get value from this.

Would appreciate feedback around how well it counts pushups (if you can't do pushups, you can try sit-ups, just make sure your head leaves the camera at the top). And let me know if you are interested in future testing.

<comment><USER3> Very cool. Going to try this out tomorrow morning.

</comment></comment><comment><USER4> A while ago I also made a Slack bot that calculates the amount of pushups based on open Pull Requests on GH on our private repos: [https://github.com/robinpowered/swolebot](https://github.com/robinpowered/swolebot)

<comment><USER5> Some of my projects might end up killing me if I enable that.

</comment></comment><comment><USER6> I couldn't try it because there is no space near my webcam that I can nock out some pushups but I did set the alarm to see.

But it looks like a great idea!

It might not work for people in a co-living relationship. My wife would kill me if that alarm sound went off for more than 20 seconds (I get up before her).

What about React helps make this project easier than say vanilla Javascript? I would live to see a writeup on how it is made.

Also, random idea, think it'd be fun to be able to replace that alarm sound with the whooping sound from Rogue One.

<comment><USER7> >It might not work for people in a co-living relationship. My wife would kill me if that alarm sound went off for more than 20 seconds (I get up before her)

Good use case for Bluetooth headphones.

>Also, random idea, think it'd be fun to be able to replace that alarm sound with the whooping sound from Rogue One.

Or, to prank my pushup loving flatmate, Gene Belcher's fart keyboard sample.

<comment> yoz-y Hm, are there any wake up alarms that actually go off through connected bt headphones? It seems like a recipe for being late.

<comment><USER7> I don't really use wake up alarms so I'm not sure; I get up pretty regularly at 6AM (even if I went to bed at 1, it's pretty awful.

</comment></comment></comment></comment><comment><USER8> Runtastic Push-Ups on iOS counts pushups either with touch input (nose touches screen) or the proximity sensor (you get close enough but your nose doesn't quite hit the screen).

<comment> yoz-y The nose solution looks especially clever, I like it.

<comment><USER9> And has the added benefit of not letting people count those half-pushups where you're still 12" off the ground.

</comment></comment></comment><comment><USER10> I only took a brief look, but I was pleased to find that this seems to count the pressups client-side and doesn't send off a video feed to the server. Good job.

</comment><comment><USER11> Really love the idea, I've been planning on working on my calisthenics and this was the best thing I've ran across, however, I do have some problems with it.

\- I realized that many people have already complained about the sound so I don't think I really need to go into much detail about having optional alarm sounds

\- When I had my cam on the ground so it would be able to see my face and detect my head going up and down I ended up having to do about 30 perfect form push ups to complete my goal of 5 push ups. One idea that popped into my head was maybe show some sort of outline for where the face, shoulders, arms, etc. should be so that it could be more efficient in detecting a push up.

\- I found that when I kept my laptop on my desk and bent the cam down it had counted all of my push ups which was much less frustrating than when my cam was on the ground.

<comment> faris-ssj Thanks for the feedback. Glad you found an orientation which works. I'll definitely look at ways like you mentioned to help people get into that position first time round.

</comment></comment><comment><USER12> feedback:

\- annoying sound! Not motivational. Instead, have snooze option when detecting movement (but activate alarm again if no pushups). This also allows for some warmup.

\- some feedback or countdown of pushups needed could be valuable (when I started, chunking and counting down helped go through them) see the 'seven' app for inspiration (also shows proper form)

\- why limit to pushups? [https://www.youtube.com/watch?v=jU6PcBS1pWw](https://www.youtube.com/watch?v=jU6PcBS1pWw) motion tracking printable tags

\- make it easy for me to setup a routine and challenge myself

</comment><comment><USER13> This is a cool idea! The pushup detection works ok for me.

A couple of minor issues I noticed:

\- In my browser (firefox), the time on the main page overflows the black background

\- The webcam is still turned on after the pushup detection is done

</comment><comment><USER14> I built an iOS app that does this exact same thing a few years ago: [https://itunes.apple.com/us/app/100-pushups-all- star/id70851...](https://itunes.apple.com/us/app/100-pushups-all- star/id708510497?mt=8)

It uses face detection to determine a pushup.

<comment><USER15> So if I move the phone up and down in front of my face it will count pushups?

<comment><USER14> Yep, you have to be fairly close to the screen for it to count. Obviously you can cheat if you want to, but what good is that.

</comment></comment></comment><comment><USER16> Nice job. Worked for me without having to fiddle with the camera or anything. Well done!

</comment><comment><USER17> I like that it's all local by default. The ML practitioner in me though craves an option to share frame data so that you can build a deeplearn.js compatible network and distribute that!

</comment><comment><USER18> This is great! I've been working on something like this as well (an automatic tracker for various body movements). Would love to have a chat about how you've accomplished this.

</comment><comment><USER19> Does this use facial recognition? That is, do you have to actually face the camera, or does it simply use some basic object recognition to determine if something is moving up and down?

<comment> faris-ssj No, I did try that but it was too slow. I will write up an article once I have improved it if people are interested in.

In a nutshell, I take a stream of frames from the camera, then do a diff on the frames to see what has moved, I then see if the diff of pixels over time is what I'd expect a pushup to look like using basic logic. The movement of pixels over time should look similar to a sine wave. I threw in some simple logic to account for noise in the data.

<comment><USER19> The pixels' diff over time resembling a sine wave is really interesting -- but it makes sense! I'd read an article/blog post about this. Cool app!

</comment></comment></comment><comment><USER20> I was able to fool it by doing pushups off my desk, though I was impressed that it worked at all.

<comment><USER12> repeat this cool trick and check yourself for a six pack

</comment></comment><comment><USER21> I just moved up and down and it detected that as a push up

</comment><comment><USER22> How hard would it be to make a pull-up alarm instead?

</comment><comment><USER23> so it works by identifying the location of your face/head?

</comment><comment><USER24> We've been working on RepCam [1], built in react-native -- it's currently iOS only, as we found activation energy to use it on a laptop to be too high. Real-time computer vision for fitness tracking is our core competency.

[1] [https://itunes.apple.com/us/app/repcam/id1118115900?mt=8](https://itunes.apple.com/us/app/repcam/id1118115900?mt=8)

<comment><AUTHOR> Hijacking a 'show HN' thread to promote your own product is a very dangerous form of marketing. To you, it might seem like some edgy 'growth hacking'. But, frankly, it hurts your brand way more than it helps.

<comment><USER24> Thanks for the feedback. My impression is that HN usually likes to see alternatives and similar products in the space when one is shared. I know I do, when I see a Show HN or even a general product share here, and is often the top comment. This space in particular is sparsely populated (indoor exercise tracking without specialized sensors) so if it's interesting to people, it may be hard to find other similar projects.

That said, I wanted to comment on the usability activation energy aspect as much as the shameless plug.

<comment><USER25> I would generally agree that people like to hear about alternatives that are available in a similar field. It's possible that your initial post sounded more like a Plug and less like a Contribution, but that's a wording/tone thing. -shrugs- just food for thought</comment></comment></comment></comment>


Why are vi[m] efficient code editors? - <AUTHOR> This started on another thread where I got throttled pretty badly because of my opinion that, in the context of a non-trivial project, vi[m] offer no real gains, particularly when one considers timelines, code quality, bugs, costs, etc.
I am always one interested in learning.  And that is why I decided to launch this thread.  To be clear, I am not interested in engaging in "mine is better than yours" discussions that invariably lead to flame wars.
The intent is to hear from vi[m] expert users on the reasons those of us who, like me, only touch vi[m] when absolutely forced to, or others who chose to avoid vi[m] or barely know anything about these editors should seriously consider what vi[m] have to offer.
I propose that posts should take the form of reproducible recipes.  Give us, vi[m] neophytes, steps to follow in order to understand how one might do a specific task more efficiently using vi[m].  Please don't engage in comparing it to anything else.  If we keep it to vi[m] recipes then this thread stands a chance of becoming an educational resource for those of us not familiar with these methods.
This also means that making claims about vi[m] efficiency supported by saying something akin to "every programmer who uses vi[m] thinks so" are not acceptable.  Only recipes.
Also, in the interest of fairness, the recipes should work with unmodified vi[m].  Requiring the loading of plug-ins of various kinds muddles things as the same could be true of other editors.
In addition to this, let's not talk about things like memory foot print or binary size.  With today's multi-gigahertz-multi-gigabyte computers this really is immaterial.
A recipe could start by suggesting to clone a certain github repository, then opening a specific file with vi[m] and then offering-up a series of commands that show how to derive efficiency gains from vi[m].
On my end, I have access to OSX, Linux, Irix, Solaris and emulators on Windows machines.  Other readers might only have one platform available.  Please indicate if your recipe, for some reason, requires a specific platform.
Finally, please don't comment on my introductory (first) paragraph.  Only recipes and discussions that ask questions or offer clarifications on the recipe in question.
Thanks. <comment><USER2> Where are your data proving that vim offers 'no real gains' (or as you intimated in another thread, that it is actually counterproductive to use vim)?

I'm puzzled at how you can ask about 'gains' and at the same time, discourage comparing vim to anything else. Isn't your question about relative advantage?

If you disqualify things like startup time, portability, and plugins you are now talking about a meaningless comparison. Those are real features vim has and you are just trying to exclude them in an effort to tilt toward your predetermined conclusion that vim is bad.

</comment><comment><USER3> The reason I use vim is precisely what you have access to. OS X has vim, Linux has vim, and there are all different versions and ports of it. If not vim, then at least vi. Do I need all my plugins to be sufficient? No. Is it nice to have my customized look, yes.

In the end my productivity at any work station is not defined by which program I use, but how well I know the code. I try to not let my environment affect my workflow as much. If I sit down at any computer with some way of SSH, or a terminal emulator then I will be able to code my heart out.

One last thing I notice with vim, everything seems to be a keystroke away. Searching and moving the the next line, adding to the end of the current line, indenting the line, moving to the beginning of the line. It's so quick. Certainly every other editor out there has realized this and has the same features, but they are gummed up by the fact that they are always in insert mode. For me it is faster because I don't use left shift or control. Some people prefer emacs style bindings for everything they do. They don't mind throwing the left pinky down and hitting shift or ctrl. I find it so unusual so I find vim bindings much easier to become accustomed too.

Does that provide any help?

<comment><AUTHOR> > Does that provide any help?

Not a recipe, but yes.

Can you explain this comment a bit further: "they are gummed up by the fact that they are always in insert mode"

How is being in insert mode problematic? A scenario or two might be useful.

I use vim with git all the time and can't say I enjoy having to go in and out of insert mode every time I touch it.

<comment><USER3> Well as carb said, you aren't going to be writing code for hours and hours each day. As a project gets fuller, it's more navigation between files and manipulation of what is already there. The ability to move around lines with only one key or a key and an alternater (Shift more often than not) makes movement a blast. Searching for words around a file is as simple as a /. The ability to repeat past commands is just a ".". There are a variety of commands that when they are first presented to you looks like a mess. If you take a second and look at it it turns out to be really quite simple. Just vim commands are short and sweet and simple.

There is no recipe or anything to get really good at Vim. It's up to the person using it to get a firm handle on what is going on. Some times you just have to be curious and notice that there could be a performance tweak here and then research how to do it. Also, don't be afraid to make your own macros to take care of work for you. I have plenty of self defined macros. Taking all the work from someone else doesn't make it entirely yours. Tweaking and picking from tons of other vimrc's and the like can be interesting.

As a tid bit, make your own dotfiles repository on github. I have about 15-20 systems where my dotfiles directory is symlinked and as long as I have internet I can transfer around my perfect environment.

<comment><AUTHOR> I intend to spend time with vim over the weekend and take-in some of the excellent input found on this thread.

The mental image I am developing now is that vim can be said to be efficient in a narrow sense. Perhaps that narrow definition is constrained to the file level. It's like a musical instrument to manipulate files. Once you know it well, it feels just like that. I am not saying that this is the only definition, it's just what I am coming-up with now.

Once we deviate from whatever the narrow definition of where vim is more efficient the claims start to fall apart. This doesn't happen because of vim but rather because it is the very nature of creating software: Things take time and saving keystrokes at the file-editing level isn't going to bring a project to completion six months earlier and with less bugs.

I wear at least two hats: developer and businessman. I am forced to look at things from both angles, because, well, I have to pay for the consequences of my own decisions. For example, if I succumb to my natural inclination to keep adding features it means that I might have ten programmers busy for weeks chasing an ever-moving project completion milestone. So, as a business person, I do my best to control these urges and look at things through a different equation. Eventually you have to call it "done" and move on.

Over the years I have never seen any code entry tool that truly makes a serious dent in software project timelines. Software projects are notorious for being late and over-budget. And this has absolutely nothing to do with the tools we use. Zero. A better editor or IDE will not make a dent on overall project timeline. Anyone who can figure out a way to solve that problem can become an "instant" billionaire.

<comment><USER4> You are making stuff up. Nobody is claiming that using Vim over Eclipse allows a product to be delivered earlier and with less bugs.

The Agile crowd makes that kind of claim, some language zealots also do.

The "saving keystrokes" argument is important for programmers because our work is very repetitive and we are lazy. It has nothing to do with the productivity of your team or the release date. Nothing. Because programmers don't care about all that. Chosing Vim over another editor is a matter of personal choice.

If you don't like Vim don't use it. Noone cares.

if you are interested, even remotely, try it in your free time.

But by all means don't project the effects of your delusions on random strangers: nobody is insisting that you use Vim instead of X. All the "Vim is awesome" comments or blog posts you have read are not attempts to bring you to our temple. They are just manifestations of our personal and often unreasonable "love" for Vim. No more, no less.

</comment></comment></comment></comment></comment><comment><USER5> "in the context of a non-trivial project, vi[m] offer no real gains, particularly when one considers timelines, code quality, bugs, costs, etc."

"Give us, vi[m] neophytes, steps to follow in order to understand how one might do a specific task more efficiently "

I believe this is the strawman that was being alluded to in the previous thread. Nobody is going around saying "Hey, if you don't use vim, you are producing less than I am!" Okay maybe some people do say that, but that's really not the reason people love vim.

The real reason (in my opinion, of course) has to do with _flow_. It's hard to explain, which is why these discussions tend to digress. But when you're in _flow_ , or _the zone_ , you don't want things like your text editor to get in your way. You want it to be a harmonious extension of your intentions to the machine. When you connect with vim, that is what you get. Other people might get that connection with emacs, or some other editor. But for the most part, you just don't get it with editors that don't allow a rich communication vocabulary between you and the machine.

Does _flow_ matter on the scale of business deliverables within a project budget? Not really. It matters to the enjoyability of the creation experience that the programmers are involved in. They could probably still produce the work without that additional enjoyability, but less enjoyable work can sometimes lead to lower quality. And perhaps more importantly, it always leads to less joy.

For the past several years I've been using a keyboard that doesn't require me to move my hand away from the home row in order to manipulate the mouse cursor. There's a similarity there in that it reduces flow interruption. I've recently started learning vim because I see this same potential in it.

As for "recipes", there is a post here taken from the previous thread: <http://www.viemu.com/a-why-vi-vim.html>

<comment><AUTHOR> I am going to ignore the first part of your comment because, well, I asked that this thread not go that way. The problem with the other thread is that claims were made about vi efficiency and not one bit of data of any kind was provided to support these claims. Nobody learns this way. This thread is already very different as many have provided very interesting comments with valuable insight, including yourself.

I understand flow very well of course. I can't say that I've ever used an editor that prevented me to enter that state. I a not countering your statement, just providing my own experience.

Aside from programming I play the piano and classical guitar. When I play music I am in flow. That didn't happen until I had reasonable command of the instruments. With vi (or any other tool) the same is required. I wonder how much time it would take to go from vi neophyte to playing it like a piano? That initial phase is painful if you have to get work done.

I also understand the value of playing a good instrument and using good tools. And, while this value may not provide any hard quantifiable benefits to the project timeline it does provide benefits for the practitioner. The project might still be six months late, but there will be more daily enjoyment, if you will, for the practitioner to remain on focus. That could have value. Whether or not there is a difference between someone who has never touched vi and a vi expert remains to be determined. The vast majority of programmers don't use vi.

After reading your post and others on this thread my immediate reaction is that vi advocates might want to consider not characterizing vi as "more efficient" but rather highlight what it might do for a programmer. I can't come up with the words right now, but "more efficient", in my book, calls for having quantifiable data at the project level (not the file level).

We all know that saving a few keystrokes here and there isn't going to bring a project to conclusion any sooner. We had a project where we spent six months tracking down a bug that was due to a rounding error someone made in a calculation of lookup-table data used in a polyphase FIR filter module. It was one of those things that was right in front of you but nobody could see it. The project was late by an additional six months (it was already late) because of that bug. That's the kind of thing I think about when I say that saving a few keystrokes on the editor doesn't matter in the context of a project.

I'll read the article you pointed out and see what else I can learn.

Thanks for your input and valuable insight.

<comment><USER6> I just think "efficient" is ill-defined. Nobody (or nearly nobody, I can't speak for everyone) that says vi[m] is more efficient is talking about project-level efficiency. They are talking about saving a few keystrokes (or more importantly a tiny amount of attention) when manipulating text. Manipulating text is just one part of writing software, but it's the part that developers want to spend the least amount of thought on, as it's (as you point out) not that important at the project level.

Being more efficient at manipulating text means less energy spent, which makes for happier programmers. So the more efficient text-editing is preferred by some, not because it leads to better software, but because it leads to better quality of life. And I stand by the statement that vi[m] is more efficient at manipulating text, while not disagreeing with you that it makes no difference at the project level.

<comment><AUTHOR> > Being more efficient at manipulating text means less energy spent, which > makes for happier programmers. So the more efficient text-editing is > preferred by some, not because it leads to better software, but because it > leads to better quality of life. And I stand by the statement that vi[m] is > more efficient at manipulating text, while not disagreeing with you that it > makes no difference at the project level.

I can absolutely agree with you on that. Learning vi[m] in order to get to that level seems to be the hit lots of people are not willing to (or simply can't) take. In the context of a busy shop it makes almost no sense to bring productivity down to almost nothing while everyone has to slow down to learn a new tool (any tool, not just vi[m]). The only time one can justify this sort of thing is when there are real and measurable business or code quality benefits to the interruption. An example of that is sending everyone out to a one week course on a new technology. When they come back they absolutely rock. I've sent people out to take courses costing the company tens of thousands of dollars on more than one occasion. In every case it pays off within days.

I can't say that about vi[m] yet. Not wanting to voice opinion from a context of ignorance I will spend time over the weekend to force myself to dive into vim and see what I can learn. Happy programmers, hell, happy people, are always more fun to work with and be around. If vi[m] can bring that to the table I have no problem promoting its learning and usage at our shop (when we can afford to take the initial productivity hit while everyone learns).

<comment><USER6> Most programmers who care that much about their tools will learn (at least partly) on their own time. I agree that it probably doesn't make sense to have a "learn vim" week at most companies.

</comment></comment></comment></comment></comment><comment><AUTHOR> In looking for vi[m] tools for Vista 64 I came across this:

[http://www.microsoft.com/en- us/download/details.aspx?id=2375...](http://www.microsoft.com/en- us/download/details.aspx?id=23754)

older, but better explanation: [http://technet.microsoft.com/en- us/library/cc779522(v=ws.10)...](http://technet.microsoft.com/en- us/library/cc779522\(v=ws.10\).aspx)

And a blurb on how to go about enabling some of the functionality:

      If you have Vista Enterprise or Ultimate, you can install the optional
      "Subsystem for Unix Applications" (SUA). This is under Control Panel,
      Programs and Features, Turn Windows Features On or Off. After you have
      installed SUA on Vista, then download the "Utilities and SDK for SUA" from
      Microsoft.com (the download URL is in the Start menu, after you install
      SUA).

      The SUA Utilities include vi, as well as all the standard Unix/Posix tools
      like ls, cat, sed, awk, etc. There is also the gcc compiler, so you can
      compile and run a wide range of open source Unix software on your Vista box.
      You can also download SUA binaries and source code for many popular
      Linux/Unix apps on Vista, from www.interopsystems.com - Apache, PostgreSQL,
      OpenSSL, Squid etc - it's all there.

      Unfortunately, SUA is not available for Home or Business editions of Vista.
      If you have one of these editions, you can try using Vim, a very popular vi
      clone (see www.vim.org). A Win32 version is availabel. In fact several Unix
      distributions are now shipping vim as the standard editor, in place of the
      classic vi (because vim has many useful extra features).

Fortunately we are running Vista Ultimate 64 bit, which makes playing with this subsystem possible.

</comment><comment><USER7> Vim is _extremely_ regular, as well as extremely powerful.

The thing that makes me rage when I'm forced to use an editor other than vim is "Ctrl-RightArrow / Ctrl-LeftArrow".

Will it stop on spaces? Will it stop on commas? Will it stop on parenthesis? If I hit Ctrl-Right->Right->Right then Ctrl-Left->Left->Left do I end up back where I started?

I cannot fathom how people blindly accept that their editing movement operations are inconsistent. In case it's not clear, by default in windows most text editor areas do not "properly" return you to where you started with a bunch of Ctrl-Right/Ctrl-Left pairs (although I can't tell you at the moment what characters actually trigger this issue).

Finally, by being a "modal" editor... when you want to type letters and stuff, getting into insert mode is an extremely small price to pay in comparison to having 26 function keys under your fingertips at all times.

"""Vi has the advantage that most ordinary keys are connected to some kind of command for positioning, altering text, searching and so forth, either singly or in key combinations. Many commands can be touch typed without the use of ⇧ Shift,Ctrl or Alt. Other types of editors generally require the user to move their hands from the home row when touch typing:"""

...the idea being that when you're actively typing, vim is just as crappy of a text editor as anything else (notepad, bbedit, etc.) but when you're not typing you've got at least 26 letters which all do something, then 26 more because you can type shift.

q == record macro, w == move by word, e == end of word, r == replace character, etc, etc, etc. (don't make me type them all out, we'll be here a while! ;-)

<comment><AUTHOR> > I cannot fathom how people blindly accept that their editing movement > operations are inconsistent.

That can be a problem if you have to jump from platform to platform or work with IDE's that implement things in vastly different ways.

I jump between Windows and Mac all the time and for the longest time the Mac keyboard was infuriating. My solution was to re-map it to match, as much as possible, what I was used to. That may very well be the case with vim advocates. To be clear, this isn't about one or the other approach being better by any measure of the work. It's simply that one tends to prefer that which is familiar. That's just the way every person is wired. I've seen this across disciplines that have nothing whatsoever to do with programming. Resistance to change is a strong force. We tend to want to stay with what we know and reject change at a visceral level. And that's OK.

Your point are probably valid. I'll take the time to explore over the weekend. Thanks for taking the time to share your insights.

</comment></comment><comment><USER8> recently i learned that some developer successfully ported vim to windows 64 bit. i was mighty glad, installed it on a windows 8 machine and started to use vim right away, simply because dos's edit command doesn't provide features similar to vim.

i decided to write here how i use vim in no particular preference:

vim's J keystroke (that joins the line in succession with the one you're on) is the most frequent reason i use vim on whatever platform.

next, s/this/that/g search and replace is quick for regex based string replacements

next, vim -d file1 file2 visual difference is pretty great in console or in the gui mode (gvim)

next, on a unix system if you're dealing with C sources for a big project, ctags allows vim to provide the feature where you press CTRL-] and it takes you to the definition of that symbol. This is similar to other editor's right click and 'go to definition' context menu.

i'm not trying to sell vim to you or readers of HN; i'm simply advising to read :help in vim to the best of your abilities the same way you would read about other editor's help pages/cheat sheets and the sort to determine value for yourself. i do agree that examples sometimes enable you to associate with one or the other editor; i dislike using vim for editing all sorts of files. i use vim for things i can quickly get done in it, using other tools for whatever they're good at, if that makes sense.

<comment><AUTHOR> >recently i learned that some developer successfully ported vim to windows 64 bit.

Do you have a link to the port?

<comment><AUTHOR> found it.

</comment></comment></comment><comment><USER9> how about just don't use vim at all. nobody is forcing you to.

use whatever you like and works for your workflow.

<comment><USER10> Ah, but where is the flamewar in that?

<comment><USER9> because you can't have a vi vs $EDITOR flamewar if emacs isn't mentioned. duh..</snark>

</comment></comment></comment><comment><USER11> Well, as someone who's in the middle of writing his own blogging platform specifically so I can use Vim to write my posts...

The important thing that Vim does for me is to reduce to an absolute minimum the amount of keypresses it takes to write the code I want.

Simple example: It's a common practice when people are putting in blocks of comments to put in an eighty-character line of hashes to delineate it - something I'm sure every coder has seen. And it's not hard to just hold down the hash key until it's reached the end of the line. But it's far quicker and more reliable in vim: 80i#<ESC>

Say I'm editing code near the bottom of a screenful of text. I want to see a couple of lines that are just off the top of the screen. In most editors you'd hold down the "up" key until your cursor reached the top of the page, keep going until the lines you wanted were on show, then hold "down" until you got back to where you started.

In vim, Ctrl-Y a couple of times and you're done, without losing your place - your cursor stays in the current position, on the current line.

The regex-capable search + find&replace is invaluable - Earlier today I had to generate >100 tests based on information spread through multiple spreadsheet tabs. This would have been hours of work doing point&click copy-pasting, it was done in a few minutes courtesy of a couple of regexes.

Moving blocks of code around when refactoring is effortless: di} to delete all the code in the current JS function and copy it to the buffer, move to where you want the code to be, 'p' to put it in its new home.

The "snippets" plugin giving TextMate-style functionality is very useful, a big plus for vim's ability to be programmed, which I also use extensively. For example, we often need to look at information stored by our web application in a database. We used to have to either access it via the DB or use the web app itself to display a poorly-formatted static text output. I created a Vim command that retrieves the data, orders it, formats it, syntax hilights it, and makes it far easier to navigate & search.

I've used IDEs, I've used other editors, and Vim is simply better than all of them. IDEs in particular spend more time getting in the way than they do being useful. Vim is the closest thing there is to being able to take the code I have in my head and dump it straight into a computer.

And given the number of studies that show that a single interruption to a coder can result in a half-hour delay whilst he rebuilds his mental stack, that makes Vim a tool that can save you hours of productive time every single week.

<comment><AUTHOR> One of the seemingly common threads I am seeing is that having vim available across platforms is an advantage to some. That certainly has value.

I can't really comment on the rest of your excellent post until I try some of these things out. I intend to spend some time with vim this weekend, try out some of the ideas presented in this thread and see what I can learn.

I can comment on this: "And given the number of studies that show that a single interruption to a coder can result in a half-hour delay whilst he rebuilds his mental stack, that makes Vim a tool that can save you hours of productive time every single week."

I've been programming since I was ten years old. I have well over twenty years of experience in the field, across multiple platforms, tools and languages. I started out with machine language. Not assembler, actually typing in hex instruction codes into a keypad. Back then, I used that approach a number of times to bootstrap a Forth system onto a newly built computer board (something like a 6502 board). One of the first things you do after that is write an editor (in Forth) so you can start moving faster.

I have to say that in all of this time I have never had an editor get in the way of the programming task to such an extent that it can be considered an interruption. Interruptions that disrupt the mental stack you refer to are very real and they suck, but, in my experience, the text editor is never the issue.

Again, thanks for your valuable input. I'll spend some time absorbing it over the weekend. I need to get a project out first. Damn priorities!

</comment></comment><comment><USER4> Three things gave a background to my decision to start learning Vim:

* A nagging desire to drop Mac OS X in favor of Linux and, therefore, the necessity to find an alternative to TextMate. * TextMate's learning curve is very flat and very short. After years of heavy usage, I was bored. * I've seen a couple of "magic" Vim screencasts that left me drooling like an idiot.

Because of the first point, I've spent a significant portion of 2009 trying out all the Linux/cross-platform editors/IDEs I could find: Gedit, Geany, Kate, Scribes, Redcar, Emacs, Vim, Eclipse, Komodo, IntelliJ IDEA… I've tried them all. I wanted completion (even basic), some kind of snippet system, themeability, fast navigation… and all of it was available in one form or the other in most of those editors/IDEs.

Because of the second point, the over all design of the editor, the steepness of its learning curve and all sorts of subjective details (keyboard friendlyness, scriptability, active community…) were also weighted when trying out all those editors/IDEs.

Because of the second and third point, I was very curious about Vim. It was the most "special", advanced users seemed to be able to fly and it was cross- platform. The String Calculator Kata In Python screencast (<http://vimeo.com/8569257>) by Gary Bernhardt, despite showing an heavily customized Vim, was mesmerizing. It's very subjective, I know, but I felt that Vim was just my kind of "special".

But yeah, it was really "special". All my attempts to use it had been very frustrating and I was about to settle on Eclipse.

Then came the right occasion: I had a totally empty week before me. Nothing to do at work, my kid was at his grandparents'… So I decided to give Vim a serious try.

I decided to start right at the beginning: $ vimtutor, which I did a good twenty times. After each session, I opened an old html or js or txt file and tried to apply my new knowledge. Of course the first day or two were very unproductive and frustrating but I had a lot of time and no obligation of prductivity so kept trying. After a week, I knew all the basic commands but I was definetely not ready. When, finally, I had some real work to do I naturally turned to my trusty old TextMate while I spent a couple of hours every night watching screencasts, reading tutorials, practicing and, above all, doing the biggest rookie mistake: trying to turn Vim into a TextMate clone.

I installed lots and lots of plugins, filled my .vimrc with hundreds of lines I didn't understand copypasted from people I didn't know and tried to map 1 to 1 Vim's and Textmate's keyboard shortcuts. After a few weeks at this rate, my Vim was an horrible and slow mess. It took a lamentably failed attempt to use Vim on a VPS for me to actually accept my failure and decide to go back to square one.

I deleted the content of my .vimrc and of my .vim/ and tried $ vimtutor again. I was a new "student": more open minded, more willing to learn. It was only at that time that I found myself suddenly blown away by the elegance of Vim's design and, yes, the SIMPLICITY of its language. Before that, aJc/ and Co. didn't really make much sense. After that, it took one month or so for me to finally make the switch after "solidifying" my newfound zen.

For me, it was mostly a question of design. And of being in the right state of mind.

So no, I won't prove you why Vim is better than X. That would be pointless because a. I don't care about you or the editor you use and b. I'm perfectly satisfied with the choice I made and I don't feel the need to convince myself through others that I was right.

Use whatever tool you prefer/know/need/can afford.

Instead I will show you a few things I THINK are cool.

        yy5p to duplicate the current line 5 times

        :g/pattern/norm @m to apply macro m to all lines matching "pattern"

        :'<,'>norm yss
 to turn a bunch of visually selected lines into list items (the '<','> is added for you by Vim and the yss part is provided by Surround.vim)

        :ts <tab> to select tags from a <tab>-navigable list

        <C-x><C-l> (mapped to ,= here) to complete lines

        <C-x><C-f> (mapped to ,: here) to complete filepaths

        dat to remove a whole html tag

        ci( to delete the content of parenthesis and enter insert mode

        R to enter replace mode

        <C-a> and <C-x> to increment/decrement a number (with an optional count)

        <C-r>= in insert mode to insert the result of an expression

        vatat to select a whole table row from within one of its cells

        :s/foo/bar the best search/replace mechanism I've ever used

        <C-o> and <C-i> to jump through the jumplist

        ma 'a to create a mark and jump to it. that's pure beauty.

        /?{}wWeEbBfFtT and all the other motions and text-objects that make moving around so horrible in every other editor

        and so on…

I understand that most if not all of it can be achieved in most code editors but, in my opinion, none allows me to do all that in such an elegant and natural manner.

<comment><AUTHOR> This is, by far, the most intelligent and useful post I've seen in my attempt to get some answers and understand. I am as hard-headed and as anyone else. I am also as understanding as anyone else. Change only happens out of necessity and curiosity. I am curious to learn, otherwise I wouldn't spend all this time and take the abuse of some who choose to be total aholes and not take the kind of approach you have taken to at least help someone --not just me, but anyone who may have touched vi and failed-- understand where the strengths may be.

Based on your story it is clear that vi is not a weekend project. I am interested in learning so that I can have an opinion that is based on more than the "fuck this" reaction I have had over the last twenty years every time I've touched it on many platforms.

I am also impressed by your process and dedication to exploring the space. One can only respect that approach and the conclusion you reached. I too have used a ton of editors. For some reason I've never had the patience to really get into vi. But now I will. Because I owe it to myself to know what everyone is so impressed with. What happens from there is a different matter.

Also, thanks for not resorting to insults or calling me a troll as others who never seem to contribute anything of value have done.

Thanks again.

BTW, if you have more screencast links feel free to share them. I'd appreciate it and I am sure that others who are reading this and might have had the same level of rejection of vi would too.

<comment><USER4> HTH.

There are many screencasts available on the net, paid and free. The best ones happen to be free.

Drew Neil's screencasts at <http://vimcasts.org/> are laser-cut, focused and short. Each video is about one or two specific use-case so you don't get overwhelmed by dozens of "cryptic" commands. The production value is amazing (not in the Michael Bay meaning of the word).

Derek Wyatt's Vim Tutorial Videos at <http://www.derekwyatt.org/vim/vim- tutorial-videos/> are the opposite: messy, lighthearted, funny, hysterical and packed with gold nuggets. You'll probably need to watch them a few times if you really want to extract practical knowledge.

Peepcode has three Vim-related screencasts but I think they are really bad, specially the "Play-by-Play" one.

Yes. Vim is not a weekend project. There's no way you can reach your previous level of productivity in one weekend or two.

May I suggest you, based on my own experience, to not install any plugin and not copy someone else .vimrc? Play around with $ vimtutor, exercise on random files (not on serious stuff), read the help (:help<Enter>), watch a bunch of screencasts to get the feel of what it's all about.

After the weekend is over you will either be craving for more or be disgusted.

Consider both outcomes as a succes and move on to the next step.

<comment><AUTHOR> Will do. I am planning on hitting-up vimtutor later today after the kids' Saturday activities are over. Fishing trip tomorrow is a priority, so vim will have to take a low priority to real life but I might manage to mess with it at night. Once again, thanks for your input.

<comment><USER4> So? How did it go?</comment></comment></comment></comment></comment>


Apple,Microsoft and Google hold 23% of all U.S. corporate cash - <AUTHOR> http://www.geekwire.com/2016/apple-microsoft-google-hold-nearly-quarter-u-s-corporate-cash/ <comment><USER2> At least Google acts somewhat optimistic (trying to fund as many interesting things as possible). Apple and Microsoft are the kings of surgically ensuring positive contribution margin to the exclusion of voyaging into the unknown. I have never run a $x00B company to know what runs through your head, but I find it strange that this cash is not plowed into new ideas.

<comment><USER3> No worthwhile ideas to pursue. Microsoft Research does a lot of idea pursuing nevertheless.

<comment><USER2> Lately especially. It is exciting.</comment></comment></comment>


Tim Cook 'optimistic' that China has the coronavirus situation under control - <AUTHOR> https://www.cnbc.com/2020/02/28/apple-ceo-cook-optimistic-china-has-the-coronavirus-under-control.html <comment><AUTHOR> This was four days ago, but I'm submitting as I can't seem to square this with the reality I'm seeing in the Bay.

<comment><USER2> He's saying that China has it under control, not that we do.

<comment><AUTHOR> Viruses don't respect sovereignty.

<comment><USER2> Do you not believe that a situation can be worse in one place than another?

<comment><AUTHOR> Not when it comes to pandemics in 2020.

</comment></comment></comment></comment></comment><comment><USER3> "Rich man believes propaganda."</comment>


Ask HN - How can we change the blogs? - <AUTHOR>

Blogs have remained literally same for years now. And blogs are the primary source of quality content. But I find that many people have left writing blog just because there is no inspiration writing there. I have 2K people on my social networks but literally no one on my blogs - Wordpress or Blogspot. Blogs are only changing by templates not the idea. <comment><AUTHOR> Yes indeed it was. But my point is most of these blogging platforms are easing the way we post content. They have to be closely tied together with my social network

</comment><comment><AUTHOR> No. That doesn't work. And that's why most of my colleagues are moving to Facebook notes than writing a blog post. Integration should be seamless.

</comment><comment><USER2> Is not sharing the link of the blog post on your networks serves the purpose.

</comment><comment><USER2> Posterous was doing a good job before it was acquired by Twitter.</comment>


The Case Against Galileo - <AUTHOR> https://mathwithbaddrawings.com/2019/03/20/the-historical-evidence-that-galileo-was-a-hack/ <comment><USER2> As supplementary reading material (more to do with Galileo's character rather than competence), I highly recommend the series of articles [1] entitled "The Great Ptolemaic Smackdown", which provides a great deal of historical, political and scientific context for Galileo's actions and legacy.

[1]: [http://tofspot.blogspot.com/2013/08/the-great-ptolemaic- smac...](http://tofspot.blogspot.com/2013/08/the-great-ptolemaic- smackdown.html)

<comment><AUTHOR> Interesting, thank you.

</comment></comment><comment><USER3> Will this be the next holistic take on a legendary mind that spurs an overreaction in popular culture due to the novelty of being able to objectively criticise a giant, a la Edison? It's even got Aristotle in Tesla's place as the underappreciated adjacent figure.

<comment><USER4> Columbus, Edison, and now Galileo. Turns out a lot of icons of Enlightenment don't survive the light of historical nuance.

That's not a problem as long as we use that opportunity to give some forgotten heroes a bit more limelight.

</comment></comment><comment><USER5> Huh. It'll be interesting to compare this to ThonyC on the topic. [https://duckduckgo.com/?q=galileo+site%3Athonyc.wordpress.co...](https://duckduckgo.com/?q=galileo+site%3Athonyc.wordpress.com%2F&t=ffab&ia=web)</comment>


Inventing Fun: A History of Wham-O - <AUTHOR> http://mentalfloss.com/article/67809/men-who-invented-fun-history-wham-o <comment><USER2> The history page on Wham-O is gone but thanks to archive.org I could still read a bit more about that car getting crushed by a giant bouncy ball.

[https://web.archive.org/web/20100726130417/http://www.wham-o...](https://web.archive.org/web/20100726130417/http://www.wham-o.com:80/history.html)

</comment><comment><USER3> This engaging story also has an important reminder: startup work can be silly and fun

<comment><USER4> Then when the founders are no longer there and are bought out by a corporation the stopped discovering successful new products.

<comment><USER5> It was more like the market tastes changed to products that Wham-O wasn't interested in making (video game consoles, electronics, etc). You can only make fad toys for so long until you run out of ideas.

<comment><USER4> Fidget Spinners?

</comment></comment></comment></comment><comment><USER6> You know, like for kids!

</comment><comment><USER7> "Once perfected, the berserk Super Ball ... The ball became so popular that football's biggest game, the Super Bowl, was a pun on it".

Color me skeptical.

<comment><USER8> The article didn't make that up, it's a well-known thing. I mean, I guess Lamar Hunt could have been lying, but he's definitely the first one to use the name "Super Bowl" and he always said he named it after the Super Ball.

Here, it's on Wikipedia because of course it is:

 _Lamar Hunt, owner of the AFL 's Kansas City Chiefs, first used the term "Super Bowl" to refer to the NFL-AFL championship game in the merger meetings. Hunt later said the name was likely in his head because his children had been playing with a Super Ball toy; a vintage example of the ball is on display at the Pro Football Hall of Fame in Canton, Ohio. In a July 25, 1966, letter to NFL commissioner Pete Rozelle, Hunt wrote, "I have kiddingly called it the 'Super Bowl,' which obviously can be improved upon."_

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

</comment></comment><comment><USER9> > By the end of the 1970s, ... kids were turning less to outdoor play and more > toward higher-priced electronic offerings...

A sad trend.

</comment><comment><USER10> What would be the process of stating a toy company today?

<comment><USER11> There are tons of new toy companies started every day; just visit the American International Toy Fair in New York next February to get an idea of what's happening and what it takes.

Note the toy business can be quite painful (as well as fun). There are many regulations in regards to safety (ranging from paint toxicity and bits that don't fall off and cause choking all the way up to privacy protection for kids under 13). Margins are incredibly low and sales prices have to be low because kids go through a lot of toys and are finicky (we all know the joke about the kid preferring the packaging to the toy itself, which is a real phenomenon).

You can see this in the market caps of the two industry "giants", Hasbro (12B, 1.5X revenue) and Mattel (5.5B, 1X revenue) which are not large companies.

Still, it can be fun. I did some work with Hasbro and know some Mattel folks: they are all "ordinary" business folks (hard nosed about COGS and marketing) but all seemed to have fun with the product line and really enjoy it. More, frankly, than some I know toiling in the bowels of FB or GOOG, much less Oracle.

<comment><USER10> Wow thanks for the write up? Maybe it's easier to get a patent and try to license it?

<comment><USER11> Because of the low margins, patent licenses are likely to be quite low (though David Hampton, who invented Furby, did quite well -- but he worked for them for quite a long while as well).

The Skylanders founders did well too, but they had a functioning business which they sold to Activision.

In general the reason there are so many people at the toy fair with toy products is because the licensing margins are so low. In fact it typically runs the opposite direction (think Lego licensing other properties). I do have a friend who's doing the whole deal from the ground up (building a franchise from the ground up) but it's hard yakka and he isn't airborne yet.</comment></comment></comment></comment>


Higher-order functions in Go - <AUTHOR> http://www.tideland.biz/articles/coding-in-go/higher-order-functions <comment><USER2> Man, _every_ time I see an article about this language, I think, "Oh! _Oh!_ Someone has cleverly encoded a programming language into a computer-readable representation of a Go board. I _love_ that game." Then it's this _ferschlugginer_ Google _bupkus_! _Every time_!</comment>


Spire – next generation wearable for activity, breath and mind - <AUTHOR> http://spire.io

<comment><USER2> I think it's a bit bulky to wear behind a belt like that, but it's a cool idea to track breathing patterns.</comment>


IoT Anxieties in McKinsey-GSA Study - <AUTHOR> http://www.eetimes.com/author.asp?section_id=36&doc_id=1326597

<comment><USER2> I don't want my Things to be on the Internet. I am so adamant about that that I won't even apply to IoT jobs.

While the common concern is that they have poor security, that's not my concern. What I don't want is for my refrigerator to let my grocery store know that I'm out of milk.

When I'm out of milk, I'll go to the grocery store to pick some up myself - then pay cash.

<comment><USER3> Then don't by a "smart refrigerator" or connect your refrigerator to the internet. IoT isn't being forced on people, people are embracing IoT.

<comment><USER4> You basically can't buy a TV these days and NOT connect it to the Internet, as the buggy firmware isn't fixed until long after is sold. Granted, you can use a usb stick and patch it yourself every now and then, much like your car is updated at service (but how long until cars are updated, and hacked, remotely?)

<comment><USER5> Easy solution: don't configure wifi on the TV.

<comment><USER6> That is harder that it sounds in many places, because you don't get to (easily) control the radio signals that cross your house. Windows set a (very bad) precedent a long time ago that devices auto-connect to new networks, so your TV could be using your neighbor's wifi automatically.

That's just the short term problem while 802.11 chips are the cheap device preferred by hardware manufacturers. This will get a _lot_ harder to block when the LTE/WiMAX/HSPA/etc chips become cheaper and the device manufacturers start negotiating deals with the network owners for cheap low-priority batch- job rates. Your TV can store what you've been watching as long as necessary, and upload whenever the cellular network is quiet. Precedent for embedding a cellular radio already exists with "onstar".

I seriously doubt anybody checks that their electronic devices aren't uploading personal data at 3:27AM once or twice a week.

</comment></comment></comment></comment></comment><comment><USER7> Annnnd here we go into the Trough of Disillusionment:

[http://en.wikipedia.org/wiki/Hype_cycle](http://en.wikipedia.org/wiki/Hype_cycle)

I'm doing a lot of IoT work in the B2B area, where I think these things are going to pick up a lot of traction before the consumer stuff really takes off.

Part of the problem I see is that the chipmakers, at least the ones still standing after Apple and Samsung took the application processor market away from them, are trying to reassure their investors that IoT is a the new revenue stream they all need to look forward to. Looks like they're finally getting that reality check they needed.

The problem is that IoT isn't just a part in a BOM. It's an entire infrastructure that needs to be in place to support it. Even on the B2B side, I can put a wifi chip into a backend technology demonstration and convince the customer they need it...until I ask them what their plans are to host the data and develop the front-ends. Complete blank stares. There are too many parties involved to design this stuff front to back. Perhaps the first company to sell the chip AND the hosting service as one unified package will make headway here.

This still will mature and prosper...in time. Just not yet.

<comment><USER8> That's actually been happening for a while. Not at the chip level, but businesses providing hosting, analytics services and hardware modules (i.e., a "box" with some I/O and WiFi) as a one-stop shop. Besides Bosch (who entered the business by an acquisition), I can't think of names off the top of my head, but they are out there. Axeda was a big player in the hosting for remote monitoring arena about 10 years ago, but I don't think they ever sold hardware.

More interesting is that I'm already hearing about the companies that are dropping offerings: no longer selling hardware, but just doing hosting and analytics. I don't know if this is due to the hype dying off (doubt it) or just discovering it's more profitable to not have to inventory & support hardware.

And I am also seriously considering exactly this. Have the experience, have (most of) the skillset. Just need to figure out who the customers will be.

</comment></comment><comment><USER9> I haven't read the article, since the page fails for some reason (getting a contact support message).

Despite that, I'm personally quite excited about IoT. It doesn't just have huge potential in bigger manufactoring processes and places where monitoring and decision making can be automated to a large degree, but also personal value in home automation.

I'm currently writing my thesis which focuses on reactive events, in the sense that devices can subscribe to specific events and they also post their own.

For example: the light in the entrance of your house is connected and will transmit the event,

        {device: 'Light', location: 'Entrance', value: 'On'}

which your thermostat in your living room has subscribed to. It will then receive this event and based on the value, in this instance 'On', change the room temperature by either raising or decreasing it.

I'm very fond of automating things on my computer, so bringing stuff like this into the real world, in an easy way is one of the goals. After my thesis is done I will open-source it, and it'll hopefully be something that people can actually use.

</comment><comment><USER10> It's funny to me when people try to predict where either the success or failure of a whole concept will come from and when it is supposed to happen. Nobody really knows what IoT is yet.

The exact same thing happened in the early days of the web. People thought search wasn't a big deal; they thought people would buy ice online; they thought that the web should be completely overhauled and replaced with binary executables that we could all browse. When it all collapsed the first time, a lot of people thought that the promise of the web was over.

IoT is in roughly the same place that the web was in the early 90s. I'm hesitant to say this is a trough of disappointment, because I don't think that enough of the key technologies have emerged yet that are going to make connected things an actual convenience to people.

I think the problems that skeptics see actually could be problems, but it really is to early too tell. The problems they see could be problems or they could simply be gaps that haven't been filled yet.

</comment><comment><USER11> ""As the McKinsey-GSA report points out, a major challenge is the security and privacy of user data.""

That, I think, is the heart of the issue. I am working on a new book ("Power Java", with a similar version "Power Clojure") that has a section on IoT. I mention security as a problem, but don't much address the security issues.

The problem is that the model for IoT is discovery of nearby services. If a user has to stop and manually authenticate, it spoils things. Perhaps devices could have unique security tokens and you could verify other devices once.

</comment><comment><USER12> funny when people with clearly no idea about standardization reurgitate some points from a high-level business consultancy who has also no idea about technology standardizations. In all my years sitting in WG's at ETSI and ITU-T I have not once met a delegate from McKinsey so how do people find them a credible source of info and authority to speak on the subject?

For a start ETSI deleivered a pretty complete standard on M2M: [http://www.etsi.org/deliver/etsi_ts/102600_102699/102690/02....](http://www.etsi.org/deliver/etsi_ts/102600_102699/102690/02.01.01_60/ts_102690v020101p.pdf)

yes this is work in progress but so is anything the W3C does.

If that is not enough then below some further reading if you think standardization is still incomplete. IMO this article along with the original report is utter bullcrap because it confuses lack of standards with "unwillingness to play by these standards" (mostly zigbee):

[1] ETSI TS 102 921: "Machine-to-Machine communications (M2M); mIa, dIa and mId interfaces".

[2] IETF RFC 6267: "MIKEY-IBAKE: Identity-Based Authenticated Key Exchange (IBAKE) Mode of Key Distribution in Multimedia Internet KEYing (MIKEY)".

[3] IETF RFC Draft: "An EAP Authentication Method Based on Identity-Based Authenticated Key Exchange". [4] IETF RFC Draft: "IBAKE: Identity-Based Authenticated Key Exchange".

[5] ETSI TS 124 109: "Universal Mobile Telecommunications System (UMTS); LTE; Bootstrapping interface (Ub) and network application function interface (Ua); Protocol details (3GPP TS 24.109)".

[6] OMA-AD-DM-V1-3: "Device Management Architecture", Version 1.3.

[7] OMA-TS-DM-Notification-V1-3: "OMA Device Management Notification Initiated Session", Version 1.3.

[8] OMA-TS-DM-Protocol-V1-3: "OMA Device Management Protocol", Version 1.3.

[9] OMA-TS-DM-Sessionless-V1-3: "OMA Device Management Sessionless Message", Version 1.3.

[10] Broadband Forum TR-069: "CPE WAN Management Protocol" Version 1.3, Issue: 1 Amendment 4. Issue Date: July 2011. NOTE: Available at [http://www.broadband- forum.org/technical/download/TR-069_Ame...](http://www.broadband- forum.org/technical/download/TR-069_Amendment-4.pdf)

[11] OMA-TS-MLP-V3-3-20110719-A: "Mobile Location Protocol", Version 3.3.

[12] ETSI TS 123 271: "Digital cellular telecommunications system (Phase 2+); Universal Mobile Telecommunications System (UMTS); LTE; Functional stage 2 description of Location Services (LCS) (3GPP TS 23.271)".

[13] OMA-TS-DM-StdObj-V1-3-20101207-C: "OMA Device Management Standardized Objects", Draft Version 1.3.

[14] Broadband Forum TR-106: "Data Model Template for TR-069-Enabled Devices", Issue: 1 Amendment 6".

[15] OMA-TS-DM-TND-V1-3: "OMA Device Management Tree and Description", Version 1.3.

[16] OMA-TS-DCMO-V1-0: "Device Capability Management Object", Version 1.0.

[17] Broadband Forum TR-157: "Component Objects for CWMP, Issue: 1 Amendment 6".

[18] OMA-TS-DiagMonFunctions-1-0: "DiagMon Functions Supplemental Specification", Version 1.0.

[19] Broadband Forum TR-181: "Device Data Model for TR-069", Issue 2 Amendment 4.

[20] OMA-TS-LAWMO-V1-0: "Lock and Wipe Management Object", Version 1.0.

[21] OMA-TS-DiagMonTrapMOFrame-V1-2: "Diagnostics and Monitoring Trap Framework Management Object", Version 1.2.

[22] OMA-TS-DiagMonTrapEvents-V1-2: "Diagnostics and Monitoring Trap Events Specifications", Version 1.2.

[23] OMA-TS-DiagMonMO-V1-0: "Diagnostics and Monitoring Management Object", Version 1.0.

[24] OMA-TS-DM-FUMO-V1-0: "Firmware Update Management Object", Version 1.0.

[25] OMA-TS-DM-SCOMO-V1-0: "Software Component Management Object", Version 1.0.

[26] OMA-TS-GwMO-V1-0: "Gateway Management Object Technical Specification", Version 1.0.

[27] ETSI TS 102 671 (V9.0.0): "Smart Cards; Machine to Machine UICC; Physical and logical characteristics (Release 9)".

[28] ETSI TS 102 310 (V9.0.0): "Smart Cards; Extensible Authentication Protocol support in the UICC (Release 8)".

[29] ETSI TS 133 220: "Digital cellular telecommunications system (Phase 2+); Universal Mobile Telecommunications System (UMTS); LTE; Generic Authentication Architecture (GAA); Generic Bootstrapping Architecture (GBA) (3GPP TS 33.220)".

[30] ETSI TS 187 003 (V2.3.2): "Telecommunications and Internet Converged Services and Protocols for Advanced Networking (TISPAN); NGN Security; Security Architecture".

[31] ETSI TS 102 484: "Smart Cards; Secure channel between a UICC and an end- point terminal (Release 9)".

[32] IETF RFC 2046: "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types".

[33] IETF RFC 2560: "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP".

[34] IETF RFC 2663: "IP Network Address Translator (NAT) Terminology and Considerations".

[35] IETF RFC 2716: "PPP EAP TLS Authentication Protocol".

[36] IETF RFC 4366: "Transport Layer Security (TLS) Extensions".

[37] IETF RFC 3748: "Extensible Authentication Protocol (EAP)".

[38] IETF RFC 3986: "Uniform Resource Identifier (URI): Generic Syntax".

[39] IETF RFC 4186: "Extensible Authentication Protocol Method for Global System for Mobile Communications (GSM) Subscriber Identity Modules (EAP-SIM)".

[40] IETF RFC 4187: "Extensible Authentication Protocol Method for 3rd Generation Authentication and Key Agreement (EAP-AKA)".

[41] IETF RFC 4346: "The Transport Layer Security (TLS) Protocol Version 1.1".

[42] IETF RFC 5216: "The EAP-TLS Authentication Protocol".

[43] IETF RFC 5246: "The Transport Layer Security (TLS) Protocol Version 1.2".

[44] IETF RFC 6066: "Transport Layer Security (TLS) Extensions: Extension Definitions".</comment>