50 karma · joined January 21, 2017
Gantt charts are a partial linearization of a dependency graph. People tend to fixate over the dates shown, allow schedule pressure to "correct" previous estimates, etc.
According to some early users of Gantt charts, they are a great tool for summarizing a plan, a terrible tool for developing and maintaining one.
Don't tell me you never knew the H1B who knowingly accepted a low salary because that was their chance to move to the US, get their food in the door, and hopefully move up. I've known many, from both Asia and Europe, who told me exactly this.
Companies knowingly use this to keep wages lower than the US-based supply would otherwise demand. At one level, I support this -- it maintains a competitive edge.
So what's wrong? Unlike a citizen or permanent resident, H1Bs feel indentured. They are even more risk averse. If you believe in free trade, then the freedom of both parties must be protected. Both H1Bs and undocumented immigrants feel far from protected. There are both moral and economic problems with the arrangement.
Without being used? Not surprising. It is surprisingly common to allocate a variable, pass it to a function, and have the call never actually use the variable. Unwind, and the variable is destructed without use.
I've seen other nasty framework errors exposed by such (non-)usage patterns.
Think of defgeneric as the function signature and defmethod as the template specialization. Not sure why you say this is an error in CLOS. Looks fine to me.
That said, most implementations try to auto-infer the generic function metaobject when you use defmethod without defgeneric. SBCL raises a warning.
Good reads on the topic:
http://www.gigamonkeys.com/book/object-reorientation-generic...
A secure design is essential for trusting this functionality. My trust in Git has always been tempered by the weakness of SHA1.
A GPG signature is no stronger than its object ref.
Have you seen how many frameworks believe "auto-pull and compile deps by hash from github" is reasonable? They are assuming this isn't a massive attack vector. They are trying to build on a core feature that Git claims to have.
Recent events moved this from probably foolish to provably so.
It is often hard to generalize when N=1. Now that the N=1 use case is established and we are moving towards N=2, it is painfully obvious to all that a better abstraction is needed.
Typedef or no, we would still need a full audit of the code to find spots where people "inlined" the expansion.
IMO, Linus should have done better here -- no crypto hash lasts forever, but this code is far cleaner than useless layers of abstraction.
IMO, the market may be acting rationally here. I have tried Octave several times, and always moved on with little regret. Genuine Matlab is tolerable for some prototyping tasks. A slow clone of Matlab has little value outside of academic environments where Matlab compatibility is required. Programmers use their favorite language, and others use a spreadsheet.
People looking for a free Matlab replacement often gravitate to a full replacement, rather than a clone. In the past, this meant learning something like C++, a significant hurdle to migration.
Python is generally seen as a much better general-purpose language than Matlab. It is building a much larger developer community. It is no harder to learn than Matlab, and it supports similar interactive development. Tools like numpy start adding easy support for Matlab's core strengths. Python is free, even in commercial deployments.
Matlab's primary competitor used to be Excel. Python is emerging as a very real threat. Outside of the core Matlab user base, preference for Python (or Go or ...) is building fast.
Another option in the area is OpenMP. It has a wider base of users and contributors, but I think the abstractions are not as good.
If you can move to a completely new programming language, then Chapel is built to easily scale up across large supercomputer clusters.