1,051 karma · joined July 17, 2015
Agreed. We never consider the toll this takes on the executioner. How about the cost to society? The people that have to witness death will have long term psychological issues. How about the cost to society when we realize we've executed the wrong person? The downsides to our barbaric practice of executions are huge, and quantifiable.
What's not quantifiable is the motivation for keeping the death penalty. The only justification after debunking all other reasons is belief. People "believe" that killing is the only punishment that fits the crime. We should not be in the practice of making life or death decisions based on belief.
Unfortunately anything published at uni's like Stanford has immediate potential for faster dissemination. I'm either going to have to wait out the extinction of the Raft consensus protocol (or at least for something better to come along) or to get a better name. Stream processing systems are also synonymous with "Data-flow." They all have a history of punny names (See StreamC, StreamIt, Brook, WaveScript, FloodGate, RapidMind, even Cuda is a play on barracuda which has it's origins in stream processing from the academic Brook project). So if I were to get a better name, I'd have to find something equally punny (and likely create redirects from about 11/12 academic pubs, journal papers, etc.). If you have any suggestions I'm definitely open :).
Not sure if it's inspiring or not, but it's my labor of love. I kept it going after grad school. I work on it a little bit every day, and slowly but surely it's becoming what I originally envisioned as my ultimate parallel programming system.
Very cool read though.
Hasn't this always been the case for young programmers? Seems you don't comment until you have to go back to code you wrote yourself a year later and make major changes....you then realize you should have documented it, either inline step-by-step or as a proper doxygen/javadoc style.
I can thank Dr. Leitner (CS 50/51) for enforcing comments in assignments. Took programming courses as an undergrad (I wasn't a CS major, but a Bio/Int'l studies one) in C, no documentation required...code was checked for correctness only. Leitner had his TA's go through and take off points for code that wasn't documented...which needless to say got me in the habit of documenting.
>It really comes down to laziness.
Not so sure. Laziness or lack of good habits? Perhaps a mixture of both.
To get perf on an FPGA over a hard core you must go very wide (as in lots of parallelism). I suspect you could order custom hard cores from places like Tensilica and get far better perf/watt. I love FPGA's, they thrive on parallel integer/fixed point codes if enough time is put into designing the pipeline. It seems for most float heavy codes a hard core unit at a higher clock rate with a dedicated MMU is much better? Am I missing something that changes that?
I do agree teaching people that there are differences, and give them the tools to learn when algorithmic changes are necessary to optimize for the hardware.
Here's why we should continue to use O(1) access in general. Unless you enjoy rat-holes (I wouldn't have a job without them...so, why not). If we really wanted to, for every algorithm we could consider things like: 1) pre-fetch algorithm (assuming you know which one will be chosen) 2) associativity 3) cache size at each level (including buffering) 4) queueing depth at all levels 5) DDR controller capacity & while we're at it, do we have latency of mem controller on-chip..wait, which one? 6) bank conflicts in DDR 7) NUMAness (how about NUMA cache behavior?) 8) even worse...should we consider cost of differing mem tech. 9) TLB behavior...there's a lot there, can't list
Here's why we don't: YOU CAN'T. Do you realize the incredible amount of work required to get the info for the analysis? The list of things that influence memory behavior is huge. Even if you can get all of it, you work it out for one algorithm...you've now wasted a year, and figured out a cost for one architecture/OS/run-time combo. Congratulations. I'm all for including the cost of memory...just realize what you're asking before you write a post asking about it. There's no end to how detailed you want to go. And in the end you end up destroying the asymptotic bound you're trying to create b/c you'll realize that it's now a probability distribution that really doesn't lend itself to generalizable asymptotic behavior, which is what you want when considering algorithms.
When choosing an algorithm for a specific hardware, then you can choose an algorithm for that arch.....but most people don't do this, it's not necessary unless you're in HPC, Datacenter scale analytics, or in the embedded space/cyper-physical space.
Also related/interesting: https://www.ted.com/talks/olivier_scalabre_the_next_manufact...
Project Page: http://raftlib.io GitHub Page: https://github.com/RaftLib/RaftLib Wikipedia Page: https://en.wikipedia.org/wiki/RaftLib
Email is on my web page: http://jonathanbeard.io
Vote for me! We need a better logo!!
Thanks for reading. If you like it, please contribute. We're rolling out user space threading right now, next project is to build back in accelerator support.
I can concur. I have a family member I purchase these for. At first, it was like...okay, $50 after insurance. Now $100 after insurance. The thing is...nobody really seems to care until things spiral out of control. Who the hell is watching our backs in America? Is it the FDA, the FTC, Congress (likely too busy defunding AMA to care), the DoJ? No idea. I wonder if gov't agencies like the DoD who stock tons of epipens pay the same prices that we the public do? Does the DoD purchase from another market to get out of the huge sticker price? I'm curious to see how many people in the gov't get around purchasing these in the US for their own agencies yet didn't raise extreme alarm at the ballooning prices for the American consumers.