Ask HN: How did you improve your conversational skills? - <AUTHOR> I have struggled with conversations my whole life. Even with close friends that I have shared intimate details with I often find that conversations will stalemate rather quickly and that neither of us has anything to say. Do you have ideas on how to improve conversational skills? I often struggle with this in other ways such as with other professionals, dates, random casual encounters, etc. Any advice would be appreciated <comment><USER2> When I was in high school, I was horrible at communicating with people. Never went on a date with a girl and bombed all of my interviews. Almost ten years later, I'm pretty much a different person and I think it has to do with three things:

1) Check out the book How to Win Friends & Influence People[1]. It argues that the best way to make connections with people is to be genuinely interested. I read it the summer after graduating high school and try to reread it every couple of years.

2) When I was in college, I went to parties with my friends and forced myself to talk to people. At first, it was extremely awkward, but after a couple years, everything just clicked. If you're out of college, it'd probably be bars/clubs instead of college parties.

3) I joined Toastmasters, which is an organization that helps people become better communicators. They have periodic meetings where you would give a prepared or impromptu speech and have people provide constructive criticism. It's a great place and everyone there is extremely supportive.

I think the best way to improve your conversational skills is really just going out there and putting yourself in situations outside of your comfort zone. It'll take a while, but you'll improve a little bit each time.

Good Luck!

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

</comment><comment><USER3> * Have a goal to the encounter (the goal can be laughter, good feelings, learning whether the conference buffet is any good...)

* end conversations when they've ended. If you're at a networking event it's OK to have 5min conversations with people about what they do, if you don't think you can entertain them further.

* Try to notice when you're repeating yourself. To do that have group conversations with friends and ask them if they thought you insist too much on a particular issue generally. * When people are having fun they talk louder, faster, kind of lean into you. Optimize for that.

* The converse is also true. If you laugh, smile, and generally talk like you're having fun, it makes people feel more comfortable.

* When people are talking about a subject and they're suddenly talking a little faster, nod and ask questions.

* When people are talking about a subject but don't look too engaged (look around, fidget, move between ideas), build on what they say but switch to a subject you may be able to talk about in some detail.

* if it feels too challenging in specific situations, try to convert the situation to a group conversation. Ask dates to board games meetups, go to networking events with another professional, join conversations of existing groups, etc. It's easier to sustain conversations in groups.

</comment><comment><USER4> Improv comedy classes helped me a lot. Not even necessarily with spontaneity. They helped me build confidence. "I don't know what this situation is, and that feels yucky. But I've felt that kind of yuck a lot of times before so I'm pretty sure I'll be able to navigate it."

One of my improv instructors gave me this advice about conversations that always resonated with me: just make the conversation about the other person. If you get to the end of it, ask a question about them.

"Are you traveling for the holidays?" "See any movies lately?" "Where'd you get that ring?" "How are your cats doing?"

Anything, as long as it's about them. Keep _them_ talking. A metaphor we learned was "bull and matador." You're dealing with someone who has their own full, rich inner life. They're like a bull ready to lunge forward with a new spike of conversation. Sometimes you just need to wave your cape this way or that to get them to do the work.

<comment><USER5> This is definitely the best tip. Two things have probably helped me more than any others, this and saying people's names.

If you say someone's name you will remember it and I've noticed it helps them also remember you and have warmer feeling about you. Also asking questions will open up tons more information you can spring off of to learn more about them and find shared interests, opinions, differences, etc.

I would say you will have to genuinely care, if you don't people will notice and it comes off fake and creepy. I have noticed this with some consultants / business people. ( not saying it only occurrs there, just anecdotal personal experience)

</comment></comment><comment><USER6> I find that sometimes just talking about whatever pops into your head can make for good springboards into a fun conversation. Example: you're talking and it stalemates, you look out the window and it's snowing, so you say " isn't it crazy that no two snowflakes are the same?" And then the friend goes "yeah" so then you say "actually it kind of reminds me of people, we are all so similar, and there's billions of us, but none of us are the same." And just keep doing stuff like that until you find a new thread of conversation that sticks. When I find conversation hard, I usually notice that I'm second guessing my ideas, and thinking that it's not worth saying whatever it is I'm thinking, and that's what kills the convo, not that there's nothing to say. You're a complex human with complex thoughts, you're insanely interesting and if you let your ideas out in a light hearted way, people will want to engage with them. Good luck!

</comment><comment><USER7> Instead of asking the usual talking points ("Where do you work?/What do you do for work?" "Where are you from?"), try to ask _around_ them. So instead of asking someone what they do for work, try asking them what their day was like and then probing into their emotions (Was it good? What made it good? Was it bad? What made it bad?). We are shaped by our habitat and our work life, so people will naturally divulge those details if you ask _around_ enough while providing more "honest" answers.

Also, good conversations to most people are usually ones where they get to spend a lot of time talking about themselves. So one easy way to maintain a conversation is asking more questions that will get them talking about themselves.

Also, some people just don't like talking or are not in the mood to talk. While I love talking and meeting new people, I HATE doing it in confined places that I can't easily exit from (planes, car rides) or while I'm working out (gym, biking). Something I'm not good at (that I am trying to improve on) is telling people that I'm not in the mood for talking in a nice way, so often times, I come across as a dick in those situations when people try to talk to me. Picking up on queues that insinuate "I don't want to talk" (looking at phone, sitting with body turned away from you, looking everywhere else but the conversation, one- or two-word responses) and respecting that is also important.

Good luck!

</comment><comment><USER8> This may sound odd, but my biggest improvement in ability to have casual conversation with anybody came after a few months of beginner improv classes (at Second City). I'm not sure if it was being forced to quickly say _something_, or just being made more comfortable in awkward situations, but those classes did wonders for my long sought-after transformation from "weird conversationalist" to "normal guy".

</comment><comment><USER9> If you are in SF/Bay Area, I would highly recommend taking a course from Jaunty ([http://www.jaunty.org](http://www.jaunty.org)).

I took their Co-Ed Comprehensive course (twice!). They are not cheap, (around $1600 for eight week course when I took it), but for me, there is a clear demarkation in my life pre-, and post-Jaunty.

I read a lot of books (Art of Conversation, Seduction, How to Win Friends and Influence People, etc), but none of them came close to this course.

They target social intelligence with basic conversation skills, humor, body language, etc.

I would also highly recommend taking improv comedy classes. In SF/Bay Area, I recommend Made Up Theater ([https://madeuptheatre.com/](https://madeuptheatre.com/)). I took their classes for over 3-4 months. That really helped me build on conversations (Yes, and...) and not let them die.

(Edit: added improv comedy section)

<comment><USER10> Can you tell me more about juanty? What's it like, how does it work?

Would it be worth taking a trip up to ny or sf for a course?

<comment><USER9> Regarding it being worth it for you, that totally depends on finances, and if you are able to find someone to crash with for the duration of the course. If money is no (or little) matter, then I think it'd be worth it.

I signed up for Jaunty after being in a social rut for years. I tried books, videos on YouTube, online courses, and 1-on-1 coaching with a life coach. I didn't feel I was getting results that I wanted.

With Jaunty, the course is organized in eight 4-5h class once a week. We met on Mondays at 6pm in SF. There were 20-25 other people, both men and women, in the class. Some were from tech, but not all. When I took it for the first time, I was 27. There were people that were younger than me, and some that were 40+.

Each week, we did some theory in the class, and then exercises related to them. We all had homework, and an "accountability partner" to keep us on track. We also organized events to practice stuff we learned in class.

Looking back, the stuff we covered is very basic. But for me, at the time, it didn't occur to me naturally at all; it took practice for them to become close to second nature. We worked on eye-contact, slowing down, listening, humor, accepting and giving compliments, being assertive, etc. We also practiced basic approaches, and starting up and keeping a conversation going with complete strangers.

I still go back and look at my notes from the class. It helped my career at lot. I am better able to connect with colleagues, and more importantly, with managers and recruiters, and ask for more during reviews.

<comment><USER10> Thanks for the detailed write up! 8 weeks definitely wouldn't work for me. I'll Have to check if they have a one week course or anything like that.

<comment><USER9> You're welcome and good luck :)

</comment></comment></comment></comment></comment><comment><USER11> I made it a new years resolution to become more social, you're definitely not alone in this. As a developer I sit in front of a screen for the better part of eight hours a day with very little social interaction other than a few emails and IM's and whoever decides they need something and wants to come up and talk. Social skills are like a muscle in my opinion, the more you use them the better they'll be, I'm a good developer because I use those muscles five days a week and I'm a bad conversationalist because I don't conversate much. Just like making a resolution to hit the gym more often in the new year, as a developer, I'm making a resolution to have more conversations.

</comment><comment><USER12> The books Difficult Conversations and Thanks for the Feedback from the Harvard Negotiation Project are somewhat helpful, but really only for heavier topics. I've been looking for a good resource on how to lightweight to medium-grade banter.

</comment><comment><USER13> This is for public speaking, but you might want to try and find a Toastmasters club.

</comment><comment><USER14> I used to think before speaking. That would screw up informal conversations. Now I speak what I'm thinking. Think out loud.

I only need to pause when I'm thinking something negative or potentially offensive, then I say something like "oh that's interesting"... pause (and think)... then say something neutral like "I would have done/thought/handled that differently".

My wife can speak for 10 mins in seemingly one long sentence, and her opinion can change from the beginning of the sentence to the end. It's just because her brain is spewing out. However, people love talking to her.

</comment><comment><USER15> While initiating the conversation, I try to listening to the other person first before I speak anything. This way I clearly understand if there are any mutual or common interest/topics.

Before this, I used to interrupt in the middle of conversation and folks did not like it. I had to change my habit of not interrupting and listening patiently.

It gets bit difficult to continue the conversation if there is no mutual interest and takes a great deal of effort to continue having conversation.

Public/Forum/Group/Toastmasters discussion definitely helps to overcome the fear and anxiety.

Hope I am able to answer.

</comment><comment><USER16> For my thoughts on this, I'll just refer you to my post on a similar thread from a few years back.

[https://news.ycombinator.com/item?id=14196558](https://news.ycombinator.com/item?id=14196558)

The rest of the thread will probably have some stuff you may find useful as well.

</comment><comment><USER17> LSD

</comment><comment><USER18> I used to struggle with this, but as I've gotten older I have realized that people generally like talking about things they're interested in, and you can keep conversation going by asking questions about what they like. It helps to have kind of a decent memory so you can pick up where you left off before.

So, for example, with your friends: "Hey, how's that [thing they were telling you about the last time you saw them] going?" then keep asking questions about it until the topic peters out. Also, a bit off topic, but if you're finding that you and your friends don't have a lot to talk about, maybe find new friends that share hobbies so you can have a more natural flow of conversation?

With other professionals: "How did you end up in [Profession]?" or "What brings you to [Conference, lecture, talk, etc.]" A good one that will get you a lot of interesting conversation is "What's your biggest challenge at work right now?"

On a date, just ask them about themselves. The whole point of a date is to get to know the other person better, so just ask questions. Maybe the conversation doesn't go anywhere, which is probably a good sign that the relationship isn't going to go anywhere.

Random casual encounters: "Hey, [Person]! What have you been up to lately? Oh wow, that sounds really cool! Did you [have a good time, enjoy yourself, meet new people, learn anything new, manage to get that problem fixed, etc]? Great! Well, I have to run, fantastic to see you again!"

With speaking one on one with other people, think of the conversation as branches on a tree. You have the main "trunk" of the conversation which is whatever you both have in common (for example, you're both attending the same professional conference), and then topics of conversations are branches of possibility (why they're at the conference, what interests them most about the conference, how they ended up in their profession, etc). You can follow a branch down further to more specific topics if the conversation seems to flow that way, or back up and try a different branch, or maybe following one topic of conversation will lead you in a different direction (They say they're at the conference because they just started a new job, so you start asking them about the job which leads to them saying they just moved, so you can start talking about where they moved from, etc).

Something else that has helped me a lot is really thinking about what kind of person I want to be perceived as, and then holding that intent as I interact with others. In my personal life, it's a bit easier, as I just want to be myself, but in my professional life, I have spent some time thinking about what kind of impression I want to leave people with. As a result, whenever I go into a professional situation (like a conference or a big meeting) I spend a couple minutes thinking about what kind of impression I want to leave. That will naturally affect how I interact with others, as I will actively work toward leaving that impression. I'm not saying I create a false persona, just that I try and intentionally have my interactions be positive (so I strive to avoid complaining), that I come across as receptive to what the other person is saying (so I focus on really listening to the other person and understanding what they are saying), and that the other person perceives me as trustworthy (so I don't spread gossip or speak maliciously about anyone else, and I keep conversations private on an ongoing basis).</comment>


TenFourFox 38.7.0 available – thanks, Mozilla, for making the web little-endian - <AUTHOR> http://tenfourfox.blogspot.com/2016/03/3870-available-plus-thanks-mozilla-for.html?m=1 <comment><USER2> With regards to endianness of the web: this goes back to the original Khronos spec for typed arrays where the _only_ view was _machine endianness_. At least now there are both machine, big and little endian views…

Exposing machine endianness was largely criticised by Mozilla and Opera people (AFAIK, only the latter were still really shipping on big-endian platforms). It was largely motivated by a desire to ensure WebGL could have good performance when copying data on all machines. Of course, plenty of us saw how that would end: everyone testing only on their hardware (which would inevitably be little-endian), and nothing working on big-endian hardware.

Sadly, the majority of the WG didn't really care, given the only big-endian stuff they cared about was things like TVs where they only cared about (web- platform based) widgets, and they only cared about the WebGL case, and didn't believe anyone would use them for anything else…

</comment><comment><USER3> I installed TenFourFox on a friend's powerpc 2 months ago. The older browsers gave issues with certain sites. It's great people put effort in maintaining a crucial piece of software on older hardware which is still capable enough.

</comment><comment><USER4> TenFourFox homepage: [http://www.floodgap.com/software/tenfourfox/](http://www.floodgap.com/software/tenfourfox/)

</comment><comment><USER5> Why does anyone find it worthwhile to put this much effort into supporting this dead platform (PowerPC-based Mac)? Why not just let it go, acknowledge that the world has gone all little-endian, and buy a newer (but not necessarily new) computer?

<comment><USER6> My mom has an old PPC iBook (from 2003!). It's still working perfectly. It looks clean and white. She can edit documents and spreadsheets, check email, peruse photos. I've even fitted an IDE SSD. Why dump it for a newer 'better' model?

TenFourFox was the crucial factor - by providing a connection to modern internet - in our decision to maintain this old machine. My mom's happy, I'm happy! (And sincere thanks to "Contributors to TenFourFox.")

<comment><USER2> > Why dump it for a newer 'better' model?

Because no PPC release of OS X receives security fixes.

<comment><USER7> That's why software needs to become public domain if it's abandoned. We already do this for everything else - if you abandon land, you can lose it through "adverse possession". If you abandon your car, someone else can claim title.

When you abandon your stuff, society will eventually let someone else clean up the mess you left.</comment></comment></comment></comment>


Uncertain About Hiring, Some Companies Try 'Test Drives' - <AUTHOR> http://www.nytimes.com/2014/09/11/business/smallbusiness/uncertain-about-hiring-some-companies-try-test-drives.html?action=click&pgtype=Homepage&module=c-column-above-moth-fixed-region&region=c-column-above-moth-fixed-region&WT.nav=c-column-above-moth-fixed-region&_r=0 <comment><USER2> I don't quite get it. Normally, both the applicant and the employer take a risk when the latter decides to hire. You could argue that an employer takes the biggest risk.

In this system al the burden and risk is shifted solely on the applicant. So what does he or she gets in return? It's not clear from the article. I would expect that in order to attract applicants they must

\- either be desperate,

\- or have a salary offer in sight more than 2.5 times the market's average.

<comment><USER3> Provided that the "solid consulting rate" isn't pure bullshit, then I don't see the problem here.

In a traditional hiring process, you'd be hired, not work out in the first month, and then get fired. No unemployment or ongoing insurance for the employee, and a lot of paperwork and the possibility of a wrongful termination lawsuit for the employer.

By starting things off on a contract, both the employer and the employee have a chance to evaluate one another. It's really exactly the same as the traditional hire-fire process, but with less paperwork, and clear expectations on both sides.

<comment><USER4> _Automattic, the creator of WordPress, the blog and website tool. Still, every hire, without exception, goes through a two- to six-week contract period, and is paid the standard rate of $25 an hour._

$25/hour: seriously?

<comment><USER5> That seems ridiculously low for any software job. I've known design interns making almost double that in SF.

</comment></comment></comment></comment><comment><USER6> I would be extremely skeptical if someone asked me to do 3 weeks of work in one week with no guidance during my vacation. Add to that, I cannot imagine they'd pay my weekly rate, because that would of course raise the question of why I'd take such a huge pay cut to do the same thing full time.

</comment><comment><USER7> > noting that candidates are generally eager to test the waters before > committing to a job and that they are treated legally as employees even > during the trial period

I'm not seeing any upside for candidates here ? What does it even mean to "commit" to a job in this context ?

<comment><USER8> remain funemployed, I imagine...

</comment></comment><comment><USER8> I imagine that without realizing it, they are getting some bottom of the barrel talent using this process. Not sure which qualified person would look at this hiring practice and go through with it.

<comment><USER9> The upside of this for the employee is that they know they are going to be working with "rockstars" (the word is from the article). If I applied to a company which had a hiring process that could let through idiots, I wouldn't take the job.

</comment></comment><comment><USER10> I don't really think I'd accept this unless I had no other job prospects or I _really_ wanted to work at the place I was interviewing/'testing' at.

</comment><comment><USER11> >Meanwhile, she said, much of the emotion and uncertainty has been taken out of the interview process.

At least it has for the company. Seems like it puts more of the risk on the employee.

<comment><USER12> Yup, this seems very directly like a transfer of risk from the employer to potential employees.

But remember -- there's an engineering shortage! We can't hire good people! We need ten times as many h1b visas! (Pay more? Take a slight risk? Hire someone without five years of experience (in a four year old tech) doing _exactly_ what we think we want them to do? Now why would we do something like that?)

Edit: and nonsense like this is going around. I recently talked to a very early stage startup that just raised either a very large angel round or a smallish round A. The phone screen went well, and my experience and skills were a great match. But then the ceo wanted to do a reference check to proceed not to an offer but to an in-office meeting with the other founders! I said that, well, my references are ceos and chief scientists and they're very busy; I can't impose on them just to see if maybe there's a fit. But again, I'll bet good money he's complaining to his peers about how hard it is to hire.

edit2: I'm gonna channel michaelochurch: this is beyond fucking amazing.

       Not all positions lend themselves to candidate auditions. At Entelo, Joor
       and Weebly, candidates for senior executive positions rarely go through a
       trial process.

So yeah, all that shit about how execs are treated better? That's it right fucking there. At Entelo, Joor, and Weebly, if you're a regular asshole and dumb enough to want to work there, you gotta suck it up and audition. But an executive? Come on -- we're all equal, but some of us are more equal than others. All that writing Michael does about high-status and low-status jobs, this is how execs want to treat the low status employees. You should all read this [1]

[1] [https://michaelochurch.wordpress.com/2014/07/13/how-the- othe...](https://michaelochurch.wordpress.com/2014/07/13/how-the-other-half- works-an-adventure-in-the-low-status-of-software-engineers/)

<comment><USER13> Maybe we are somehow insanely good at interviewing engineers, but after a standardized 1 day interview I can't think of a single bad engineering hire we've made in the last year.

But, it may be much harder if you're only looking in the pool of people who are willing to work temporary contracts for $25/hour or "who are in jobs where they are unhappy".

</comment></comment></comment><comment><USER14> Our lead investor suggested we do this and it's been working very very well. The one time we didn't do it, it was a major screw-up.

Lots of negative comments about this from people looking at it from the employees side. Have you considered the impact on the employee if you just hire them full-time and it doesn't work out? They've quit their other full- time job (yes, we hire part timers who are at other companies while they're working there), potentially moved house, made other irrevocable decisions related to their new job with you. It's a disaster if you have to let them go in 3 to 6 months and it's very hard to get re-hired once you've gone through that - not only does it look bad on your resume but your self confidence is shot.

So a 30 day try-out IMO works extremely well for both employer and employee. Remember, you're trying out the company too during those 30 days.

<comment><USER15> I've never had a job that would be ok with me working part time for someone else. So I'd have to quit my job to do a trial run with you. At that point, I'm not sure it's better to be let go after 30 days instead of 90 or 180. I still have to look for a new job after having failed at one, and I still end up with a short stint on my resume (though I suppose it's short enough that I could reasonably leave it off). Also I don't understand how this addresses the relocation issue. If your company is in a different place than I currently live, aren't I going to be required to relocate regardless of how long my tenure is? Are people supposed to shell out for a hotel (potentially away from their families) for a month?

</comment></comment><comment><USER16> My last job began with an out-of-the-blue phone call, a couple of phone interviews, and then a ~8-hour (paid) contract project (adding a couple of features to the codebase I would be working on). I didn't actually meet any of my coworkers in person until about six months in.

It was basically a paid audition. I'm not sure how I would've felt had it not worked out, but it seemed like a fair process for all involved.

One big possible failure mode would be a totally incompetent auditioner, but paying a few hundred bucks for some unusable work is probably cheaper than bringing someone in for an interview with a few engineers, let alone hiring them.

</comment><comment><USER5> I have no problem "showing what I've got", so to speak. But I fear this practice is really just a tactic to strip software employees of leverage at the negotiating table. After going through weeks or months of trial by fire, making some friends in the trenches, and stopping the machinery of their larger job search, who is still willing to walk away from a lowish offer and begin that whole process again? It's the rational thing because there is plenty of opportunity out there, but emotionally it is a tough pill to swallow.

I'm in the middle of a three month contract to hire right now at a smallish startup. I go back and forth on whether I think it's a good idea (weeds out would be coworkers who don't perform) or bad for reasons laid out above. I was seeing a ton of interest when actively interviewing at companies and probably would not have agreed to this except that my current employer has long been on my dream job list. Emotionally it's tough to deal with being a temp, even as other (cheaper, non developer) employees are hired full time without a trial period. So far I'm sticking it out and doing well, but when I have doubts I feel like maybe starting down this path was a sucker's move.

</comment><comment><USER17> > People fail either because they do not get the work done or because they > have abrasive personalities, he said: "We have a zero-tolerance policy on > that."

We've sure gone soft. Here's to the sane, socially normalized ones.

</comment><comment><USER18> While I don't think it's a great solution (give up my vacation time to do more work?!?) I'm surprised so many people think this only plays to the employer's advantage. I've been in a number of interviews where the potential employer has lied through their teeth about what they do and how they do it and even stupidly accepted an offer as a result of one. Going through this process there would've saved me the miserable few months before I had to resign.

<comment><USER19> What's the difference? You spend a miserable few months as a contract employee vs a miserable few months as a salaried employee?

</comment></comment><comment><USER8> Just had a realization, I wonder if you get health insurance during your trial?</comment>


Apple commits $2.5B to combat housing crisis in California - <AUTHOR> https://www.apple.com/newsroom/2019/11/apple-commits-two-point-five-billion-to-combat-housing-crisis-in-california/ <comment><USER2> This is just so wrong. From a fundamental point of principle Apple's job is to make phones. The government then taxes Apple and decides how to spend that money. This is a direct attack on democracy - Apple has successfully lobbied to remove the taxes that would provide basic provisions like affordable housing and is now stepping in to choose which parts of the state it wants and which bits it doesn't. Yet more power transferred to Apple, and 0 accountability.

<comment><USER3> A couple of thoughts:

1\. Apple's 'job' is to do what it needs to do to ensure that its business prospers. If the housing 'crisis' in the Bay area is a risk to how it wants to conduct its business, isn't it reasonable that it invests to mitigate that risk? (This is barely different to Apple making large investments in manufacturers, to support them in turn being able to supply what Apple needs to buy from them.)

2\. From what I read and see when I visit SF, and also more broadly in the US, the government (be that national, state, or city?) is doing a pretty poor job of tackling housing-related issues - from affordability to homelessness. Can you directly attribute this widespread failure to a lack of funding, due to insufficient taxation of Apple and others?

3\. Isn't $2.5bn (+/\- new approaches?) to try to combat these issues better than $0, irrespective of where it comes from?

<comment><USER4> The issue is that the 2.5 billion dollars are not given to the public to spend. It's just Apple using it's stupid amount of capital to do bank-like things as far as I can see. From where I'm sitting, they'll still have to deal with the existing home-owners and speculators who want to maintain the value of their assets. I don't think waterhosing them with money will necessarily help.

<comment><USER5> That the public would have that 2.5B is a false assumption even if it is a complete tax write off for Apple. The money was already theirs for better or worse.

<comment><USER6> Exactly. The benefits largely accrue to the employees of the donor company rather than the public.

</comment></comment></comment></comment></comment><comment><USER7> Massive deregulation would solve the housing problem quickly.

When you have demand and you legislate to prevent supply from meeting that demand, prices inflate and potential buyers get priced out of the market.

Let them build!

</comment><comment><USER8> If only there was a trivially simple policy that is nearly guaranteed to work, that has worked everywhere it was tried, like removing zoning restrictions ... If only the most obvious things were possible ...

<comment><USER9> Complete lack of zoning can suck too. What if I build a chicken farm next to a nice neighborhood and make it unlivable due to smell?

<comment><USER5> They don't really need that so much as flexible zoning in a "we don't give a shit if you build an office building, an apartment block, or a blend but you need to pay to upgrade your sewer and water component to be able to go higher".

Not without downsides but frankly the current situation is untenable.

</comment></comment></comment><comment><USER10> _Nearly 30,000 people left San Francisco between April and June of this year1 and homeownership in the Bay Area is at a seven-year low.2_

This is how things should work, as people leave and/or are not willing to live in California, employers will start opening offices in other parts of the US.

If cities in California find that they can't hire enough qualified teachers, policemen, firefighters, etc., they will have to pay more.

<comment><USER11> Fire fighters make 200k, police can make 400k a year.

The one that is getting a relatively bad deal is the foreign population, that has higher tax rates, lower benefits, no political power and comprise 25% of Cali pop.

<comment><USER12> I am extremely skeptical of a cop in LA making 400k/year. My skepticism is supported by the fact the police chief of LA makes 350k [0]

[0][https://www.bizjournals.com/bizjournals/news/2018/11/21/publ...](https://www.bizjournals.com/bizjournals/news/2018/11/21/public- paychecks-americas-police-and-fire-chiefs.html)

<comment><USER13> Whenever public sector salaries are discussed in the news, the outliers are highlighted, never the median or the mean, giving readers a warped sense of what cops and firefighters make. Sure, some workers put in a lot of overtime hours and make gobs of money, but the typical salaries are not enough to live comfortably in the cities that they serve. For example, Glassdoor says the mean LAPD cop makes $76k --[https://www.glassdoor.com/Salary/LAPD-Police- Officer-Salarie...](https://www.glassdoor.com/Salary/LAPD-Police-Officer- Salaries-E135741_D_KO5,19.htm) and the mean SFPD cop makes about $100k -- [https://www.glassdoor.com/Salaries/san-francisco-police- offi...](https://www.glassdoor.com/Salaries/san-francisco-police-officer- salary-SRCH_IL.0,13_IM759_KO14,28.htm)

<comment><USER11> Glassdoor is less reliable than the actual data the state provides in transparent california.

Also Glassdoor doesn't count benefits which are almost half the salary.

<comment><USER10> You can't use benefits to pay for housing - the topic of the submission.

<comment><USER11> Yet you have to have pay the taxes that go to benefits.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Mind as well be thrown in the trash can.

</comment><comment><USER15> Not sure how to feel about this: is this a Good Thing(TM) or is it the start of feudalism where corporations(as legal persons) become the aristocracy

<comment><USER16> You don't really have to live in SV though. There are tech hubs in US with much more reasonable cost of living.

</comment></comment><comment><USER6> Apple, Facebook and Google should be investing in new office space in other regions. They created these problems by hiring more people than the Bay Area could support. Lots of great talent will move to other places if the jobs are there.

</comment><comment><USER17> I wonder if the real incentive here (for Google and Apple) isn't "civic duty", but more of an attempt to retain Silicon Valley's reputation as being some sort of "Mecca" for tech workers?

</comment><comment><USER18> I find it so ironic how much convergence US enterprises got with Chinese business models now.

In China, all and every large company is a real estate company. Baidu has real estate, Tencent has real estate, Ping An has real estate. Pretty much any large conglomerate is.

It is almost scary to see how much businesses in China are, in reality, just front covers for their real estate investments operation.

It remind me a bit the situation in mid-200X America, when every big company was a bank in disguise

</comment><comment><USER19> Housing is generally expensive everywhere in California. I know the Bay Area is even more expensive still, but pricing is a major concern beyond the local economy.

If their first-time home buyer assistance eliminates all down payments it would be helpful. This is what got me into my house as an owner, but then the total value of my house where I live is the equivalent to half a garage in San Jose.

<comment><USER20> I'm conflicted about zero down payment programs. Obviously, it lets more people qualify to buy, but I'm not sure that having a lot of people with zero skin in the game and no demonstrated track record of accumulating savings is a good thing. What happens when a $5K recurring maintenance item comes up? What happens when a $20K repair comes up?

<comment><USER19> You still have to qualify for the home loan just the same as somebody who does have a down payment. The only difference is a higher monthly rate in the term amount since 100% of the principle is remaining. A bank's risk calculations don't change simply because the borrower has fewer liabilities.

To assume home loans are simply given away to everybody because the down payment is absent is ignoring how the process actually works.

<comment><USER20> I _don't_ assume that loans are given away to everybody without qualification and I'm unclear where you got that idea from my text.

There are other differences in zero down payment situations. Having (or wanting) to sell the house in a few years makes it more likely the seller will need to bring cash to closing (as the lack of down payment makes it likely that the sales proceeds after commission won't cover the loan balance). This can "trap" people in their home, desiring to sell to improve their life in some other way but forced to choose between doing that with the 7 year short- sale black mark on their credit report or staying put.

This same phenomenon makes a zero down loan more risky to the note holder, making it more likely that the effective interest rate will be higher.

<comment><USER19> Again, that isn't how the mortgage industry works. The increased risk that you speak of does exist and is an additional charge on the note called Private Mortgage Insurance (PMI). It is a percentage fee the note holder pays to the mortgage company for an insecure transaction, such as low down payment. It is automatic and at set rates and the note holder doesn't get a voice. Either way the mortgage holder is financially secured.

Interest rate, on the other hand, is determined by all manners of risk factors, but not so much the down payment. Typically the bank assesses the risk of the applying borrower using things like employment history, financial factors, credit history, and other factors allowed by law.

Fortunately, my 0 down situation comes with no PMI and a low interest rate.

<comment><USER20> PMI, though often split out as a separate line item and sometimes paid to a different party, serves to increase the _effective interest rate_ on the loan.

That _is_ how the mortgage industry works.

> The increased risk that you speak of does exist and is an additional charge > on the note called Private Mortgage Insurance (PMI). It is a percentage fee > the note holder pays to the mortgage company for an insecure transaction, > such as low down payment. It is automatic and at set rates and the note > holder doesn't get a voice. Either way the mortgage holder is financially > secured.

PS: The mortgage "note holder" is the _lender_ , not the _borrower_. In the quoted paragraph, you should replace the first two uses of "note holder" with "borrower". That "percentage fee" is exactly what makes the effective interest rate higher.

</comment></comment></comment></comment></comment></comment><comment><USER21> The State of California will squander it all. I hope shareholders respond in kind.

</comment><comment><USER22> I wonder if that money will be purely to pay for lobbyists against NIMBY.</comment>


Useful old technologies: ASN.1 (2013) - <AUTHOR> http://ttsiodras.github.io/asn1.html <comment><USER2> ASN.1 is a bit unfortunate. On the one hand, I want to believe: it's a fairly ubiquitous standard (at least, as long as you're dealing with cryptography or a handful of other specific fields), and it's true that it can be a lot more compact than JSON or XML (see below), and it's even occasionally faster. However:

1\. A lot of ASN.1 software is pretty buggy and undermaintained. How do I submit a bug to pyasn1? Because it's entrenched in libraries three or four layers below what most developers will see, it's also difficult to replace.

2\. Faster and more compact depends on the encoding rules. Let's talk about the dozen or so different ways you have of encoding ASN.1. BER? DER? Maybe CER? XER? Why not both: CXER! I'm missing a bunch, I know.

3\. The performance and network arguments ignore what you can do with compressed verbose formats like JSON, XML or EDN. lz4 is _magic_. Even totally ubiquitous gz compression works extraordinarily well.

4\. While ASN.1 messages do contain descriptions of what types they contain (e.g., you can see that there's a bit string coming), they aren't self- describing in the same way that JSON or XML are, which is quite annoying for debugging. You can make self-describing messages using XML, but at that point you're literally just doing XML. Good luck finding software that lets you easily use whichever you like -- even if you subscribe to the notion that easy debuggability doens't matter for production messages, in which case I strongly disagree.

5\. I'd harp about its extensibility, but it's really no better than JSON, so I won't.

All-in-all, I'm compressing some EDN, and I'm pretty happy.

<comment><USER3> I feel the same way about ASN.1. I remember implementing some ASN.1 tools as part of an SNMP engine and thinking "how could anyone possibly implement all of this correctly?" \-- a few years later, all those vulnerabilities in SNMP products at the ASN.1 encoding level came to light. On the other hand, it's sad to see efficient on-the-wire encoding ignored, and the ASN.1 standards aren't really abominations when you compare them with some of the web services standards.

In addition to what you mentioned, I wanted to mention EXI (and FAST, the FIX encoding) as interesting on-the-wire encodings that maybe more people should consider over just compressed JSON or XML. Generic LZ-based compression doesn't necessarily win very much with lots of short messages.

<comment><USER4> I had a similar feeling making an SNMP MIB processor around the same time (2000?) -- the ASN.1 libraries so complicated. So I wrote my own, which turned out simple and symmetrical just by encoding from back to front instead of the messy front-to-back-and-backpatch everyone else was doing. (And I guess by leaving some things out that we didn't use, like other encoding rules? I don't remember.)

When those vulnerabilities hit I never found out how that code did -- I wish they'd open-sourced it as they'd planned.

So, that particular part (DER? again I forget) seemed tolerable to me. The newer stuff like Cap'n Proto is probably still better.

<comment><USER5> Yes, this! This is the secret to simple BER/DER encoding: back-to-front. I was _almost_ converted to ASN.1 BER after discovering this, but in the intervening 8 years the spell has (thankfully) worn off and I can see it for the clattering technological jalopy that it is.

The features in the author's F# ASN.1 compiler are pretty swank. ASN.1 probably gets a bad rap because of BER/DER.

</comment></comment></comment></comment><comment><USER6> I remember back when Protobuf and Thrift were new, there were discussions about them re-inventing the ASN.1 wheel.

I'd love to hear opinions of people who have used them, and the experience they made. I've found an interesting thread [1] discussing them, and the claimed advantages for Protobuf are as follows:

\- faster (real existing software, not some hypothetical ASN.1 compiler that could do x)

\- easier to maintain backward compatibility

\- much simpler, and thus easier to understand and more robust

Especially maintaining compatibility seems crucial to me in large distributed systems.

[1] [https://groups.google.com/forum/#!topic/protobuf/eNAZlnPKVW4](https://groups.google.com/forum/#!topic/protobuf/eNAZlnPKVW4)

<comment><USER7> Protobuf is vastly simpler, but has most of the power. As it's used internally by Google it's also very likely to have been audited and reviewed carefully, and thus very unlikely to have security bugs (otherwise all their internal systems would be wide open).

</comment></comment><comment><USER8> ASN.1 is used as one protocol in the next-gen air traffic control systems currently being deployed in Europe. The relevant aerospace standards spell out a specific subset which helps with getting it correct. Only the single Packed Encoding Rules (PER) encoding is used, for example.

<comment><USER9> ASN.1 (PER) is also used in the EU eCall -system as the encoding protocol of the data between the on-board unit and the emergency call center.

</comment></comment><comment><USER10> Coincidentally, ASN.1 (specifically it's DER encoding) is used in X.509v3, better known as TLS certificates. For a taste of the crazyness that ensues check out Peter Gutmann's x.509 style guide [1].

Personal highlights:

* Many different ways of encoding a simple string, with some very obscure encodings.

* SET OFs are sorted in the DER encoding, to ensure consistent bytestreams. This sucks for embedded systems.

* OIDs (unique identifiers for things) are unbounded.

[1] [https://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.txt](https://www.cs.auckland.ac.nz/~pgut001/pubs/x509guide.txt)

</comment><comment><USER11> I implemented X.509 several times in the late 90's. Generalized ASN.1 is a mess: I don't believe there were any decent open source toolsets then, and the code emitted by the ASN.1 compilers I could test was lame and required you to adopt their conventions completely through your code.

Furthermore, ASN.1 has the usual lameness you get when people build generic description languages: for example, it's quite common to encode a particular ASN.1 structure, and then put the resulting structure into an OCTET STRING for inclusion in a parent structure (take a look at Extension in RFC 5280's ASN.1, for example). This is presumably because ASN.1 didn't (doesn't?) support an ANY type to allow inclusion of arbitrary structures that the decoder didn't know how to parse, so there's no extensibility without such tricks.

In the end, I punted and just used BER/DER directly without ever using ASN.1. This made a lot of things much simpler and produced much smaller and more efficient code (e.g. my cert parser for our SSL library for the Palm III ran with no additional allocation space, and compiled to a few K of code).

</comment><comment><USER12> Marshalling and unmarshalling are common, yet ill-matched to most programming languages. You usually have to define the marshalled form in some cross- language notation, then use some overly complex tool set to get it to play well with the language. This applies to ASN.1, Google protocol buffers, OpenRPC, and XML. Each has its very own data definition language and tool chain.

JSON is taking over because it's a good match to languages where you can define lists and dictionaries easily. Most languages now have that. The overhead is high, but the simplicity is helpful. As a practical matter, it's usually easier to get things to talk to each other with JSON than with the more rigid forms. Someone is usually out of compliance with the data definition.

There's now "Universal binary JSON" ([http://ubjson.org/](http://ubjson.org/)). That's just a binary representation of JSON. Then there's JSON Schema, which adds a data definition language to JSON. Put both of those together, and you have something very close to ASN.1.

And the wheel goes round and round.

<comment><USER13> I felt like MessagePack was the clear JSON-as-binary winner. Oddly, ubjson does not mention it. Do you know how it compares?

</comment></comment><comment><USER14> I'd be curious to know if Google's Protobuf library, and kentonv's followup Cap'n Proro library, use concepts initially from ASN.1.

<comment><USER15> There is also FlatBuffers which takes Cap'n Proto ideas and brings it back to Google ([http://google.github.io/flatbuffers/](http://google.github.io/flatbuffers/)).

These encoding formats (or rather their implementation) is based on mimizing copying of data. Deep down they are based on mmap-ing memory areas. Not unlike you see the casting of blobs of memory to packed structures (but with more safety).

</comment></comment><comment><USER16> Nice to see more applications of it. But you don't even need a fancy ASN.1 compiler; OpenLDAP's liblber will do BER/DER just fine. (It uses malloc, but that's because LDAP messages have unbounded size. And it doesn't _overuse_ malloc...)

XML and JSON are both ridiculously inefficient, both for static storage and especially for communication protocols. Can't wait for them to die.

</comment><comment><USER17> I dealt with ASN.1 some years ago when working on an SMS anti-spam/anti-fraud system. ASN.1 was both amazingly awesome and horribly frustrating at the same time. I have an awful lot of respect for it especially given its age, but I'm also glad to now be working somewhere where I can use JSON, EDN and Transit :)

</comment><comment><USER18> And if you happen to be dealing at the bit level or have variable-length fields, as found in encodings such as ExpGolomb (typical in audio-visual encodings), then check out Flavor[0].

[0] [http://flavor.sourceforge.net](http://flavor.sourceforge.net)

</comment><comment><USER19> This is orthogonal to the argument in the article, but the "buffer overflow" example in C is incorrect. Even if sizeof(b) is smaller in the receiver than in the sender, the receiver will only read at most as many bytes as it (the receiver) thinks are in b -- whatever it got for sizeof(b). Of course, this could still lead to a truncated message, but we'd all be in pretty big trouble if you could buffer overflow a server by sending it a message larger than its recv buffer :)

</comment><comment><USER20> Maybe you don't need full ASN.1 but only TLV?

[http://en.wikipedia.org/wiki/Type-length- value](http://en.wikipedia.org/wiki/Type-length-value)

</comment><comment><USER21> ASN.1 is an awesome way of encoding information, but having variable lengths all over - implementations are very prone to bugs and buffer overflows.

It sure was fun implementing back then.

<comment><USER22> At some point you will have to deal with items of varying length, and what ASN.1 does is IMHO far better than some of the other protocols. In particular, DER is all TLV, so the lengths are explicitly provided _a priori_ and can be checked easily.

Contrast this with text-based protocols that rely on scanning forward to find a delimiter - the lengths are _implicit_. I think this is what really can cause bugs, as not having explicit lengths makes it easier to forget to check them against the buffer's size.

<comment><USER23> On the other hand, there is some research[1][2] which indicates that one way of improving software security and reliability is to (1) realize that any program that accepts input is basically a recognizer of strings belonging to some formal language, and (2) that we should limit the grammar of said language to regular or, at most, context-free. Length fields automatically make the grammar context sensitive which is much harder to secure according to langsec.

[1] [http://langsec.org/](http://langsec.org/)

[2] [http://youtu.be/UzjfeFJJseU](http://youtu.be/UzjfeFJJseU)

<comment><USER24> Interesting link, just skimmed it and haven't had a chance to watch the video.

> Length fields automatically make the grammar context sensitive which is much > harder to secure according to langsec.

Is this accurate given a finite length field? I can imagine a DFA that recognizes the language of a single byte length prefix followed by strings of 1 to 255 characters, just that the node that consumes the length field will have 255 branches to sub-DFAs that recognize 1, 2, ..., 255 character strings.

<comment><USER23> Yes, I should have said "unbounded length field". But, with respect to the discussion, a 32 or 64-bit integer is only bounded in the academic sense.

Also, here is a video that works a bit better as an introduction to LANGSEC: [https://www.youtube.com/watch?v=3kEfedtQVOY](https://www.youtube.com/watch?v=3kEfedtQVOY) (around 19:00 is especially entertaining)</comment></comment></comment></comment></comment>


Friedrich Hayek on Evolution and Spontaneous Order (1983) [video] - <AUTHOR> https://www.youtube.com/watch?v=yQhqZ-iWMRM <comment><AUTHOR> It's a bit hard to focus on because of his accent and slow speaking style, but if you can stick with it, this is a fantastic lecture filled with interesting and stimulating ideas. I hadn't realized prior to listening to this that Darwin had in fact gotten many of his ideas on evolution from the social sciences, particularly Adam Smith's Wealth of Nations.

<comment><USER2> Friedrich Hayek put the Austrian in Austrian Economics; the term was invented by the Germans and was meant to be disparaging towards him and others like him.

Hayek has an extensive body of written work, the jewel of which is "The Road to Serfdom". Russ Roberts of the Hoover Institute has hosted an ongoing podcast called EconTalk[1] that while not studying Hayek specifically, often brings a Hayekian viewpoint to his discussions with guests.

[1] [https://www.econtalk.org/](https://www.econtalk.org/)

<comment><AUTHOR> This an interesting interview with Hayek from 1982:

[https://www.cato.org/policy- report/february-1982/interview-f...](https://www.cato.org/policy- report/february-1982/interview-fa-hayek)

His quote here makes me think he would have rejoiced at the idea of Bitcoin:

"Well, I have despaired of ever again finding a way of restraining government abuse of any money which it issues. My proposal to denationalize money was always in a sense Utopian because governments will never freely allow competition in this business. I believe there are ways around this, and my present view—which I hope before long to state in detail—is that there is probably a possibility of not issuing currency but starting with credit accounts under some other name—say, call the unit a "stable" and promise to redeem it with enough of whatever current monies are required to buy a certain list of raw materials. So it doesn't involve issuing any circulating money, but it enables the holder to keep a stable unit in the form of a credit. Once you've succeeded in this, the next step would be issuing credit cards on these accounts. And then you have circumvented the whole monopoly of government. Since it is politically impractical to deprive the government of its monopoly, you have to circumvent it."

<comment><USER3> If you've ever tried paying your taxes in Bitcoin you'll have discovered the limitation of this viewpoint.

The government monopoly isn't over money. You can use and issue whatever money you can get others to accept.

The monopoly is over the denomination required to extinguish the liability that government has the legal power to impose upon you and while you live in its sovereign area. Aka taxation

Ultimately you cannot circumvent state money while there are states that control land areas. You will always need their money to pay taxes and that need is sufficient to allow a state to provision itself - since the only place to get the denomination is from the state in exchange for goods and services

<comment><USER4> The monopoly includes laws around legal tender, which of course, is government money. The government money can be used to settle any debt - this isn't true for other monies. This means that even if the legal tender is rapidly losing its purchasing power and there exists a harder money which creditors would rather receive as payment, they are forced to accept the legal tender instead.

<comment><USER3> "The government money can be used to settle any debt - this isn't true for other monies."

Legal tender is often misconstrued as an argument. Legal tender laws relate to the settlement of enforcement in courts. Nothing else.

You can require that your customer pays you in Highland Sheep if you want - and refuse to sell anything to them unless they produce those Sheep.

However if you advance them credit (aka creating your own money) and the customer refuses to pay in the Highland sheep denomination as they promised, and then you go to court to enforce your contract, the court can dismiss the case if the customer has offered "legal tender" to discharge the debt.

What legal tender laws do, in effect, is force you to peg your own currency and your own credit advances to the denomination of the state you choose to enforce your contracts in.

Bear in mind you can change the jurisdiction by adding a jurisdiction clause to your contract. Even though I'm in the UK I can guarantee payment in US dollars simply by making my contract subject to the laws of California (say).

</comment></comment></comment></comment></comment></comment><comment><USER5> Hayek was influenced by Bastiat's idea of Economic Harmony -- a story of spontaneous order.

Also, Hayek was influenced by Henry Charles Carey, who wrote about harmony in economics and the unity of sciences. He was Abraham Lincoln's economic advisor and put in place "The American System".

Both theorists offer a classical middle ground between completely free trade and government control. They identify the objective principle as harmony and indicate the way to get there is through liberty -- and a sprinkling of protectionism.

</comment><comment><USER6> Why is spontaneous order desirable? Pandemics are spontaneously ordered too.

IIRC, when pressed on this, Hayek resorted to a kind of crude biopolitcs -- market societies had more population growth so that made them better.

<comment><USER7> > Why is spontaneous order desirable? Pandemics are spontaneously ordered too.

I don't think it's a question of what is "desirable", but rather a question of what is _inevitable_.

Sure, bacterial/viral/parasite outbreaks are part of natural systems, and have their own spontaneous order, but the way their host systems react and respond is also a manifestation of spontaneous order.

In modern society this is true whether we're talking about planned/centralised economies or more laissez faire ones. I.e., even in a relatively centralised society like China, grassroots decisions and actions still play a highly significant role in overall activity, including in the pandemic.

It's a subject of ongoing study and debate as to the effectiveness and efficiency of centralised attempts to control organic processes.

<comment><USER8> > I don't think it's a question of what is "desirable", but rather a question > of what is inevitable.

 _inevitable_ is a smart way of pushing something you want to happen though. The famous quote from Margaret Thatcher "there is no alternative" is tge best example of that.

Also, as twentieth century shown us, their is nothing really impossible for a sufficiently motivated government, sometimes for the better but often the worse (from "landing on the moon in a decade" to "eradicate the Jews").

<comment><USER7> > _inevitable_ is a smart way of pushing something you want to happen though

Sure but that's not what I'm talking about. As I said in the comment, whether it's Thatcheresque "market fundamentalism" or some form of extreme central planning, there will still be a spontaneous order at the grassroots level. Individuals and groups will always respond organically to their conditions. The only question is how much governments can influence it, and how beneficial are their attempts. But that doesn't change the inevitability of some form of spontaneous order.

> [there] is nothing really impossible for a sufficiently motivated government

Programs like the "war on drugs", the "war on cancer", the "war on obesity" and the "war on terror" would suggest otherwise, and demonstrate that vast interventions can be not only hugely wasteful but can have precisely the opposite of the desired effect.

<comment><USER8> > Programs like the "war on drugs", the "war on cancer", the "war on obesity" > and the "war on terror" would suggest otherwise

Because declaring "war on something" isn't political action in itself, it's electoral communication. How many times did the US government perquisionned Ivy league colleges or trading desks to seek cocaine? Why not ? And why are the US still cooperating with Saudis and other gulf states if they really cared about terrorism? And for the health issue wars you mensionned, the government has zero political will to shut down the huge agro-industrial complex which has a big responsibility in both.

Hitler once said to somebody complaining about the inflation risk caused by his policies: "I'm gonna send the SA in the grossery shops, and will'll see if there is inflation".

<comment><USER7> Clearly it's not true that "there is nothing really impossible for a sufficiently motivated government". Governments can and do succeed at some things, but the scope of things they can do without negative consequences is very limited.

History shows that very clearly, including the examples I suggested (which as you point out were messaging labels, but they all have had real and vast interventions to go with them), that you attempted to refute with more examples of government interventions playing out badly.

To be clear, I'm not any kind of anti-government anarcho-capitalist or anything like that. I'm from Australia and am supportive of the mixed economy we have here.

Also, please stop blithely invoking 1930-40s Germany as an example of governments achieving intended outcomes. It's not what I come to HN for, it makes my skin crawl, and even if you insist on a dispassionate evaluation of that system, our ability to determine how it would have played out long term is obviously very limited, but even then we know for sure it was horrific and not at all the kind of thing that should be described as "desirable", which is the very word that kicked off this subthread.

</comment></comment></comment></comment></comment></comment><comment><USER9> Very surprised to see F.A Hayek on HN. I would recommend the Road to Serfdom to anyone who is interested in learning more about his viewpoint. Also reading Thomas Sowell wouldn't hurt either.

<comment><USER8> I agree that the _Road to Serfdom_ is an interesting read. Even if you don't share the really conservative view of the author (and the Austrian school as a whole), it gives you the ideological background that underlied the dismantling of the western Welfare State (which is what Hayek calls "road to serfdom") during the 80s and 90s.

<comment><USER10> In Raod to Sefdom Hayek acknowledges that basic welfare, health and retirment polices are consistant with a liberal state.

What it gave a backround to was dismanteling a lot of the idioitc regulatory structures and inflationary spending of the 1970s.

<comment><USER11> > What it gave a backround to was dismanteling a lot of the idioitc regulatory > structures

Guardrails are so idiotic: people are always bumping into them and getting annoyed. It'd probably be best if we just removed most if not all of them. /s

The thing about regulations is you can always cherry-pick a couple mind- boggling stupid ones. But then there are the ones that _look_ silly, but only if you've never experienced or witnessed the problem they were meant to solve.

<comment><USER10> These regulations included things like monopoly in many industries, truckig, airlines and so on. There are lots of example like this. I'm just absoulty mindboggled by the current liberal idea of literally and regulation is always great and any removal of any regulation always responsable for the next crisis. Even saying 'deregulation' gets view on basically like saying that you are a neonazi.

Simularly the view that all regulation exist for a good reason is also flat- out false. It flys directly in the face of any serious study of political science and the formation of regulation in the real world.

<comment><USER11> > I'm just abso[lutely] mindboggled by the current liberal idea of literally > an[y] regulation is always great and any removal of any regulation always > respons[i]ble for the next crisis.

> ...Sim[i]larly the view that all regulation exist for a good reason is also > flat-out false.

You're boggling your own mind, since that's a straw man position. I made it clear I didn't hold it ("the thing about regulations is you can always cherry- pick a couple mind-boggling stupid ones..."), and I don't think "liberals" hold it either.

The position I do hold is that to actually evaluate a particular regulation is difficult and requires a lot of thought; and it's easy to to mislead someone into taking an ignorant, broadly anti-regulation stance by cherry-picking examples of bad ones. I've seen a lot of that, and at one time I even found the cherry-picking persuasive.

Deregulatory zeal has a tendency of throwing the baby out with the bathwater. Also, some specific cases of deregulation can merely re-introduce negative externalities that some connected group stands to benefit from (to the determent of the public good).

</comment></comment></comment></comment></comment></comment><comment><USER12> _The Road to Serfdom_ should be required reading for anyone who considers themselves a thinking person. I am a libertarian but have read a lot of philosophy from the major thinkers who encompass all points on the political spectrum. If you consider yourself educated and convicted in your beliefs, you should especially focus on those who disagree with you to ensure you truly believe in your principles.

The Austrian School of economics has a niche diehard following but I'm not sure how seriously they can be taken for several reasons. However, I am a fan of their opinions on "hard money", and do not like governments printing endless "fiat" currency, which is also why I have devoted several years of my life to cryptocurrency.

Don't dismiss Hayek out-of-hand. Give him a fair shake, even if you are on the left.

Edit: amused by the downvoted from lurkers. People don't like to read about views that disagree with their own, in these monoculture times.

<comment><USER13> Couldn't agree more, as someone very much on the left. I read The Road to Serfdom and along with Smith and Basquiat it made me a libertarian early on. Later I turned and I'm now very much on the left but still respect Hayek's ideas and arguments.

<comment><USER14> Libertarianism has left and right variants: the right retains private property, and the associated government functions, while the left is also known as anarcho-communism.

We really need special economic zones for experimenting with alternative economic and social systems. Unfortunately, the tradition has been to have a single system for an entire country, and if not all people want it, too bad.

<comment><USER2> So a little SEZ if you want to experience what it was like to live under the Divine Right of Kings and its associated aristocracy and serfdom[1][2], a little SEZ if you want to experience Christian theocracy[3][4], a little SEZ if you want to experience a degenerate lawless unproductive commune without domestic agriculture[5], and a little SEZ if you want to live free[6]?

States don't exist in a vacuum. We're constantly experimenting as it is, if you want to call politics experimenting, and every new law or ordinance passed, every new executive order issued, every new opinion written by the courts and every new verdict reached by a Jury changes the "system" a little. You could call it the ultimate experiment in reflective social programming if you want to get nerdy about it, but I wouldn't use such terms myself.

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

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

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

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

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

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

<comment><USER14> Pretty much. Some of these would probably turn out to be more popular than others. It would be contradictory for libertarians to try to impose their systems on others against their will. But given the unpopularity of libertarian parties in elections, libertarianism is unlikely to be implemented, even on an experimental basis. What finished off the 1930s anarchists in Spain? It's not a very well-run economic experiment when it's shut down by Marxists and Fascists. A bit more tolerance would be helpful.

<comment><USER2> I paid minimal attention to the Libertarian Party nomination debates, but from what I heard when Justin Amash briefly considered running for President as a Libertarian, the debates within the Party were centered around running to win versus just trying to influence the direction of the Overton window. I suspect Amash chose not to proceed because he realized that the Libertarian Party while not without worth, does not have the killer instinct to actually win elections and that will forever hamper their effectiveness. Amash wanted to _win_.

I have strong libertarian sympathies, but the reason I'm not a full throated libertarian is that it isn't an ideology that effectively seeks to acquire power, and without being able to win elections, they can never pave the way for the society they seek, nor would it be able to withstand aggressive neighbors or slight changes in values across the community. A libertarian state is transient at best.

I also don't want to prop up SEZs that would massively violate peoples' natural rights for the sake of experimentation. Freedom is without Kings or Serfs or Slaves.

</comment></comment></comment></comment></comment></comment><comment><USER15> Hayek deserves so much more recognition. Now more than ever - we need people to understand the fundamental inadequacy of central planning.

<comment><USER8> For sure, central planning is so _inadequate_. And China's economic failure compared to liberal countries like India is a great illustration of that. Oh wait…

(Also relevant, in the 20s and 30s, USSR came from a shithole agricultural country with no industry, to the second biggest industrial economy of the world).

I'm not saying that central planning is _desirable_ , but it's for sure more than _adequate_ of your goal is development.

<comment><USER10> If you even the slighest bit of understanding of Indian history and Indian economics calling it 'liberal' is complete nonsense.

After WW2 India adopted a diliberatly socialst agenda, often called Indian Socialism the was all about top down managment of all markets with heavy government guidence and intervention. This concept was popular in pre-WW2 British Socialism and India served as a huge experiment. While some of this has been removed you can still see it all over Indias economic policies today. India is still a far, far away from any sort of free market economy or liberal political order.

> (Also relevant, in the 20s and 30s, USSR came from a shithole agricultural > country with no industry, to the second biggest industrial economy of the > world).

Its is another bunch of nonsense socialist myth making. The trope of Imperial Russia being a backwards shithole then as soon as Soviets take over its some paradise is nothing but Communist propaganda.

In fact before WW1 Russia was one of the fasted growing nations, that itself was one of the reasons for WW1 as the Germans realized that within a generation Russia would probebly match or be more powerful then them.

If you look at Russia WW1 economy, you will see that in terms of manufacturing it actually performed incredibly well. They had a problem with food distriubtion and political authority, more then with production. The Imperial Russian economy was already one of the biggest industrial countries by a lot of different measures. This is clearly confirmed when you look at the weapons output during WW1.

In the 20s Soviet economy first of all starved millions of people and only by the end of the 20s did they reach pre-war levels of output.

From 1928 they started collectivisation and even more agressive industrialisation, but it should be noted that it required millions of people dead, many more millions put into forced labor and massive starvation of the whole population to export grain and thus import pretty much everything from the West.

To make a point of this, the Soviets literally copied US and German factories and payed tons of money for them and then used lots of forced labor to build them. Putting that as some great success of centralised planning is dubious to me.

And this great plan also didn't lead to much improvment for the actual people, it was primarly about the production of military equipment.

<comment><USER16> Yes Russia was growing fast but from a low base but the handling of this growth was totally botched.

And pre and pots ww1 arms production was not massive Russia was buying massive amounts of guns from the USA and look at the performance of Russia vs Japan.

<comment><USER10> So Imperial Russia was bad because it grew fast from a low base. But the Soivet Union is great because it grew fast from a low base. Makes total sense.

> And pre and pots ww1 arms production was not massive Russia was buying > massive amounts of guns from the USA and look at the performance of Russia > vs Japan.

Russia did produce a large amount of war material and every academic source agrees on this.

Military production certaintly wasn't the issue in that war. That war more then anything else shows the weakness of the political system that was again evident in WW1.

<comment><USER16> They where buying lever action Winchesters off the USA - not normally a sign that your military production is up to providing what you need

<comment><USER10> Wow rifles. Clearly the most modern kind of weapon in WW1.

Russia had a gigantic army, rifles are a simple mass market commodity the the US was selling cheaply on mass. Simply sensible to buy some when there are so many other important things that you need to produce. Rifles are very small part of the overall military economy.

It starts with raw resources like steal, coal and everything you need to make explosives. Munitions production, heavy artillery and so on. Railroads, planes and so on.

Again, scholars pretty much agree on the success of Russia military economy. Compared to the state in the beginning of the war they did incredibly well.

Check out this serious of 24 lectures that goes a bit into technology and so on, the last couple are about the time we are talking about:

[https://www.youtube.com/playlist?list=PLEETkM6vwQPHJHhXinsuQ...](https://www.youtube.com/playlist?list=PLEETkM6vwQPHJHhXinsuQN7jahEjbUPPY)

<comment><USER16> Winchester lever actions where second tier rifles at that point not Lee Enfield's. Gewehr 98 and so on and used different cartridges

Having to buy basic stuff like that on the open market is a sign that your in trouble.

Wikipedia says

"With the start of World War I, production was restricted to the M1891 dragoon and infantry models for the sake of simplicity. Due to the desperate shortage of arms and the shortcomings of a still-developing domestic industry, the Russian government ordered 1.5 million M1891 infantry rifles from Remington Arms "

<comment><USER10> What is your obsession with rifles? Non of this proves anything. Is your argument really is 'they buy some things from outside' then that applies to every country. Russia has insane numbers of troupes that needed basic equipment and much higher priority things they need to produce that were actually vital to not losing the war.

This even said 'with the start of WW1' to it not even an argument about how they did during the war.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Friedrich Hayek is a Republican poster boy. There is no way to have an objecting conversation about Hayek in the United States, as his reputation has reached god-like status among the "free independent thinkers".

<comment><USER18> What a brilliant critique...

<comment><USER17> Not a critique, just pointing out discussion of his ideas is not possible in the States due to irrational elevation of Hayek by Conservatives.</comment></comment></comment>


Descent - <AUTHOR> https://en.wikipedia.org/wiki/Descent_(1995_video_game) <comment><USER2> Ah yes, the first video game I had ever tried that I simply _could not play_ because after just a few seconds, it made me feel like I was going to throw up. To put that in perspective, I had been a big fan of many previous 3-D games, including Doom.

Cool game if your stomach will tolerate it, though!</comment>


Ask HN: How Can Improve My Programming Skilss - <AUTHOR>

I have made a URL shortener with Node.js and Redis. This is my first time experience with these technologies.  I want the help of HN Community to review my code and advice me how to improve my programming.<p>Here is the git repo of my project : https://github.com/Waterloo/shorty/ <comment><USER2> I looked through your code but the lack of correct indentation and excessive newlines makes it really hard to read.

Happy to have another look once you've sorted it out.

<comment><AUTHOR> Thank you sir , I tried to intend it correctly and reduced newlines. Waiting for your advice :)

</comment></comment><comment><USER3> s/ss/z/g first comes to mind :)</comment>


Learnings from One Year of Building an Open Source Elixir Application - <AUTHOR> http://achariam.com/elyxel/ <comment><USER2> _> Elyxel was designed and built with performance in mind. Styles and any additional flourishes were kept to a minimum. My choice of Elixir & Phoenix was driven by this consideration as well. Most of the pages are well under 100 kilobytes and load in less than 100 milliseconds5. I find it's always helpful to keep performance in the back of your mind when building something._

Thats much appreciated but I was kind of hoping you (the author) would go into more details about request time. Most people can (and should) do the above. However I would be more interested in what Elixer + CRUD is like particularly for _TTFB_. Like does the author do streaming (I don't necessarily mean websockets or comet)?

After all if the TTFB is really slow the CSS optimizations and what not matter little.

In traditional request per thread (or whatever is analagous) web framework paradigms the request is a single thread and often waits for the database to finish before moving on to display the page. I would imagine Elixir has a better answer at least for read only pages.

<comment><USER3> On my virtual Debian, the _development_ version of a relatively complex website -- which is probably anywhere between 5 to 30 times slower than production -- has 450ms for the _first ever request after the server starts_. Anything from then on goes between 0.2 to 12ms.

Not really telling you much, I know, but these are pretty standard numbers for Elixir + Phoenix apps.

</comment></comment><comment><USER4> I really enjoyed this article and the one about the ambient notification cube! Well-written. It's nice to hear someone else talk about how hard it it to stay consistent with worthwhile projects while maintaining a day job. Congrats on sticking it out!

<comment><AUTHOR> Thank you for the kind words, really appreciate it :)

</comment></comment><comment><USER5> One of the interesting things about the Elixir/Phoenix community is that building your own authentication system seems to be encouraged. Even if you're using one of the plugs available (guardian?) you still have to do a ton of manual lifting.

<comment><USER6> This seems to be the case in many places outside of Rails. I know that Clojure, at least, seems to encourage implementing things yourself by way of leveraging smaller libraries and modules.

Auth is genuinely hard, and turnkey solutions often aren't enough.

<comment><USER7> Auth is genuinely hard, and a hand-rolled solution's _definitely_ not enough...

Given the massive attack surface for a web application, it's absurd to think someone could (or __should __*) develop an entire auth framework from scratch for all their projects. Turnkey solutions, like Ruby 's Devise, are a godsend. Even in situations were a custom flow was needed, it's saved both me and my clients hundreds of hours.

In addition, I benefit from the community around a turnkey solution. Think of all the years the software has been tested by in umpteen production environments. Think of all the people that have an eye on the code and report security flaws while you sleep. Your custom session management implementation will never have that benefit.

Also, why the hell are you building auth when you could be building app? Is that really such a critical experiential part of your app that you can't possibly rely on something turnkey and then move on to the features that actually matter?

<comment><USER3> All of what you say is true but I feel important details are lost.

Elixir's Phoenix framework has very good plugins -- like Guardian -- that give you 95% of the tools you might need for your own security solution and you can assemble it together in 15-60 minutes (this of course assumes your security model isn't wildly different than what the various plugins support). You have separate Plugs -- think of them as pipes of sort -- who handle cookie session management, another that handles JWT tokens, HTTP basic auth etc.

The only thing you must do is to assemble such pieces in a code module that basically serves as a pipeline with several Plugs (pipes) connected in the order you deem appropriate for the security model of your app. Any of these Plugs can modify or remove headers or tokens, can consult a 3rd party system (say, for single sign-on), can provide throttling, temporarily lock out an account that made too many invalid login attempts, can refuse a session due to non-whitelisted IP, etc. etc.

So no, you're not inventing cookie session management or anything there. You simply have control on which security mechanisms -- and when, and at which conditions -- happen on request.

</comment></comment></comment></comment><comment><USER8> Interesting post, more so because I am working on a project that has many characteristics of a link aggregator.

While implementing the ranking algorithm, which is very similar to the one mentioned in the article, I decided to run a periodic job every 60 seconds that updates the rank for each submission and stores it in the database so querying the ranked data is more efficient than recalculating the rank on every page request. Are you doing something similar or did you take a different approach?

Ranking all stories works well if the total number of submissions is a small number, but I imagine the approach is a little different for large sites like HN. Ranking all submissions periodically seems like a waste since people rarely view submissions beyond 10 pages. One approach is just to rank submissions from the past _n_ days, where n depends on the average daily submission volume.

For the part that displays time since a submission was made, I implemented the HN model, where it displays only minutes, hours and days. Python code here : [https://dpaste.de/5d1w](https://dpaste.de/5d1w)

> Elyxel was designed and built with performance in mind. Styles and any > additional flourishes were kept to a minimum. My choice of Elixir & Phoenix > was driven by this consideration as well. Most of the pages are well under > 100 kilobytes and load in less than 100 milliseconds5. I find it's always > helpful to keep performance in the back of your mind when building > something.

Once you start to scale, the bottleneck is rarely the application layer. For the typical crud web app it's likely to be the database.

<comment><USER9> Not sure if it's relevant but you can avoid having elapsed time in the formula and instead inflate the scores of the newer stories ([https://news.ycombinator.com/item?id=9889750](https://news.ycombinator.com/item?id=9889750))

Then you only have to recalculate when there is a submission or vote.

</comment></comment><comment><USER10> Great writing. Elixir/Phoenix has been on my radar for learning something exciting considering it is faster out of the box and can handle tons of concurrent connections.

For the lazy, here is the github link from this article:

[https://github.com/achariam/elyxel](https://github.com/achariam/elyxel)

</comment><comment><USER11> Having a sign up button or perhaps context or text on the site might've been helpful...

<comment><AUTHOR> You're completely right, it seems a little counterintuitive but one thing I learned early on while building a different community site (Designer News) was the way to build a wholesome community was to be invite only in the beginning. That and real first and last names.

Which means it's a poor user experience. Sorry for the trouble, I wonder if any folks have better ideas here?

<comment><USER12> Not a single page even mentions that it's invite only =/. Context for that would be a good start heh

</comment></comment></comment><comment><USER13> It would be awesome if elyxel.com wasn't so esoteric.</comment>