How to survive a job you hate - <AUTHOR> http://pyskool.com/survive-job-you-absolutely-hate/ <comment><USER2> I'm currently in a similar situation. I'm in New Zealand under a job search visa. I've been promised a full work visa so I'm sticking with it no matter how much I hate it. It's pretty hard finding a new job with my limited skills and my not being a local resident.

I try and find the time to build up my skills which is already a source of much anxiety. I came from a LAMP background building websites as a freelancer before I went off to University to make it official. Coming out of Uni, it's like I'm starting from scratch. Go, Dart, a plethora of frontend tech. It's enough to make me insecure.

I've become very frugal. Heck, I don't even have health insurance. I have a tiny shoebox apartment kitchen so stocking up and cooking is pretty difficult. I tend to wait for the supermarket deli to do its clearance in the evening. Half price off all sandwiches!

I've also been diagnosed with chronic depression so it's not like things were so great even before the job. This leads me to what the author said on 'Changing your environment'. I've developed a lot of bad habits and while I've attempted CBT, a lot of the time I just go back into that cesspool of depression, of eating copious amounts of terrible food, sleeping all day and putting off all work. I could have a better job and still end up the same way, I'm aware of that possibility.

Another thing that I keep telling myself is this is a job, it's work. It was never meant to be fun and games.

<comment><USER3> No-one uses Go in the real world. And Dart is used even less than that.

As for the rest of it, you've just entered the most in demand profession on the planet, you've got a degree in it and already have prior experience.

You've got a lot to be hopeful (and proud) about. Build relationships and you will find work to love, not endure.

<comment><USER4> Here's a list of no-ones using Go in the real world: [https://code.google.com/p/go-wiki/wiki/GoUsers](https://code.google.com/p/go- wiki/wiki/GoUsers)

<comment><USER3> It was hyperbole, I'm simply saying there are a hundred if not 10,000 times more jobs in PHP than Go and will be for the foreseeable future.

HN is a oracle of tech, but a lot of it gos nowhere. And Go's still in the early stages. I remember the 3 months or so everyone here was raving about how Twisted was the next big thing.

</comment></comment></comment></comment><comment><USER5> i was advised to engage with the guy/manager i really hated. as in talk to him every day, ask and see what he likes. you know, make him feel like he's important to me. once he's in his comfort zone, things may change. it doesn't really mean you'll like him, but it'll get him off your back.

I was also given two other valuable pieces of advice.

1\. try asking the 5 whys [1]. for those that don't know it's basically a simple technique to find out why people do the things they do. it doesn't have to be a good reason, but most of the times it's not a malicious reason why people do things. sometimes though it's malicious. you should be wary of those people.

2\. don't marry your job. there's no point getting emotional about things you don't own. in the end you own the things you do in your free time and what you get paid for is your job. so if someone does an incredibly stupid decision, it's their problem.

in practice though, i have problems not getting emotional when people are trying to do incredibly stupid decisions.

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

edit: added google cache link [http://webcache.googleusercontent.com/search?q=cache:pyskool...](http://webcache.googleusercontent.com/search?q=cache:pyskool.com/survive- job-you-absolutely-hate/)

<comment><USER6> > in the end you own the things you do in your free time

* subject to the terms of your employment agreement and applicable state and federal law.

<comment><USER7> _subject to the terms of your employment agreement and applicable state and federal law._

If any employer tries to assert ownership of a non-work-related side project...

        1. It would not be hard to challenge that in court. For example, the employer does
          not own personal communications. They cannot read your private email, much less
          assert copyright over it.
        2. The very fact should be outed here, on Slashdot, on Lobsters, and on Valleywag.
          It will ruin that company's reputation, and that ruin will be deserved.

<comment><USER8> Curious - what is "Lobsters?"

<comment><USER9> [https://lobste.rs/](https://lobste.rs/) , I'm assuming.

</comment></comment></comment></comment></comment><comment><USER10> It's possible that you are responsible for your crappy situation. But it's also possible someone is harassing you and THAT is why your environment sux. It isn't the victim's fault that they are being harassed. This may not have happened to the guy who wrote this. But lets be more open minded and empathetic about the many causes of crappy work environments.

<comment><AUTHOR> I have updated the original article to make this clearer: If you are facing discrimination or bullying, leave immediately! And perhaps consult a lawyer as well.

The article was directed mainly at people who hate their jobs, but not enough to quit (because of fear, because they don't think they are good enough to get another one etc). So they keep showing up, in the misplaced opinion that it will get better.

But it doesn't, and one day all their fears are realised, when they wake up to find they are no longer employable, because they spent all their time just coasting through life, doing the bare minimum.

If a person is in this situation, they need to accept responsibility, and start making plans to move on. This process is hard and time consuming, which is why I say: First improve your skills, then move to a better job. Don't move from one Dilbert company to another. Rather, move to some place that will recognise and reward your skills.

<comment><USER11> > The article was directed mainly at people who hate their jobs, but not > enough to quit (because of fear, because they don't think they are good > enough to get another one etc).

Quit on what terms? Before or after finding another position?

</comment></comment></comment><comment><USER12> I left an abusive working environment. High turnover places exist. The American business press likes to tell oppressed employees to take their torturer's perspective, to become one with their abuser, to act with the supreme, Zen-like indifference of the Buddha and meditate their personal Hell out of existence.

The year I left, 16 people out of around 30 left, 8 after I did. I didn't have a job waiting for me, but it was a tremendous relief not to be constantly hectored in email at all hours, seven days a week. Continually having work boundaries tested is not for me. The chronic mistreatment was bad for my hemorrhoids, I informed them. (I don't necessarily believe in taking the masochistic high road in all cases.)

</comment><comment><USER13> 'Changing your environment will not change your circumstances'

That can't be true, can it? Isn't that the point? Your environment seemed toxic, so you leave it for a non-toxic place.

You can change your circumstances at the job, but that doesn't make the senior-managements behavior any less toxic?

<comment><AUTHOR> Perhaps I wasn't clear in the original post.

If you are facing bullying, racism or sexism (or indeed any other -ism), then yes, leave immediately.

But for most of us, it's not outright bullying, but the constant grinding down, the non-stop requests for overtime, the occasional "helpful comments" that are actually insults, the constant interference, that really gets us down. Individually, they might mean nothing, but over time, they build up, and make you feel as small as the full stop at the end of this sentence. That's when you must plan to leave, but by first upgrading your skills.

</comment></comment><comment> UK-AL Sounds like this guy suffers from just-world syndrome.

I've been in a bad situation, my only regret is not getting out sooner.

</comment><comment><USER14> We've all been there...for folks there right now, don't worry, things get better.

Other people are going through the same thing, and it's normal to be unhappy with things at a bad place: it isn't your fault, and you deserve better. Talk with people, get support, and try to find a way out.

<comment><AUTHOR> "Talk with people, get support, and try to find a way out."

This is very good advice, but so rarely followed.

The problem is, most programmers are shy and reserved, and besides, they don't understand (or at least I didn't) that their problems aren't unique. That hundreds and thousands of programmers before them have faced this exact problem and survived. And not just survived, but thrived.

In the long term, it doesn't matter. But in the short term, it can feel like the world is ending.

</comment></comment><comment><USER15> So I'm wondering, if you're in a place where they expect you to work overtime without paying you, They take away salary for "equity" that never comes, they constantly call and email you outside of normal business hours, and they come in on a Friday at 4 pm and tell you that they need you to work all weekend, also, they arbitrarily move deadlines forward, what do you do then?

This may or may not be something that happened to a friend of a friend of mine.

<comment><USER16> I think you look for anyone reliable (family, friend, social helper, counselor...) to help you get out of that, because you might not be able to do it just by yourself (or you'll have done it already). Just like any other long lasting abusive relationship.

<comment><USER15> Working on it, but its a process.

</comment></comment></comment><comment><USER17> OP's link is down, cached version: [http://webcache.googleusercontent.com/search?q=cache:1JZ6-n7...](http://webcache.googleusercontent.com/search?q=cache:1JZ6-n7RO0cJ:pyskool.com/survive- job-you-absolutely-hate/+&cd=1&hl=en&ct=clnk&gl=is)

</comment><comment><USER18> There are good work environments and bad work environments. I've seen both, and it does make a difference.

If it really is a bad environment, you probably can't change or improve it. Otherwise, it wouldn't be a bad environment.

Sometimes, finding a new job is the correct answer.

</comment><comment><USER19> Life is too short to work at a job you hate every day.

<comment><USER20> what if the problem isn't the job, but that you are lazy and/or don't like "working"? Quit life?

<comment><USER21> If one hates working as software developer no matter the language and other environments he has chosen wrong profession.

</comment></comment></comment><comment><USER22> "that being technically good is good enough to get promoted and get pay rises" \- it's not?

</comment><comment><USER23> West coast is so soft.

</comment><comment><USER24> If you hate your job you should quit asap. End of story.

<comment><USER16> It's a common enough way to put it, I think it needs commentary. Putting it the other way round it becomes funny:

\- If you love your job you shouldn't leave it for any reason

\- Conditions and circumstances don't matter, do something you like

\- Your 8h at work are more important than the 16h left in the day

</comment></comment><comment><USER19> You quit.

</comment><comment><USER25> I'm walking the tightrope of surviving a work environment I despise right now. The crux of the game I'm currently locked in is I naively accepted a relocation package, provided in true corporate style by several layers of delightfully asinine outsourced middleman companies. If I leave before a certain date, I'm on the hook for the inflated dollar amount of all that "service", even though I could have moved myself for a tiny fraction of that value. Movers and shakers of the world, keep on making up games for everybody else to play, so we never get bored.

<comment><AUTHOR> I had the exact same problem. That relocation package doesn't look so hot now, does it?

I now follow a few rules before accepting a package like this:

1\. It must be pro-rata- That means that the amount you need to pay back must go down with time. So if you leave after 1 year of a 2 year notice period, you must only pay back 50%.

2\. Like you discovered, the company can overpay for services and stick you with the bill. So always insist on paying for relocation yourself, and get money back via a expenses form. You will be short of cash in the short term, but it will save you pain in the long term.

3\. If possible, try to negotiate a "hiring bonus." This may not be possible unless you are famous (or needed for a critical project), but if you can get the company to give you some extra cash, you can pay for relocation yourself. This is the best option, as you owe the company nothing.

<comment><USER26> caveat: hiring bonus is taxeable, so you can't expect to net 60-65 percent; reimbursed relocation expenses aren't per my understanding

so the company has to boost the hiring bonus by 2/3 to get you to where you would be otherwise</comment></comment></comment>


Marvin Minsky's Marvelous Meat Machine - <AUTHOR> https://medium.com/backchannel/marvin-minsky-s-marvelous-meat-machine-f436aec02fdf#.jxy9ralb6 <comment><USER2> Thanks to hga [1], here is Marvin Minsky's Universal Turing Machine emulator written in Teco.

      MSG: APL    1
      DISTRIB:  *BBOARD
      EXPIRES: 03/17/81 23:08:54
      MINSKY@MIT-MC 03/11/81 23:08:54 Re: too-short programs
      APL is compact, I suppose.  So is TECO.  When I wrote the following
      Universal Turing Machine, which works, I actually understood it.

      i1Aul qq+^^0:iqm^[29iiq\356y0L1 00L1 11L2 A1L1
      y0L1 0yR2 1AR2 AyR6 yyL3 00L0 1AL3 A1L4 yyL4 0yR5 11L7 A1L4
      yyR5 0yL3 1AR5 A1R5 yyR6 0AL3 1AR6 A1R6 y0R7 0yR6 11R7 A0R2
      ^[j<sR^[;-d-2ciql-^^^[ci"ed^^^[cii^[ciuq'^[>
      j<sL^[;-d-2ciql-^^^[ci"ed^^^[cii-2c^[ciuq'^[>jxblx1lx2lx3lx4lx5lx6lx7hk
      iyyAyyAyy^[32<i0^[>ji110101110000010011011^[ 1uq<htmbqq=>

      I do not advise attempting to understand this code, which is
      almost as bad as that for the Universal Turing machine.

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

<comment><USER3> for non-computer scientists, but rather for engineers, how do Turing machines map to the stored-program computer that have instruction sets, stacks, RAM and ROM ?

<comment> v-yadli make extensions on the original. use the single tape to simulate multiple tapes, one for stack(or registers), one for ram, one for rom, and another for encoding how the hardware behaves against the other tapes.

<comment><USER4> > make extensions on the original. use the single tape to simulate multiple > tapes, one for stack(or registers), one for ram, one for rom, and another > for encoding how the hardware behaves against the other tapes.

Very nice; that is surely about the best information:length ratio one could hope for! I hope you won't mind a slight clarification—obvious, I am sure, to you and to any computer scientist, but not, perhaps, to a non-specialist: this is _not_ an extension of the original, but rather a _simulation_ within the original of an apparently more general concept. This is important, because it means that any theoretical results about the original concept also apply to its apparent generalisation (e.g., multi-tape Turing machines still can't decide undecideable problems).

<comment> v-yadli yep, thanks for the clarification!

</comment></comment></comment></comment></comment><comment><USER3> really nice writing, but the title "meat machine" ?

<comment><USER5> I think it's a well thought and appropriate title, considering Minsky joked around calling humans "meat machines" and the author is acknowledging Marvin's own mind and body for being marvelous.</comment></comment>


The Invention of C++ - <AUTHOR> http://artlung.com/smorgasborg/Invention_of_Cplusplus.shtml <comment><USER2> (spoiler warning)

This is the old joke interview with Stroustrup where he admits C++ was only invented as a plot to increase programmer salaries by making programming more difficult than it had to be.

It should be pointed out that Stroustrup never gave this interview, and that it is a parody.

<comment><USER3> Even for people who are humor-deficient, there's at least one dead giveaway:

"Whoever heard of memory leaks in a 'C' program?"

</comment></comment><comment><USER4> Even though it's fashionable to make fun of C++, I have to admit that next to Python, it's my favorite language ;)

</comment><comment><USER5> Reading comments first would have spoiled this wonderful practical joke. Fortunately I read it some time ago uninitiated. Sure I was lured into seriousness for a while. Then this-can't-be-true of course set in. I wouldn't want to have missed that experience. As any practical joke, it makes one think about the capability of ones skepticism. A capability worth keeping in good shape.

<comment><USER6> The sad thing is how many people get supper upset when somebody posts this somewhere, as if it was such an incredibly offensive joke, and as if you were spreading some really evil lies.

If somebody does take this interview seriously, it says more about them and about C++ than about the nature of the interview or whoever posted it.

And just because something is a hoax (and a rather obvious one at that) doesn't mean that it can't be filled with deep truths.

</comment></comment><comment><USER7> Regarding Unix++, I think the BeOS kernel was written in C++, and BeOS was one hell of a great os.

</comment><comment><USER8> I think I still have the c++ preprocessor (c++ to c converter) here somewhere that I first used to learn c++...

Time certainly flies when you're having fun.

Now lets hope nobody takes this 'interview' seriously.

<comment><USER9> Cfront? I'd completely forgotten about using that. Here's Stroustrup's own history of C++:

<http://www.research.att.com/~bs/hopl2.pdf>

<comment><USER8> I've found a download link in case anybody would ever want to play with it:

[http://www.softwarepreservation.org/projects/c_plus_plus/cfr...](http://www.softwarepreservation.org/projects/c_plus_plus/cfront/release_3.0.3/source/cfront_3_0_3.tgz)

</comment></comment></comment><comment><USER10> This is funny, in a painful-yes-that-is-true kind of way. I am glad to be out of the C++ business.

</comment><comment><USER11> I knew it was a joke, but the funny thing is that most of it is true...c++ IS a jumbled mess, IMO. Sure, it made OOP popular, which paved the way for newer languages to implement it more cleanly, and make it easier to use/think about. C++ is good for generics, and native performance/compilers, but for some reason i've just always used plain old C for performance/system stuff, and another HLL like C# for OOP. I guess java is cool too, if you're on that side of the fence, but I think its a jumbled mess as well...but that's another story :-)

<comment><USER11> That sounds like I was bashing it too much...don't get me wrong, I respect C++...its obviously very powerful and popular. But the fake interview was spot on in some points. There's just way too damn much stuff in it for one language, and on many projects, some of its features are used when they were completely unnecessary, only adding complexity and tangled mess. It takes a lot of time and effort to master all of its features, and in many cases is bad for productivity. Also, it is a nightmare reading through a large codebase, unless the project is very well designed and heavily commented.

</comment></comment><comment><USER12> I could flag this, but it's far better to get a metric for how lame HN is by watching how high it's voted before someone else flags it off.</comment>


Ask YC: What's the best advice you ever got? - <AUTHOR> After reading a recent post here with "best advice" from 13 prominent business people, I was underwhelmed.  Now I know why.  I'd rather hear from you guys than from them. <comment><USER3> I have a vivid memory of being six years old and seeing my dad come in the door of the apartment we lived in at the time.

My father came from a working class family. On that day, he had already been going to night school for three years, and would continue for another four years before getting a degree in computer science (this was before the days of easy, short degree programs for adults with jobs). He wore a shirt and tie every day to his job but still looked like the kind of guy who wore coveralls to work.

He slumped. His hair, thick glasses, and briefcase were dotted with rain. He closed the apartment door, looked at me, and said, "Never become an expert in something you don't like -- because then people will want you to do it ALL THE TIME."

He was a lot happier after he got his degree, in part because I think there were more and better choices of things to become good at. (The money was better, too).

<comment><USER4> Thank you for the story. I really enjoyed it. Welcome to YC. :-)

</comment></comment><comment><USER5> One company ago I made a mistake: Not a huge mistake, but a mistake that was big enough. Summoned to the CEO's office, I figured I'd soon be stuffing my knickknacks in a box.

Instead he told me the following story about Sam Walton, the founder of a somewhat successful retail venture.

A newly hired executive had made a multi-million dollar mistake and he too was summoned to the corner office. Before Sam could get a word in, the executive said "Save the lecture and just fire me."

Sam studied the young executive for a few moments and replied "Fire you? I just invested millions of dollars in your education - you don't even get to resign".

Like Sam Walton's freshly minted executive, I learned an important lesson that day. Mistakes, even those of the multi-million dollar variety, are inevitable. What is of utmost importance is that we learn the lessons taught.

(Only later did I fully grasp that small mistakes are actually desirable).

<comment><USER6> I wonder who originally said that.

[http://books.google.com/books?id=9-9D_5wK01QC&pg=PA87...](http://books.google.com/books?id=9-9D_5wK01QC&pg=PA87&source=gbs_toc_r&cad=0_0&sig=XUtWjs1cK9oI_Y3lANcgAyOjZx4#PPA99,M1)

</comment></comment><comment><USER7> I have never made a comment on HC and I have been the silent observer for quite a while. Whether it will be of quality or not, I feel now is a good time to make the first one. To me, the greatest part of this site is the Ask YC section. Some of the most insightful and helpful advice I have ever read has come from the comments and in most cases, the comments are significantly better than the articles themselves.

The best advice that I ever received was from my father. He is one of the hardest working men I have ever met (construction) and never seems to complain no matter how tough things or life can get. This bit of advice may have been given to him at one point, but not too long ago he said to me, "Don't ever feel like you are missing out on something. There will always be another party".

While this advice is somewhat simplistic on the surface, it really has given me the ability to put life and the choices I make into perspective. It is easy to put your future on the back burner and get caught up in the feeling that it's a necessity to go out all the time (I am in college if that put things into perspective). I am gifted with the uncanny ability to rationalize to myself that the poor decision I am about to make is the somehow the appropriate one at the time(/sarcasm). Opportunities sometimes only come once in a lifetime and how we handle those situations is often the true determinant of our character.

Sometimes it is hard to stay in and direct my time and efforts into my current side project. Hopefully there will be many parties (celebratory I would like to think ;) ) to make up for the time that I am spending to make an impact and reach success outside of the norm. Sometimes I laugh at some of the comments people around me make, believing as though they can spend 6 out of 7 days a week drunk and then magically be granted a seven figure salary as the CEO of some organization right out of college. The other day someone I am unfortunate enough to know said to the people in a class "In ten years, you will all be working for me!". Well, I sure hope that in ten years I am not the katsup man in the McDonald's assembly line.

I am actually excited to submit an Ask YC question of my own in the next day or so because I really feel like I could use some direction on after college decisions. Cheers!

<comment><AUTHOR> You picked a pretty good post for a first comment. Welcome!

</comment></comment><comment><USER8> The best advice I ever got was from a board member of a startup I was involved in some years ago. He was a member of the European parlaiment, had started two multi million dollar companies, and generally a guy that you would want to listen to. His advice came at a very early stage of our startup and was very simple: Make a prototype that looks great, nobody will care how the hell it works but it has to look good.

<comment><USER9> The most important thing I learned in my business classes sophomore year of college was to make the investor visualize your product no matter what you're pitching. So if you want 100k to buy a kiosk in your local mall, make a 3D rendering of what the kiosk is going to look like. And if you are pitching a new kind of bacon to a group of VCs, make damn sure your cofounder is cooking it in the back of the room and everyone there can smell it. Getting a picture into the other person's head is 90% of getting the money at the seed stage.

</comment></comment><comment><USER9> Even the most beautiful paintings, the best novels, and the greatest scientific discoveries were 95% drudgery to create. The reason most people never paint beautiful paintings and write world-changing novels isn't because they aren't smart enough, but because they don't find it fun.

<comment><USER10> right. they prefer pokemon or football or something that doesn't require much thought or learning. since they _are_ smart enough to do better, they are guilty of having immoral values. they ought to find better things fun, but instead are wasting their lives.

edit: looks like 8 people so far noticed that they are guilty and don't intend to change anything.

<comment><USER11> _they are guilty ... they ought to find better things fun_

I'm pretty sure what the downmodders are reacting against is the absoluteness of your moralism. Personally, I'm not offended by it. I'm flabbergasted by it.

Edit: this just reminded me of one of the best pieces of advice I ever received: _Judge not, lest ye be judged._ How's that for swinging back on topic?

<comment><USER10> Yes, I know what they are responding to. I also noticed that they, and you, failed to comment on whether what I said is _true_.

They could do better, but don't, that's practically the definition of immoral. They value the wrong things, again, that's practically the definition of immoral. What am I wrong about? That some of the best things ever made are better than football?

<comment><USER12> No, I wouldn't call that immoral at all. Immoral, to me at least, is when you cause harm to other people.

There's absolutely nothing wrong with deciding you don't want to devote enormous amounts of time and effort to something creative. For example, you can touch plenty of people's lives and have a tremendous positive impact on the world just by being there for your friends and family, something that devoting yourself to an intensely creative endeavor probably interferes with.

Don't get me wrong - entrepreneurs, authors, and other creative people are special people. That's why they are rewarded (sometimes) with praise, admiration, or money. But that most emphatically does _not_ mean that they are better or more moral people than those who choose to live more ordinary lives.

<comment><USER10> The moral question is: how should I live?

But anyway, use whatever words you want, I've told you what I meant: living better, more fruitful lives with more learning and thinking. And people who _could_ do that, but _don't_ , are guilty of living badly, living below their abilities.

This is not just a matter of opinion or taste. For example, we are only able to communicate here because of scientific achievement; that is objectively more important than pokemon. And, for example, no one is perfect, so people who correct more of their mistakes end up better than those who don't. People who think and learn more are more able and effective at correcting their mistakes to improve themselves.

<comment><USER13> Morality comes from living and the way you live, not the other way around. Morality is just one of the tools we use to live better. It's definitely not something to judge how well we live.

<comment><USER10> if morality is a tool to use to live better (i agree), then people who _don't use it_ , or use little of it, are immoral, and ought to change.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Three.

The first is from a YC founder. I don't remember who, but he said "Always say yes." I tried that out for a while, and it has worked pretty well. A lot of where I am in my life is because I just said yes when I normally would have shrugged it off.

The second is from an essay by paul graham. "When given two choices, always choose the harder one." This one has become a mantra I say over and over again to myself. It hasn't failed me yet.

And finally, from Steve Jobs: "Listen to your intuition. It tends to know where you're going better than you do."

I think if I mix those three pieces of advice, I'll have a pretty respectable life.

<comment><USER15> _Always say yes._

Ironically, another useful rule is "say no more often". It can help protect your sanity and your focus.

There are times when it's hard to know which of these excellent rules to apply. Perhaps the secret is to listen to your intuition. :)

<comment><USER16> From the newspaper London Lite on Tue 6 May 2008: "All you have to do is say yes or no to things. It's easy." -- Singer, Joss Stone, 21, has a simple trick when it comes to managing her own career.

</comment></comment></comment><comment><USER17> Steve Jobs gave a great commencement speech at Stanford a few years ago. The best bits were:

"Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it."

<comment><USER18> The best bit of that speech was the business of looking in the mirror every morning and asking if you want to do what you're going to do that day.

The trouble is, I'm going to college, I am saying "no" an awful lot of the time, but I'm not brave enough to quit.

<comment><USER14> I was in the same position.

And eventually, partially because of the mirror-every-morning trick he talked about, I did quit.

</comment></comment></comment><comment><USER19> I was sitting in a coffee shop one day with a friend in Chicago, and a very intoxicated young hispanic man stumbled up to us, put his hands on our table, leaned over and gave me a smell of his breath that I still remember. Then he looked me in the eye, moved his finger within inches of my face and told me this: Never, never, ever date a Cuban woman.

To this day I've taken his advice. He seemed like he knew what he was talking about.

</comment><comment><USER20> "Don't work for money. Then you'll just get rich. And it's harder for a rich man to go to heaven than a camel to go through the eye of a needle. Why would you want to get rich if after you die you can't enjoy the next life?

"Just find what your passionate about and do that. Then you'll love life, you'll be in a great mood for your wife and kids. And you'll make plenty of money to get by."

Norm Nemrow, My Accounting Professor at BYU (My hero)

Edit: I don't think I wrote this exactly the way he said it -- he took an hour and a half to say what I tried to write here in just a couple paragraphs.

</comment><comment><USER21> "After you go to the bathroom, you don't just stand there and look at what you just dropped in there for all night long. At some point you gotta flush it, man." ~ Kobe Bryant

"Whether you believe you can or you believe you can't, you're right." ~ Ron Sutton

My other favorite quotes are at: <http://melvinram.tadalist.com/lists/906581/public>

<comment><USER21> QUOTES THAT HAVE INFLUENCED ME GREATLY:

* You can tell how badly you want [something] by observing your actions each day. Are they consistent with [attaining your goal]? ~ Brian Tracy

* Character is destiny. ~ Sigmund Freud

* Heaven and hell are a state of mind. ~ The Four Agreements

* We shall never know all the good that a simple smile can do. ~ Mother Teresa

* There is nothing in a caterpillar that tells you it's going to be a butterfly. ~ Richard Buckminster Fuller

* After you go to the bathroom, you don't just stand there and look at what you just dropped in there for all night long. At some point you gotta flush it, man. ~ Kobe Bryant

* Whether you believe you can, or you believe you can't... either way you're right. ~ Ron Sutton at The SBRC

* There are some things you can do something about and some things you can't do anything about... don't worry bout stuff you can't do anything about. ~ Dunno

* Work Harder. Play Hardest. ~ Me

* Attraction is not a choice. ~ David DeAngelo

* Intelligence is defined by prediction. ~ Jeff Hawkins

* "Every beginning requires an ending, another revolution around the wheel of life. Death is not sad; the sad thing is that most people don't really live at all." ~ Dan Millman

* Magnify what's best. Focus on what's next. ~ Change How You See Everything book

* Focus attention on opportunities not problems, strengths not weaknesses and what can be done instead of what cant. ~ Change How You See Everything book

* A diamond is just a hunk of coal made good under pressure. ~ Rod Weckworth

* There are three classes of people: those who see, those who see when they are shown, those who do not see. ~ Leonardo da Vinci

</comment></comment><comment><USER22> When I was hesitant about starting a business: "The world belongs to God, but he allows the brave to borrow it"

<comment> a-priori I've also heard a similar saying, without a religious basis: "Fortune favours the bold"

</comment></comment><comment><USER23> Limited life experiences + Over-generalization = Advice

-Paul Buchheit

</comment><comment><USER24> I didn't follow the advice, but the best advice I received was "Don't move to Boston."

<comment><USER25> ha... I actually am visiting Boston right now, and lived here for about three years before moving to SF. Boston/Cambridge area is great if you are going to school, as they are tons of students around, but after school is done, it becomes boring really fast, and winters are miserable.

There are lots of smart people around in here, but you are more likeley to meet the guy with the businness idea that just needs a developer, or the guy that worked for years, and has enough capital and connections to hire a bunch of code monkeys to implement stuff, than smart hackers getting together to do something. A lot of tech jobs around here are boring, (financial companies, enterprise stuff), and if you are young, it will be a great handicap on how VCs will treat you.

Boston is just too conservative to be fun.

</comment></comment><comment><USER26> "Find what race you belong in, drive yourself ruthlessly to win that race. If you win, great. If you lose, go read some comics and do some beers as there's no use winning if you can't smile all the way to the finish line."

It's from a coach from long ago, but it has served me well many times outside of running.

</comment><comment><USER27> That I need to suffer stupid people elegantly and silently, instead of going "That's the dumbest thing I have heard"

</comment><comment><USER28> It was striking to me to see how many of those 13 cited a prominent man in their lives, here is mine:

When I was about twelve, I was supposed to plant grass over what used to be our garden one day over summer vacation. My summer breaks were usually sprinkled with chores like this, and taking care of the house and my younger sister. This particular day, I didn't feel like doing any of it, so I hit the dirt with the rake a couple of times tossed the seed around, and went back to whatever it was I was doing.

My dad came home, and when he took a look at the garden he asked if I did it, I said yes, and he was obviously disappointed.

"You can't go through life doing half a job, because you'll just have to do it again"

Then he made me do it again the next day. Certainly the next day was much better (tilled by hand, seeded and covered with straw) but that really stuck with me.

</comment><comment><USER29> "Look, if you don't wanna do school... just get really good at something. If you're better than anybody else at something you will always be in demand."

\- Dad

</comment><comment><USER30> I've got three:

Tell 'em what you're gonna tell 'em, then tell 'em, then tell 'em what you told 'em.

When you create, stick to three C's: Clear, Concise, and Complete.

Just Start.

</comment><comment><USER31> 100% of people who succeeded tried. 100% of people who did not try failed.

</comment><comment><USER32> I got the best one word advice from a guy from BVP (Bessemer) -

      Focus

meaning "focus on doing just one thing and do it really well". That was in the context of me pitching him a business plan that included offering the service, licensing the technology and selling hardware appliances. So he said - <USER2> and develop exactly one of these things, which is what I eventually did. In a retrospective that _was_ the best advice between all I received.

</comment><comment><USER33> "You will lose money chasing girls, but you will never lose girls chasing money"

...from my first employer after he came in to work late once day from what must have been a crazy night out.

</comment><comment><USER34> 1\. Appreciate how lucky you are to be starting something from nothing.

2\. The less cash you spend the longer you have to make your dream possible. Spend cash in the right places. Like health insurance.

3\. Never interrupt a good salesperson in the middle of their pitch, even if they are saying something incorrect. Tell them afterwards, and if it's important enough they can always call the customer/investor and clear it up.

4\. Read contracts. A lot of the time they don't make sense. Sentences go on forever. Don't take that crap. Make a lawyer spell things out and simplify. Make sure you read and understand every detail, particularly investment agreements. These people are not your friends. They are not your parents. They are not looking out for your best interests. Your lawyer isn't either. Lawyers are just making sure you are not going to get sued and such. They are not looking out for your best business interests. Do not think because a lawyer says a contract is 'pretty good' that the lawyer has evaluated the business implications of it.

5\. Don't listen to accountants when they say the word 'profit'. It's an illusion. It doesn't necessarily mean you made money. You could in fact have ended the year or month with less cash (and assets) than you had at the beginning, which sound to me like an unprofitable year or month, but they will take numbers from an accrued loss and add them up to make profit. This kind of profit isn't going to help you pay rent or hit payroll. And savy investors can read through it. Cash is all that matters. So when a suit* say 'cash is king', which is often their 'advice', what they really mean is focus on the cash flow, not the balance sheet.

*a 'suit' is someone who has started a few companies and is quite successful, but doesn't remember the early nitty gritty days of suffering and fear, so they like to say things like 'cash is king' to summarize all their mistakes of running out of cash.

6\. Figure out how to make and read a cash flow and balance sheet. It's like a doctors chart for a business. If you have no revenue, and you have 'project' revenue in your cash flow chart, make 2 more. One with no projected revenue, and one with 1/3 what you projected. This tells you how long your company will survive in the worst case and most likely case scenario. Chances are your actual revenue will be 1/2 to 1/3 of what you expect it to be (in the beginning, with no history or trends, and a brand new product in a new market) The more prepared you are for this the more likely chance you'll have of surviving.

And, if your 100% right, you have better problems to solve than running out of money. :)

</comment><comment><USER35> keep yourself physically as well as mentally active, as mental ability (as well as other things) are directly affected if you let yourself go physically.

</comment><comment><USER36> Find a job you enjoy doing and you'll never work again.

</comment><comment><USER4> Choose your battles.

</comment><comment><AUTHOR> Always do the right thing.

</comment><comment><USER37> Be excellent to each other

<comment><USER38> Or as Plato put it, "Be kind; everyone you meet is fighting a hard battle."

</comment></comment><comment><USER39> You have as much credibility as you give yourself.

</comment><comment><USER20> "Don't work for money. Then you'll just get rich. And it's harder for a rich man to go to heaven than a camel to go through the eye of a needle. Why would you want to get rich if after you die you can't enjoy the next life?

"Just find what your passionate about and do that. Then you'll love life, you'll be in a great mood for your wife and kids. And you'll make plenty of money to get by."

Norm Nemrow, My Accounting Professor at BYU (My hero)

Edit: I don't think I wrote this exactly the way he said it -- he took an hour and a half to say what I tried to write here in just a couple paragraphs.

<comment><USER40> "be in a great mood for your wife and kids" That's my favorite part.

</comment></comment><comment><USER41> When I was a wee lad, my grandmother said "Learn something new every day."

</comment><comment><USER42> I got two gems from my Grandfather. I think of both nearly every day. 1\. It's a poor workman who blames his tools. 2\. Hard work is never easy.

</comment><comment><USER43>
      Don't pick at it.

and

      Never trust a naked bus driver.

Make of them what you will :)

</comment><comment><USER44> Never burn bridges.

</comment><comment><USER45> this above all: to thine own self be true...

                                     - polonius, hamlet

edit: maybe this is what underlies the xobni phenomenon that we are watching unfold ?

</comment><comment><USER46> Don't underprice yourself. If half the people you give your prices / figures to don't say "fuck you" then you aren't in the right price bracket.

</comment><comment><USER47> To read the book "How to be a graphic designer wihtout losing your soul", lot's of great advice there, even for non-designers

</comment><comment><USER48> My Dad always told me: You're not entitled to anything in this world, always give your best and hope for the best!

</comment><comment><USER49> This is actually not advice but something I have learned the hard way.

It's not that the situation is bad, it's what you make of it.

</comment><comment><USER50> Always smell the milk before you drink it.

</comment><comment><USER51> I'm not sure it's the best advice but the nugget of useless wisdom I liked most was:

"Never give people advice."

</comment><comment><USER52> Don't put metal in a microwave.

</comment><comment><USER53> "Rules are for the obedience of fools and the guidance of wise men." Douglas Bader

</comment><comment><USER54> Never follow self-referencing advices.

</comment><comment><USER55> Trust yourself and your intuition.

</comment><comment><USER56> Write about what you know.

</comment><comment><USER57> always tell the truth

</comment><comment><USER58> "Invest" in people

</comment><comment><USER59> Just do it.

</comment><comment><USER60> Imagination is more important than knowledge.

-Einstein</comment>


Predictably Random - <AUTHOR> https://remysharp.com/2019/08/06/predictably-random <comment><USER2> Hubba bubba. This is maybe not the article to read if you want to learn how to implement randomness correctly. There's... many things wrong with it.

Of course randomA is terrible, you're modding it with 16! It's never going to have a period longer than 16 like that! Same with randomB, just with a slightly larger number. Both of these are just bog-standard linear congruential generators. LCGs are pretty bad for anything "serious", but for picking Tetris pieces they're fine, and they're easy to implent (or at least I thought they were, but then you see an article like this where one of them has period 16...). I don't immediately recognie randomC(), but it also looks terrible. Just shifting some bits around and adding a counter. At least it has some internal state so it it's not stupidly periodic.

I haven't read up on what's the issue with V8's Math.random(), but I would have to imagine it's superior to all these three. I'm also sure there's plenty of excellent randomness libraries (and plenty of terrible ones) on NPM.

Also, this kind of visual inspection will weed out truly garbage PRNGs, but it's not a good test in general. Testing for pseudo-randomness is hard, and best left to people who know what they are doing.

Also also: for Tetris, you shouldn't just pick pieces at random, that's not how Tetris works nowadays. Tetris works by putting all 7 pieces in a bag, and then pulling them out at random. When the bag is empty, you fill it again with the seven pieces and start over. More info here: [0]. If you're new to programming, implementing the 7-bag system properly is a good little challenge, you'll get to learn all about the Fisher-Yates shuffle [1].

[0]: [https://tetris.fandom.com/wiki/Random_Generator](https://tetris.fandom.com/wiki/Random_Generator)

[1]: [https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)

<comment><USER3> > you shouldn't just pick pieces at random, that's not how Tetris works > nowadays.

It's a purely abstract game with endless possibilities for how it can be made. That's what makes it timeless. There's no reason you have to use bag randomizer in your own personal projects. That is, unless you feel some strange need to check off boxes to comply with what the current IP holders happen to prescribe at a particular moment in time.

In fact, there's an argument for using a memoryless randomizer: it maximizes variation, unpredictability, and increases challenge.

<comment><USER2> You speak of Tetris like it's some abstract concept that has always existed and is like some eternal truth. It's not: it's a game that was created by one man, Alexey Pajitnov, who also just happen to be "the current IP holder" you dismiss so easily (he's the co-owner of the Tetris Company).

So no, it's not an "abstract game with endless possibilities". Tetris is Tetris, a concrete game made by a great game designer. It gets cloned and copied constantly, so much so that people forget that it was actually authored by a person. Comments like yours erase Pajitnov's authorship and ownership, which he has rightly earned.

Nobody talks of any other kind of media this way, we shouldn't do it about games either. When speaking of Harry Potter, no one thinks of JK Rowling as just "the current IP holder" (she's the author!), and no one considers fan fiction on the same level as the real thing.

The article states "when the game plays, the tetrominos are selected at random". When it comes to standard Tetris, as defined by the Tetris Company, this is incorrect. I was correcting the error. Obviously you can do it however you want, but that is how Tetris does it.

As for what's more fun, obviously opinions can differ. But as someone who plays a lot (A LOT) of Tetris, I personally vastly prefer the 7-bag system. It really opens up the game strategically, and it allows you to play much faster.

<comment><USER3> I agree that credit is due to the wonderfully creative game designer, Mr. Pajitnov. I don't see this as contradictory to my point.

> So no, it's not an "abstract game with endless possibilities". Tetris is > Tetris, a concrete game

While protecting their IP in a court of law, The Tetris Company successfully argued that it does not exhibit scènes à faire because it is a purely abstract game.

> Moreover, Xio does not dispute that Tetris is a purely fanciful game, > meaning it has no grounding in the real world, unlike a video game > simulating a karate match or a golf game. Therefore, the analyses in Data > East and Incredible Technologies are largely inapplicable; the scènes à > faire doctrine has little weight in instances such as this because there are > no expressive elements "standard, stock, or common" to a unique puzzle game > that is divorced from any real world representation.

> [https://law.justia.com/cases/federal/district-courts/new- > jer...](https://law.justia.com/cases/federal/district-courts/new- > jersey/njdce/3:2009cv06115/235418/61/)

</comment></comment></comment></comment><comment><USER4> RNGs are like crypto: don't roll your own! There's some really deep number theory behind many of them. Every RNG I've seen lets you control the seed, so I'm not sure what he gains by writing his own.

<comment><USER5> Javascript doesn't allow setting the seed: [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)

<comment><USER6> Probably time to use a third party RNG for Javascript then. For example, [https://gist.github.com/banksean/300494](https://gist.github.com/banksean/300494) or, if you don't like MT19937 (shameless plug) [https://github.com/samboy/rg32hash/blob/master/rg32.js](https://github.com/samboy/rg32hash/blob/master/rg32.js)

</comment></comment></comment><comment><USER7> The article is amateurish, and it neither reflects the range and complexity of issues surrounding PRNGs, nor does it offer any good advice (except maybe "don't just use the first PRNG you come across").

A better introduction is the PCG website (it's biased towards PCG, but a) that's not a bad choice for many use cases, and b) it raises and discusses many issues regarding PRNG choice).

[http://www.pcg-random.org](http://www.pcg-random.org)

EDIT to add: and FWIW, any serious PRNG of course allows seeding, and then the issue boils down to choosing a shared seed.

</comment><comment><USER6> Which random number generator to use can be a heated discussion, with strong opinions. math.random() and rand() can have issues using poor random number generators like LCGs instead of good random number generators.

The default "good" random number generator is the "Mersenne Twister" (most of the time, the 32-bit MT19937 version). It generates numbers which look quite random while not being cryptographically strong (the problem with crypto- strong generators is that they tend to be slower, and can still cause legal issues in some jurisdictions). A lot of languages use this for the default random number generator.

Some people really like using xorshift generators; with the right parameters, xorshift can generate high quality numbers while being much simpler than MT19937. One version of this which some use is JKISS32; it's small and makes good numbers.

Random number generators can be tested using a series of tests called "dieharder"; another test for RNGs is "bigcrush" which takes hours, sometimes days, to fully run. These tests make sure the random number generators are statistically random, using a large number of tests of the generator.

My favorite pseudo random number generator is a cryptographically strong one: RadioGatún[32]. It's simple, fast, doesn't require special seeding of its state (unlike MT19937), and allows the seed to be an arbitrary string instead of just being a number. It passes all dieharder tests, but I haven't had a chance to test it with bigcrush yet. I have a GitHub repo with implementations of it I have done in various languages (C, Python2, Python3, Javascript, C++, etc.)

<comment><USER8> I would not recommend MT. It fails many tests, that state is big, the code is complex, and it's not very fast. For non-crypto PRNGs, I'd reach for PCG or one of Vigna's generators.

<comment><USER6> I tend to agree, but I need to point out that MT19937 doesn't fail "many" tests. It fails, at most, two of the bigcrush tests: [https://en.wikipedia.org/wiki/Talk:Mersenne_Twister](https://en.wikipedia.org/wiki/Talk:Mersenne_Twister) and look for the "TestU01" discussion on that page.

The biggest problem with MT19937, besides its complexity and large state size, is that it needs to have its state properly seeded.

Like I said, it's a heated debate which random number generator is the best one.

<comment><USER7> It is surprisingly heated debate, and it's hard to extract good advice from experts (I've asked Art Owen, Monte Carlo expert at Stanford, for up-to-date advice (he recommended MT19937 some 15 years ago), and he was very hesitant to utter any strong recommendations...)

Having said that, I think most projects should move on from MT19937 by now, defaulting to a cryptographically secure PRNG, and allowing to switch to a faster one (such as PCG or xoroshiro) when desired.

<comment><USER6> MT19937 is probably not the best PRNG out there, but the nice thing about it is that, for a long time, there was a pretty strong consensus among programmers that it was the PRNG to use. It's a better choice than a simple LCG, which is what programmers tend to use if they're not using MT.

There are a lot of crypto-strong RNGs out there (AES on OFB mode? Counter Mode? SHA-3 in SHAKE128 or SHAKE256? Salsa20 or ChaCha? Or, do what I do and use RadioGatún[32]), so not much standardization on that front.

With non crypto, we have in this thread already mentioned PCG ( [http://www.pcg-random.org/](http://www.pcg-random.org/) ), JKISS32, xoroshiro, and Vigna's generators. There are others. Again, not much standardization.

<comment><USER7> I thought the xoroshiros are basically Vigna's? Developed further from precursors.

But you're right, there's no successor anointed yet to MT19937, but it's about time. Wish some real expert in the field would publish an authoritative account (but opinionated enough to make real choices) that programming language devs could point to, and across the board implement:

* safe (ie, a cryptographically secure PRNG) <\- default

* fast (if your application needs speed more than security against adversaries, such as Monte Carlo integration)

* others (if you really know what you're doing)

EDIT to add: it feels a bit like the old chestnut about IBM: nobody ever gets fired for choosing the Mersenne Twister...

</comment></comment></comment></comment></comment></comment><comment><USER9> Kind of unrelated, but I recently tested out a scenario for the Dotnet Environment that worked really well;

I created a 'Random' service that lives for the length of the execution of the application.

This service has an instance of Random that persists with the object, and exposes simple methods with min/max parameters.

I register the service in a unity container, and then immediately resolve it, causing the Random type inside of the random service to instantiate.

Then anywhere I want to generate a random number, I inject that service.

This works because, as long as you persist a single instance of 'Random', two calls to 'Next' or 'NextDouble' won't result in the same number.

</comment><comment><USER10> I'm not in the cryptography or random space beyond using libraries, but these visualizations are very clever. It's easy to see major problems.

edit: It shows small-periods but otherwise it's not all that useful (see below).

<comment><USER11> It's easy to see some major problems, but take a look at this: [https://random.isthe.link/?code=let+x+%3D+Date.now%28%29+%26...](https://random.isthe.link/?code=let+x+%3D+Date.now%28%29+%26+0xFFFFFFFF%3B%0Alet+y+%3D+45342%3B%0Alet+z+%3D+65453%3B%0Alet+w+%3D+z+%5E+y%3B%0Aw+%26%3D+0xFFFFFFFF%3B%0A%0Afunction+randomD%28%29+%0A%7B%0A+++++let+t+%3D+x%3B%0A+++++t+%5E%3D+t+<<+11%3B%0A+++++t+%26%3D+0xFFFFFFFF%3B%0A+++++t+%5E%3D+t+>>+8%3B%0A+++++t+%26%3D+0xFFFFFFFF%3B%0A%0A+++++x+%3D+y%3B+y+%3D+z%3B+z+%3D+w%3B%0A+%0A+++++w+%5E%3D+w+>>+19%3B%0A+++++w+%26%3D+0xFFFFFFFF%3B%0A+++++w+%5E%3D+t%3B%0A+++++w+%26%3D+0xFFFFFFFF%3B%0A%0A++++return+w%2F0xFFFFFFFF%3B%0A%7D%0A%0Aexport+default+randomD%3B)

The random number generator here is used quite often in projects and it looks pretty random. But if you look at the code you can see that it has four numbers that store state and its output can be entirely predicted from those four numbers that are consecutive outputs of the RNG.

<comment><USER10> Oh wow. At some point I've thrown up my hands and just used Pcg64 because people I trust but can't possibly verify recommended it. Your post reaffirms that that was the right decision (trusting others).

<comment><USER11> Worth reading Knuth on this and his attempt to create his own RNG and fail horribly: [http://www.informit.com/articles/article.aspx?p=2221790](http://www.informit.com/articles/article.aspx?p=2221790)

</comment></comment></comment></comment><comment><USER12> Why not use RDRAND?

Also you can always choose well-established, arbitrarily complex psuedo random algorithms. If you want to guarantee low correlation you could use PRBS (whatever shift amount you need, 31 may be enough for most scenarios) with the same shift register values and seeds that are maximally equidistant.

<comment><USER13> Article mentions he wants to make the seed explicit so he can reproduce the same (randomly selected) environment.

You can use any stream cipher you want instead, of course, but in my experience for video games the problem isn't "I need a random bit" (which AES CTR is very good at but MT or any PCG/LCG is really just as fit for purpose) but "I need to sample from this weird distribution". Stuff goes wrong as soon as someone needs to do something as simple as sampling from a set of cardinality not exactly a power of two let alone something more complex.

</comment></comment><comment> grayed-down Test and debate all you want, but if your application needs random data and it has access or intermittent access to the internet, use the Cesium isotope 137 :)

[https://www.fourmilab.ch/hotbits/](https://www.fourmilab.ch/hotbits/)

</comment><comment><USER14> TL;DR: random is hard because computers are deterministic; we use Pseudo- Random, and each function that generates pseudo-random must be tested to see how random the results are.</comment>


Show HN: Awsweeper – controlled clean out of your AWS account - <AUTHOR> https://github.com/cloudetc/awsweeper <comment><AUTHOR> I play and work a lot with Terraform and from time to time clutter up my AWS account with some resources.

When this happen, it's really annoying and time-consuming to manually find and delete all the piled up resources by clicking my way through the AWS console.

Recently, I had enough of this; that's why I started to build this little helper tool, called awsweeper. I hope it makes your life easier, too.

Feedback and thoughts are welcome! Happy erasing.

</comment><comment><USER2> Great idea! This will save me some money. :)</comment>


The Covid-19 shutdown will cost Americans millions of years of life - <AUTHOR> https://thehill.com/opinion/healthcare/499394-the-covid-19-shutdown-will-cost-americans-millions-of-years-of-life <comment><USER3> The virus itself has already cost ~a million years of life just in terms of the accounted-for deaths, and combining that with the idea that the typical sufferer would have lived about ten more years (I don't have a citation, but I saw news to this effect a few weeks ago). And that's with an national infection rate of between one and five percent.

I also just want to point out that public policy is only one of the forces that is slowing down economic activity. Even if the government were willing to shove its fingers in its ears and say "lah lah lah," people would eventually begin to fear for their lives and we would see significant economic contraction based on individual, uncoordinated mitigation (along with severely elevated excess deaths from the virus). I just also want to point out that losing ~1% of the national population to the virus would not be without contractionary effects, since 1% of the population is also 1% of the consumers, by definition.

It's questionable whether this cost benefit analysis has actually addressed the benefits of the shutdown based on a complete modeling of what would have happened without it.

<comment><USER4> No one says that the government should pretend everything is all right.

It is about what policies you take. Should the mayor weld shut the entrance to a park to "protect" the people?

<comment><USER3> I'm all for the idea of more targeted mitigations. In hindsight, the play we should have made is obvious. The moment is became clear that a highly contagious virus was happening in China, we ought to have closed _all_ borders, shut down, instituted mandatory quarantine (including for repatriating Americans), and eradicated the virus, keeping numbers at zero. We could have reopened and at least had a working domestic economy, like Mongolia or New Zealand.

However, I don't think anyone has yet demonstrated working policy stances that effectively mitigate the spread of the virus _and_ are materially different from what we're doing now. I've heard plenty of folks articulate the idea that such policies are possible, but I don't think we know enough about the virus to really be confident that they would work.

</comment></comment></comment><comment><USER5> There doesn't seem to be any attempt to address the evidence that much of the economic impact is a direct result of the pandemic disease and not from government policy.

I decided to stop visiting bars and restaurants before there was a stay home order here, and am not eagerly going back out now that the order has been relaxed.

<comment><USER6> Thank you! Most people are not returning to business as usual. It's not like the economy is going to just return to normal as cases skyrocket and people are dying.

<comment><USER7> There are problems with the article, but this isn't one of them. You are a rare minority; the overwhelming majority of people don't want to be locked down nor are they afraid to be outside.

<comment><USER8> I went to a barbershop and the owner was cutting hair because only 2 or 3 of the other barbers wanted to come back. I thought there would be a huge line or backlog but I was the only one in there and she said it's just been really hard to get people to feel safe to come back in. They're checking temperatures, requiring masks etc. but not enough have felt safe to go there.

However, I also started going to the gym again and that has been jam packed with people. They roped off a lot of machines and areas to keep people distanced but it doesn't seem like that will help. Every time I've been I'm one of the two patrons that wears a mask. Other than staff, no one does.

I don't think there's any clear cut statistics on this but people are definitely split on the issue of remaining quarantined/doing basic stuff and going back to business as usual.

<comment><USER9> Age and heath is a huge factor in people's perceived and actual risks. A fit and healthy 25 year old going to the gym regularly is at something like 1% the risk of the average 90 year old. On top the tendency of young people to think themselves invincible and you get wildly different responses from different age groups.

PS: Over 33% of US deaths are from people over 85, 1% are from people under 35.

</comment></comment></comment></comment></comment><comment><USER10> When an article starts out with a blatant lie, there's not much point in reading past that that:

 _Our governmental COVID-19 mitigation policy of broad societal lockdown focuses on containing the spread of the disease at all costs, instead of "flattening the curve" and preventing hospital overcrowding._

Literally no one who designed, implemented, or took part in our lockdowns - <USER2> wandered past a newspaper or television in the last four months - would claim that we've been "focused on containing the spread of the disease at all costs."

<comment><USER11> It's quite beside the point what anyone claims.

The claim you're objecting to is about the lockdown policy, not claims about the lockdown policy.

More specifically: its substance and impact, not the rhetoric or stated intentions around it.

<comment><USER10> I stand by my statement _when an article starts out with a blatant lie, there 's not much point in reading past that._ If you think the opposite is true, I guess that's an entertaining thought. It's probably applicable to satire (which actually raises a question about your post, but nevermind).

> The claim you're objecting to is about the lockdown policy, not claims about > the lockdown policy.

Right. It's saying something _blatantly false_ about the lockdown policy. You seem to have been confused by my second sentence, so allow me to elaborate. A person would literally need to be living on a Pacific island alongside the old Japanese guy who nobody told the war was over and would need to have had no direct contact with the lockdown policy, human beings living under the lockdown policy, or indirect contact with the policy via reading about it or watching news about it in the media, in order to believe the claim made in the first sentence that the policy was about "containing the spread of the disease at all costs."

<comment><USER11> > when an article starts out with a blatant lie, there's not much point in > reading past that.

That's interesting, elaborate on that some more.

</comment></comment></comment></comment><comment><USER12> In the US we've decided to take the worst approach possible. The economy's been blown up while we're not actually getting the disease under control. Places like Taiwan and New Zealand are basically entirely reopened outside of international travel.

Here you have these deliberately evil governors not allowing local officials to impose wearing masks in public despite evidence that they're making a huge difference. Florida's seeing thousands of new cases a day. Yet they're still "reopening", so you have a ton of disease spread, while a lot of folks don't actually want to go anywhere and participate in the economy. So it just ends up prolonging the pain.

Meanwhile, theres absolutely no leadership from the Feds, besides using it as excuse to waive basically all environmental regulations so corporations can poison the water supply.

</comment><comment><USER13> Note this was published over three weeks ago – 05/25/20.

A long time for such a fast-changing situation.

</comment><comment><USER14> I've been always talking about this side of the debate, but nobody wants to consider this, as if it was completely taboo topic to discuss.

<comment><USER15> That's a victim mentality. It's discussed all the time - the argument is constantly being had as to what the consequences of both the shutdown and the disease are, and at what combination of policy and time the two become comparable. Just because you encounter a lot of people who argue that we have not yet reached that point, doesn't mean the entire topic is taboo or that you alone are willing to consider something that nobody else is.

<comment><USER14> "Nobody" was maybe too strong word, but this topic definitely is not liked by a lot of people.

And it's better in HackerNews, but in Reddit i.e. you get downvoted for trying to calculate results of that.

</comment></comment></comment><comment><USER16> A few of the authors are fellows at the Hoover Institution... enough said.

</comment><comment><USER9> I think the deaths are also going to cause millions of years lost life. Doing nothing would have cost 10's if not 100's of millions of years of lost life, so net win.

<comment><USER4> The median age of the people deceased of COVID-19 is 82

The median life expectancy in the US is 79 years.

The measures introduced to stop the disease kill the young and hence affect the loss of life far more.

<comment> dao- > The measures introduced to stop the disease kill the young and hence affect > the loss of life far more.

Not in other countries. Fix your ridiculous social security system.

<comment><USER4> You have no idea what you talk about, you kill the young by failing to provide them with a functioning society. In all places on Earth, the same will be true to Norway as to Mexico. Of course Mexicans will die even more because at least Norway you won't die of hunger but you'll die younger of alcoholism and not having anything to do while cowering alone, afraid at home.

</comment></comment></comment></comment><comment><USER17> This is such a typical _economist_ thinkpiece, attempting to compute stuff that doesn't exist and drawing wild extrapolations or equivalences so you can put a number, _any number_ , on something. Seriously, look at this paragraph:

>Statistically, every $10 million to $24 million lost in U.S. incomes results in one additional death. One portion of this effect is through unemployment, which leads to an average increase in mortality of at least 60 percent. That translates into 7,200 lives lost per month among the 36 million newly unemployed Americans, over 40 percent of whom are not expected to regain their jobs. In addition, many small business owners are near financial collapse, creating lost wealth that results in mortality increases of 50 percent. With an average estimate of one additional lost life per $17 million income loss, that would translate to 65,000 lives lost in the U.S. for each month because of the economic shutdown.

Only in the mind of an economist does this make a shred of sense. Normal people just shake their head and go "wtf, people's lives aren't equal to virtual money that failed to exist". Actually rigorous people shake their head and go "wait, these statistical associations are just correlations and not necessarily transitive, so every time you translate money into outcomes you end up taking intellectual shortcuts that add up until you're spouting nonsense". You need to lack both sensitivity and rigor to put numbers on things like that, a quintessential property of libertarian economists.

<comment><USER14> Lockdown definitely causes deaths. But how many?

I think to see that one would just have to view the big picture and understand how everything is related together.

Are you suggesting one should not try to calculate this at all? Or are you suggesting that it's 0 deaths so there's no need to calculate it.

</comment></comment><comment><USER18> Maybe give people a basic income and they won't kill themselves when they lose their job?

<comment><USER19> They're already getting a "basic income" of $2400 per month on top of whatever normal unemployment benefits are available...

</comment></comment><comment><USER20> Anti vaxers

</comment><comment><USER21> This reminds me of the Bastiat essay "That Which is Seen, and That Which is Not Seen":

[http://bastiat.org/en/twisatwins.html](http://bastiat.org/en/twisatwins.html)

</comment><comment><USER22> Can anyone explain how they calculate the years of life lost by primarily young people due to shutdown vs the years (or months) of life lost from the very elderly population due to covid? It seems to me that there is also a measure of quality to be taken into account where many of the deceased were in care homes and likely had a very low quality of life already.

I am for protecting as much life as possible, economy be damned. But killing the economy seems much more likely to steal many more years of quality life from people than covid is given the current demographics. I'm genuinely curious if anyone has actually run the numbers and talked about this?

Overall I feel like all we get are politically charged platitudes (On both sides) and politicians using this to advance their careers.</comment>


Putin critic Alexei Navalny hospitalized after being 'poisoned with a toxin,' - <AUTHOR> https://www.businessinsider.com/putin-critic-alexei-navalny-hospitalized-after-being-poisoned-report-2020-8 <comment><USER2> His wife is denied access to Navalny, because he didn't allowed it (because he is in coma, welcome to Russia)

<comment><USER2> Moreover his wife passport with stamp of marriage is not enough to prove marriage, she must provide certificate of marriage(welcome to Russia).

</comment></comment><comment><USER3> On a prediction/betting market I'd go with it was not a poison at this stage.

Evidence at the moment is he wasn't poisoned as far as I can see. It seems natural.

Has anyone got anything other than his PR saw him drinking tea? Even this seems silly, how do you get it into his tea? What if he didn't get a drink.

</comment><comment><USER4> Why does this have no comments?

<comment><USER5> Probably no one that has found it.. I searched for it to find it

<comment><USER6> Same here.

It looks like more than a coincidence that yet another healthy Kremlin critic falls ill.

And being on a ventilator sounds very bad.

Source: [https://www.theguardian.com/world/2020/aug/21/alexei- navalny...](https://www.theguardian.com/world/2020/aug/21/alexei-navalny- plane-leaves-germany-to-transport-putin-critic-after-suspected-poisoning)</comment></comment></comment>


Embedding browsers for 3rd party login – a security issue? - <AUTHOR>

Many android apps (including Uber) allow facebook/google authentication. To do that, they open an embedded browser, with no address bar, where they show the facebook/google login page. You type your facebook/google credentials and they get the token.
While I understand what happens - an OAuth flow - embedding a browser without any address bar screams "phishing" to me. How do I know this is indeed google's login screen, and not Uber's exact copy, which collects my password?
Are there alternative, equally user-friendly ways to achieve the same? Maybe just showing the address bar? <comment><USER2> IIRC some oauth providers let you specify a custom URI as a callback. Then you just load your user's native browser, and have a registered URI protocol handler that will bring the user back into your app after authorization completes.</comment>


Inheritance is evil, and must be destroyed: part 1 - <AUTHOR> http://www.berniecode.com/writing/inheritance/

<comment><USER2> The last couple of years my programming style has changed a lot. I've noticed that I've been using inheritance less and less. When I was still doing Java, I only used (implementation) inheritance when the API forced me to, and now in Ruby I hardly use inheritance at all.

I even use objects a lot less - prefering to pass around hashes until they've blossomed into fairly well defined types. To me, a class is a data structure that provides a namespace for the functions that manipulate it, and little more.

In any case, I think nearly empty classes with nothing but accessors have no use in dynamic languages (in static languages they provide at least code completion support.)

I also increasingly dislike local variables and if-statements (preferring case statements). I like my methods having _flow_ , and if-statements and local variables break that flow, like a caesura in music.

What bothers me is that I don't know if this is my progress towards becoming a zen-like programmer, or just me being bored with the old way of doing things, and discovering a new fad. It seems there is no way to tell.

</comment><comment><USER3> one problem that i have with inheritance, especially several layers deep is that it hides code from the developer and it makes it hard to get an idea of what is going on. A sequence of calls needs to be traced across several class definitions. Sometimes inheritance makes sense as an abstraction mechanism but i think it's often overused, especially in Java

<comment><USER4> Only a problem if you are browsing your project with notepad.

</comment></comment><comment><USER5> The way the author uses the common implementation reminds me of Ruby mixins. One of the things that takes a bit of getting use to in Ruby is that classes aren't types, and object hierarchy is used to share implementation, rather than enforce type.

</comment><comment><USER6> Inheritance is a useful tool. The article mentions the strategy pattern which, ironically, often requires inheritance to implement. So I feel like the author may have been burned and/or confused by inheritance, and following true nerd form has cast it aside completely.

Sometimes when you are using a framework, the productivity gained from inheritance cannot be ignored. I suppose this depends on the language and framework design, to a limited extent.

That said, I try to compose rather than inherit when possible, as it provides a more opaque implementation.

<comment><USER7> > The article mentions the strategy pattern which, ironically, often requires > inheritance to implement.

Not really. It only requires interface inheritance for statically-typed languages, which is not really inheritance, and no inheritance at all for duck-typed languages.

</comment></comment><comment><USER8> Compositing should always he used over inheritance where possible, in my opinion. However, claiming inheritance should never be used is a bit unrealistic. There are times when it is a useful and logical choice.

</comment><comment><USER9> Very lucid description of one of the major pitfalls (cough) inherent with a strict OOP design structure where the problem domain and/or programming language does not facilitate its imposition.</comment>


Show HN: NotASecurity – An ERC20 coin that's definitely not a financial security - <AUTHOR> http://notasecurity.com <comment><USER2> Is this a sarcastic token? I think you would like this token.

[https://uetoken.com/](https://uetoken.com/)</comment>


Should I learn [insert language]? - <AUTHOR> https://kvtoraman.wordpress.com/2019/10/03/should-i-learn-insert-language/ <comment><AUTHOR> I hope it helps. Any comments are appreciated.</comment>


Y in Practical Programs [pdf] - <AUTHOR> http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=599706815304116F92FE8C621F8C0F45?doi=10.1.1.16.3065&rep=rep1&type=pdf

<comment><USER2>
        We are sorry !
        This URL does not match any resource in our repository.

Someone has a mirror?

<comment><AUTHOR> Try this:

[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.16.3...](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.16.3065)

(Click on the PDF or PS links on the right to get the actual document)</comment></comment>


Jeff Bezos: To Save Planet, 'Move All Heavy Industry into Space' - <AUTHOR> https://timesofsandiego.com/tech/2019/11/23/jeff-bezos-in-san-diego-to-save-planet-move-all-heavy-industry-into-space/ <comment><USER2> "Shut down factories on Earth" is not a winning political slogan, especially with blue collar workers and their families. If activists dismiss incremental changes to deal with global warming, they will likely get no changes.

</comment><comment><USER3> He's probably making a space company.

</comment><comment><USER4> Would space qualify as a tax haven?</comment>


Dr. NakaMats, the Man With 3300 Patents to His Name - <AUTHOR> http://www.smithsonianmag.com/science-nature/Dr-Nakamats-the-Man-With-3300-Patents-to-His-Name-179976641.html?c=y&story=fullstory

<comment><USER2> If patents count for anything, Kia Silverbrook individually has about 10000 to his name: [http://en.wikipedia.org/wiki/Kia_Silverbrook](http://en.wikipedia.org/wiki/Kia_Silverbrook)

</comment><comment><USER3> _"I am a cross between Steve Jobs and Leonardo da Vinci."_

I guess when you have that many patents to your name, you can speak so highly of yourself?</comment>


This Old Lisp - <AUTHOR> http://thisoldlisp.com/talks/els-2018/ <comment><USER2> God, Lisp is beautiful. You look at some of the older languages of yore and think, my god, how did people survive? Then you see a Lisp program in all it's homoiconic glory, and it looks just as good in 2018 as it did in the 1960s.

A true testament to the expressiveness and generality of expression based programming and the lambda calculus.

<comment><USER3> This 1960 program is much better looking than pretty much all 2018 programs I saw. There definitely are some exceptions, but it's _hard_ to get lisp wrong whereas it's too damn easy to get most 2018 languages wrong.

<comment><USER4> > it's hard to get lisp wrong

That's not actually true, Lisp offers endless possibilities to work yourself into a hole. The average 1960s program was just written by someone a bit more knowledgeable and caring, who took a lot more time to get things right, than the vast majority of modern programming work.

<comment><USER5> And the average 1960s program was written on a blackboard first. Computer time was expensive! I think being forced to confront the cost of the program ahead of time sharpened programmers' wits.

<comment><USER6> My first Lisp program was entered via punch cards. This was the early 1970s.

</comment></comment></comment></comment></comment><comment><USER7> I know I am going to write an unpopular opinion and get downvoted for it, but here it goes...

I am still not convinced by the general "we don't need to upgrade the Common Lisp specification" attitude.

It surely is remarkable as a specification, encompassing so many aspects of the language, yet it leaves so many other aspects to the particular implementation. Multi-threading for example is supported by most major implementations yet their syntax (and often, semantics) are very different from each other. Same goes for cooperative multitasking (corutines etc). Someone else could come up with other examples.

In my opinion a new committee should be formed, to standardize the syntax and semantics of these so common functionalities.

In this sense, the various C++ language working groups are doing a remarkable job. I wish something similar would happen in the Common Lisp world.

<comment><USER8> a large part of the CL community treats the spec a bit like a sacred text, in the sense that it is both very good and impossible to change. The most important reason apparently is that there are no more the resources to do it. Maybe also the struggling commercial vendors do not want to standardize their offer to become too similar to open source implementations?

<comment><USER9> > a large part of the CL community treats the spec a bit like a sacred text

That's not my experience. I'd say that people know what the CL spec currently is, love its stability, and might fear what it could become after an "upgrade".

Anybody can write something like CL21, for example, with one's own style and notations. That's why it is frowned upon to do so and to claim that "this" library is how "the" new Lisp should be. Part of growing in Lisp (and programming) is to learn how to work with a language, not against it, and avoid fixing what is not broken.

However, I trust Common Lisp compiler developers and vendors to know how to make backward-compatible, useful changes: current common lisp environments have way more facilities and building blocks than the bare minimum required. They also know the pain points that currently exist in the standard in a way that goes beyond aesthetic things.

<comment><USER8> It seems to me that this is a case of making a virtue of necessity: since the language does not evolve, many have learned to love the fact that it does not. To me it looks a lot like a form of Stockholm Syndrome.

I find interesting your remark that "anybody can write something like CL21". (Though, not _all_ problems can be solved with a library, but let's stick to this side). In most language, you can't do this kind of customization. In Lisp you can, but anyone else can too, and the result is that after 25 years there is still no standard way to write a hash literal, for example, or to concatenate strings in a non-verbose way. It is difficult to claim that these are good things.

<comment><USER10> It's a curious situation for sure. QBasic shares the property that you can run decades old code unmodified, but we don't celebrate that language. I think a certain amount of resistance to updating it must also come from looking at other languages that have no spec whatsoever (not even an old one) and are doing or have done just fine. Then you look at the various problems that would be addressed by an ANSI update, and see that so many of them _are_ resolved with libraries that work across implementations, some bundled OOTB with implementations, and easy to get via quicklisp if not. And as you bring up, though there's not a standard for hash literals, which aesthetically sucks, you still have a gorillion choices you can import including writing your own in a few lines to fit your aesthetics if you can't stand the alists. Lisp is powerful enough to support such flexible choices without a headache.

A serious effort would probably benefit from talking to the C++ people. Since my knowledge of C++ is basically stuck at C++98 + a few Boost utils, my outside perspective is that C++0x and eventually C++11-C++17 were just standardizing what were already halfway de-facto standards in Boost (halfway because you could get a _lot_ of questionable looks for including Boost from some parts of the community, and the limitations of C++ meant some things didn't look or debug as nice as if there were compiler support). Still, with the standard the syntax has grown quite a bit and some of it can be more pleasing than the Boost macros. Did it break anyone? Probably, but at least compilers let them compile with old standards. It'd be a good conversation with C++ committee people especially to see what it took to finally update such an old spec. A CL update would surely need a similar feature of running under the old spec, since e.g. if you're adding literal hash table support you're almost surely going to break someone who was using that syntax choice for something else.

</comment></comment></comment></comment></comment><comment><USER11> Nice transcript. I would love if more often people did it.

</comment><comment><USER12> That moment when you happen to know the person linked, but in a totally unrelated context (our kids are friends).

Now I've gotta find some time to watch or read this :)

</comment><comment><USER13> I've never done work with CL, but I've done quite a bit of Racket. What does CL offer that Racket doesn't? I've found Racket to be fairly complete, and the areas where it's not are usually quite simple to fill in (thus seem pretty clearly intentionally left open-ended).

<comment><USER14> As a Racket dabbler, I'd say there are a couple things:

\- performant implementations (SBCL in particular is a standout). I mean, Racket's pretty good, and will typically blow the doors off Python, but SBCL is in a different league.

\- multiple implementations conforming more or less to a standard. This can also be a distraction, but is on balance a nice thing to have, particularly if you wanted, for example, an implementation that ran on the JVM (ABCL).

\- different set of libraries. Racket's library situation is pretty good, but sometimes CL will have something that Racket doesn't (and sometimes the other way around)

<comment><USER15> Racket should be becoming more performant once the Chez integration is done.

<comment><USER16> I wouldn't hold your breath; Racket isn't that much slower than Chez, and both are slower than sbcl.

[https://ecraven.github.io/r7rs-benchmarks/](https://ecraven.github.io/r7rs- benchmarks/)

[https://benchmarksgame- team.pages.debian.net/benchmarksgame/...](https://benchmarksgame- team.pages.debian.net/benchmarksgame/which-programs-are-fast.html)

</comment></comment></comment></comment><comment><USER17> One of the things that really put me off Lua was lack of a strong central control and organization for the language, resulting in fragmentation.

How does lisp stand in this regard?

<comment><USER4> It's interesting that you say that about Lua, because it actually _does_ have a strong central control and organization for the language itself. The "problem" is that it doesn't go further than the language, large parts of the community disagree with their choices, and they tend to not care about backwards compatibility too much.

Lisp is very different in that area. I think that is because the language standard is large and doesn't change. As long as people want to conform to that standard, splitting up too much doesn't really make sense.

</comment></comment><comment><USER18> Awesome. Two-Bit History's latest essay is also a fascinating dive into Lisp.

[https://twobithistory.org/2018/10/14/lisp.html](https://twobithistory.org/2018/10/14/lisp.html)

</comment><comment><USER19> After 20 years of programming[1], I've gotten to a point in my life where an advanced type system (with strong _static_ types, no nulls — optionals instead, type inference, type refinement, etc) is absolutely mandatory for any language I'll pick (when I have the freedom to choose). I've heard that there are libraries that tack types onto LISP — but how good are they?

LISP code I've seen anywhere has always been without types (ie dynamically typed). No LISP dialect that I'm aware of has prioritized or talked about or emphasized type checking. Is this something that's even big on the radar of the LISP implementors and the LISP community at large?

I've been burned too many times working on large (100k+ LOC) dynamically typed codebases that I really never want to work with such a codebase again.

A sincere question: Besides its homoiconic syntax and probably the best implementation of macros — what does LISP offer over a modern programming language with a sophisticated type system – even, for instance, a language as old as OCaml?

Peter Norvig has web page called " _Is Lisp Still Unique? Or at Least Different?_ " that was last updated _back in 2002_ where he talks about the unique features LISP offers, and how other languages are catching up: [http://norvig.com/Lisp-retro.html](http://norvig.com/Lisp-retro.html) Modern languages of today offer the features that made LISP unique and superior _in its heyday_ , and languages with powerful type systems offer a huge advantage that LISP never has had.

[1] I started programming in 1998, when I was 8 years old. I've developed software professionally for a far shorter period.

<comment><USER20> I've heard racket is the way to go with types in lisp.

[https://racket-lang.org/](https://racket-lang.org/)

Just passing along what I heard though, I personally don't use types and think things like clojure spec do a much better job fitting the bill.

<comment><USER14> I think some are bristling that Racket is _the_ way to go, but Typed Racket is certainly _a_ good way to go. [https://docs.racket-lang.org/ts- guide/](https://docs.racket-lang.org/ts-guide/)

You can start without types and later convert parts of your code to typed without too much headache.

But, as the GP has mentioned, SBCL allows you to add type annotations which is similar in spirit to the idea of progressively adding types.

Even as a Racket fan (and Racket's performance is pretty good), I covet the blazing performance of SBCL, so the calculus is not cut and dry.

<comment><USER5> Interesting stuff is happening performance-wise. I have my eye on both Racket- on-Chez and pycket.

<comment><USER14> Racket-on-Chez may eventually result in a better performing Racket, but SBCL is still going to be a hard target to match.

That said, Racket on Chez means more of Racket is getting written in Racket. In turn, I suppose Racket-on-SBCL is not outside the realm of possibility. In general, it would be cool if Racket ran in more places.

</comment></comment></comment></comment></comment><comment><USER21> If the author is reading this: typo in the first sentence, the year reads '2108' right now.

<comment><USER22> It's due to the fact that Lisp is ahead of its time :-)</comment></comment>