Airbnb raises $1B at $31B valuation, became profitable in 2016 - <AUTHOR> http://www.cnbc.com/2017/03/09/airbnb-closes-1-billion-round-31-billion-valuation-profitable.html <comment><USER2> I used to use airbnb quite often (as a traveler), but I have to say it's lost its appeal for me. First, it's really not much cheaper than a hotel in most cases (some cases more expensive). Second, it's a hassle when you're on vacation to have to arrange in advance a specific time to pick up the keys to the place. Then, what happens if you happen to lose the keys (happened to me once)? What happens if it's in the middle of the night in a foreign country? This could be a nightmare. On top of that, you're expected to leave the apartment like you never stayed there or face bad reviews (even with a $100+ cleaning fee)! Seriously, one time I got stuck with a terrible review because I left a dirty pan in the sink (had to rush to the airport, I figured the $100 cleaning fee would cover what minor things I had left behind, but guess not).

So now I've pretty much gone back to hotels. You can come any time of day or night, not have to worry at all about losing keys, and you can leave the place a raging mess if you have to (though I am usually a very clean person). Airbnb makes the whole travel experience far more stressful for me.

<comment><USER3> AirBnB is a now usually a terrible deal for guests and increases resident rental shortages/costs by illegally converting residential units into commercial rentals.

When they started, they were great for guests. Now there's an abundance of guests and a shortage of hosts, so the system is strongly tilted in favor of hosts.

\- Hosts always get rebuttals on reviews

\- Guests cannot comment when their stay is cancelled before arrival

\- Guest reviews are public which discourages honest feedback

\- Dealing with a problem is nearly impossible (how do I take a picture of the fact that my 'apartment' is a hotel room? And why can't I talk to anyone?)

\- AirBnB's compensation for a failed stay is a 10% re-booking bonus which doesn't begin to cover the additional cost, time, and stress of having to find a new place at the last minute at 10pm because your flight was 6 hours delayed and the one you booked with great reviews was misrepresented

In some markets AirBnB can be the last/best option, but I do my best to avoid financially supporting them if there is a reasonable alternative.

[https://www.google.ca/search?q=airbnb+isn't+worth+it+anymore](https://www.google.ca/search?q=airbnb+isn't+worth+it+anymore)

<comment><USER4> > Guests cannot comment when their stay is cancelled before arrival

It's automatically posted as a review on your behalf.

> Dealing with a problem is nearly impossible (how do I take a picture of the > fact that my 'apartment' is a hotel room? And why can't I talk to anyone?)

By taking a picture with your phone and contacting support?

There's reasons to dislike Airbnb, but these surely aren't some of them. I've had ~20 stays at Airbnb and never had any of these issues.

<comment><USER5> ah yes, the time-honored "My experiences don't match yours so clearly yours are invalid" argument.

<comment><USER4> Your "no message when host cancels" clearly shows that you have no experience at all, so why talk about it?

<comment><USER5> My what? I think you think I'm someone else.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm not surprised to see Airbnb became profitable. They've expanded everywhere. I nomad around and always use Airbnb, I've booked places on several continents.

However, I'm definitely feeling the effects of their growing pains. For example, many people have bought places to only rent on Airbnb full-time. Most of these people suck at being an hotelier. It's clear people get lazy and are just trying to make money.

Think about how many hotels you've stayed at that were less than stellar? It's hard to have a good hotel with full-time staff. It's much harder when it's just you on the side, renting some place. I've been to many horrible Airbnb's that I had to checkout of early, and go find a new place last minute.

Unless, they fix this and get more people to review honestly. I think they're going to run into a lot of problems.

<comment><USER7> > Unless, they fix this and get more people to review honestly. I think > they're going to run into a lot of problems.

I don't airBnB, but a friend who does was recently berated by a host after leaving a 4-star review; that host claimed (don't know how true this is) that many hosts will refuse to rent to you again if you leave anything but a 5-star review.

That and other things I've seen and heard about airBnB reviews suggest to me that there a structural problems that are likely to make it problematic for them to become honest and useful in general, even on top of the usual problems in numeric/star rated reviews that come from cultural differences in how people rate when given such a scale even when the actual substantive opinion is the same.

<comment><USER8> The whole system of review curation that infests online markets is a problem waiting to be solved. Right now we basically have to parse reviews on the 4.4-5.0 scale because anything outside that is meaningless.

It's amazing to go read a novel rated 3 stars (because it operates outside this loop) and find it transcendently good.

<comment><USER9> Instead of asking customers to give numeric star ratings, perhaps a better option would be a short list of Yes / No / Unsure questions. Were there clean sheets on the bed? Were there any cockroaches? Did the appliances work? Etc. Such questions are more objective and less prone to inflation.

<comment><USER10> Booking.com does it, btw. And I strongly prefer it.

<comment><USER11> Surprised there is only one mention of Booking.com here. It is an indispensable tool for booking my vacations. The reviews are very useful and a lot more accurate than things like yelp. I have glanced at other websites, but nothing gives me the reassurance of the legitimacy of the reviews that booking.com does.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> A shame that they didn't raise this money through an IPO. I'm afraid of how long unicorns are staying private: it's a big bummer for their employees and early investors. It'll be a tough sell for early employees of the next batch of unicorns if Uber, Airbnb, Palantir, Dropbox, etc. stay private for 10-15 years or more!

<comment><USER12> I'm not saying this is the case with this round in particular, but it's not unheard of for early employees to take money off the table in a round like this

<comment><USER13> There was a very "insider baseball" moment in 2011 with regards to AirBNB and a well known investor "discussing" taking money off the table. Note, the investor was basically saying that if the founders get some liquidity, you should offer the same to employees. I will never forget how much that raise my esteem him. [0]

So yes, if they were willing to do it in 2011, I am sure that they are doing it in this round too.

[0] - [https://techcrunch.com/2011/10/01/chamath-palihapitiya- airbn...](https://techcrunch.com/2011/10/01/chamath-palihapitiya-airbnb- liquidity-everyone/)

<comment><USER14> To me it sounds like an argument the investor would make to leverage founders not getting equity.

Investors get paid before employees. What if airbnb had answered to him "we will do that, but also, you cannot make any money at all until employees get it, otherwise this shady way of things will harm you long term".

<comment><USER13> Well, the investor made it quite clear in his note that he wasn't disagreeing with taking money off the table:

> My basic principle on this stuff is that if you want liquidity, that's fine, > but you should make it available to everyone.

<comment><USER14> Coupling one concession to a requirement makes its harder for it to happen: "Sure, I will give you a salary raise if you can commit to working any saturday i tell you to".

Think also that the least money the founder gets off the table, the investor gets lets capital into his investment itself, he is interested in getting as much money into the business itself, not into the founders pockets.

Arent the investors preferences clear in this point? HE prefers the founder not to get money off the table, and puts a requirement on it.

Another way to put it, he recommends a course of action, but is he the one adding extra money so that course of action goes to his preference? If he is, then by all means its at least a great gesture.

Addition: and also, think of it the other way around. What if a founder told the investors "you are not getting any money unless my employees are getting money as well". Becuase thats not how the deals are structured nowadays.

</comment></comment></comment></comment></comment></comment><comment><USER15> My experience tells me Airbnb is in big trouble.

Last year around Nov, I tried to book a Lake Tahoe cabin for 2 families (1 is mine, another is a friend's) for a simple trip for our young children.

I booked via Airbnb few days in advanced. The day before driving to Tahoe, we even called Airbnb to confirm that the listing is OK. The host accepted, but didn't answer to any of our questions.

The next morning when we woke up, we packed everything, then out of bad habit, I opened up the app and checked again. I was caught on surprised that the host cancelled, just 4 hrs before our suppose arrival time. We were very shocked and pissed. I was booking for a friend's family and it was very embarrassed. I immediately contacted Airbnb support, and all they call do for me was to give me $100 back for my NEXT reservation. And they couldn't do anything about my existing. I thought they would put a penalty on Airbnb's host who cancelled on us in less than 24 hrs, but they said they don't have such policy. I was upset because I knew they had such policy for the renter. They also mentioned the best they can do is to find me the next 10 houses to book in the similar location, but cost 3x more as it is bit last minute. They did not anything else to help me.

I was very upset and went to Homeaway.com and found something immediately, even cheaper than the original reservation I had with Airbnb.

My story was a clear first-hand witness on how I believed Airbnb failed at customer service, and will be very difficult to become a successfully company.

<comment><USER16> Sorry you had that bad experience (I would be pissed too), but the logic of (you having a singular bad experience therefore company will likely die) is next to baseless.

<comment><USER17> No. The point is that there is zero protection for customers getting cancelled by the host at last minutes. This would be about the worst thing that can happen on your hard earned vacation, especially if you are traveling with families. Customers can't even leave a review! All the while there is asymmetry that customers will be punished if _they_ cancelled at last moment on host.

</comment></comment></comment><comment><USER18> We haven't had a recession in 8 years, and the postwar average time between recessions is 6 years.[1] The stock market's overall PE ratio is well above average.[2] With Box and Snap, the market demonstrated it is starving for tech IPOs -- even if a company is losing money and entirely based on a millennial fad.

So why in the name of sweet baby Jesus would investors, founders, or anyone else delay an IPO at this point? Can anyone explain it?

[1] [http://www.nber.org/cycles.html](http://www.nber.org/cycles.html) [2] [http://www.multpl.com](http://www.multpl.com)

<comment><USER19> Not an answer to your question but semi-relatedly Scott Sumner had a post this week where he predicts that recessions will be significantly rarer in the future.

[http://www.themoneyillusion.com/?p=32350](http://www.themoneyillusion.com/?p=32350)

It's interesting to think about.

<comment><USER17> These predictions are pointless. Economy is not driven by extrapolating past charts, it's driven by outlier events. The thing about outlier events is that no one can predict what they would be, except that they are bound to happen. A magnitude 9 earthquake in Northwest, fraud in big company, scandal in administration, or war with Iran - all these can totally change economic outlook.

<comment><USER19> His assertion is that the Fed is now better at controlling the money supply to more quickly respond appropriately to outlier events.

Recessions are always and everywhere a monetary phenomena.

</comment></comment></comment></comment><comment><USER20> I've definitely had mixed experiences with AirBnB. When it's genuinely someone renting a spare room on the side, it tends to be a neat experience; I had several of those traveling in Australia solo and it was a good way to get to know the area. I also had positive experiences in Rome and LA with similar arrangements.

When it's just landlords short-term renting a furnished apartment on the side, the experience tends to be subpar. The worst experience I had was in Chicago, when it was clearly a condo owner breaking the terms of the HOA for their building--they told us to say that we were 'just visiting' the occupants of the apartment, not to unlock the door if an actual resident was nearby, etc. The general feeling of "sneaking around" was unpleasant.

It's a mixed bag--the original idea of home _sharing_ is a great experience, but clearly not the most profitable aspect of their business. I wonder if they could figure out ways to support that better...

</comment><comment><USER21> The hogging of VC funds by airbnb, uber, and many other not startups is super unhealthy for the startup ecosystem. The public markets will eventually punish these companies for valuations that lack transparency. Airbnb is on the way out with their current short term renting business in most large cities. It's illegal and the quality of service is suffering dramatically. Supply side quality is on the way down. Demand side quality is terrible too. To justify their valuation they are opening up the gates to terrible customers. I get it, they may go into other markets with all this money like the long term rental business or tours business or airline flights.. maybe hotels? Reality is they are not going to be great or better at any of these things than the current companies in those markets and certainly not by any significant degree to own the market.

<comment><USER21> If you are down voting why not offer some opinion so it can be a discussion..

<comment><USER22> Upvoted but sadly you can't take YC prodigy and downvote. It's a lose-lose propositon kinda like staying in an airbnb. Say something nice about YC or don't say something at all.

<comment><USER21> Small minded to think or act like a cabal

<comment><USER22> Small mindedness sadly doesn't prevent wealth and power accumulation. Depending on your view, YC or Trump both prove this.

</comment></comment></comment></comment></comment><comment><USER23> Have their early employees been able to cash out yet or are they basically trapped into either losing their hard earned options from work done years ago or staying still more years at the company?

<comment><USER24> they can always exercise their options, buy the stocks, pay the taxes on them, and then just sit on illiquid assets until the IPO or their own deaths.

oh...it's not a very appealing prospect you say? well, hmmm, errr, awkward.

</comment></comment><comment><USER25> My AirBnB experiences have all been poor, despite staying exclusively at 4.5/5 star reviewed properties. The lack of service isn't worth the extra savings or superior hardware. Hotels are so much more comfortable due to the constant service/follow up in case anything goes wrong.

</comment><comment><USER26> I'll admit, I'm pretty amazed that AirBnB has succeeded.

I never thought that injecting even more uncertainty into travel was a winning proposition, but they've clearly found a willing market.

Perhaps a better way to look at it is "There was an underserved market that had a higher tolerance for uncertainty, and AirBnB seized the opportunity."

</comment><comment><USER27> I'm finished with Airbnb as the places get shabbier with each booking. Linens are threadbare, kitchens have dirty/stained pots & utensils and suddenly 4-6 flight walk ups without a mention in the listing. Zero customer service to boot. I'll pay the few dollars extra for a hotel.

</comment><comment><USER28> Airbnb's growth as it relates to stays to per a night has been 500k since at least 2014 and as recent as mid-2016. In 2015, they stated they wanted a million stays per a night by 2016.

Any reason to believe Airbnb is really growing?

</comment><comment><USER29> I helped my parents rent an AirBNB where the people owning the house were still living there but it said nothing about this in the ad. After the owner gave us the keys, a few hours later somebody opened the door, and I seriously thought it might be a robber or something. Turns out it was the son of the owner who was living there, and basically my parents were renting a single room inside of their house. It was very uncomfortable for everyone.

</comment><comment><USER30> I wonder if they'll still be profitable as more and more cities become aware of the negative side effects of Airbnb use and implement various sorts of bans on types of commercial Airbnb activity.

A researcher at UBC estimated that commercial operators were responsible for generating 77% of Airbnb revenue in Vancouver. The City of Vancouver is planning on legalizing Airbnb, but will ban commercial operators that rent out entire residences. This will likely significantly reduce the amount of commercially operated Airbnbs in the city and this could result in significantly less revenue that Airbnb generates from Vancouver.

If this researchers' numbers are at all reasonably accurate, and other cities have similar levels of commercial activity, and the trend of cities banning commercial operators catches on, that would be a major impact on Airbnb revenue.

[http://www.theglobeandmail.com/news/british- columbia/vancouv...](http://www.theglobeandmail.com/news/british- columbia/vancouvers-top-airbnb-earners-are-commercial-hosts- research/article30324477/)

</comment><comment><USER31> I spent 12 months as a digital nomad in SE Asia and AirBnB was a godsend for me.

If you're checking in at some place you've never been to in the middle of the night, then of course a hotel is a better option. Likewise if you can't be bothered to tidy up a bit before checking out, then a hotel is the way to go. Personally, for short stays, like a few days or a weekend, I'll go with a hotel. But for anything of a week or longer, AirBnB is terrific.

Through AirBnb I was able to book very nice condo apartments, with awesome amenities (rooftop swimming pools, brand new gym facilities etc) and very gracious local hosts who showed me things I never would have been able to discover on my own. Moreover, with AirBnb I don't have to worry about landlords ripping me off like I would if I actually signed a rental contract in a foreign country.

I think most of this criticism is rather petty. AirBnb isn't a hotel or hostel replacement and it isn't supposed to be.

</comment><comment><USER32> If they are already profitable, why raise money again?

<comment><USER33> You can be profitable but still be burning cash in a few different ways. Profitable looks only at profit, not at cash flow, so it only means that "booked revenue in a year > booked costs in a year". Keep in mind that capital expenses are not costs, but are cash expenses. Also, some revenue in a given year might not be a cash transaction, because even if you booked it in that year, it might take much longer for you to actually get paid.

Some of the ways to burn cash:

(1) Expand operations: hiring people, hiring external services, leasing offices, leasing capacity, etc. All that happens far before any additional revenue comes in.

(2) Capex: capital expenses (buying servers, equipment, etc.) require cold, hard cash (or debt, which "costs" more than equity for a startup, so it is better to do equity funding).

(3) Working capital (current assets - current liabilities): some companies have positive (they receive the revenue cash before dispensing the costs cash) working capital, using their customers' money to expand the operations, others have negative working capital, requiring external funding to expand their operations.

My guess is that (2) and (3) don't apply for AirBnB, they are not a capital- intensive business, and as they get paid when the booking is done but pay out when the guest arrives, their working capital might actually be positive. So they probably need it to expand operations.

<comment><USER34> That is a pretty strange way of defining profitable where you are losing money.

<comment><USER35> Think of it this way. Imagine if airbnb took its 1 billion dollars and bought bars of gold, and put those bars of gold in a vault.

Is airbnb losing money, because it now has 1 billion dollars less in cash, and 1 billion dollars more in gold bars?

No, it is not.

<comment><USER33> Actually, IIRC (and correct me if I'm wrong) for accounting purposes, gold counts as "cash & cash equivalents", so if it bought $1B in gold bars, AirBnB's cash wouldn't change.

<comment><USER36> Gold as a commodity (bonds). Gold bars are not liquid.

<comment><USER33> Bonds can be considered cash equivalents if they have short maturity.

Gold is highly liquid, and from what I've read, it can be considered (in bullion) cash equivalents, except for banks, that due to Base 3 regulations can only consider part of their gold holdings as cash equivalent for liquidity purposes.

</comment></comment></comment></comment></comment></comment></comment><comment><USER37> > That's EBITDA profitability, according to the Wall Street Journal, meaning > that expenses like taxes are not included [0]

So it's profitable - as long as you exclude such meaningless items as "interest, tax, depreciation, amortisation". Nice.

[0]: original post.

</comment><comment><USER38> Expedia's market cap is at 19B today. 31B is much more valuable than it.

<comment><USER39> Every time I see AirBnB's latest valuation, I compare it with Sabre (bigger, higher value hotel room inventory... and they've also got a profitable airline distribution and consulting business). SABR market cap is around $6bn

</comment></comment><comment><USER11> So when we say '$31B valuation' what does that mean in real money? Lets say that I am the founder of airbnb, how much of that money could I get when I sold the business?

</comment><comment><USER40> I booked a spare room in London a couple years ago in the Mayfair neighborhood, a quite expensive area. The woman who owned the flat wasn't the one in the photo, and a number of things about the flat seemed rather odd. Long story short, she was a prostitute.

<comment><USER41> > Mayfair

You can upgrade your description to "most expensive area in central London". It's the final, £400 property on the London version of the _Monopoly_ board, and is still worthy of that position.

The woman would probably prefer the term "high class escort". I think it's supposed to mean you can have a conversation afterwards.

Example -- NSFW, obviously: [http://www.hautegirlslondon.com/](http://www.hautegirlslondon.com/)

</comment></comment><comment><USER42> And they are still being called a startup...

</comment><comment><USER43> Another company that shouldn't be allowed to exist.

</comment><comment><USER44> Airbnb is a "disruptor" apparently and a Unicorn. What did they disrupt? The housing market for sure in certain cities. 90 day booking restrictions for example (London), banned in Berlin etc.

The Airbnb service startups now have limitations on their business plans and on the ground issues, residents abuse and legal challenges. This is disruptive and not necessarily a good thing.

Airbnb has opened up new tourist routes and brought income to airlines and local businesses, so the economic contribution has been interesting.

But what is the real message. "Live like a local". I know personally that even if you live in a foreign land for several years it's hard to live a like a local. Its smart marketing, the offer of shared spaces and local people. This was the shared house approach it all started with. This is long gone. Head off to airdna.co and check out the stats on whole apartments. It's a misnomer and still carries through in the press.

Is it better than a hotel? Depends: If its more space and similar price then maybe, always depends on this vs location, its quality, is it really licensed or allowed, and how convenient is entry.

You can of course have parties that hotels may frown on! Hotels have front desks, are quality controlled and for most business people so much more convenient with bars and breakfasts. They also tend to have well organised support and be in convenient locations, You can always use Uber to get a cheap taxi though...Uber and Airbnb, neat merger.

As this thread shows all the latter can be a problem and hence the "SuperHost" status.

Do Airbnb love Super Hosts? Yes of course. Reviews pay booking dividends . But Super Hosts don't always let their places all year and being smart cookies realise being paid at checkout, being charged a commission and the guest paying up to 12% extra could mean more money in their pocket if they did it direct.

Many are direct marketing too and certainly doing rebookings direct. Do Airbnb see this as a problem? Of course, they want 24/7 and all the margin. This is why they hate leakage and try to force instant book and convenient cancellations. This is also guest centric and owner impossible for so many. The two are hard to equate. Booking.com's mantra "Most rooms with free cancellation" is the killer, but does NOT apply 90% of the time to their rental inventory. Clever marketing again!

Airbnb also want to ensure quality inventory and no come-back. Hard with a thousands of unstandardised accommodation. Bad review police-ing is expensive!

Do Airbnb want to be in the main holiday rentals seasonal space? Yes, they just bought Luxury Retreats for $200m, but even this is a slippery fish as these are mainly managers and owners who market everywhere and want/need maximum margin. It's an unusual play but maybe just paying to understand the market more. Trying to forcing any form or control on these properties may well see further industry rebellion.

Add in the Trips launch and other revenue streams and you can see strategically they realise a zenith is approaching on the main models and which company needs so much litigation?

Best prices? Lots of comments on this. The best price is always likely to be direct, price parity slipped out the backdoor years ago. The "Guest Service Fee" is not charged direct. Imagine paying $2000 and then seeing a further $200+ as a service fee. Look under the question mark at checkout, it's their fee not the accommodations. This is beginning to annoy people (a lot).

They could often just book direct with a little searching. It may take 10 minutes, and that's $1200 per hour work! Even lawyers struggle to get that!

The big brands: Expedia (inc HomeAway), Booking.com, TripAdvisor, Airbnb, essentially offer the same thing and thousands of properties are advertised on all of them simultaneously as they sit out front and use the guest fees to pay Google Search (the real controller).

The smart guests are using them to identify great places and then phoning and emailing direct (using Google again) but saving money and getting more information.

Ref: [https://www.smarthosts.org/posts/BnTAS2ujKWfNw47TW/airbnb-s-...](https://www.smarthosts.org/posts/BnTAS2ujKWfNw47TW/airbnb- s-getting-a-lot-of-negative-comments-on-a-popular)

</comment><comment><USER45> This feels like another example the new gilded age, where the spoils of capitalism stay at the top.

</comment><comment><USER46> They should stop calling companies like Airbnb "startups". They are big companies now and should be treated as such.

<comment><USER47> Working for a company like Google, FB or even Airbnb or a questionable 'startup' is still much different than working for any other type of company. It's even markedly different than working for tech companies that would never be referred to as startups, such as Samsung, AMD or even HP.

These large companies (FB, Google, etc) may no longer be bootstrapped and employees may no longer have versatile roles, but they still resemble what we'd call 'startup culture.' It seems reasonable to define a startup based on culture rather than size, though it's not so etymologically sound.

edit: If you disagree, please comment why rather than downvote! This is a question I've heard people discuss extensively and would appreciate input or an opposing perspective.

<comment><USER48> But we have a phrase for that already, those things are called "tech companies"

<comment><USER47> Then we'd have to group in rather standard, traditional Samsung-like companies though, which seem to be just as different work experiences from FB or Google as FB or Google is different from newer, smaller startups.

<comment><USER49> Samsung is not a Tech company, it's a multi-national conglomerate.

 _It comprises numerous affiliated businesses,[1] most of them united under the Samsung brand, and is the largest South Korean chaebol (business conglomerate)_ [https://en.wikipedia.org/wiki/Samsung](https://en.wikipedia.org/wiki/Samsung)

Microsoft/Google are multinational companies but their core business has remained. Samsung on the other hand did food processing, textiles, insurance, securities and retail and only got into the electronics industry after close to 30 years.

</comment></comment></comment></comment></comment><comment><USER50> 1b @ 30b is very weird.

</comment><comment><USER51> Does this mean they're about to IPO? I should probably interview with them ASAP then.

<comment><AUTHOR> I think it's the opposite.</comment></comment>


Ubuntu Core for IoT - <AUTHOR> http://www.ubuntu.com/things

<comment><USER2> Anyone know what the point of this is? I installed it but it uses the snappy repo, not apt, which has a pretty limited number of packages available.

Docker is one of them so maybe that's the point of this - a boot to docker type platform for pi. However, you can just as easily install docker on the arch image for pi, so idk. [https://resin.io/blog/docker-on-raspberry-pi- in-4-simple-ste...](https://resin.io/blog/docker-on-raspberry-pi-in-4-simple- steps/)</comment>


What is a Dimension Anyway? - <AUTHOR> http://www.sciam.com/article.cfm?id=what-is-a-dimension-anyway&print=true <comment><USER2> The classic book "Flatland" is a great read for anyone trying to wrap their mind around more than 3 dimensions. There was a sequel to the book written much later by another author, it was called "Flatterland" and I believe it touched on fractal and fractional dimensions and the like. However, I can't say how good it was because I didn't get through it.

Anyways, go read "Flatland" if you haven't had your mind blown this month.

<comment><USER3> Agreed. It's a short book (<200 pages) that you can finish in an a few days. Might give you a new perspective too.

</comment></comment><comment><USER4> On a related subject, the video "Not Knot" is quite fascinating.

part 1: <http://www.youtube.com/watch?v=AGLPbSMxSUM>

part 2: <http://www.youtube.com/watch?v=MKwAS5omW_w>

It describes the space created by a certain type of knot, or rather the space that is created outside of it ("not knot".)

</comment><comment><USER5> Why was I expecting a discussion involving Star Schemas and Fact tables?

</comment><comment><USER6> Dimension is a cardinality of a base.

</comment><comment><USER7> must. have. more. coffee.

My brain is not ready for sponge-dimensions this early.

This page seems like an answer, but I'm not sure what the question is -- if it is "What's a dimension?" then I didn't get an answer.

Fun stuff though. The Flatland book looks like a keeper.

</comment><comment><USER8> 1 Dimension items could be best measured in time maybe. 3 Dimensions items could be best measured in matter at a specific point in time since matter is constantly moving. This is just my thinking.

</comment><comment><USER9> I think space-time can be defined in terms of mass. time is a change in mass, space is the number of atoms that can fit between here and there. mass has 4 dimensions, so space time does as well. if mass had a different number of dimensions so would space time.

<comment><USER10> I try to avoid snark on YC, but the "armchair philosopher" approach to physics makes me think of <http://www.timecube.com>

<comment><USER9> what exactly is a thought experiment then?</comment></comment></comment>


Show HN: Shortkeys – custom keyboard shortcuts for the browser - <AUTHOR> http://www.shortkeys.app <comment><AUTHOR> If you're wondering how this is different from Vimium and friends, there are 2 main things:

1\. Shortkeys makes it very easy to create/customize your own in the GUI, no matter how tech-savvy you are, and it doesn't ship with any default shortcuts.

2\. Shortkeys tries to fix the "it doesn't work when you have the URL bar or a new tab page focused!" problem by supporting _native_ browser extension shortcuts as much as possible. More info on that here: [https://github.com/mikecrittenden/shortkeys/wiki/FAQs-and- Tr...](https://github.com/mikecrittenden/shortkeys/wiki/FAQs-and- Troubleshooting#do-i-use-the-browsers-keyboard-shortcuts-settings-or-the- shortkeys-options-page)</comment>


TweetQureet: a full Golang technology stack : Qureet.com - <AUTHOR> http://www.qureet.com/blog/golang-technology-stack/?ref=golang_reddit <comment><USER2> Good post with a lot of great advice and hints for doing web application development in Go. Nice detail also that it all runs on a Raspberry PI :)</comment>


Scramble for Africa - <AUTHOR> https://en.wikipedia.org/wiki/Scramble_for_Africa <comment><USER2> "Native Congo Free State laborers who failed to meet rubber collection quotas were often punished by having their hands cut off."

This is really heartbreaking. The most heartbreaking photo I have ever seen was a father looking at the chopped up hands of his 4 year old son. The Belgium army had his son's hand cut off as punishment for failing to fulfill the daily work quota.

<comment><USER3> Yes I noticed that too. It made me think that (a) it was somehow ok to do this to (especially to children), and (b) what other non-photographed atrocities were committed and never spoken of.

<comment><USER2> It was very common until late 1980's in Australia to shoot and kill aboriginal children who would wander into your property. The Australian government paid ₤5 to kill an adult and ₤2 to kill a child during the Black War. [https://www.reddit.com/r/todayilearned/comments/ajzbia/til_t...](https://www.reddit.com/r/todayilearned/comments/ajzbia/til_the_black_war_was_a_period_of_violent/)

The killings were legal till the 60's and then overlooked till the 80's. Last year a guy was acquitted by the court even after murdering 4 aboriginal children due to double jeopardy laws. [https://www.theguardian.com/australia- news/2018/sep/13/bowra...](https://www.theguardian.com/australia- news/2018/sep/13/bowraville-murders-court-rejects-retrial-bid-over-aboriginal- childrens-deaths)

<comment><USER4> > The killings were legal till the 60's

That's an astonishing statement. Could you elaborate? The Aboriginal population has been treated heinously since European settlement but that's a, literally, incredible claim.

<comment><USER2> Have close friends who are married to Australians. It was common knowledge that out in the bush, it was quite frequent to shoot Aboriginals who would wander into your land. Australia had similar gun laws as US and it only changed after the Port Arthur massacre in 1996.

Also Aboriginals do not have the concept of land ownership and hence wouldn't understand the concept of trespassing, especially the kids.

Here is a list of known massacres: [https://en.wikipedia.org/wiki/List_of_massacres_of_Indigenou...](https://en.wikipedia.org/wiki/List_of_massacres_of_Indigenous_Australians)

I spent some time in Queensland and the lawyers told me point blank that courts would hardly rule in favor of "Non Europeans" even for criminal/personal injury cases and that's why a huge percentage of civil/injury liabilities are settled out of court.

<comment><USER4> I see. So you have no basis for the claim.

I genuinely don't see why you'd make something like that up when the truth is awful enough. But I'm sure you have your reasons.

<comment><USER2> [https://en.m.wikipedia.org/wiki/1967_Australian_referendum_(...](https://en.m.wikipedia.org/wiki/1967_Australian_referendum_\(Aboriginals\))

They were counted in the population as "humans" only 5 years after this referendum. Besides the law was such that you could kill Intruders on your land and this invariably meant murdering the aboriginals

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> 'Msiri was the most militarily powerful ruler in the area, and traded large quantities of copper, ivory and slaves – and rumors of gold reached European ears. The scramble for Katanga was a prime example of the period. Rhodes and the BSAC sent two expeditions to Msiri in 1890 led by Alfred Sharpe, who was rebuffed, and Joseph Thomson, who failed to reach Katanga. Leopold sent four CFS expeditions. First, the Le Marinel Expedition could only extract a vaguely worded letter. The Delcommune Expedition was rebuffed. The well-armed Stairs Expedition was given orders to take Katanga with or without Msiri's consent. Msiri refused, was shot, and the expedition cut off his head and stuck it on a pole as a "barbaric lesson" to the people. The Bia Expedition finished the job of establishing an administration of sorts and a "police presence" in Katanga.'

TLDR:

Can I please have your land? Can I please have your land? Ok, fine I'll just shoot you, chop off your head and stick it on a pole. Then I'll have your land.

<comment><USER5> There was something seriously seriously wrong with those people.

</comment></comment><comment><USER6> Let's apply modern interpersonal morality to this and see what happens.

<comment><USER2> "modern interpersonal morality" like what's happening in Syria, North Korea, Venezuela, Afghanistan, Iraq, Turkey, Russia, China?

<comment><USER6> Isn't everyone here presumed to be living in the US, or at least the Anglosphere? North Koreans can't be worrying about the latest JavaScript hotness.

(I don't live in a rich, English speaking country, but I can pretend so)</comment></comment></comment>


Shared_ptr thread safety comes at a huge cost - code-dog http://nerds-central.blogspot.com/2012/03/sharedptr-performance-issues-and.html

<comment><AUTHOR> Yep. I have a policy of at _least_ replacing any shared_ptr usage with intrusive_ptr, for that reason. (A downside they both share is that they have copy constructors.)</comment>


Efficient game updates - <AUTHOR> https://amos.me/blog/2017/efficient-game-updates/ <comment><USER2> Good article. As it mentions, itch.io client is open source: [https://github.com/itchio/itch](https://github.com/itchio/itch)

I wish GOG would also open up their client and release it cross platform. Or at least document their protocol, as they promised.

</comment><comment><USER3> For some reason, I thought this is about the update step in games that happens once per 'tick', that is, the physics engine loop. It's about lossless compression and downloading update packages though. That's also fine with me.

<comment><USER4> Same, though in my case it's entirely a result of me putting off the implementation of the networking stack in my game.

<comment><USER5> Ugh, I hear you ~_~ precisely my issue...

</comment></comment></comment><comment><USER6> Interesting, but I'd like more details on what's happening at the client.

Take Steam for example. For some games, downloading the update takes seconds, but calculating diffs and extracting takes 10-20 minutes. That's great for Valve, because little bandwidth is used, but terrible at the client side. On top of that, the update process slows the rest of the system almost to a halt, because of all the hard drive activity.

I can potentially see this mechanism making the same mistake.

<comment><USER7> > On top of that, the update process slows the rest of the system almost to a > halt, because of all the hard drive activity

As far as I'm aware, that's a problem only on Linux, because Windows has a desktop-grade IO scheduler tuned to interactive usage (whereas in Linux both the CPU and IO schedulers are written for maximum throughput).

<comment><USER8> Windows is quite capable of messing this one up as well; if your browser profile is on the same disk as you're doing something heavy, it'll end up blocking the browser while waiting to commit.

(Seems to be worst on Firefox)

</comment></comment></comment><comment><USER9> Also relevant is Google's Courgette algorithm which is used to update Google Chrome - [https://dev.chromium.org/developers/design- documents/softwar...](https://dev.chromium.org/developers/design- documents/software-updates-courgette) which is stated to be much better than bsdiff which is what itch's is using here.

<comment><USER10> I suspect that it is hard to apply to other scenarios. It is much more specialized than a simple binary diff.

</comment></comment><comment><USER11> I hope Blizzard guys learn something with this article. The Hearthstone android Update/installer is terrible...

<comment><USER12> Blizzard blew it from the moment they started downloading/syncing their games via BitTorrent - using their customers bandwidth to support games that they paid for.

<comment><USER13> How exactly did Blizzard "blow it" with this design decision?

Using their customers bandwidth to take off some load of their own patch servers during peak times is (imho) a pretty good use of BitTorrent. You can also quite easily disable this feature in their launcher app.

</comment></comment></comment><comment><USER10> Good article. As a note, I love how he uses hand drawn diagrams. I have yet to find any tool that allow me to draw diagrams as fast as I can do it on a piece of paper.

<comment><USER14> A Wacom tablet?

<comment><USER10> I have a Surface, it works reasonably well for the same task. But the same applies - it is not "pretty" svg graphics, but faster and easier. I suppose you could always make the initial diagram this way, and create it in a 2d cad like program if you need to.

<comment><USER14> Does it have some sort of grid-layout so you can just draw linear sections etc.?

Is there any other case where prettification works better? (Splines, I suppose).

<comment><USER10> I haven't really searched for a program like that, and rather used it as a an electronic piece of paper.

</comment></comment></comment></comment></comment><comment><USER15> I enjoyed this article a lot.

One thing that seemed glossed over, so I'm not sure if it's obvious for their use case, is the trade-off between compress once, distribute many times.

When looking at how long it takes to compress vs transmit, the optimisation was done to make the sum of both as small as possible - minimise(time(compress) + time(transmit)).

Instead it seems like you want to do is - minimise(time(compress) + expected_transmissions * time(transmit))

For any reasonable number of distributed copies of a game, it seems like this time to transmit will quickly come to dominate the total time involved.

I suspect, however, that the time to compress grows extremely quickly, for not much gain in compression, so the potential improvement is probably tiny even if you expect to be transmitting to millions of clients.

</comment><comment><USER14> The rsync example confuses me a little bit. If you add a single bit to the front, then all the bytes are shifted into different blocks and nearly none will hash to match. But if you add a single bit, rsync still performs well. Can someone explain why that difference from the explanation?

The problem also applies to the binary delta. Adding a prefix will shift everything forward causing a diff in everything.

Bsdiff solves this with the suffix sorting. But what does rsync do? Or am I just wrong that rsync still works well? In either case, I think the offset problem makes for a more interesting motivating example for bsdiff.

<comment><USER16> The rsync algorithm divides the file into fixed size blocks only on the sending side, then calculates checksums for all blocks. On the receiving side, it tries to match them at all offsets, not just multiples of the block size.

Thus, in your example, the first (and possibly the last) block won't be found, but all other blocks will be found, shifted by an offset of 1.

<comment><USER14> Ah, seems obvious now that you say it. Thanks!

</comment></comment></comment><comment><USER17> Amos has been doing an incredible work with the itch.io client. It improved not only the user experience, but also the developer experience as well.

The butler client is an incredible way of sending games to itch.io and I sincerely hope that Apple or Google had a good command line client as well.</comment>


Ask HN: Where can I analyze exit poll dataset? - <AUTHOR> All the media sites do their own rollups of the exit poll data, but the dimensions they pick are static. Is there any site where I can pivot on my own sets of dimensions? E.g. I see married men went  overwhelmingly for Trump, but I can't see if that also correlates with age.<p>Are there any sites that expose a more flexible interface? Or the data itself? <comment><USER2> The FEC will release a summary report, but I don't believe it has the granularity of data you're looking for. Here's the 2012 version: [http://www.fec.gov/pubrec/fe2012/federalelections2012.shtml](http://www.fec.gov/pubrec/fe2012/federalelections2012.shtml)</comment>


To everything there is a season – 8tracks streaming service shutting down - <AUTHOR> https://medium.com/@davidporter/to-everything-there-is-a-season-edbb59671403 <comment><AUTHOR> His story speaks on multiple good points: startup lessons, music loyalty, subscription vs ads, different content discovery methods, and how Spotify dominates today.

</comment><comment><USER2> Tip for medium haters on Firefox: Click the link, ignore the popups, hit F9.</comment>


Show HN: Generate minimaps of your code - <AUTHOR> https://github.com/Ivoah/minimap <comment><USER2> While I'm sure there's not much practical benefit to this, I am glad this exists.

Finally I can make my callback pyramid of doom t-shirt, generated from an actual pyramid of doom.

Nice work.

</comment><comment><USER3> Minimaps make sense as a navigational aid in editors and IDEs, but what is the use case for command line tool that creates static minimap picture?

<comment><USER4> An editor or IDE could shell out to an arbitrary minimap generator instead of incorporating it inside. Composition of small components, each doing one thing well.

<comment><USER3> This is a command line tool, not a library. It's not feasible to spawn python process 30+ times per second (during scrolling).

<comment><USER4> How about once to make a long bitmap image and then the IDE scrolls around in the image?

<comment><AUTHOR> It would still have to regenerate the image every time you type something.

<comment><USER5> Because you're crazy and is not debouncing?

</comment></comment></comment></comment></comment></comment><comment><USER6> Free project idea: Upon reading the title, I imagined something that generates a minimap for the whole project, and files are laid out on the map according to how they relate to each other (the more tightly bound, the closer), so, for example, you could look at the "You are here" marker and see how far away from certain subsystems the current file is.

<comment><USER5> See [https://github.com/fiatjaf/node-dependencies- view](https://github.com/fiatjaf/node-dependencies-view)

</comment></comment><comment><USER7> Might want some -more- info in the README, as well as a license.

<comment><AUTHOR> Just fleshed out the README a little, writing isn't one of my strong points.

Edit: just added a license too.

</comment></comment><comment><USER8> What am I looking at?

<comment><USER9> It's a condensed version of your code using color blocks instead of text.

The Sublime text editor used a similar view along the right side of the editor. You can use it to quickly navigate to a section of code without having to read each line.

<comment><AUTHOR> I was inspired to make this by the minimap package for Atom, which is a copy of Sublime's behavior.</comment></comment></comment>


Shrinking of Venture Capital Viewed as an Improvement - <AUTHOR> http://www.nytimes.com/2009/07/07/technology/start-ups/07venture.html?_r=1&ref=technology <comment><USER2> dupe of:

<http://news.ycombinator.com/item?id=691121></comment>


Ask HN: Where to find a replacement for my technical co-founder - <AUTHOR>

At the beginning of this year, I went through the long process of finding a technical co-founder. I used my network, friends' networks, meetup groups, Craigslist, and other resources and ultimately found a guy. They worked out well and they've done a good job, but unfortunately they're going to have to leave the project for personal reasons in a few weeks. At this point, I've got a MVP almost complete (the former co-founder is wrapping up the last few things before he departs) and I only have minor features that I want added immediately. I could use something like ELance to take care of those features, but ideally I'd really like to bring on board a more permanent replacement rather than bouncing from contractor to contractor. I'd really like to avoid or simplify the process I went through last time, so I'm curious if there's any site out there specifically devoted to linking up developers with permanent opportunities at startups. Any suggestions? <comment><USER2> Have you looked at <http://www.techcofounder.com/> ?

<comment><AUTHOR> I had not; thanks for the link!

</comment></comment><comment><USER3> I'd simply suggest that you post here a little bit about what you are working on and the skill set you are hoping to bring onboard, with your contact information as there are always folks on HN interested in connecting.

<comment><AUTHOR> Sure. I'm working on an online food ordering platform called Couchster. We're starting off in New Orleans as our initial market, with plans to expand further in the South (where the existing competition in this industry doesn't have much, if any, presence) in the future. We have some cool features, and our product has some competitive advantages over the existing competition in that our platform allows our restaurant partners to get paid immediately and directly (unlike Grubhub et al which process payments themselves and then pay out their partners afterwards). Everything is designed to scale and to maximize automation, so we should be able to grow fairly briskly once the existing loose ends are wrapped up.

At present, front end experience is a bit more of a priority to me than back end. While we'll have a complete MVP in the near future, there's plenty of room for improvement and added functionality. To date the site is all in PHP, Java and HTML5 (I believe), but if I found a permanent person, I'd be willing to change that as needed. I think our back end is fairly well put together, but then again, I'm not a developer so take that opinion FWIW.

I can be contacted at soneill at couchster.com.

<comment><USER4> I'm working on an exact project for the local market. Its also being done in PHP. :)

Get in touch. Email in my profile.</comment></comment></comment>


The Strongest Evidence Yet That America Is Botching Coronavirus Testing - <AUTHOR> https://www.theatlantic.com/health/archive/2020/03/how-many-americans-have-been-tested-coronavirus/607597/ <comment><USER2> This is what happens when you elect utter incompetents to run the federal government, and they cut off funding for public-benefit agencies. The American people are getting exactly what they voted for. Expect things to get much worse.

<comment><USER3> This is not a useful comment. I see no citations in your comment that proves that this is trumps fault or has anything to do with him.

<comment><USER4> Trump appointed Pence to head America's response to the COVID-19 epidemic.

If Pence has not been competent enough to get the CDC to do enough testing, it is ultimately Trump's responsibility.

An effective response to a health crisis also demands transparency, not hiding the scale of the epidemic by refusing to report the number of tests the CDC has conducted. That's yet another gaffe that Pence, and by extension Trump is responsible for.

</comment></comment></comment><comment><USER5> This article is irresponsible. The federal government has been forthcoming about the problem with one component in the test kit they released. They provided a work-around quickly and have updated the test protocol and are releasing updated test kits. At least where I sit in New York State cooperation between our Democratic Governor and the Federal Agencies has been a good example. New York can now produce test kits and are quickly ramping up to 1000 tests per day.

I would note that this was made possible by scientists with federal (and state) funding to obtain the structure of the virus quickly and that these results helped guide the development of test kits.

</comment><comment><USER6> What can be done to change this situation rapidly? Countries like South Korea and China are able to run tens of thousands of tests daily. What is it about their testing regimes that makes them so much more scalable than the US's?

<comment><USER7> Honestly? Send our tests to SK/China. At this point it seems like it's hard to trust anyone else

</comment></comment><comment><USER8> The media is seeing this as a political propaganda event, watch as this is spun into a major campaign issue, with massive finger pointing

<comment><USER9> Trump's not even named once in the article, nor are party affiliations.

</comment></comment><comment><USER10> It turns out government institutions shrivel and die when you try to strangle them. Who'd a thunk?</comment>


Single page apps in depth (new free book) - <AUTHOR> http://singlepageappbook.com/

<comment><USER2> I was expecting the book to be on a single page

<comment><USER3> A book about woodworking doesn't have to be made of wood, does it?

<comment><USER4> Actually, most woodworking books are made from wood.

<comment><USER5> A day later and I'm still laughing over this. :)

</comment></comment></comment></comment><comment><USER6> Gave this a quick skim, matches with a lot of what I've been thinking lately. I particularly like idea of isolating modules from the DOM so they can be tested in the CLI-- could also enable reuse on server & client.

Look forward to reading the whole thing tonight.

</comment><comment><USER7> I'v did some single apps. * <https://trakrapp.com/> (server's certificate has expired) an issue tracking app. with Backbone, Jquery. * <http://mei.fm/create> Wwn's online stack editing app. (need to signin to get full functionality). A team structure the code with the help of Jquery, Mustache.js, Underscore. * <http://rssminer.net/demo> .yet another RSS reader. I write it with Jquery, Mustache.js, Underscore.

</comment><comment><USER8> This is quite nearly the PERFECT book, one that every web developer should read front to back.

<comment><USER9> I haven't read through the whole thing [1], but I really like the fact that he actually discusses different approaches when trying to achieve a goal and instead of just mentioning them. He has an opinion and is not afraid to express it and that's good because it encourages thinking and discussion.

[1] Only read through <http://singlepageappbook.com/detail1.html> (on Views)

</comment></comment><comment><USER10> Don't call this a 'book'. I know it is a great plug but it is simply not true.

<comment><USER11> It is not a book because...?

<comment><USER10> What distinguishes a book is the 'form factor'. Obviously we are talking about an e-book. Nonetheless little care has been put into producing a 'book': not TOC, no index, no page numbers, etc.

(Obviously this is all independent of the content.)

<comment> ezequiel-garzon These are outdated requests, maybe with the exception of the TOC, which soon should also be taken care of by technology [1].

Regarding the index, if you are willing to visit the single-page version, a simple CTRL-F gives you the 70 references to "DOM", for instance. Your modern browser quickly shows how those references are spread in the document. That is pretty much an optimal index to me, with an unlimited number of entries, rendering the separate and physically constrained notion of index obsolete.

And why pages? In today's world of wildly diverse screen sizes and resolutions, please let the content flow. I remember being led to the wrong place of a book in my college years just because the edition I consulted happened to different from the author's, but I found that reasonable in the paper age. Semantically demarcated concepts such as chapters or sections have always been referred in this way, and rightly so. If you think about it, page numbers only helped you locate verbatim excerpts such as "to be, or not to be" in [2]. A completely valid and efficient artifact of the pre-digital era, which has now become dispensable, just as indexes have.

[1] [http://dev.w3.org/html5/spec/headings-and- sections.html#outl...](http://dev.w3.org/html5/spec/headings-and- sections.html#outlines)

[2] <http://www.gutenberg.org/files/27761/27761-h/27761-h.htm>

</comment></comment></comment></comment><comment><USER12> here is my single page app www.cardivvy.com

its simple app using api to get list of car2go available cars, parking spots, with a simple Google Map mashup.

it isn't DOM->Model->View structure. its simple call to api to retrieve json using php and javascript and php/html presentation.

any generalized suggestions about how to do this as DOM->Model->View structure?

where does the api call fit? in DOM

</comment><comment><USER13> thanks for the book! currently reading it on my kindle and really enjoying it!

is there any possibility to donate or contribute?

</comment><comment><USER14> I'm a little skeptical from my initial skim of this.

His attacks on using the DOM to store information make me think he's never know the joy of a clean data-binding setup.

<comment><USER15> I'd say databinding is useful for smaller convenience plugins, not for the architecture of larger JavaScript applications. From my quick skim this book is spot on.

<comment><USER14> It is your opinion that the answer to making a larger JavaScript application is one big bucket of state Object?

Tell me you've got something better than that.

<comment><USER16> Seriously? So you think Backbone.js and the like are just a fad?

<comment><USER14> I'm not fond of the way Backbone.js works. It solves none of the hard problems of making an SPA. (AngularJS is guilty of this too, albeit from a different angle.)

</comment></comment></comment></comment></comment><comment><USER17> This is my preferred solution to single page apps:

<http://www.enyojs.com></comment>


Ask HN: Are you a polymath? know of one? - <AUTHOR> For most people, it is hard enough to get good in one topic in our lifetime. Even harder to become a total expert.<p>To do this in multiple disciplines is incredible. I am fascinated by such people. <comment><USER2> If the disciplines are related, like branches of engineering (e.g. low-level coding and rocketry in case of John Carmack), then it's not that hard. 10-15 years could be enough to get to mastery when switching branches. It's a different case when you want to switch from let's say engineering to philosophy - then almost none of the knowledge, intuitions, ways of working transfers and it could take you 20-30 years. Still, given a 75 years lifespan, should be doable.

</comment><comment><USER3> It was a lot easier a long time ago when less was known about the various different disciplines.

Today it seems impossible. Though, with the right head start of a highly privileged birth, perfect timing of the right mentors, winning the genetic lottery, and other uncountable factors, you might get one or two a century. Of course, depending on the breadth of your definition.

<comment><USER4> The bar for what is considered an expert is arguably higher, too. There is a much larger pool of people to be compared with thanks to global communication and population growth.

</comment></comment><comment><USER5> I am somewhat of a polymath, but a narrowly focused one, in that most of my skills solely apply to computers, and very little else. But then you may ask: computers are a broad topic: how does one ever conquer the subject and attain mastery of it?

My answer is simple: the world of computers is an endless one, a gigantic rabbit-hole (especially when combined with The Internet). Being able to download source code for a broad number of programs and have them run and configured any way you wish is still magical, no matter how many times I've tried it.

Then there's the fact that you can get reliable information on an endless amount of subjects with very little friction or red tape. I am still in awe of The Internet and haven't become jaded about it yet, as many of my peers have (they literally have grown bored of the net...something I can't understand). I guess it's how you _apply_ the knowledge instead of merely knowing for the sake of knowing.

</comment><comment><USER4> The people i know with the most simultaneous breadth and depth of knowledge just inherently enjoy learning. The skills developed are more of a side effect than the goal itself. A pattern ive seen is having some sort of an anchor in different areas, like being a professional scientist but playing regularly in a band and volunteering to coach debate. Spreading areas of focus out increases likelihood of new information being interesting and relatable to existing knowledge, which makes it faster and easier to take in, especially if it intersects with multiple areas at once.

</comment><comment><USER6> As a consultant at a small company, I have to be reasonably good at project management, sales, contracts, relationships, and my technical domain. I'm also CTO and must keep up with internal projects and client projects. Some of these require very different technical expertise

Maybe it's not quite what you mean, but at a small company I think you find a lot of people that while maybe not polymaths are very broad in their skillset.

</comment><comment><USER2> If the disciplines are related, like branches of engineering (e.g. low-level coding and rocketry in case of John Carmack), then it's not that hard. 10-15 years could be enough to get to mastery when switching branches. It's a different case when you want to switch from let's say engineering to philosophy or painting - then almost none of the knowledge, intuitions, ways of working transfers and it could take you 20-30 years. Still, given a 75 years lifespan, should be doable.</comment>


Ask HN: Landed my first freelance job, how should I price the project? - <AUTHOR>

I recently landed my first freelance job based off a little side project that I had on Github.  I'm not a professional developer, I just do this as a hobby in my free time.  It's serendipitous that I have a few months off between jobs and I'd like to make sure I don't make a rookie mistake in pricing this job and setting up the contract.
The work is machine learning algorithm development and then integrating the solution into the client's existing infrastructure.
A few questions:
* What are the pros/cons of an hourly rate vs. fixed price?
* Anything to watch out for in how the contract is structured?  e.g., provisions about intellectual property, dealing with changes in requirements, or spelling out what deliverables are required?
* What kind of padding factor do you apply to your estimates of hours to complete a feature?
Based on some other things that I've read, I'm leaning towards pitching an hourly rate with an upper limit.  For example, quoting a high-end price of $X and charging by the hour, giving them the savings if I can implement it in fewer hours or (hopefully not) having to renegotiate if it's significantly more complicated than I envision.
Any advice would be appreciated.  If someone has a boilerplate contract that has worked well for them in the past, I'd love to see it.  Thanks HN! <comment><USER2> Congrats! Based on my experience:

* Fixed-price is acceptable risk only if: (1) The project is small (e.g. <= one month), (2) The client has a precise spec (and he is hopefully technical), (3) The project is not R&D -- there is little chance of it failing or taking a lot longer than expected, and (4) Your gut says the client will be easy to work with, will pay you, won't try to add on extra features, etc. Also, I recommend the client be a business where no one is personally invested in the money they are paying you.

* If the contract is hourly, generally the contract is simpler and is much less risky to you than a fixed-price one -- I would recommend hourly for a first freelance project. (Respectfully disagreeing with agibsonccc.) With fixed-price, clients can eat you alive with revisions if you aren't extremely careful with the initial spec and being on the same page as the client. You can also easily go over your profitable window if you have not estimated software before. (A lot of it is not based on your skill, but on how particular the client ends up being.) Also, you run a good risk of not being paid at the end, unless you take precautions.

Keep in mind that with fixed-price bids, you are fundamentally at odds with your client -- you must finish quickly to make a profit, whereas they want a quality product. With hourly rates, you both are trying to do the project as "value-based" as possible, and you make decisions together based on cost.

If you do a fixed-price contract, then ask for half up front. (A retainer isn't a bad idea for hourly either.) If you make a fixed-price bid, I recommend estimating the absolutely worst-case scenario hours required then multiplying by even more. I tell my clients it would end up being cheaper if they go weekly, since my fixed-price contract by necessity must be a worst- case scenario estimate.

Also, in general don't transfer copyright (and hopefully the source code too) until all work is paid for. Your contract should state that it must be renegotiated if additional work is added beyond the original spec ... again, you don't need to worry about this as much with an hourly contract with no guaranteed finish date.

* A better pricing model than hourly/fixed is usually weekly or monthly, where you agree to work full-time for that period and you agree to goals to be accomplished. This way, you do not have to pedantically record every hour and expose your time management skills (for better or worse :)

* For padding, it depends on your experience with your own work. I recommend never to guarantee finish dates in a contract, unless you have a huge multiplier. Estimating the finish date would be fine though.

Personally, I set my prices based on how much I want a job. If I am not excited about the project, then I am one of the highest bids (and sometimes my bid is accepted). I do recommend that if you don't like selling, you should take the rate you were going to ask for and ask for something higher. Much of the time, the client just says okay -- worst case, he'll just negotiate something lower.

* I am not a big fan of your upper limit idea. I would quote the high-end price with an hour cap. For instance, $X guaranteed for up to Z hours, then $Y/hr after that -- and you estimate it will be done by Z hours, but it's not guaranteed. If they don't like that, you could say it isn't worth your time unless they buy a Z hour block for $X, then you'll put the extra time toward improvements or whatever else they want if you finish early.

* If you are worried about a contract, do not hesitate to have a lawyer review it. If it is fairly standard, you can probably negotiate a fixed rate of around $200. This Nolo book has a good fill-in-the-blanks template on the CD specifically for freelance software consultants: [http://www.nolo.com/products/consultant-and-independent-cont...](http://www.nolo.com/products/consultant-and-independent-contractor-agreements-cica.html). The book has separate ones biased toward the employer and biased toward the contractor, so you can see the differences and what they might try to put in that would be against you. It is a pretty comprehensive contract and pretty biased toward you ... but it's always in your favor to supply the contract rather than to accept theirs.

<comment><USER3> More thorough answer than mine. Go with this guy.

That being said: you bring up some good points.

This is definitely from my experience that hourly ended up being a headache. The clients I've had in this space tend to want a race to the bottom in price when you get hourly. I've always had it where the client wants a lot more validation and other problems when the project isn't fixed price.

Everyone has their own experience. Let me just defer to patio11 for how you should price contracts: [https://training.kalzumeus.com/newsletters/archive/consultin...](https://training.kalzumeus.com/newsletters/archive/consulting_1)

It worked for him as well from what I'm seeing. Go with what works for you.

<comment><USER2> That is a good point about hourly rates. Make sure your hourly rate is high -- in my experience, the more you charge, the more your client respects your work and time. Plus, you can afford to give some free hours or work a bit extra to make sure the end result is quality. Keep in mind that as a freelancer in the US, about 1/3 of your income goes toward taxes -- plus you don't get benefits like a normal employee would.

If someone specifically wants you for their project, then you can usually negotiate a pretty high rate -- especially for something as specialized as machine learning! People hire me often because they hired someone off Craigslist at a low rate, and this time they want to make sure the project is done right.

<comment><USER4> For some perverse reason, I've found clients get less uppity about a day rate than an hourly rate. Plus that way your timesheets are simpler.

</comment></comment></comment></comment><comment><USER3> Hourly rate will make more headaches for both of you. Fixed price allows you to negotiate up front, take a certain percentage as a deposit.

Make sure IP is yours till full payment is received. Changes in requirements should require a restructuring of the contract. Make the client work for being fickle.

Get a statement of work. Clearly define requirements, again makes it easier for both of you.

Never think in hours. Think in weeks. 3x your gut estimate should be accurate enough.

Again: hourly is terrible. If your client is THAT focused on price you might end up in a bad situation where it's you vs them. That's a toxic relationship. It should be you two working together to solve a problem. Make this mutually beneficial.

Lastly, never focus on savings. Focus on value add that your project will bring them. If this ML algorithm will help a core part of their business, make that clear to them.

Your value add isn't an algorithm. It's going to help their profits by a measure of X%.

Now some machine learning specific advice: Integrate what it might take to do data pre processing, cleaning and formatting in to your time estimate. Try to get as much information from the client as possible about the structure of the data, how they want it integrated etc.

Oftentimes, I've always underestimated that part of the job.

</comment><comment><USER5> For estimation, I like to carefully calculate exactly how long I think it will take, add some padding, then double it (for all the unknown unknowns). Then add some padding, and double it (to cover overhead and communication and documentation). Then add some padding, and double it (to cover changing customer requirements, and the fact that the last 10% usually takes longer than the first 90%). Then add some padding.

Also, here are some additional cons of an hourly rate:

* The better/more efficient you get, the less you earn for a project of fixed size.

* You are incentivized to drag your feet, while your customer is incentivized to expect superhuman feats of coding in a given time.

* People don't like being charged for phone calls, meetings, email, specs, documentation, testing, "small" changes, etc.

* Some customers are inclined to nitpick itemized time sheets.

A different approach I like is to break the project up into features of manageable size. This forces you to spec it out enough so that you can break it into chunks easy enough to estimate. Then you can put a price tag on each, loosely based on effort but also based on value to the customer. And then the customer can play "feature bingo" to decide exactly what they want, instead of haggling about your rate or the project's scope.

</comment><comment><USER6> Go with a fixed fee for a set scope of work . . .

I don't like hourly and definitely don't go with hourly not to exceed.

Break it up in to multiple mile stones with incremental delivery, review/revisions and payment . . .

I would have early initial milestones so you make sure you and the client are on the same page . . . and that they are happy with the initial work and making payments . . .

If you can maybe quote 1 or 2 phases and see how the project is proceeding and if you are making a profit . . . you could also take some time to mock up a more difficult part to see how it's coming together and then quote that difficult phase as you are working on the initial ones . . . if a particular phase that you already have quoted don't be afraid to approach the client and see if you can work out an adjusted fee so you're both happy and a quality project is delivered.

I would setup the IP stating that you won't reuse the project in it's entirety but that you have the right to reuse portions of the code in previous, current and future projects. As most projects have modules you've used before, will use on your current project and on future projects.

There are some good boiler plate contracts out there.

Good luck with your first freelance project.</comment>


Ask HN: How to make sales to companies? - <AUTHOR> Hi.. I tried to find any books or training about how to sell products to companies and businesses, but I could not find any!
My products are designed for small businesses, and I'd like to know how can I drive sales, and what are the techniques to use?
Thanks so much in advance. <comment><USER2> I'm going to re-post a comment I made a long time ago. It should help you generate a list of small business customers to contact:

A little off topic, but you should know there's a better way than the Yellow Pages to find customers. The ReferenceUSA database will give you all the companies in a given area that fall under the entered NAICS code. Here's a small sample of the information you'll get:

* Business Name

* Address

* Contact Information

* Number of Employees

* Number of PCs

* Location Sales Volume (in dollars)

* Credit Rating Score

* Names of Management and their Titles

* $ spent on accounting

* $ spent on contract labor

* $ spent on advertising

And this information is all free to you thanks to your local public library. It's pretty awesome if you ask me. Here's how to get access to it:

1) Get the NAICS code for the industry you're selling to. This code is used by the government to classify businesses. <http://www.census.gov/eos/www/naics/>

2) Go to your local library to access the ReferenceUSA online database. You may even be able to do that through the library's website (I can through mine).

3) Click on U.S. Businesses under Available Databases

4) Customer Search

5) Enter the NAICS code in one of the boxes at the bottom of Business Type -> Keyword/SIC/NAICS.

</comment><comment><USER3> I think one book you might want to read is: "Selling in a new marketspace: Getting Customers to Buy Your Innovative and Disruptive Products"

[http://www.amazon.com/Selling-New-Market-Space- Innovative/dp...](http://www.amazon.com/Selling-New-Market-Space- Innovative/dp/0071636102)

One other book that is considered a classic is "Crossing the chasm"

[http://www.amazon.com/Crossing-Chasm-Marketing-Disruptive- Ma...](http://www.amazon.com/Crossing-Chasm-Marketing-Disruptive- Mainstream/dp/0060517123/ref=sr_1_1?s=books&ie=UTF8&qid=1341939682&sr=1-1&keywords=crossing+the+chasm)

</comment><comment><USER4> Collect a list of companies which might be interested in your product. Collect their phone numbers and call them and try to sell it to them. Telemarketing skills to work.

<comment><AUTHOR> This is exactly what I am going to do.. but I am still wondering how can I increase the conversion rate? and what techniques to use to talk to the decision maker directly in these companies?</comment></comment>


Citigroup CEO's personal data raided by hackers - <AUTHOR> http://www.computerworlduk.com/news/security/3311604/citigroup-ceo-pandits-personal-data-raided-by-hackers/

<comment><USER2> This kind of chicanery isn't as much news to me as the 24 people who were arrested at CitiBank for trying to close their bank accounts. When asked to leave and refusing, they were _locked inside the CitiBank until police could arrest them for not leaving_.

What's really fucked up (to me) is the hacktivism in this case _actually worked_ because I got to find out about something important like the combination of abuse of power and the potentially illegal actions of a bank in the treatment of its customers.

[http://www.addictinginfo.org/2011/10/15/occupy-wall- street-p...](http://www.addictinginfo.org/2011/10/15/occupy-wall-street- protesters-reportedly-arrested-for-closing-their-accounts-call-the-ceo/) [http://gothamist.com/2011/10/15/reports_at_least_20_occupy_w...](http://gothamist.com/2011/10/15/reports_at_least_20_occupy_wall_str.php)

Chase bank, by the way, allowed its customers to close their accounts without arresting them.

<comment><USER3> That's not actually true. You missed the update [http://gothamist.com/2011/10/16/citibank_blames_yesterdays_o...](http://gothamist.com/2011/10/16/citibank_blames_yesterdays_occupy_w.php)

<comment><USER2> _"The Police asked the branch staff to close the branch until the protesters could be removed."_

The police asked (not forced, compelled or told) them to "close the branch" and the bank complied by locking them inside. It's still fucked up to me.

<comment><USER3> I don't see where anyone was locked in? It's not really possible to lock someone in a building, because it's actually against the fire code to make an building that can do that.

<comment><USER4> Unless I'm misunderstanding your meaning, I think you may be trying to disprove the existence of, among other places, prisons?

</comment></comment></comment></comment></comment><comment><USER5> Surely won't be the last banker hacked in solidarity with OWS. Just wait until they get inside an unsuspecting Quant's email.

<comment><USER6> Or an unsuspecting quant's source code repository. Compile, push to production, whoops! Crashed the stock market again...

</comment></comment><comment><USER7> You HAVE to take full control of your 'lively hood'. The Occupy hood in London is getting pretty lively also.</comment>


Losing my mindfulness - <AUTHOR> http://www.tonysheng.com/blog/losing-my-mindfulness.html

<comment><USER2> The correct link for this is [http://www.tonysheng.com/blog/losing-my- mindfulness/](http://www.tonysheng.com/blog/losing-my-mindfulness/)</comment>


NRA goes global - <AUTHOR> https://www.bloomberg.com/news/features/2019-01-03/nra-goes-global-with-its-pro-gun-agenda <comment><USER2>
      The gun rights group raised $312 million in 2017, the most recent year for which numbers are available—about a 15 percent drop from 2016

In other words, they raise more in a Presidential election year than in a year without a Congressional election. Shocking!</comment>


Ray Dalio: the economy looks like 1937 and a downturn is coming in two years - <AUTHOR> https://www.businessinsider.com/ray-dalio-bridgewater-debt-crisis-downturn-coming-about-two-years-2018-9 <comment><USER2> I think he's predicted 12 of the last 3 recessions.

<comment><USER3> And he founded and runs one of the most successful hedge funds in history.

</comment></comment><comment><USER4> Roubini has been saying this for years. /s

</comment><comment><AUTHOR> Winter is coming?</comment>


The Art of Command Line - <AUTHOR> https://github.com/jlevy/the-art-of-command-line <comment><USER2> > To disable slow i18n routines and use traditional byte-based sort order, use > export LC_ALL=C (in fact, consider putting this in your ~/.bashrc).

Do not. Having a non-utf8 locale means you won't be able to handle utf-8 sanely ("that's why it's faster") and it will break at the most inexplicable times. Any non-latin1 character appearing in your prompt or command line with this will mess its spacing up for example. Do not do not do not.

Hell I even check for it in my .zshrc: [https://github.com/jleclanche/dotfiles/blob/master/.zshrc#L3...](https://github.com/jleclanche/dotfiles/blob/master/.zshrc#L378-L381)

Good post otherwise.

<comment><USER3> I have to reiterate this; don't do it -- sort order changes and you'll run into other mysterious issues.

It's not worth the "performance improvement".

<comment><USER4> There are good reasons to use LC_ALL=C _for certain commands_ , especially if you want sorting that's stable across different systems. Sometimes you want "aa" to be before "b" even though the Norwegian UTF-8 locale puts it after "å" (which comes after "…zæø"):

        $ echo $'a\naa\nb\nå'| LC_ALL=C sort
        a
        aa
        b
        å
        $ echo $'a\naa\nb\nå'| LC_ALL=nn_NO.UTF-8 sort
        a
        b
        å
        aa

Even worse, some characters that are byte-different collate the same:

        $ echo  $'∨\n∧'|LC_ALL=C sort -u
        ∧
        ∨
        $ echo  $'∨\n∧'|sort -u
        ∨

Handling Unicode sanely requires understanding some Unicode.

<comment><USER3> I'm well aware of that, but in general, don't do it still applies :-)

In general, I'd never do it for performance only, it would have to involve one of the issues you've pointed out (there are some components I build that require it, erroneously IMO).

</comment></comment></comment></comment><comment><USER5> > StrictHostKeyChecking=no

And welcome to MITM haven. This is awful advice if you care about the first S in SSH.

<comment><USER6> Depends on your circumstances, really. If you're in an environment with lots of VM's floating around, being created, destroyed, and so on, dealing with SSH's paranoia (why can't I just dismiss a warning about a host/key mismatch instead of having to edit .known_hosts?) quickly becomes an exercise in frustration for dubious security benefit. (If the enemy is on your LAN and able to manipulate your DNS, you've already lost)

On your home box, sure. But let's not pretend there's not a reason for the option to exist.

<comment><USER7> I use an alias to select when to, and not to, use host keys;

alias ssht='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

ssht floaty.vm # does not use host key checking

ssh my.bastion.host # validates host key

Really I ought to get SSHFP records populated when my vm's are created...

</comment></comment></comment><comment><USER8> If you learn bash, and you learn vi, then the next most glorious addition is:

set -o vi

Then you have vi keys in your shell. And it is marvelous.

<comment><USER9> or if you learn emacs you have emacs shortcuts by default in shells.

which goes against his childish comment on emacs:

> Learn Vim (vi). There's really no competition for random Linux editing (even > if you use Emacs, a big IDE, or a modern hipster editor most of the time).

<comment><USER10> At first I thought the same as you, but then I realised that he's not talking about your average editor, but about which editor to use if you SSH into a random web server etc. The thing you use in a foreign environment. That's what "random Linux editing" probably means.

<comment><USER11> This. On your home computer, use whatever you want. If you're using all sorts of foreign environments, you're going to want to use whatever is common to all of them so that you don't fumble around badly trying to do basic tasks. Learn vi. You don't have to like it, you don't have to use it on your home system, and you don't have to learn the eleventy-billion vim-efficiency-hacks floating around the Internet. But learn it well enough that if you have to ssh into some server that only has vi installed on it, you aren't rendered completely helpless. Even "Notepad Capability" is fine.

</comment></comment></comment></comment><comment><USER12> > Fluency on the command line is a skill that is in some ways archaic...

I don't see this to be the case at all. Plus, having this be the opening line may cause people to equate archaic=I don't need this.

I'd suggest (would pull request but afk) that you remove "is a skill that is in some ways archaic".

<comment><USER13> Agree. I've been hearing people saying the command line is archaic since Windows 95, and probably before that. Yet somehow I (any everyone I work with, and have worked with over the past 25 years) still works in a shell daily. I don't understand how someone on the technical end of running large internet services could avoid it.

Sure, GUI tools have crept in here and there. And I understand that some toolchains mandate all-singing, all-dancing IDEs. I don't work in those areas (the closest I've come was doing Java work for about five years and I still lived in vi, because Eclipse makes me homicidal). And I still see our iOS developers using `find' and `sed'.

Which isn't to say GUIs can't improve on the command line for some things. For example, the MacOS tool "A Better Finder Rename" (despite its inability to rename itself something less clunky) is a great tool for mass-renaming, e.g., photos. I have written such critters before as shell/perl/python scripts, but pulling EXIF data and renaming files programmatically is ticky and potentially destructive enough that I tend to write it once and then not modify it unless it breaks. The GUI preview and regex capture display makes this much less annoying.

<comment> lloyd-christmas Comparing your first sentence and that of the author, you're missing what I see as the key word: "skill". I use command line everyday. Probably most developers do as well. But I definitely don't have "skill" in it. I think the point is that most developers can get by with nothing more than the basics (whatever "basics" are in the context of their work). The command line isn't archaic, but command line as a fluency might be.

</comment></comment></comment><comment><USER14> Just throwing this [http://mywiki.wooledge.org/BashGuide](http://mywiki.wooledge.org/BashGuide) (it's listed 2 indirections deep so will probably be missed)

Every time you have an issue with the shell, go there.

</comment><comment><USER15> similar for data science: [http://datascienceatthecommandline.com/](http://datascienceatthecommandline.com/)

[https://github.com/jeroenjanssens/data-science-at-the- comman...](https://github.com/jeroenjanssens/data-science-at-the-command-line)

</comment><comment><USER16> The Linux Command Line (free pdf): [http://linuxcommand.org/tlcl.php](http://linuxcommand.org/tlcl.php)

<comment><USER17> Hosted on Sourceforge which is now blocked almost everywhere.

<comment><USER16> You're exactly right tomaac. Thank you for your comment.

The reason: [http://arstechnica.com/information- technology/2015/05/source...](http://arstechnica.com/information- technology/2015/05/sourceforge-grabs-gimp-for-windows-account-wraps-installer- in-bundle-pushing-adware/)

</comment></comment></comment><comment><USER18> The author should prepare to catch some hell for advocating 'ForwardAgent=yes' in ssh configs.

<comment><USER19> I had meant to take another look at ProxyCommand ([http://heipei.github.io/2015/02/26/SSH-Agent-Forwarding- cons...](http://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered- harmful/)), so thanks for the reminder!

</comment></comment><comment><USER20> If you're into the command line, I'd recommend getting a physical copy of Unix Power Tools [1] and spending some time with it. This is a nice article, but Unix Power Tools is better in almost every way for learning the basics (and more) of the Unix command line. This article mentions a few more modern tools, but Unix Power Tools has a far better explanation of what's going on.

[1] [http://www.amazon.com/Unix-Power-Tools-Third- Edition/dp/0596...](http://www.amazon.com/Unix-Power-Tools-Third- Edition/dp/0596003307)

</comment><comment><USER21> One really useful shortcut I learned in bash is Ctrl-/ which is a sort of undo for bash when composing a command. Can't really explain how it works, you should try it out yourself.

Also really handy is Ctrl-Y, which pastes the last cut characters by Ctrl-W, Ctrl-U or Ctrl-K.

<comment><USER22> C-/ and C-y are from readline which mimicked them (and many more) from Emacs.

</comment></comment><comment><USER23> Unix tools are very powerful, but they are not as intuitive as I would like. It would be nice if we can have an httpie for process management, one for text manipulation, another for system stats, and so on.

<comment><USER24> Powerful tools are rarely instinctive. Quite often, one person's obvious is another's opaque.

</comment></comment><comment><USER25> So this is tangentially related by why do people seem to push Vi? Nano is a perfectly serviceable editor. If I need to do extensive editing I always end up loading it into Atom, Sublime or some other editor anyway.

I've never really had to use a console editor for more than 10s of lines.

<comment><USER26> nano is super easy to use, I agree. I tried vim and gave up. Will try again.

<comment><USER27> I find it a bit irksome that when discussing command line editors, the dichotomy appears to be be "nano vs vim".

There are other CLI editors. I'm quite partial to ne (the Nice Editor), which has more manageable shortcuts than emacs, a command line (it's still a non- modal editor, to be clear), macros and syntax highlighting. Also jed is not bad. While vim (and nvim) have advantages, and certainly benefit from being ubiquitous and having ther shortcuts replicated in other programs, users should shop around, even on the command line.

</comment></comment></comment><comment><USER28> _Fluency on the command line is a skill now often neglected or considered archaic_

By whom? (honest question: even the most GUI oriented people I know reckon the power of command line skills)

<comment><USER29> I work in a .Net house. When we had to move to front end development which required using grunt _shock_ from the command line there was plenty of dissent at how we were being forced back into the "dark ages".

</comment></comment><comment><USER30> I'm glad the author took time to mention sl - every sysadmin should make sure that its installed on all the boxes they manage.

<comment><USER31> Good ole' _s_ team _l_ ocomotive command...

</comment></comment><comment><USER32> The new csysdig curses CLI [1] unifies and replaces a bunch of the system debugging tools listed here.

[1] [https://github.com/draios/sysdig/wiki/Csysdig%20Overview](https://github.com/draios/sysdig/wiki/Csysdig%20Overview)

</comment><comment><USER33> I'd never even thought about commenting a line I was half way through writing, when suddenly realising I'd forgotten the correct arguments.

I normally end up opening another terminal and using man there.

<comment><USER4> I do this sometimes when I want to run some command first from earlier in my history, then the commented out command also stays in history so I can continue with it after I've re-run the earlier command first.

</comment></comment><comment><USER24> Much, much more can be found at:

[http://www.commandlinefu.com/commands/browse](http://www.commandlinefu.com/commands/browse)

</comment><comment><USER34> Fun fact: alt+# is impossible on a Spanish keyboard, because alt+3 = #. So you actually _need_ to hold alt to type the character in the first place.

</comment><comment><USER35> > To locate a file by name in the current directory, find -iname _something_ . > (or similar). To find a file anywhere by name, use locate something (but > bear in mind updatedb my not have indexed recently created files).

I think this will glob unless you escape the asterisks. Also on my system (debian 8) I need to put the directory to search first, or not at all:

find . -iname \ _something\_

find -iname \ _something\_

edit: hackernews ate all my asterisks

<comment><USER24> > I think this will glob unless you escape the asterisks.

The majority of times, this is the case. At least one exception is when the shell pattern does not match one or more files in the directory which find(1) is executed. However, this can be "surprising" so it's best practice to either use escapes or ensure interpolation is disabled via single quotes (in Bourne shell syntax).

> Also on my system (debian 8) I need to put the directory to search first...

FWIW, you can specify more than one directory if desired. The primaries will be applied to the results of each.

<comment><USER36> > The majority of times, this is the case. At least one exception is when the > shell pattern does not match one or more files in the directory

Thankfully zsh has the NULLGLOB option which will do the right thing and expand to an empty list, of the zero matching files.

</comment></comment></comment><comment><USER37>
      cat hosts | xargs -I{} ssh root@{} hostname

glad to know this one :-)

      echo y | xargs -Ix echo x

how tricky!

<comment><USER38> I agree, this is one of my favorite tricks. I like to think of xargs as a `map` function over stdin lines.

As the article mentions, especially useful when combined with the -P flag for paralellism.

        cat urlpaths.txt | xargs -I{} -P wget domain.com/{}

Another handy trick, is to use `sh -c` or `bash -c` to include multiple commands with xargs.

        cat dirs.txt | xargs -I{} sh -c 'cd {}; touch file;'

</comment></comment><comment><USER39> Seems like a good introduction. I'm an amateur who's been using IDEs up until now. I'm just starting to become dimly aware of the power at the command line, and slowly learning in a haphazard way. This could be very helpful.

</comment><comment><USER40> Another one for obscure but useful: jot

# print 10 values from 1 to 10, with leading zeros:

for n in `jot -w "%04d" 10 1 10`; do echo $n; done

<comment><USER41> Just use Bash's builtin things:

for n in {0001..0010}; do echo ${n}; done

<comment><USER42> Or seq -f %04g 1 10

<comment><USER40> Sure seq is OK, but jot does everything seq does and more, so I prefer jot.

# generate 10 random numbers between 1 and 1 million

jot -r 10 1 1000000

<comment><USER41> I meant to go all "just use coreutils, there is shuf available already, no need for some third-party tool" but then I realised that jot is an integral part of BSD. Rock on! :)

For us Linuxers: shuf -i 1-1000000 -n 10

</comment></comment></comment></comment></comment><comment><USER43> No mention of autojump? :-p

<comment><USER37> I googled about autojump, then found fasd and decided to go with it.

[https://github.com/clvv/fasd](https://github.com/clvv/fasd)

</comment></comment><comment><USER44> pretty good writeup. Learning nohup was a life changing experience for me.

<comment><USER4> there's also disown. It's a bash builtin, so you'll have to type "help disown" ("man disown" gets you nothing). E.g. to run touchegg and close your terminal, keeping touchegg running:

       touchegg & disown; exit

<comment><USER2> I use an alias for it:

        function launch {
        	type $1 >/dev/null || { print "$1 not found" && return 1 }
        	$@ &>/dev/null &|
        }
        alias launch="launch "

<comment><USER4> why the alias as well as the function?

<comment><USER2> [https://wiki.archlinux.org/index.php/Sudo#Passing_aliases](https://wiki.archlinux.org/index.php/Sudo#Passing_aliases)

<comment><USER4> ah, thanks for that tip :-)

</comment></comment></comment></comment></comment></comment><comment><USER45> I learned a dozen new things in the first 100 lines or so, that will save me hours, and I've been living in bash for 20 years.

Thanks for this!

</comment><comment><USER46> There's no reason to learn vi if you know Emacs. If you claim that Emacs isn't installed everywhere, guess what: Neither is vi.

If you want an "installed everywhere" editor, learn ed. If you're willing to take an editor with you (or otherwise make sure a specific editor is everywhere you are), there's no reason it has to be vi.

<comment><USER47> vi is a posix requirement, emacs is not. If the system you're working on has ed, it'll have some version of vi or vim as well.

<comment><USER48> and not having to know ed is an excellent reason to learn vi :)

obCompulsoryEdJoke: [https://www.gnu.org/fun/jokes/ed- msg.html](https://www.gnu.org/fun/jokes/ed-msg.html)

<comment><USER49> a

I learned ed for a joke and found myself actually liking some features so much that I started porting them to emacs.

.

w

<comment><USER50> I've used ed(1) to do complex(ish) programmatic edits to files that I think would have been extremely painful otherwise. An interesting editor worth spending at least a small amount of brainpower on.

</comment></comment></comment></comment></comment><comment><USER51> Man so I guess tcsh/csh lost the shell wars?

<comment><USER24> Nah, just the hearts and minds.

</comment></comment><comment><USER46> There's no reason to learn vi.

<comment><USER46> Anyone considering using vi should be warned away by this practice of "disagreement by downvoting". If they do it here, imagine what they would do to a bug report!

</comment></comment><comment><USER52> Before that I was not so familiar with cmd. After that I was.</comment>