How to Become a Better Developer - <AUTHOR> https://coderwall.com/p/hd49fq

<comment><USER2> Something missed in this article is the need to reflect and have personal retrospectives. Back when you first learned to code, you may have chosen names for your variables like `foo` and `bar`. This was fine when you're learning how an if statement or a for loop works. But once your program gets a little more complex it's hard to keep track of what `foo` or `bar` represent.

I notice a lot of people who run into these _types_ of problems and consider it to be just the way things are. This makes your productivity plateau. But, the reflective programmer notices the meta problem and asks, "How can I make this easier to think about?" In this specific example, the answer is to give the variable a meaningful name. I think you've gotta be reflective to learn this lesson. You can be taught and you can be told why you should do it, but it won't click very well until you feel the pain and the satisfaction of solving the problem.

\---

New cynical topic: The _real_ way to become a better developer is to be passionate about development. Everything else will fall into place. I'm not sure that this can be taught. I've seen a lot of people with the attitude of, "even if I'm more productive, I still have to work an 8 hr day so what's the point?" These developers (which in my experience is the majority of them) won't improve because they don't want to. But for me, maintainable code is its own reward.

<comment><USER3> I can understand this attitude, working for other people is pretty boring.

The best developers work for themselves.

<comment><USER4> I disagree.

When you work for a company, you get to handle challenges that only come at a certain scale. For example, working just by yourself, you are unlikely to deal with huge distributed systems, or scaling an application to millions of users.

Getting good feedback is critical to improving as a developer. I've learned so much by working with others and picking up on stuff they have done.

<comment><USER5> I suspect he doesn't mean literally "working for yourself". Or by yourself, for that matter - but rather, do the work and seek improvement because you enjoy the doing of it.

And on that I have to agree. It's the difference between a seat-warmer and person who will improve throughout his career.

</comment></comment></comment></comment><comment><USER6> This post belongs to Shawn McCool of Big Name ([http://heybigname.com/2013/01/21/how-to-become-a-better- deve...](http://heybigname.com/2013/01/21/how-to-become-a-better-developer- straight-talk)). Though he was credited, I think we should use the original content source when possible.

McCool does make some excellent points and his contributions to Laravel and other projects have been very helpful to me.

<comment><AUTHOR> thanks for calling our attention to this. We've updated the post so it directs readers to the original source.

<comment><USER7> That is a really great policy, if you do that with all posts!

<comment><AUTHOR> when we are aware of it, we do it.

</comment></comment></comment></comment><comment><USER8> _> Learn technologies that are specifically different from those that you already know._

Careful with this point. A lot of people take this to heart a bit too much and dip their toes into 10+ different languages with only a couple weeks each. This is definitely a big mistake. While it's good to learn technologies that are different from what you know, you need to actually learn them, not play with them for a week. This means actually building something substantial and at least a few months of heavy usage. You need to really understand the technology and the reasons for the decisions the technology makes before the learning will be transferable beyond meaningless syntax.

<comment><USER9> Worse, you dip your toes in a new language and then suddenly that is your new hammer for which will solve all of your problems.

There is something to be said for a craftsman who has achieved a master level with his tools and not simply shopping at Home Depot every month buying the next wizbangfixitall framework. It's as if Christmas comes every 2 months and you unwrap a shinny new hammer (framework/language/database/etc) for which everything must be smashed with.

<comment><USER10> You're still using a hammer?

You should be using hammer.js

/s

</comment></comment></comment><comment><USER11> TL:DR - learn new things, don't be a dick, ask for help, and write code.

This all seems like standard stuff, but if you look at it like a framework and evaluate all actions using that methodology, it will help to identify areas in need of improvement.

</comment><comment><USER12> All good and straight-forward points. Once you internalize these, you are on the way to being a "code craftsman" \- someone who knows their tools well yet is humble enough to ask for help & make himself/herself uncomfortable again and again in the quest of more understanding.

Personally, the number one technique that helped me grow was to always ask "How & Why is this feature/framework/Technology important to the end goals of the business/product?" As you start being entrusted with more complex systems the amount of "religious" arguments begin to multiply (Java is slow, Ruby is cool, Python is old, Mongo is the hotness, Postgre is for old farts,...) At this point focus on the Business needs ..What is absolutely essential?

</comment><comment><USER13> These are fairly nice and straight-forward suggestions, but I'm always surprised that these articles (or conversations like it) never mention ideas not directly related to programming. It might just be me, but in my opinion programming is a specific application of a given mindset, not the other way around. Anything that can improve this mindset can be beneficial, even if it's not always directly obvious. I've personally become a considerably better programmer by learning more about cooking, music, different languages, biology, physics, philosophy and many other things. I find it somewhat sad that so many people seem to consider programming an end rather than a means.

<comment><USER14> Yes, and this can have very sad consequences – such as very capable people working unreasonably hard on projects which never pick up or don't have much relevance to the rest of the world. It's very important to stay as connected as possible to as many fields as possible; I suppose in the end this is how you become a creative person.

</comment></comment><comment><USER15> The only thing I disagree with here is "never call anything magic."

What ELSE would you call .par[1] files?!

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

<comment><USER16> Par files are magic...

</comment></comment><comment><USER17> "This is why experienced developers can pick up a new technology in a day, where a beginner could spend months."

The idea that a professional programmer can pick up a language/technology in a day or two is unlikely. They can PLAY with a new language or new technology and understand the basic idea behind it but they are not going to know it well enough to write anything serious. The problem is not the architecture or the know-how but the syntax and limitations of the tool. Programming in multiple languages is hard; you must keep on shifting your brain back and forth between the syntaxes and the nuances of the languages. A design pattern is a design pattern no matter what language it is but the syntax of that language complicates things.

Last, let's take a tool such as GIT for example, this thing has a zillion of commands and most of them do the same thing Why? All we need is tool to help with versioning our codes not something that stands in the way. There are a couple of GITUIs but when there is a problem, they send you straight to the command line without any real explanations. Now you realize that you should have learned it using the command line to begin with. A lot of people hear this tool was written by the creator of linux and they just jump on board like sheep when in reality this thing was not written with human being in mind. Why are we complicating things? Programmers are being smart so lets focus our energy to solve real problems instead of boosting our egos with the next tool that does not solve anything.

</comment><comment> ryan-thompson Be honest with yourself. Have enough hubris to think you can do a better job than the guy that came before you, but tempered with the humility of knowing that he also was a very smart person. Try not to personalize feedback, because it's the fertilizer that will help you grow. Learn to ignore half the feedback you get. After years and years, you will see patterns that others don't see. Don't be afraid to have a respectful argument over implementation. If everyone agrees right off the bat, then you have the wrong team, or nobody cares.

</comment><comment><USER18> I've been coding for only a little over 2.5 years, and especially agree with the point on learning technologies that are significantly different from what you're comfortable with. I started by learning Java to understand programming fundamentals, which made Ruby pretty easy to learn.

I then learned Ruby on Rails, which I thought was a bunch of "magic" until I started learning iOS development. A lot of the Ruby on Rails architecture concepts were very useful in figuring out how to architect my iOS application. Knowing some Java was also super helpful, since Objective-C is a strongly typed language. Learning iOS helped me understand both Rails and iOS better, and why people didn't like Rails. I also feel a lot more comfortable picking up JavaScript frameworks, such as Backbone.js and Angular.js, which were harder for me to understand and pick up when I was just doing Rails.

Next up, I'll be learning a little bit of Android development, hoping to learn the different philosophies for mobile and how to better structure my layouts for different devices, and will probably learn a bunch of other things I can't even think of right now!

Working with amazing engineers who are open to mentoring me has also been priceless.

</comment><comment><USER19> Good developers tend to focus on patterns for solving problems beyond a language and beyond a framework. Focus on understanding the patterns in payment systems, GIS systems - whatever interests you - and write a lot of code in that area. Figure out what worked and what didn't, improve. Rinse, repeat for about ten years.

</comment><comment><USER20> Focus on Principles, Patterns, and Practices. Ask yourself "why" regarding everything. Understand the problems and solution a technology/pattern/framework/library solves rather than blindly using said solution.

</comment><comment><USER21> Wow, 2226 words and not one of them was "customer" or "user". ("user groups" doesn't count because in this context the user is "me".)

That's the whole problem with this; it's entire focus was on "me" and not on "others".

I have always believed that the best way to transcend mediocrity is to focus on others, not yourself. All this talk about mentors, technologies, methodologies, communities, opinions, and intelligence is about _oneself_ and while probably will provide _some_ improvement, you won't really get to the next level until you find a way to apply it.

Find a customer with a difficult problem. Find a way to solve it with whatever it takes. Trust yourself to rise to the occasion. _That 's_ the best way to become a better developer.

</comment><comment><USER22> The most important of it all is write a lot of code. Write it for a cause. Write more of newer, faster, cleaner, clever, smarter code. The more you write the better developer you will become.

</comment><comment><USER23> I just registered to say: both this and the "how I work" posts are awesome. I love the ideas and the friction between them. Where can I find more content like this?

</comment><comment><USER24> Judging by the notice, the best way to become a better developer is to copy- paste others' code.

</comment><comment><USER25> while he touched on learning from more advanced engineers, the number one way I found to be better is to actually read their code. Look at many of the best open source projects and even the source code for the language you're using. You'll learn a lot.

<comment><USER26> Reading code is the best way to get better at programming. It's good to start with really smart, really good code, but you should also read bad and mediocre code (and more importantly, be able to figure out from reading why it is bad or whether it only seems bad at first glance.)

Reading code starts out being really hard, but with practice it can become almost as easy as reading prose. It's a winning proposition on all levels as you can pick up new techniques, understand how things are done (rather than just what they do), and see the trade offs and decisions that are actually made. Practicing code reading also improves debugging skills as you have to use the same skills to understand the what and the why of perfectly working but unfamiliar code.

Whenever anyone asks me what they should do to improve their programming, I usually suggest reading more source code. Another benefit is that code can't lie as easily or as convincingly as the documentation can.

<comment><USER27> > but you should also read bad and mediocre code (and more importantly, be > able to figure out from reading why it is bad or whether it only seems bad > at first glance.)

Are there books or websites that have snippets of bad code for readers to test their skills with? I know I've seen something like that for C (maybe as part of a larger book) but what about all the other languages?

</comment></comment></comment><comment><USER28> humility is attribute #1</comment>


Hacker Lifestyle Tips: How to Feel Satisfied with Every Day - <AUTHOR> http://gun.io/blog/hacker-lifestyle-tips-how-to-feel-satisfied-with-every-day/

<comment><USER3> Every day, 1 hour working out, 6 hours getting paid, 3 hours doing something cool.

Leaves plenty of time for going out/family/leisure time and a healthy dose of sleep :)

</comment><comment><USER4> On the working out, does anyone have any suggestions for not feeling the next day like they got their asses kicked? While not "working out", I motorcycled for around 6 hours yesterday in 90F+ weather, with a good bit of manual labor before that for two hours. Today, I feel like utter shit and have gotten little done. My arms, back and hands are killing me and I feel very unproductive. This is the main thing that keeps me away from more constant working out. I don't want to always feel tired or worn out.

<comment><AUTHOR> The more you do it, the less this happens.

You feel it a lot when you first start exercising, but not so much after that. You don't want to over-do it - it seems a lot better to do a little bit of exercise on a regular basis than lots rarely.

<comment><USER4> Gotcha. While I know that motorcycling isn't traditional exercise, it beats the hell out of me. I've got a comfortable bike that fits me well, but still any trip over 3-4 hours still starts pushing me. When I did Ohio to Boston in April, it physically decimated me with the wind, distance, cold and rain.

<comment><AUTHOR> I've never been on a motorcycle (I like my skin where it is) - what kind of exercise it?

There is a substantial difference between resistance and aerobic exercise - <USER2> find it's good to have both, and that they both compliment each other. Stronger leg muscles mean higher jumps and a faster stride, and aerobic training means better use of oxygen, so more reps, etc etc etc.

<comment><USER4> I'd most compare it to yoga I suppose. You're in a weird position, its really hard on your wrists as you're putting a good bit of weight and pressure on them. Lots of precise muscle control, as small movements of your head even can direct your motion. You're being hit constantly with wind, and your muscles tense up a lot. Also, its very hot (or sometimes very cold) frequently. Not 'exercise' as much as abuse and strain.

</comment></comment></comment></comment></comment><comment><USER5> Simple but pretty powerful, thanks!

Definitely not that easy for people with full-time jobs, when you factor in the commute, the lunch break, etc, plus a bit of time for socializing and such.

For those working for themselves, this is a great To Do list. Just 3 items per day :)

</comment><comment><USER6> Ideally, someone could overlap #1 and #3: make money out of something cool you want to see in the world.

<comment><AUTHOR> Doing this is, of course, awesome, but perhaps not always optimal.

Art which is not financially motivated can take more risks, you know what I mean? Although getting paid to do something you love is always a good feeling.

</comment></comment><comment><USER7> I love how painfully simple it is.

I love how this makes the minds of any doubters or complicaters squirm and saying it's not that easy.

But it really is.

Being productive in more than one area of your life makes you feel much more satisfied overall, instead of just satisfaction in one area. Otherwise one ends up like the dude with one really strong arm.

</comment><comment><USER8> Simple, unless you get full-blown OCD like I do over certain ideas. Then everything: exercising, sleep, eating healthy, etc all goes out the window until the obsession reaches its ultimate conclusion.

So no, it's not so simple for some people.

<comment><AUTHOR> Everything in moderation, even moderation. Sometimes it's good to go balls- deep in to a manic obsession over a problem/task.</comment></comment>


How to download the complete genome for an organism - <AUTHOR> http://www.ncbi.nlm.nih.gov/guide/howto/dwn-genome/ <comment><USER2> Amusingly, the reason that NIH uses FTP, rather than HTTP, for bulk genome file transport is that because in the old, old days, one PI (professor with a grant) was running an old version of IE which couldn't download files larger than 2GB. They had a lot of trouble with file corruption and because the PI was "important" NIH hasn't really moved to an HTTP content distribution method. Mirroring the NIH FTP servers was always a huge pain.

<comment><USER3> Hey that's great folklore! Do you have a link with more of this story?

</comment></comment><comment><USER4> Neat! [http://www.ncbi.nlm.nih.gov/nuccore/KJ137266.1](http://www.ncbi.nlm.nih.gov/nuccore/KJ137266.1)

</comment><comment><USER5> Any guidance on tutorials on how to use this? i.e. software to analyze this data?

<comment><USER6> It's called grad school ;)

There's tools like BLAST that can use this data to answer questions like "is there a copy of influenza virus in pig DNA". It's basically a fast fuzz search engine.

If you grab a lot of these, you can concatenate pairs of genomes, estimate ancestry distance based on compression ratio, and then produce a phylogenetic tree.

Project Rosalind ([http://rosalind.info/problems/list- view/](http://rosalind.info/problems/list-view/)) has a series of simple programming problems related to bioinformatics.

</comment></comment><comment><USER7> I don't really get why this has been posted? Yup genetic data is a thing that exists... That isn't all species that have been sequenced just the NCBI collection.

</comment><comment><USER8> In case anyone is wondering, there is a human here: ftp://ftp.ncbi.nih.gov/genomes/H_sapiens/

</comment><comment><USER9> The NCBI has a database of annotated genome sequences. For simple organisms, these might be only a couple of MB in size. You can use their search function to look up a genome and then download it from the overview page. No need to use their FTP server.</comment>


Baking Pi - Operating Systems Development - <AUTHOR> http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/

<comment><USER2> Alex Chadwick has done a fantastic job on this. He's just finished his first year of the undergraduate CS course, and has spent the summer interning for us at the computer lab working on this. It's fair to say that it's more a guide to bare-metal programming on the Raspberry Pi right now, but Alex is planning to add further material. I think a contribution many hobbyist developers will find useful is his minimal USB HID driver, which should hopefully be far easier to put in to your own minimal OS than the dwc_otg driver used in Linux (and probably a more concise source for learning what you need to know about the Raspberry Pi's USB controller).

<comment><USER3> VideoCore version anyone? :-)

</comment></comment><comment><USER4> Now this is EXACTLY what I was hoping to see!

I did a bit of ARM assembly in the late 80's and early 90's on Acorn kit and it taught me more than anything else.

</comment><comment> UK-AL Seems more like how to program a microcontroller/soc course rather then operating systems course ATM. Still good though.

I did simlar things in a electronics course for pic microcontrollers which I would hardly call a os course.

</comment><comment><USER5> The Rasberry Pi is the perfect board for a new CS student as it is powerful enough to do almost anything a regular linux server would be normally used for (NAS, Print Server, Web Server) and cheap enough for a starving student to afford. Plus it keeps the students away from playing games as it is too slow to be fun.

<comment><USER4> Yes it costs only 8 pints for a massively powerful computing platform.

I remember paying 45 pints for a calculator at university (TI 85).

(pints of cheap lager that is).

<comment><USER6> The sad bit is the ti calcs haven't gotten any cheaper. Monopoly rent, anyone?

<comment><USER4> And? Why should they. They have an eternal shelf life and it's not like their functionality becomes obsolete every two years.

For ref I paid 25GBP for an NSpire CAS - just don't buy new.

<comment><USER7> Because the cost of manufacture is something like 1% of the cost from 20 years ago? Because similar devices can and would be sold for a fraction of the price if students were allowed to use them?

<comment><USER4> I don't think it is 1% of the cost. That's an out of the air figure which makes no sense at all.

I used to be an EE and a reduction in manufacturing cost like that is never going to happen unless you're selling LED keyrings or something.

Probably a more realistic one is 80% of the cost and the profit margin has probably been destroyed by the uptake of computers in schools.

Also don't forget that even though they are simple devices, their SoC (z80) is binary compatible going back to 1996 (that's 16 years). It takes a lot of money to keep that compatibility and good supplier relations producing old silicon yet adding features.

Other manufacturers such as Casio don't open up their platform as much as TI and therefore can swap CPUs etc. If you look at Casio, each device is fundamentally different and incompatible. Some of them are SH3, some microcontroller, some dedicated silicon. Buy a Casio 9750 now and it won't run a program you wrote on a 7400 a few years ago.

TI decided to fix all this with the NSpire which uses Mentor Nucleus as the OS and gives people binary compatibility through other means i.e a higher bedrock abstraction.

The 83 is spot on for schools which is why they insist on it. It's just the right device for the job and is a sensible convention.

The NSpire emulates a TI83 to give you an idea how important this is to TI ( [http://education.ti.com/images/product-family/nspire- touchpa...](http://education.ti.com/images/product-family/nspire- touchpad-84-Keypad-Insertion.jpg) )

</comment></comment></comment></comment></comment></comment><comment><USER8> I love that he uses assembly to twiddle the bits in memory, but the title is quite misleading. I was expecting tutorials on using something like Buildroot, OpenEmbedded, or a similar embedded linux development environment.

</comment><comment><USER9> This is great, and the first project for my Raspberry Pi I think.

</comment><comment><USER10> I've been looking for a long-term use for my pi, and now I have it: experimental os dev!

</comment><comment><USER11> This is awesome, thanks. I would love to see an equivalent using C so that one could learn to make a more portable OS for other ARM chips.

<comment><USER12> Realistically, you have to have some assembly in every operating system to do things like service interrupts and enter protected mode (in the case of x86).

However I agree that as/if they expand this tutorial, it would be useful to introduce some C or C++

</comment></comment><comment><USER13> Fantastic! Now if my Pi just gets here already...

</comment><comment><USER12> This doesn't really have much to do with operating system development.

<comment><USER14> Really? How does a course about developing an operating system not have anything to do with operating system development?

<comment><USER15> Because the end product doesn't seem to be an operating system by any reasonable definition. The code is basically just a collection of I/O functions that can be called by other kernel-level code.

Not that that's not a useful starting point for low-level hacking, but it's really a stretch to call it an OS given that there's no hint of anything like memory management, task management, hardware abstraction, or any notion of user-level processes that are distinct from the OS itself. Fiddling with GPIOs and writing data to video RAM is great for instant gratification, but it's probably the least interesting part of even a toy operating system.

</comment></comment></comment><comment><USER16> This is fantastic! :)

</comment><comment><USER17> Super cool project! Thanks for sharing!!!</comment>


Mantis shrimp - <AUTHOR> http://en.wikipedia.org/wiki/Mantis_shrimp

<comment><AUTHOR> "Both types strike by rapidly unfolding and swinging their raptorial claws at the prey, and are capable of inflicting serious damage on victims significantly greater in size than themselves. In smashers, these two weapons are employed with blinding quickness, with an acceleration of 10,400 g and speeds of 23 m/s from a standing start [7], about the acceleration of a .22 caliber bullet. Because they strike so rapidly, they generate cavitation bubbles between the appendage and the striking surface [7]. The collapse of these cavitation bubbles produces measurable forces on their prey in addition to the instantaneous forces of 1,500 N that are caused by the impact of the appendage against the striking surface, which means that the prey is hit twice by a single strike; first by the claw and then by the collapsing cavitation bubbles that immediately follow [8]. Even if the initial strike misses the prey, the resulting shock wave can be enough to kill or stun the prey.

The snap can also produce sonoluminescence from the collapsing bubble."</comment>


Satirical maps of the world - <AUTHOR> https://www.bl.uk/maps/articles/satirical-maps <comment><USER2> He missed the best maps of Europe: [https://cdn- images-1.medium.com/max/2000/1*1VlEIWhT_tG4mYYiu...](https://cdn- images-1.medium.com/max/2000/1*1VlEIWhT_tG4mYYiuqjYmQ.png)

<comment><USER3> Yanko's "Atlas of Prejudice" was the first thing I thought of when I saw the thread title

</comment></comment><comment><USER4> Since it's a programming forum my favorite satirical map is of C++:

[http://goldns.ru/cppmap-2012.png](http://goldns.ru/cppmap-2012.png)

That was probably more relevant maybe 10 years ago, things have improved since. But anyone who remembers how it was will have a good laugh.

These always crack me up:

"Concepts Shipwreck" \- anyone remember those ?

malloc/free Oasis - remember thinking, "I am confused by all new and deletes so I'll just use malloc and free"

"Type casting ghosts dance in the meadows"</comment>


One in Three Americans Would Not Get Covid-19 Vaccine - <AUTHOR> https://news.gallup.com/poll/317018/one-three-americans-not-covid-vaccine.aspx <comment><USER2> Can't make the horse drink unfortunately</comment>


What It's Like to Grow Up with More Money Than You'll Ever Spend - <AUTHOR> https://www.thecut.com/2019/03/abigail-disney-has-more-money-than-shell-ever-spend.html <comment><USER2> > I keep trying to tell [my kids] that money is morally neutral. It does not, > in and of itself, make you a bad person. It also does not, in and of itself, > makes you a good person.

Being rich individually might not be morally bad, but inequality probably hurts society overall. "No drop is responsible for the flood" yada yada.

> Within a couple of years I was giving away more money than my parents, who > had much more money that I had, which they told me was embarrassing to > them... I really considered giving it all away at a certain point in my 20s, > and I know people who did that. And I wish I could tell you that it was > courage that kept me from doing that, but it was mortal fear. I didn't think > I would be able to survive. I was afraid I was a hothouse flower. I didn't > know if I could live on my own.

I think I have experienced this on a much smaller scale - the fear of committing to a career change (out of SWE) due to financial insecurities. Going backwards, financially, is incredibly difficult - it's so easy to get locked into a lifestyle that you simply can't relinquish it up voluntarily.

> I've spent a lot of time earning things like post graduate degrees that make > me feel legitimate. And those feelings have started to go away. But that's > outsourcing your sense of self.

She's not the only one!

<comment><USER3> > inequality probably hurts society overall

This suggests that if I find a gold nugget while hiking, somehow that hurts society?

Inequality benefits society overall. It provides a motivator for people to improve their lot, thereby indirectly improving the lot of many others. (For example, in the 90's the newspaper reported that Microsoft had created 10,000 millionaires in the Seattle area, exclusive of home ownership.)

Edit: I think it's ineffably sad that whenever I post that people can better themselves, that life isn't totally random, one has choices, I get a strong negative reaction.

<comment><USER4> The problem with this mentality is feedback loops. If money flows to those who own things more easily/readily than those who do things, society will be heavily stratified despite any individual efforts to improve one's lot.

<comment><USER5> The Pareto Principle is a bitch. There's no way to remove inequality without trampling on the rights of the few lucky people.

|If money flows to those who own things more easily/readily than those who do things

The vast majority of people with a lot of money are doing things. They are not idle, and it is not through idleness they wound up in their position. At least in the US.

This is doubly true for their money. It's not in a big swimming pool for them to paddle around in Scrooge McDuck style. Well, at least, most of it isn't.

<comment><USER6> Is luck a good criteria for some people having more and other less?

At the very high end (top 10, 1, 0.1 percent of incomes), is progressive taxation on income a tax on lucky breaks more than any other factors?

(other factors = intelligence, hard work, lack of bad luck like disasters, unexpected medical bills, etc.)

<comment><USER5> |other factors = intelligence, hard work, lack of bad luck like disasters, unexpected medical bills, etc

How many of those can you attribute to luck? Winning the genetic lottery is one of the best things you can hope for. You have no control over it, and it greatly influences your outcomes. Born stupid and ugly? Tough luck, maybe in another life.

<comment><USER3> If you want to be the best cyclist in the world, training for it isn't enough, you need that extra 1% advantage genetics.

But for most everything else in life, you can be plenty good at what you want to do if you're willing to train for it. You don't have to be the best programmer in the world to make quite a good living by programming. It's hardly necessary to be the best businessman ever to run a good business. Etc.

Oh, and on the internet, you can be ugly as a mud brick and it won't have one iota of influence over your success or failure.

Maybe take inventory and look at what you can do, rather than obsessing about not looking like Keanu Reeves. Even so, Peter Dinklage, Danny DeVito, Kathy Bates, Bette Davis, are not the beautiful people. I've met a few movie actors in person, and without the makeup, lighting, and director, they look like ordinary schmucks.

<comment><USER5> I think you missed the point my post. I'm not one of the people on this board that like to decry success as just being a principle of luck, like it's some kind of lottery.

We're specifically talking about the wealthiest people in the world. The people who got that 1% advantage. I apparently made a mistake in describing those people as lucky (just meaning that there are only a handful of people that will sit at the top, so being one of those people is lucky; it's against the odds).

My whole argument is you can't just take their shit because you want it, and them having a lot of shit isn't a sign that they've done something wrong that allows you to trample on their rights. I think people concerned about inequality have lost the plot. Instead of helping people pull themselves up, they focus on taking from those at the top. Granted, we'll all be more equal financially, but it's hardly a utopian outcome, and no one's lot will be improved, only worsened.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> She seems to be very thoughtful about this. Main takeaway is what I've read elsewhere: money amplifies your character.

If you were an asshole when you didn't have money, you'll be even worse with it - you can pay enough to not be around anyone who will call you on your B.S. Conversely, if you were charitable before, you'll be able to do a lot of good with a larger checking account.

<comment><USER8> "Money amplifies your character." I really like that. Thanks.

</comment></comment><comment><USER9> For the less altruistic angle:

[https://www.reddit.com/r/AskReddit/comments/2s9u0s/what_do_i...](https://www.reddit.com/r/AskReddit/comments/2s9u0s/what_do_insanely_wealthy_people_buy_that_ordinary/cnnmca8/)

<comment><USER10> Wow. This is an excellent thought experiment to picture being super rich:

> _PERSPECTIVE. The wealthiest person I have spent time with makes about > $400mm /year. i couldn't get my mind around that until I did this: OK--let's > compare it with someone who makes $40,000/year. It is 10,000x more. Now > let's look at prices the way he might. A new Lambo--$235,000 becaome $23.50. > First class ticket internationally? $10,000 becomes $1. A full time > executive level helper? $8,000/month becomes $0.80/month. A $10mm piece of > art you love? $1000. Expensive, so you have to plan a bit. A suite at the > best hotel in NYC $10,000/night is $1/night. A $50million home in the > Hamptons? $5,000._

<comment><USER11> Who makes 400mm _per year_? This feels similar to converting 1 day of revenue into an "MRR" number.

[Edit] To be fair, these people probably exist, but they are very, very few (far higher than any banker or celebrity).

<comment><USER12> > Who makes 400mm _per year_?

People who own > $8b, so a few 100, plus some more whose businesses are doing really well.

</comment></comment></comment></comment><comment><USER13> When I was in college, I knew one of the more remote heirs to the Seagram's fortune. I don't know if his father was a billionaire, but they were extremely rich. This guy turned out OK professionally. He didn't have to work, but he found something he wanted to do, and it fulfilled him. I think the company he started did well financially, too.

But his brother. This guy could not attach himself to anything. On one hand, he really hungered for something to absorb him. On the other hand, he seemed to think: what's the point? I'll never earn a zillionth of a percent of what I'm inheriting. He asked me about what I did, and I explained software development. He was immediately very interested, asked lots of questions, asked if he should retrace my steps (BASIC, punch cards, ... -- this conversation was many years ago). And then he never followed up. Years later I heard that he married a vegan (many years before that was a thing), and became quite zealous about veganism.

<comment><USER14> I've been going through some German history recently, specifically Prussia and the Junker class. One theme that really sticks out, relative to our modern times, is the relations between the nobility and the military. Time was, the scions were always in the chain of command. Throughout post-Roman European history, the 2nd and 3rd sons of landed nobility would commonly be in the officer classes. The 1st Crusade was mostly lead by these 2nd and 3rd sons trying to grab some land for themselves. The flag of South Carolina has a crescent in the corner, possibly due to all the 2nd and 3rd sons that came to the Americas (a crescent is common in the personal heraldry of such nobles and kinda became a 'thing'). The military was one outlet for these men that had the upbringing, the education, the nutrition, and the cache, but were unfortunate in the order they came out of some woman's womb.

ROTC at the Ivies has been effectively excommunicated since 1970 or so [0]. Though we no longer have these primogeniture issues, we still have all these young men and women, these scions of industry and politics, that haven't a chance at making fortunes like their parents have. They can't be 'normalized' into their 'family offices' and fortunes. It's very similar to the issues the Europeans faced with their children and the issues about land and money.

Maybe some of the issues that we have today could be ameliorated via a stronger use of the military as a place where these scions could be, well, dumped. Bring back ROTC at Princeton? Yes, I know, you can't have them anywhere near the actual command of people. But you _could_ dump them into 1st Lieutenants and have them shit-n-stink with the regular people of our country. Get them roughed up, dirty, and friendly with the regular citizen. Get that gold leaf rubbed off them. Look at Donny's kids, for example. They've taken to hunting and big game very well. It's not too dissimilar to military life.

[0] Actually, as usual, it's complicated : [https://en.wikipedia.org/wiki/Harvard_ROTC](https://en.wikipedia.org/wiki/Harvard_ROTC)

EDIT: Another good example are Princes Harry and William. Though they are actual nobility, they do provide a good example for the current era.

<comment><USER15> 10 years ago Princeton had ROTC. Had a few friends going through it.

<comment><USER14> Managed to find some data on ROTC programs in the Ivies:

> There were 122 Navy ROTC midshipmen spread across six Ivy League campuses in > 2016, compared to 53 at three Ivy League schools in 2011, according to Navy > data. There were 42 Air Force ROTC cadets in the Ivy League in 2016, > compared to 28 in 2011, according to Air Force data. The class of 2016 at > Yale includes 10 Navy midshipmen and four Air Force cadets out of 1,300 > graduates. [0]

Lets assume that the growth in ROTC members will carry forward at this rate. That means that the Ivy class of 2023 will have about 300 ROTC members across 8 schools, or about 35 per school. At about 1300 students per school, that's ~1 in every 40 students, give or take. So, about 1 in every other classroom.

In looking at other universities, that's about the same. It's hard to find numbers, but it's easy to find pictures. Most of the formation photos have about 30 or more people in them (per service branch).

So, though the current batch of scions in power isn't the most ROTC and military active, it does seem that these Ivies are getting to parity with the rest of the country, in terms of service.

[0][https://www.ivycoach.com/the-ivy-coach-blog/ivy- league/rotc-...](https://www.ivycoach.com/the-ivy-coach-blog/ivy-league/rotc- in-the-ivy-league/)

</comment></comment></comment></comment><comment><USER16> Man, this has to be the most intelligent self-aware interview I've ever read. Her insight into her own character is really sharp.

</comment><comment><USER17> > So that's what you need to know about money, right? If that is your primary > measure of success or value in life, then good luck with that, because it > will never feel good.

This has the sound of a subject matter expert speaking with authority. And it makes me feel like my adult life so far has been a waste

<comment><USER18> Do you measure your self worth primarily on the amount of money in your bank account?

<comment><USER19> Having no money in your bank account can definitely impact your feeling of self worth. It can make a lot of other people angry at you, like landlords, power companies, etc...

<comment><USER18> Agreed. I think the important thing is to recognize the diminishing returns of money on genuine human needs

</comment></comment></comment></comment><comment><USER20> There's a fascinating documentary called _Born Rich_ [1], which was made by the heir to the Johnson & Johnson fortune, where he interviewed his friends who were also born in to incredibly wealthy families. It was interesting to see how differently they all reacted to it, some embracing their wealth and partying like mad, others rejecting it and trying to live a normal life. Highly recommended.

The documentary's director and some of the participants in this film and its sequel, _The One Percent_ [2] (which was not nearly as good), got in a lot of trouble for talking about their family's wealth, presumably because the ultra- rich families really don't want a lot of attention. The blowback included lawsuits, and, if I'm remembering correctly, an adopted daughter of Warren Buffett's got disowned by him after her own participation in _The One Percent_ , where she talked about him and what it was like for her to be part of his family.

[1] - [https://dvd.netflix.com/Movie/Born- Rich/70008257](https://dvd.netflix.com/Movie/Born-Rich/70008257)

[2] - [https://dvd.netflix.com/Movie/The-One- Percent/70092779](https://dvd.netflix.com/Movie/The-One-Percent/70092779)

<comment><USER21> "I have not emotionally or legally adopted you as a grandchild, nor have the rest of my family adopted you as a niece or a cousin" \- warren buffet deals with family matters in exactly the scrooge mcduck like way i thought he would

</comment></comment><comment><USER22> >> In some cases, all I have to do is not be a huge asshole

Man, you can get sooooo far in life with this low bar, yet lots of people fail to clear it....

<comment><USER23> It's easy to think not being an asshole is simple. But if you look more closely, what defines an asshole is subjective. For example, does not offering water to your guest make you an asshole? In some circles it does, in some it does not. What about offering food?

On top of that, one also should not be TOO nice, it raises suspicion, make you a doormat, and most likely make your social interactions more difficult.

So when the goal is walking along a subjective line of being reasonably nice, you'll see why so many people cross to the asshole side, according to one person's standard.

</comment></comment><comment><USER24> From my personal experience money's main function is to give you more options to do whatever, which has nothing to do with happiness and given the "paradox of choice" can actually make you more unhappy with every decision because you're always thinking about the opportunity cost of decision 1 vs decision 10000.

<comment><USER25> I can definitely see that point of view at a certain amount of wealth however I see its primary function as security and stability. It really does buy peace of mind when you know that no one is going to take your shelter away, your car isn't going to break down in the middle of the night, you can keep the heat on, and you'll be able to stay afloat in an emergency.

<comment><USER26> Other than these reasons (which should be considered basic, but I am aware they are not), I don't think I'll ever need money more than that.

To me, money is what you use to buy food, shelter, transportation, pay bills. If you can afford more than that, you are golden (in my book).

If you have that, and you still have savings, what's the difference between you and a billionaire ? All the rich people I know (I don't know many) are deeply unhappy. So, I know for a fact it doesn't buy happiness directly.

I live frugally, well below my means (except that I take vacations sometimes), and have a huge safety net; also, I never discuss my finances and I don't like to form opinions about someone based solely on (or heavily influenced by) their money. I cannot see the joy of having things as a status symbol, it just doesn't make sense to me.

People that buy things primarily to show to others that they can afford them, just screams self-worth issues to me. I guess it depends on the way you value yourself.

</comment></comment></comment><comment><USER27> I started this article annoyed by the title, and expecting to be disappointed, but it was actually quite an interesting read.

</comment><comment><USER28> > If I were queen of the world, I would pass a law against private jets, > because they enable you to get around a certain reality. You don't have to > go through an airport terminal, you don't have to interact, you don't have > to be patient, you don't have to be uncomfortable. These are the things that > remind us we're human.

> It wasn't just the plane, but it's not a small thing when you don't have to > be patient or be around other people. It creates this notion that you're a > little bit better than they are. And for the past 40 years, everything in > American culture has been reinforcing that belief. We say, "Job creators, > entrepreneurs, these are the people who make America great." So there are > people walking around with substantial wealth who think that they have it > because they're better. It's fundamental to remember that you're just a > member of the human race, like everybody else, and there's nothing about > your money that makes you better than anyone else. If you don't know that > and you have money, it's the road to hell, no matter how much stuff you have > around you.

Wow. I'm very impressed with her. So many great quotes here.

</comment><comment><USER29> > Money is morally neutral. It does not, in and of itself, make you a bad > person.

Money is opportunities, in the Bible Jesus says to invest our talents, and to give away our money.

Having money is having opportunities, wasting that and not making something of it couldn't that be morally reprehensible?

I'm no saint, and I'm certainly guilty of hording more money than I need (even if I'm far from super rich). But I'm not under some illusion that I couldn't help more than I do. Or that not giving away money is a neutral choice.

Note. I did give away around 5% of income after taxes last year (I'm just a regular overpaid nerd, so not comparable to the author -- but still privileged like most people here). My cousin taunted me a few years that the Bible says you should pay 10% to charity after taxes and living expenses. I don't think I'm quite there, well, maybe if you do some creative a accounting, hehe :)

For me picking a number to donate was mostly about ensuring that it was high enough that I felt like I had said it like I meant it!

But maybe my savings could be smaller maybe I could help more people -- hording money certainly doesn't seem like a morally neutral thing to do.

<comment><USER30> Good for you! Incidentally, there's a group that actually did pick 10% as a nice round number.

(I'm not doing that either, yet, but I think about it.)

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

<comment><USER29> There is a bunch of movements around giving away just 1%..

Again, that's pretty good, if those movements were to pickup momentum.

Note. I'm by no means a saint, for many years I weren't giving anything away..

</comment></comment></comment><comment><USER31> that last little statistic she dropped was misleading.

Money does buy happiness, for most people. Think about it. Would you be less happier if you made half your current salary? Before you answer the question, think about all the life changes that would occur, should this happen: maybe you have to move into a bad neighborhood in a smaller apartment, no more eating out, no more vacations, no more dental procedures, etc.

Okay, sure there is a threshold, perhaps at 800K or more your happiness wouldn't increase greatly. The point is, the vast majority of people are below that threshold.

And, I've seen a number of happiness survey that show there's a pretty good correlation between happiness and earnings both at a macro level (comparing countires with high gdp per capita to low gdp per capita) and individual levels as well.

<comment><USER32> Money buys happiness up to a certain point. I believe it was around $70,000 per year; at that point, you live a comfortable life where you don't have to worry about basic necessities and have some money left over for fun stuff (obviously this depends on the basic cost of living where you live; it's likely to be higher in Silicon Valley than in Thailand).

<comment><USER21> >Money buys happiness up to a certain point

There are whole industries built around making money buy happiness beyond that point. Humans aren't ideal creatures - once you make a ludicrous amount of money you start REALLY indulging in whatever crazy indulgences you fetishize

<comment><USER26> > There are whole industries built around making money buy happiness beyond > that point. Humans aren't ideal creatures - once you make a ludicrous amount > of money you start REALLY indulging in whatever crazy indulgences you > fetishize

Yes, but that's up to you. That has nothing to do with money directly, cause presumably you were already into insane things that you could afford prior to making obscene amount of money.

</comment></comment></comment></comment><comment><USER33> Interesting interview, but about the title: I really cannot imagine having more money than ways to spend, as there are so many things to do and get, like my new space telescope and moonstation and I heard those things are really, really expensive.

</comment><comment><USER34> I grew up with little, and it was always more than I needed. So does that count?

</comment><comment><USER35> Good for her. She seems like a remarkably good person.

</comment><comment><USER36> This is a very level headed person, this Abigail.

</comment><comment><USER3> When you have a lot of money, you can do something great with it. Like reinvent the rocket industry. Or rid the world of polio. Or buy up land and create nature conservancies. Or buy a bunch of WW2 wrecks, restore them to flying condition, and make a wonderful museum for them.

<comment><USER37> Reminds me of the movie about the person who built the Getty Center in LA. W

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

</comment></comment><comment><USER38> The interesting bit for me is how she doesn't say a single interesting thing.

What has she actually done in her life, other than writing cheques that total 70 million?

I don't know, and I've read the entire interview.

We really have a crisis of imagination, both on the behalf of the poor and the rich. The poor want to be rich, the rich go to restaurants, buy shoes and write cheques.

This is the sad bit about rich people - they just can't seem to figure out that you can't make someone interesting, by sending them to Oxford, Harvard, etc. They're just bored, or maybe it's just me, bored and grumpy, of reading HackerNews :)

<comment><USER39> Now would be a good time for the return of the "gentleman scientist" of the 19th century. Not just passively giving money away to worthy organizations, but educating yourself enough to be an authority in that field. Wealth on the order of hundreds of millions affords your own private research team with a good enough budget for many fields, the possibility of pursuing high-risk basic research with no expectation of immediate financial gain and the ability to sidestep the trappings of the academic environment.

It will be impossible to have more money than you can spend in that scenario - the capital demands of global scientific research far exceed the liquid net worth of any single human individual.

<comment><USER40> David E. Shaw is living the dream:

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

[https://en.wikipedia.org/wiki/D._E._Shaw_Research](https://en.wikipedia.org/wiki/D._E._Shaw_Research)</comment></comment></comment>


Project Zero – Policy and Disclosure: 2020 Edition - <AUTHOR> https://googleprojectzero.blogspot.com/2020/01/policy-and-disclosure-2020-edition.html <comment><USER2> Nutshell: where before P0 would disclose once a vulnerability was patched, or at 90 days, now it's simply "disclose at 90 days". If you patch on day 1, you still get 89 days of embargo (you can, of course, waive the embargo).

The rationale is to eliminate disincentive for rapid patching: previously, vendors had an incentive to hold their patch until the end of the embargo period, because patch release terminated that embargo. That's no longer the case: vendors can now patch right away, and use the remaining embargo days to evangelize the patch.

In addition, vendors can now patch iteratively, getting a hotfix out without disrupting the embargo and following up with a comprehensive or systemic patch later.</comment>


Ask HN: What's the value proposition of RISC-V? - <AUTHOR> I've been seeing more interest in RISC-V lately, I suppose due to the recent RISC-V workshop at the end of November:
https://www.google.com/trends/explore?date=today%201-m&q=risc-v
I can see how the architecture is of benefit for academic research, given how conservative all the other ones are with regard to protecting their IP.  Some of the NDA related hoops I've had to jump through as an embedded developer have had a direct revenue impact on past projects, so I'm pretty motivated to avoid that nonsense by supporting a neutral, open, consortium-backed architecture instead.
However, if I put my business hat on and am preparing to bid on a project, I find myself without a strong argument for favoring RISC-V instead of ARM or MIPS.  I can make an argument for the usual open source benefits of design longevity and avoiding vendor lock-in, but it's a really hard sell when it boils down to SiFive versus essentially the entire rest of the semiconductor industry.
Is there something I'm missing about RISC-V?  Some commercial advantage I'm not aware of? <comment><USER2> In the beginning, the main commercial interest in RISC-V, is as an internal MCU core which is not customer-programmable. In my previous job, we used an OpenRISC core, and it was awful. If I didn't quit I would have made a very strange push for developing a simple RISC-V core, at least once the compressed ISA was finalized.

It's very simple to make a small and efficient RISC-V core in-house, and if that means we can avoid paying a huge amount of money to ARM, that's fantastic. For some products (radio microcontrollers), it's possible that RISC-V will live alongside ARM for a while. Maybe if RISC-V is lucky, semiconductor companies will start to allow customers to program the RISC-V core, and that creates an opening to take on ARM. All it takes is one big customer that says "we are willing to take the hit in debugging and development tooling, in order to save a few cents in ARM licenses on this chip"

You can kind of see ARM positioning themselves for this reality as well. They are branching out into a lot of different areas in order to stay relevant. They've invested massively in debugging IPs and are now investing in architectures for more secure CPUs/MCUs (TrustZone). They have GPU cores, DSP extensions, etc.

Over time, the market for "plain, dumb 32-bit MCU cores" will definitely be taken over by some open source, royalty free solution.

<comment><USER3> Can you explain what you mean by "Maybe if RISC-V is lucky, semiconductor companies will start to allow customers to program the RISC-V core"?

<comment><USER4> As far as I am aware if you license ARM you are not just getting the information to put an ARM core with an ARM instruction set in your system, you can also add custom instructions to access custom silicon that's in the same package (I think the Wii did that to an extent with their DRM). That way you can add your own very high performance and specialized extensions that might normally end up being separate custom silicon IC's. Compare this to the generally available RISC-V cores which would be not specialized towards some end but allow you to program them as a more general device cooperating with a larger system. This I feel is more apparent in SoC circumstances.

</comment></comment></comment><comment><USER5> In my day job we're using an Infineon SoC with an ARM core. Because it's mixed-signal with 20-30v power stuff on a 130nm process, the ARM core only runs at 40MHz. See here: [http://www.infineon.com/cms/en/applications/automotive/body-...](http://www.infineon.com/cms/en/applications/automotive/body- convenience/3-phase-motor-control/)

The SiFive RISC-V core runs at 320MHz on a 180nm process IIRC, so I'm wondering if a near drop-in replacement would get me better performance on the SoC I'm using. It certainly wouldn't hurt and they could save an ARM license fee. As a customer I'd switch in a heartbeat if I could get faster throughput.

Now there are other companies that make gate drivers and the other peripherals we need but don't have a CPU core. They could readily compete with this chip by paying SiFive or one the other consulting companies to help them integrate a RISC-V core with their existing IP. No per-unit costs, and the software toolchain is already there. Anyone can use it to ease the transition from analog to mixed-signal.

<comment><USER6> _the ARM core only runs at 40MHz_

I wouldn't be surprised if that's purely a licensing/price discrimination issue, and not a technical issue. Either way, an other argument for RISC-V.

</comment></comment><comment><USER7> My two cents:

* It is hardware's linux moment. The entry cost is low, everything is customizeable to your client's needs, everything can be inspected and modified. Everybody can copy-paste a SoC, do some plumbing; and hit the ground running. The conditions are perfect for ownership to be shared. As it is the first to do so, RISC-V will ride the first-mover advantage.

* New great tools are being created, and given away for free.

* Economics are changing. It is apparently possible now to buy tiny areas of a mask set for 30k USD, and have the results in shorter times. This means short and cheap iterations. Garage level silicon startups are becoming a thing; and the intricate corners of the market will get filled exactly to their need.

* Physics has been depleted. Walls everywhere. Power wall, clock wall, Moore's law. The only way to offer better performance now is opening things to customization. This is why we're seeing AWS pushing FPGAs as a first class citizen. This is why we're seeing Google's TPU. Microsoft is toying with FPGA-based networking, and you can bet there will (RISC-V?) silicon once their use case settles. Generic CPUs will become rarer, you will host your webservers on a GoLangChip™ with hardware support for GC and actors.

* More customization means RISC-V will be the chip of IoT; in which power consumption, size, performance requirements will be to the extremes of the envelope. If you have a niche market and simple things to do, and you customize your silicon well; 0.01 mm^2 of solar panel can power 0.01 mm^2 of chip. Dust computing could be a thing for select workloads.

* David Patterson says so.

\----

On your question to choosing between RISC-V vs ARM or MIPS, I say it does not matter that much if you need a general purpose CPU. On the other hand if you gain something from having the thing customized (power consumption, memory access patterns, some DSPs here and there); then you should choose RISC-V because someone will do it for you at low costs. Choosing RISC-V now leaves the door opened to these customizations.

\----

On another note, I think that in the future we will wonder why we spend so much time bikeshedding javascript vs java vs ruby vs php vs python. All those things only run on a CPU.

<comment><USER8> _Economics are changing. It is apparently possible now to buy tiny areas of a mask set for 30k USD_

Indeed, TSMC are calling it "CyberShuttle": [http://www.tsmc.com/english/dedicatedFoundry/services/cyberS...](http://www.tsmc.com/english/dedicatedFoundry/services/cyberShuttle.htm)

</comment></comment><comment><USER9> One interesting advantage of RISC-V is _extensibility_. RISC-V has:

\- Two major opcodes reserved for custom extensions (four if you aren't using RV-128, which you probably aren't);

\- Easy-to-decode variable length encoding, not only for half-size instructions (normally the C standard extension), but also for longer instructions; IIRC, the HWACHA extension uses that for 48-bit vector instructions.

That is, RISC-V can be used as a base ISA for a your own custom ISA, while keeping the same tooling and being able to reuse common code. Need a coprocessor with extra DSP instructions? No problem, get a 64-bit RISC-V core as a base and add the DSP instructions to it. Need an extremly small embedded processor to manage your complicated chip? RISC-V has a small variant, RV32E, which is the same as the normal 32-bit RISC-V but with half the registers. Don't want to wait for the B standard extension to add POPCOUNT? Make your own extension. And so on.

<comment><USER10> How easy is it to extend the tooling to support these opcode customizations?

<comment><USER6> Incredibly easy at the assembler level, harder if you want the compiler to understand/schedule it for you.

</comment></comment></comment><comment><USER8> I thought this was a good talk -- you only really need to watch the first quarter, and I'll try to summarise the main points below.

[https://www.youtube.com/watch?v=b5g8u3GA- lo](https://www.youtube.com/watch?v=b5g8u3GA-lo)

 _(Please note, these are not my points, they are arguments from the talk)_

\- There are many ISAs used on a SoC. According to the talk there are SoCs with a dozen different instruction sets.

\- Some of them are homebrew.

\- Would be nice if instead of having to invent an ISA, there was a free, easy to implement ISA already there with toolchain support.

\- Different purposes (eg. DSP, GPU) require different ISA variants, so RISC-V is extensible.

\- You could use ARM (but not x86), but the license is very expensive, and you need the license to verify compatibility, use logos, avoid infringing patents.

\- Benefits everyone because there becomes a really free market in chip designs, resulting in reduced cost.

\- RISC-V is much simpler than x86 or ARM.

\- Microarchitecture independent.

</comment><comment><USER11> I see an interest in the deeply embedded space. ARM has a reputation of being cheap, and it certainly is compared to Intel. But when you go to the low end (mass volume basic IoT), it's not cheap anymore. And their portfolio may not have all the options one need, and the core won't be customizable (architectural licenses are out of reach for small/medium shops).

The possibility of having customizable royalty free cores with good compiler support, good traction (strong ecosystem), and support available if needed is interesting in this space, and would be new. There are commercial offering with lower royalties than ARM and a flexible offering, but AFAIK not customizable. There are free options with full RTL access like the Latice Mico32 (lm32 in GCC), and although it's supported by GCC it's a small ecosystem and the available options quite basic. In this space RISC-V could be a way to gather a bigger community than what already exists and put resources in common to quickly provide more options to designers.

One nice thing RISC-V could bring is that most such "exotic" deeply embedded options are only supported by GCC (or proprietary compilers, ouch). RISC-V has LLVM support, so could support Rust too before other embedded options. For security sensitive applications that could be a plus.

</comment><comment><USER12>
         Some commercial advantage I'm not aware of?

1\. No licensing cost upfront for tap-out.

2\. Open source designs so you can even decrease tap-out costs further. Allowing you to focus on the features you are selling.

3\. Out of the box compiler support for GCC and LLVM.

4\. Provided you stick with RISC-V one doesn't have to re-pay their software development cost every generation. Your compiled ELF's will still work. Software Development $$$ >>>> Hardware Tapout $$$.

5\. Out of box compiler/debugger support. Not making your dev team adopt a new tool chain is a HUGE time saver and cannot be understated.

<comment><USER13> Not sure it is really good deal for SOC company in US.

For the past 10 years, I have been working for an ARM SOC company in US. More and more I see zero margin in ARM SOC especially - with $5-15 4 core 32, 64 bits ARM soc in the market.

For Pi-zero, it is $5 for PCB with 512MB of RAM.

There are no $ to be made in SOC HW and board. If there is any margin left, small ARM SOC vendors from China/Taiwan will quickly take them over and make sure nothing is left for US companies.

For these reasons, I don't see anyone can make $ from making any HW SOC/board in US with ARM nor RISC-V type ISV.

</comment></comment><comment><USER14> Chisel is pretty cool in its own right. But the best I can say about RISC-V is that it's clean and open source. It is clean. Basically, it's a clean up. Get rid of register windows, branch delays slots, tagged integers, ..., every wart that previous RISCs thought were a good idea but turned out very bad.

Clean is good but in 2016 that's not enough for me. x86 is very ugly but Intel has spent decades making it fast, low power, ... Anything you want it to be but never _perfect_.

I think RISC was sort of a good idea in the 80s. Not great but good. It continued the ld/st/register approach of Saint Seymour. IBM ran with it and arguably started it.

But it's been tried and found ... wanting.

<comment><USER15> > Get rid of register windows

The ESP32 is a very new chip and has them too (xtensa arch). Why are they bad?

> RISC was sort of a good idea in the 80s

This is where people usually come in saying that x86 is internally RISC, and that the ISA helps with code density which is otherwise a problem for RISC. Is there any truth to that?

<comment><USER16> As mentioned, the whole RISC approach came out of the 80s, but it's important to remember that this was at a time when RAM was (briefly) faster than the CPU, so memory bandwidth was largely unused and the CPU instruction execution was the bottleneck. Thus the idea of sacrificing fetch bandwidth to achieve lower cycle times and thus more instruction throughput, along with simplifying the CPU core in the effort to speed up instruction decode/execute to allow raising clock speeds.

Today, memory bandwidth is the bottleneck, caches are essentially mandatory for reasonable performance, and newer implementations of even architectures classically considered RISC, e.g. ARM, do uop-based decoding. Physical limits also put an end to increasing clock speeds, and because of OoO execution and the memory bottleneck (which becomes even more of an issue with multiple cores), it makes more sense for a CPU to consume more complex instructions and decode them internally into "RISC-like" uops for scheduling and execution, even if each one takes a few more cycles.

 _This is where people usually come in saying that x86 is internally RISC, and that the ISA helps with code density which is otherwise a problem for RISC. Is there any truth to that?_

This comparison might be of interest: [https://www.extremetech.com/extreme/188396-the-final-isa- sho...](https://www.extremetech.com/extreme/188396-the-final-isa-showdown-is- arm-x86-or-mips-intrinsically-more-power-efficient)

It shows that x86 and ARM are very close, while the MIPS, the "purer RISC", lags behind in terms of efficiency despite having twice as much cache as the next smaller system in the list.

IMHO, as someone who has a long experience working with x86 Asm, I rather like it. I think its predecessor, Z80/8085/8080, is pretty nice too. The 32-bit extension (i386) was quite orthogonal and retained a compact encoding. If there's anything I'd consider "ugly", it'd be what AMD did to it with their 64-bit extensions. From this perspective, all the RISCs look absolutely boring and limited, more so the "cleaner" they are. (ARM is slightly less of a "pure RISC", and that may be one of the reasons why it has remained competitive.)

<comment><USER17> The main proposition of RISC is that you can get near 1 IPC without caches provided that you have enough fetch bandwith (which still is not significant problem for deeply embeded harvard designs). Doing >=1 IPC on CISC architecture with variable length unaligned instructions is essentially impossible without I-cache and significant complexity.

The reason why ARM implementations do uop-based decoding partly lies in the fact that while ARM ISA maps well to traditional RISC pipeline, it does not map so well to superscalar pipeline be it with or without OoO.

<comment><USER14> > The reason why ARM implementations do uop-based decoding partly lies in the > fact that while ARM ISA maps well to traditional RISC pipeline, it does not > map so well to superscalar pipeline be it with or without OoO.

Do you have a cite on that? I'd like to know what the problem was with ARM's ISA that presented problems for superscalar.

If ARM is doing it then that argues against calling uops RISC instructions.

<comment><USER6> _I 'd like to know what the problem was with ARM's ISA that presented problems for superscalar._

Load/store multiple, for starters. Even just load-pair-increment-address is a pain as it requires 3 write ports.

[https://arxiv.org/pdf/1607.02318.pdf](https://arxiv.org/pdf/1607.02318.pdf)

</comment></comment></comment></comment></comment></comment><comment><USER18> A recurring theme I've seen on this thread is the feasibility of producing customized chips. I, for one, would love to see a processor that can run Linux (with an MMU), a high-quality audio DAC, a power management unit, and a WiFi radio -- but no GPU or VPU -- all integrated on one chip. Something like the i.MX233 [1], but with an up-to-date ISA rather than ARMv5, and with integrated WiFi. One could imagine Amazon using such a chip in a future generation of the Echo Dot.

[1]: [http://www.nxp.com/products/microcontrollers-and- processors/...](http://www.nxp.com/products/microcontrollers-and- processors/arm-processors/i.mx-applications-processors/i.mx23-applications- processors-integrated-power-management-pmu-arm9-core/multimedia-applications- processors-power-management-unit-arm9-core:i.MX233?&tid=vanIMX233)

<comment><USER19> I think the reason that you can't get such a CPU isn't that it impossible to create one with other instructions sets, but that, apparently, nobody has thought it be a product that will make them money.

I doubt that the licensing cost of an up-to-date ISA is the bottleneck there. Because of that, I don't see how RISC-V would be of much help there.

What would help is if a cheap way to make bespoke CPUs in low numbers would become available. That would enable hobbyists to order exotic hardware.

Also note [https://community.nxp.com/thread/440796](https://community.nxp.com/thread/440796), which mentions a somewhat successor ([http://www.nxp.com/products/microcontrollers-and- processors/...](http://www.nxp.com/products/microcontrollers-and- processors/arm-processors/i.mx-applications- processors/i.mx-6-processors/i.mx6qp/i.mx-6ull-single-core-processor-with-arm- cortex-a7-core:i.MX6ULL)) I haven't checked its features against your list.

</comment></comment><comment><USER20>
        However, if I put my business hat on and am preparing to bid on a project, I find myself without a strong argument for favoring RISC-V instead of ARM or MIPS.

I think I agree with you on that. It is still early days for RISC-V and it would be a big risk to use the core in an SoC now. Every time I take a look at it as an SoC engineer I see a lot of work that needs doing to integrate it.

\- Basically you would be using a heap of dev tools that you never touched before.

\- The bus is something called TileLink which is their own protocol so all your peripherals have to be compatible or wrappers have to be made.

\- Verification IP seems minimal and not SystemVerilog so you'd have to write it all yourself.

\- Your SW guys would need a good emulator. Don't know if theirs is any good.

Other posts are going on about features but if I think about how much SoC work would be required I question whether it is cheaper than ARM or MIPS.

<comment><USER6> _\- The bus is something called TileLink which is their own protocol so all your peripherals have to be compatible or wrappers have to be made._

FYI: TileLink is not a RISC-V thing, it's a Berkeley/SiFive rocket-chip processor thing. And it has an AXI interface on it anyways.

<comment><USER20> Sorry I am just basing this off what I can find. I don't see AXI mentioned in the SiFive docs when I skim through.

</comment></comment></comment><comment><USER21> My take is that it's still early days, but:

Over the next decade more and more companies will be building out their own SoC-type solutions, either as FPGA or ASIC. The cost of developing custom SoCs is going to drop. In this context licensing an ARM core every time you approach this problem is going to end up being a major part of the cost and hassle. Having a quality open ISA that can be adapted by anybody will be extremely useful.

I don't work in the processor industry, but that's how I see it from the outside. And the work on RISC-V so far is very impressive.

<comment><USER22> The cost per transistor is going down every generation, but the NRE cost of developing a SoC is going up and up. Pretty much doubling every manufacturing generation (e.g. 40nm -> 28nm -> 16nm).

The cpu is actually a relatively small chunk of that cost these days, but once in volume production even this is dwarfed by software development costs...

<comment><USER12>
        but once in volume production even this is dwarfed by
        software development costs...

This is one of the strongest arguments for RISC-V

Not only do you avoid licensing costs, but the ELF files you have from the 2-3year old model will still execute on your new model chip.

All one needs to do is dynamically link against their new special instructions.

</comment></comment></comment><comment><USER23> Having access to the HDL for a chip would be awesome. We use a custom RTOS at work, and occasionally run into actually new silicon bugs (ie. the vendor ends up writing errata based on what we found). If I had access to the HDL, it'd reduce a month long debugging->fix cycle quite a bit and let me get back to more important work.

<comment><USER24> Don't know your requirements, but take a look at picorv32. [https://github.com/cliffordwolf/picorv32](https://github.com/cliffordwolf/picorv32)

<comment><USER23> I'm mainly waiting I can actually buy silicon, and can trust the company not to go under in six months since our products typically have ~10 year lifespans.

But yeah, this work and other work like it has me super excited about the future.

<comment><USER24> Ah wasn't sure if you were doing it on an FPGA or not but I've been wanting to give it a try myself. It looks like it'd be really nice for some projects that I want to attempt (in particular an HDMI compatible ambient lighting project for my TV).

</comment></comment></comment></comment><comment><USER25> Thanks for asking, I've been thinking about this too although from a different viewpoint: I'm in the semi hardware industry so my questions are do I invest time & resources in RISC-V? Here are my conclusions so far:

* Eco-System Value The contributors to the most recent RISC-V workshop [0] are an impressive list, there are sure to be lessons to be learned by all involved. R&D folks have a new, rich eco-system in which to explore new micro- and macro-level architecture optimization concepts. Vendors have, potentially, a head start on feeding new commercial interest. I rate this value five out-of five stars ( __ __ _)

_ Performance Value Related to eco-system, and perhaps why you're seeing interest among cloud service providers, is that the industry workloads are changing. Intel, Qualcomm and others are certainly focused on this too, but perhaps RISC-V can be a game changer. In the same way that Tesla up-ended the automotive market by delivering new technology directly to consumers without the typical supply chain burden, Google, Facebook, Alibaba, Amazon (ie., hyperscalers) and perhaps Tesla too can find value in new SOC architectures which they directly design. I rate this currently at two out of five, for potential ( __...)

* Cost Savings Value I hear your concerns about the overhead of IP licensing, but don't blame the vendors: you folks purchasing IP ask for unlimited indemnification and ECO's -- it's crazy. And of course a CPU does not an SOC make, you'll still need plenty of additional IP (even lowly USB cores!) to develop an SOC. Plus, while I'm sure the LLVM/GDB tooling is better than it used to be, if RISC-V becomes poplar the commercial tools will follow. One star ( _....)

_ IP Terms The whisper in the industry for years has been that 'ARM/Intel glom critical design ideas from customers which they roll into future cores to sell to competitors.' Perhaps, rather than fighting this, RISC-V can allow all of us to embrace this type of collaboration? Hard to see it now, and I don't think Son-san should write-down his ARM acquisition costs just yet, but the "CPU is just another core" could push the industry forward. Intel becomes a compute-cloud provider. Qualcomm the IOT mesh provider. NVIDIA the AI services provider. And the rest of us focus on software differentiation! Three stars ( __*..)

Thanks for the chance to frame my thoughts on this. I think I'm motivated to stay more involved now.

[0] [https://riscv.org/2016/12/5th-risc-v-workshop- proceedings/](https://riscv.org/2016/12/5th-risc-v-workshop-proceedings/)

<comment><USER26> Great analysis!

HN comment styling: If you want literal asterisks, separate them with spaces: ( * . * . * )

<comment><USER25> Thanks... wondered what happened to my damn asterisks!

</comment></comment></comment><comment><USER24> I'm liking it for the open IP cores for FPGAs, there's some that are really tiny but give you a nice powerful core that you can fit into as little as 750 LUT. That can be really powerful for handling stuff that is better suited to a CPU instead of complicated logic gates.

</comment><comment><USER27> How about achievable raw performance?</comment>


Show HN: Browser Pong - christoph-heiss http://stewd.io/pong/ <comment><AUTHOR> Did not work at all on my triple-monitor setup. All three windows stuck to the right side of the leftmost monitor and only moved up and down. No left and right.

</comment><comment><USER2> I'm impressed! Love the idea and would be great to read from you the lessons learned or issues you had while developing this. Thanks for sharing.

</comment><comment><USER3> Well. I expected Pong in the browser, but didn't expect _that._

This needs to be prefixed with Show HN:

<comment> christoph-heiss Updated the title, thanks!

</comment></comment><comment><USER4> Wow, i´m curious as to how to program such a thing.</comment>


A Working Mathematician's Guide to Parsing - <AUTHOR> https://jeremykun.com/2019/04/20/a-working-mathematicians-guide-to-parsing/ <comment><USER2> > _Our hero, a mathematician, is writing notes in LaTeX and needs to convert > it to a format that her blog platform accepts. She's used to using dollar > sign delimiters for math mode, but her blog requires \\( \\) and \\[ \\]._

Unless our hero mathematician is writing, like, several blog posts a day, using tools like parser generators and writing your grammar in BNF and the like is WAY overkill. Just use search/replace and manually fix it up. Or, like, maybe some kind of editor macro/multiple cursor nonsense in your fully- featured text editor. If she really wants to go nuts, she should write a four- line python script to do the search/replace a tiny bit smarter. Fixing it up with some manual oversight takes like three minutes per blog post at most, it's not worth trying to automate fully.

This is one of them "killing an ant with a nuclear bomb" situations.

<comment><USER3> But killing an ant with a nuclear bomb is moar funnier! Don't stop the fun!

</comment></comment><comment><USER4> My go-to library for parsing in Python is [https://github.com/pyparsing/pyparsing](https://github.com/pyparsing/pyparsing), a [https://en.wikipedia.org/wiki/Parsing_expression_grammar](https://en.wikipedia.org/wiki/Parsing_expression_grammar) -based [https://en.wikipedia.org/wiki/Parser_combinator](https://en.wikipedia.org/wiki/Parser_combinator) library. I generally find it _much_ easier to get my head around parser combinators than parser generators.

<comment><USER5> As the author says:

> because the parser generator knows about all patterns you want to match in > advance, it will match longer terminals before shorter—more > ambiguous—terminals

If you don't mind manually ordering your choices in your alt operators, then PEG and parser combinators are OK.

Oh, and you often need to restructure your grammar to avoid left recursion.

</comment></comment><comment><USER6> Just use pandoc[1] — assuming the blog platform accepts a well known markup language.

[1] [https://pandoc.org](https://pandoc.org)

</comment><comment><USER7> For converting LaTex to WordPress, I'm a fan of [https://lucatrevisan.wordpress.com/latex-to- wordpress/](https://lucatrevisan.wordpress.com/latex-to-wordpress/)

</comment><comment><USER8> Sadly, he don't understand what LaTeX is and what TeX is. And $$ is a TeX macro, should not be used in LaTeX, the are much better math display environments.

<comment><USER9> Regardless, this is a very common way of writing mathematics in LaTeX, and so will need to be addressed in any solution to this problem.</comment></comment>


Ask HN: Is my UX too complex, even for early adopters? - <AUTHOR>

My startup, Browsemob.com, allows shoppers to name-their-own-price on whatever they want to buy, on any website that is signed up with us. E-tailers review the offers, and if accepted, send the shopper a unique coupon code, specific to the item and price.
Currently, we have a single website setup to work with us, beautychoice.com. It seems like with one customer, in a vertical like beauty, is enough to get going and start understanding our customer behavior and conversion, however organic users are very slowly dripping in and not getting all the way through to naming their own price.  So, I'm reaching out to get some help from you all.
Is our UX too complicated, even for early adopters?  Should we try harder to find the overlap between early adopter and beauty product consumer? Any thoughts where those people might be?
If you want to try it out, go to browsemob.com/signup and signup using invite code BMPRIBETA. <comment><USER2> I don't think the UX is too complicated. Its smart, though somewhat troublesome because its not something your users would be familiar with (bookmarklets?). To be clear, its unfamiliar, not complicated.

If you're getting the users to install the bookmarklet, they've done the hardest part as far as your implementation goes.

IMO, the hard part of the UX is picking a price that you'd pay for it. I love the idea of this app, but that particular aspect can be taxing for those people of us who who are less ambitious/frugal than others. I would put an emphasis on suggesting how to decide on a fair price. Many people don't have any sense of price or negotiation, and could get 'bored' because they don't want to take a second to think about what something is really worth to them-- or conversely, they get bored when they start over-thinking about what its really worth to them.

On a side note, have you considered adding some sort of price-check input for bidders to report other outlets that offer lower prices? For instance, a seller be more inclined to give a discount if the user can report a lower price elsewhere. This shared information makes both parties better off.

this is sort of off topic, so you can disregard it, but i was curious what your thoughts were about the potential for arbitrage, where users of this tool get discounts and resell on somewhere like amazon or ebay.

<comment><AUTHOR> It would be an awesome day, considering where we are now, when we have to put in safeguards against arbitrage. But, when that day comes, we can install time / ip type restrictions and make it more difficult to gain significantly from arbitrage.

Price checks is an interesting idea. If you look at our video, you'll see text that pops up after the user inputs a bid. It's our guide, that uses lossy bounds and simple terms to shape guidance related to where to bid. Turns out, from tests we've run previously, there is a good overlap of bids offered to prices willing to be accepted by the e-tailer.

If you are interested in the details, feel free to reach out directly at 'matt' at the domain name for the website.

Thanks.</comment></comment>