Matrices are absolutely *critical* to 3d graphics, and any non-trivial 2d graphics. Those photoshop plugins are *heavily* based on linear algebra.
The code might not be written in mathematical matrix form, or be hidden behind libraries, but if you have 3-vectors (i.e. points relative to the origin in 3-space), any global linear transformation is represented by a matrix multiplying each vectors. Rotation, skew, scale, projection (shadows and reflections) and scaling are all linear transformations.
It's like saying matching text doesn't require state machines. It does, you've just never used them in their raw form. Meanwhile, learning the actual theory of how regular expressions and compilers actually work requires that you understand state machines (because that's what lex and yacc actually spit out, or what your higher level language actually dynamically constructs based on the regex). Likewise, understanding the core theory behind computer graphics necessitates learning linear algebra.
1) Buy nice house.
2) Buy nice car.
3) Set up a trust for my nephew.
4) Setup an investment account that will payout a few hundred thousand every year for me personally on an average year.
5) Setup a non-profit with the rest, and setup computer labs in high schools and colleges.
6) Teach.
On the other, I can now rephrase my question thusly: "in terms of what other system could we try to explain the observed phenomena that we call entanglement?"
I could make the argument that mathematicians *are* programmers, in a sense. They just have a much richer operator set (and fonts and presentation) than programmers do.
The ternary operator cannot be syntactic sugar as it produces a value, while if/else does not. They are two completely different concepts.
Ternary statements are better in certain situations because you can place (limited) logic of what you are assigning close to what is being assigned, and do not clutter up the scope with numerous temporary variables.
new object {
SomeField = flag ? value1 : value2;
OtherField = flag2 ? someValue : otherValue;
}
If you start constructing objects with many fields, the if/else blocks create further and further separation between the logic of what's being assigned, and what it's being assigned to. Considering each if/else can take from 5 to 8 lines of code depending on bracing style, you start running into trouble where you can't keep it all within eyeshot at once. With the ternary statement, you can do it all inline.
I will agree that anyone nesting/chaining ternary operators more than twice is not a good idea.
CEOs are mostly professional negotiators, crowd-workers, and public faces so far as I can tell, coupled with having a Rolodex full of contacts with money.
> Just like how we are forced to learn how to read, write, and do arithmetic.
Not to mention basic set logic using Venn diagrams (All feebs are groobs, and some groobs are neeves, so are some feebs neeves?), and I'm sure some elementary propositional logic is still taught (i.e. your standard Boolean stuff) at some point.
If you really think about it, what is good programming but reading and writing complex arithmetic and logic (along with short prose comments, one would hope) in a clear and concise manner? Thought of that way, is not programming the culmination of all the basic skills we are taught in school?
Tier 2 support might get by with being able to read and diagnose problems, them pass them on to dev. Junior programmers might need bare minimum of syntax and structure, the heavy lifting being taken care of by the architecture team: anything they can't handle goes to the senior developers. Architects and thought leaders may need to at least be familiar with every major library, and experts or even contributors to the ones critical to their systems in order to be useful in their roles.
Improperly scoped questions are guaranteed to generate non-productive discussion as people are arguing from their own positions.
Just like good Perl is possible.
That being said, if you are going to take the time to write correct, well-architected, maintainable, etc. system, you will spend equal amounts of time in any language or framework.
PHP makes some things very easy, but that easiness is skin-deep, and it's exactly the same with Ruby on Rails. Yeah, you can rapidly prototype things and get stuff running in front of people. Scaling it, making it robust, and making it part of a whole ecosystem of mutually self-supporting tools, applications, and utilities? You know... real world software needs? That's going to take a good amount of effort and design in any mature framework.
At least when I was in college, there were two intro CS courses: one for STEM majors and one for the non-STEM majors. The non-CS major course still had programming, but was in psuedocode. It had more HTML work, etc. and didn't focus as much on complexity or anything like that (it mentioned it, but it wasn't rigorous or anything). Since this wasn't a university, there were *very* few non-STEM majors. Were there some, I would imagine that there would have been an even easier version for them.
In addition, usually in the sophomore year for CS majors, there was a "Computers and Society" course that focused on contemporary legal, social, and philosophical impacts of computing.
So, for a CS-track student, it may count for an elective that would normally be run by a liberal arts department.
For a non-CS, non-STEM student, it may count as sufficient for an Intro to Computer Science for liberal arts folks.
you’ll want to be able to set the language for the file type. In the case of Web development, you’ll often have three languages in one file, such as PHP, HTML, and JavaScript; if you do, and you need syntax highlighting, you’ll want to make sure that the tool can handle all three at once.
If this is how you organize your code, with three languages intermixed in one file, your choice of graphical tool set is irrelevant to your success.
An IDE is not a substitute for good code organization and separation of concerns. Yes, it will help you untangle code. Good. Even better to not tangle it up in the first place.
Until you create an AI that can not only code other things, but intelligently and accurately alter it's own code, programming *is* too complex for automation. Code is, in a quite literal sense, crystallized and replicable thought and action.
The best you can do is write better and better frameworks that make it easier for non-experts to write trivial code, which the highest-level programmers don't want to bother with anyway: they'd rather work on something that challenges them and forces them to learn and think. If anything, the highly skilled programmer should welcome a glut of low-end programmers: they just need to switch gears to be the consultant that comes in and fixes things when the idiot college grads fuck it up, rather than the curmudgeonly asshole that gets fired for not being a "team player".
If Agile is failing despite voluminous developer output, that's where the rubber hits the road.
In real world development, you are going to have acceptance criteria written to your PMs level of understanding of the product. Most businesses don't understand product managers, they understand *project managers*, and since project managers are just bookkeepers, organizers, and communication traffic facilitators, meant to be fungible across many types of projects, it just all goes to shit.
The experts who know the system can't be bothered to write the stories, and the project manager has no fucking clue what they are typing up.
Here's the stupidest thing ever: a company that develops with Agile, yet still has Subject Matter Experts communicating through the project managers. Of course you have to have a project manager, because it isn't a single team, or even all Agile teams, and the teams need to coordinate their efforts. And of course those SME's are too busy answering everyone's questions to be bothered to write out the specs properly.
Agile is like most high school physics: it works *perfectly* in low-friction environments.
Now, the pro-Agile people are going to say you aren't doing it right, etc. etc. You people are like communists: it works if you do it right! No, it doesn't, because it doesn't take into account corruption, greed, politics, propaganda, and deliberate mis-control of information for the benefit of a few. And those things are going to exist in any large-enough group of people.
Agile will not fix your organizational problems. It only shines a spotlight on them. Usually, when you point this out, everyone will nod their heads. They will all agree it needs to change. The problem is that no one with the power to actually fix the issue is in the room.
Heien contended that just as ordinary citizens cannot claim ignorance of the law as a defense, police can't either, and because the traffic stop was illegal, the evidence from the search that followed should not have been permitted in evidence against him.
Wait... I've watched Law and Order. Isn't there a whole "fruit of the poisoned tree" thing where evidence obtained illegally is impermissable in court? Just 10 levels of fucked up there.
Yes and no... The Supreme Court held, 8-1, [npr.org] that even though stopping someone for a single broken tail light in North Carolina isn't legal, it's not unconstitutional, because it's reasonable for police to not know the law.:/
And yet, ignorance of the law is no excuse. Fuck that.
What you do with the disruption they create is up to you: embrace it and elevate everyone else, or reject it, and continue with mediocrity (and maybe keep him as an ace-in-the-hole for skunkworks and one-off solutions where time is a key factor, and unleash the disruption when the time is right).
The companies that have a "stable" development pattern in which the feature development pace, bug rate, architecture, and organizational tools are "good enough" should not hire rock-star coders. They will be frustrated with everything you *aren't* doing, and all the other developers will wonder why he wants to push for more: after all, this has been good enough, right? Inertia will kill any ideas he has for improvement.
The companies that have highly-locked down roles and restricted responsibilities shouldn't hire rock-stars: you will underutilize them, and they will be frustrated with a lack of ability to "just get it done on my own".
Rock stars work well only when they are surrounded by true peers, and everyone is operating on their level, or they are in charge (at least technically) and can fill in a mentor role with not-quite-peers (and are given reduced responsibilities in other areas to compensate time-wise). This almost never happens: rock-stars are seen as too good to not be coding.
im always amused when I hear people say programming requires math skills. High school math skills. Not higher math skill, except for esoteric applications, which inevitably are just implementations of higher maths necessary for other fields.
This is simply false.
I have used, in my work:
1) Bayesian probability 2) Numerical integration 3) Linear algebra 4) Graph theory 5) Combinatorics
There are all beyond high school math.
Not higher math skill, except for esoteric applications, which inevitably are just implementations of higher maths necessary for other fields.
With respect to your "philosophical thought experiment" comics, how many of your comics are based in topics/ideas you learned before the end of your formal education, how many are based on things you have encountered in your "continuing education" (whether based on life experience, or just what you are currently reading about), and how many are "novel" intuition pumps?
There seems to be an implicit assumption that people *want* the truth.
Seems to me that Google is going to have to decide whether they are first and foremost a social-engineering-through-better-technology company, or a company that sells ads. I think this would likely bring this contradiction to a head.
Looks like they merged io.js (which was a fork of node.js to begin with), and adopted it's numbering system in the process.
Matrices are absolutely *critical* to 3d graphics, and any non-trivial 2d graphics. Those photoshop plugins are *heavily* based on linear algebra.
The code might not be written in mathematical matrix form, or be hidden behind libraries, but if you have 3-vectors (i.e. points relative to the origin in 3-space), any global linear transformation is represented by a matrix multiplying each vectors. Rotation, skew, scale, projection (shadows and reflections) and scaling are all linear transformations.
It's like saying matching text doesn't require state machines. It does, you've just never used them in their raw form. Meanwhile, learning the actual theory of how regular expressions and compilers actually work requires that you understand state machines (because that's what lex and yacc actually spit out, or what your higher level language actually dynamically constructs based on the regex). Likewise, understanding the core theory behind computer graphics necessitates learning linear algebra.
1) Buy nice house. 2) Buy nice car. 3) Set up a trust for my nephew. 4) Setup an investment account that will payout a few hundred thousand every year for me personally on an average year. 5) Setup a non-profit with the rest, and setup computer labs in high schools and colleges. 6) Teach.
And that mathematical symbol (empty set) is in Unicode.
On the other, I can now rephrase my question thusly: "in terms of what other system could we try to explain the observed phenomena that we call entanglement?"
Math. Specifically, complex linear algebra.
I could make the argument that mathematicians *are* programmers, in a sense. They just have a much richer operator set (and fonts and presentation) than programmers do.
The ternary operator cannot be syntactic sugar as it produces a value, while if/else does not. They are two completely different concepts.
Ternary statements are better in certain situations because you can place (limited) logic of what you are assigning close to what is being assigned, and do not clutter up the scope with numerous temporary variables.
new object { SomeField = flag ? value1 : value2; OtherField = flag2 ? someValue : otherValue; }
If you start constructing objects with many fields, the if/else blocks create further and further separation between the logic of what's being assigned, and what it's being assigned to. Considering each if/else can take from 5 to 8 lines of code depending on bracing style, you start running into trouble where you can't keep it all within eyeshot at once. With the ternary statement, you can do it all inline.
I will agree that anyone nesting/chaining ternary operators more than twice is not a good idea.
Yo dog, I heard you like investing...
CEOs are mostly professional negotiators, crowd-workers, and public faces so far as I can tell, coupled with having a Rolodex full of contacts with money.
> Just like how we are forced to learn how to read, write, and do arithmetic.
Not to mention basic set logic using Venn diagrams (All feebs are groobs, and some groobs are neeves, so are some feebs neeves?), and I'm sure some elementary propositional logic is still taught (i.e. your standard Boolean stuff) at some point.
If you really think about it, what is good programming but reading and writing complex arithmetic and logic (along with short prose comments, one would hope) in a clear and concise manner? Thought of that way, is not programming the culmination of all the basic skills we are taught in school?
Tier 2 support might get by with being able to read and diagnose problems, them pass them on to dev. Junior programmers might need bare minimum of syntax and structure, the heavy lifting being taken care of by the architecture team: anything they can't handle goes to the senior developers. Architects and thought leaders may need to at least be familiar with every major library, and experts or even contributors to the ones critical to their systems in order to be useful in their roles. Improperly scoped questions are guaranteed to generate non-productive discussion as people are arguing from their own positions.
Just like good Perl is possible. That being said, if you are going to take the time to write correct, well-architected, maintainable, etc. system, you will spend equal amounts of time in any language or framework. PHP makes some things very easy, but that easiness is skin-deep, and it's exactly the same with Ruby on Rails. Yeah, you can rapidly prototype things and get stuff running in front of people. Scaling it, making it robust, and making it part of a whole ecosystem of mutually self-supporting tools, applications, and utilities? You know... real world software needs? That's going to take a good amount of effort and design in any mature framework.
A great workman doesn't work with inferior tools, and so he has no need to blame them.
At least when I was in college, there were two intro CS courses: one for STEM majors and one for the non-STEM majors. The non-CS major course still had programming, but was in psuedocode. It had more HTML work, etc. and didn't focus as much on complexity or anything like that (it mentioned it, but it wasn't rigorous or anything). Since this wasn't a university, there were *very* few non-STEM majors. Were there some, I would imagine that there would have been an even easier version for them. In addition, usually in the sophomore year for CS majors, there was a "Computers and Society" course that focused on contemporary legal, social, and philosophical impacts of computing. So, for a CS-track student, it may count for an elective that would normally be run by a liberal arts department. For a non-CS, non-STEM student, it may count as sufficient for an Intro to Computer Science for liberal arts folks.
you’ll want to be able to set the language for the file type. In the case of Web development, you’ll often have three languages in one file, such as PHP, HTML, and JavaScript; if you do, and you need syntax highlighting, you’ll want to make sure that the tool can handle all three at once. If this is how you organize your code, with three languages intermixed in one file, your choice of graphical tool set is irrelevant to your success. An IDE is not a substitute for good code organization and separation of concerns. Yes, it will help you untangle code. Good. Even better to not tangle it up in the first place.
Until you create an AI that can not only code other things, but intelligently and accurately alter it's own code, programming *is* too complex for automation. Code is, in a quite literal sense, crystallized and replicable thought and action.
The best you can do is write better and better frameworks that make it easier for non-experts to write trivial code, which the highest-level programmers don't want to bother with anyway: they'd rather work on something that challenges them and forces them to learn and think. If anything, the highly skilled programmer should welcome a glut of low-end programmers: they just need to switch gears to be the consultant that comes in and fixes things when the idiot college grads fuck it up, rather than the curmudgeonly asshole that gets fired for not being a "team player".
That's not saying very much: just about any methodology "works" with a small enough group of highly-like-minded and self-selecting people.
If Agile is failing despite voluminous developer output, that's where the rubber hits the road.
In real world development, you are going to have acceptance criteria written to your PMs level of understanding of the product. Most businesses don't understand product managers, they understand *project managers*, and since project managers are just bookkeepers, organizers, and communication traffic facilitators, meant to be fungible across many types of projects, it just all goes to shit.
The experts who know the system can't be bothered to write the stories, and the project manager has no fucking clue what they are typing up.
Here's the stupidest thing ever: a company that develops with Agile, yet still has Subject Matter Experts communicating through the project managers. Of course you have to have a project manager, because it isn't a single team, or even all Agile teams, and the teams need to coordinate their efforts. And of course those SME's are too busy answering everyone's questions to be bothered to write out the specs properly.
Agile is like most high school physics: it works *perfectly* in low-friction environments.
Now, the pro-Agile people are going to say you aren't doing it right, etc. etc. You people are like communists: it works if you do it right! No, it doesn't, because it doesn't take into account corruption, greed, politics, propaganda, and deliberate mis-control of information for the benefit of a few. And those things are going to exist in any large-enough group of people.
Agile will not fix your organizational problems. It only shines a spotlight on them. Usually, when you point this out, everyone will nod their heads. They will all agree it needs to change. The problem is that no one with the power to actually fix the issue is in the room.
Holy shit's it's even worse!
FTFA:
Heien contended that just as ordinary citizens cannot claim ignorance of the law as a defense, police can't either, and because the traffic stop was illegal, the evidence from the search that followed should not have been permitted in evidence against him.
Wait... I've watched Law and Order. Isn't there a whole "fruit of the poisoned tree" thing where evidence obtained illegally is impermissable in court? Just 10 levels of fucked up there.
Yes and no... The Supreme Court held, 8-1, [npr.org] that even though stopping someone for a single broken tail light in North Carolina isn't legal, it's not unconstitutional, because it's reasonable for police to not know the law. :/
And yet, ignorance of the law is no excuse. Fuck that.
Rock-stars aren't toxic: they are disruptive.
What you do with the disruption they create is up to you: embrace it and elevate everyone else, or reject it, and continue with mediocrity (and maybe keep him as an ace-in-the-hole for skunkworks and one-off solutions where time is a key factor, and unleash the disruption when the time is right).
The companies that have a "stable" development pattern in which the feature development pace, bug rate, architecture, and organizational tools are "good enough" should not hire rock-star coders. They will be frustrated with everything you *aren't* doing, and all the other developers will wonder why he wants to push for more: after all, this has been good enough, right? Inertia will kill any ideas he has for improvement.
The companies that have highly-locked down roles and restricted responsibilities shouldn't hire rock-stars: you will underutilize them, and they will be frustrated with a lack of ability to "just get it done on my own".
Rock stars work well only when they are surrounded by true peers, and everyone is operating on their level, or they are in charge (at least technically) and can fill in a mentor role with not-quite-peers (and are given reduced responsibilities in other areas to compensate time-wise). This almost never happens: rock-stars are seen as too good to not be coding.
im always amused when I hear people say programming requires math skills. High school math skills. Not higher math skill, except for esoteric applications, which inevitably are just implementations of higher maths necessary for other fields.
This is simply false.
I have used, in my work:
1) Bayesian probability
2) Numerical integration
3) Linear algebra
4) Graph theory
5) Combinatorics
There are all beyond high school math.
Not higher math skill, except for esoteric applications, which inevitably are just implementations of higher maths necessary for other fields.
Dunning-Krueger strikes again.
As a person who enjoys a little philosophy (and can manage to pull out the humorous side of it), what do you think of Daniel Dennett?
With respect to your "philosophical thought experiment" comics, how many of your comics are based in topics/ideas you learned before the end of your formal education, how many are based on things you have encountered in your "continuing education" (whether based on life experience, or just what you are currently reading about), and how many are "novel" intuition pumps?
There seems to be an implicit assumption that people *want* the truth.
Seems to me that Google is going to have to decide whether they are first and foremost a social-engineering-through-better-technology company, or a company that sells ads. I think this would likely bring this contradiction to a head.