Experienced Rails & JS full stack dev looking for freelance/contract/consulting opportunities.
Location: French Alps
Remote: Only - can travel anywhere in Europe for quarterly team meetups
Willing to relocate: no
Technologies: Ruby / Rails / JS / Node / Typescript / Vue / Git / AWS / Cloudflare
Résumé/CV: https://davekinkead.com/
Email: hn@davekinkead.com
Once upon a time I was a military officer. Then I became an academic philosopher. Now I'm a full stack dev living in the French Alps.
I specialise in turning vague ideas into robust software. I’m really good at asking questions to get to the heart of a problem, translating these into actionable requirements, and implementing them in well tested and documented code.
Happy to work solo, lead, or as part of a team on any stack in the Ruby or JS ecosystems.
While I think programming can be a good way to teach general thinking skills like perspective, clarity, precision, and abstraction, I'm dubious about the claim that it is the best way to do so (§2.1).
Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?
Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?
Precision and clarity - does learning programming languages develop better precision and clarity than studying philosophy and logic?
These are all empirical questions and no empiric data is provided. The lack of support in the argument for the conclusion given also hints that maybe learning programming isn't _the best_ way to learn clarity & precision after all.
Where I thinking learning to program stands out as superior is that it teaches a skill that is currently in high demand - programming.
Well, I think practical experience in programming can be[0] unparalleled in teaching one precision and clarity of thought. One could think that any hard science or engineering discipline would do, but the truth is, programming is unique - because as they say, you can't bullshit the compiler. You have to get the details perfectly right at all levels, or else your program either won't compile or won't work. In math, it's easy to just not realize your reasoning doesn't make sense. In science, it's easy to bullshit yourself with data. In engineering, well... you can't argue with nature, but your feedback loop is still much slower than in software.
I'd definitely say programming will teach you precision and clarity way better than logic and philosophy, because it's grounded in reality. If you want to build something cool and/or get paid, you have to actually think things through; the compiler won't be impressed by your long paper loaded with smart-sounding words.
Also, a side benefit here is that some time spent thinking about representing real world in programs lets one discover just how imprecise, messy and ad hoc everything is - doubly so if it involves humans. I'm sure I wouldn't internalize ideas like "map != territory" as well as I did if not for spending time thinking about modelling real world concepts in a computer program, and in the process realizing the "territory" they taught me in school was just a map (and a pretty shitty one).
> Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?
I don't know. I haven't done much mathematics at the level when it gets interesting. I know algebra feels to me to require very similar kind of thinking as a lot of programming work.
--
[0] - I say "can be", not "is", because I've seen plenty of people who write code for a living, and yet their thoughts are as precise and reasoning as subtle as the Tsar Bomba. Somehow, some people don't seem to realize that the cognitive discipline they use when programming can, and should be applied to "normal life" too.
I think it works best with programming because you write your ideas in code and the compiler will quickly tell you that your idea is wrong, and you can't be mad at it because it is not a person. Now if a colleague tells you that you have no clue of what you are talking about... :)
But I agree that to reach a higher level, programming is not enough.
It is difficult to gather empirical data on human behavior and efficiency, so I wouldn't ding Rinard points for that (as a systems PL researcher from MIT, he surely knows how to measure numbers). You'll find the lack of useful empirical data for most any pedagogic technique (what we can measure is performance in simple tasks, by this doesn't scale up).
Math and philosophy are hella abstract, while learning through programming at least has the learner building something concrete that can be more gratifying. When maintaining the student's interest is much of the battle, it might not matter as programming is not better than the other approaches, it only needs to be good enough.
"[…] Students can work with them in an interactive setting that provides immediate feedback and requires completely precise thinking." --
Math and philosophy provide the latter but not the former. I guess the tight feedback loop programming provides guides us by reducing the solution space.
logic - not necessarily. But while math and most other sciences sprouted from philosophy, don't forget philosophy includes includes silly topics like "Is truth the same as beauty, and beauty the same as truth", or the nature of God. Personally I think these are bullshit topics. Philosophy definitely has capability for spending too much time on vague, subjective and poorly defined subjects. In contrast, there can be no ambiguity in a computer program.
Natural languages - in almost all cases they are used to describe the same concepts. Note books are are easy to translate to any language, even if you have to substitute lamb for guinea pigs in Bible. Everything else can be substituted almost word for word. Languages with substantially different syntax, like Japanese which uses reverse Polish notation (aka postfix), are rare. Verbs go to the end of the sentence in Japanese, that's why movies with Japanese often end up with characters screaming final bits of sentences. Without the end of a sentence, a Japanese can't be 100% sure what it's about. Now go ahead and translate Ruby to SQL, Rust to Javascript to Rust, Haskell to Python, HTML to vimscript, Logo/Processing to Bash, or Perl to anything else. I would say learning several languages with different paradigms and usage domains will be more useful for perspective.
I would say the value of programming is that it teaches being pragmatic, and using the right tool for the job. Math doesn't have to and often doesn't serve any practical purpose. Another big thing is it teaches problem solving and persistence.
> don't forget philosophy includes includes silly topics like "Is truth the same as beauty, and beauty the same as truth", or the nature of God.
That's like saying science includes silly topics like homeopathy and "conquering the seven signs of aging". Just because people claim they are doing science, doesn't mean that they are. The same applies to philosophy.
There is a middle way here. Currently-active fields in philosophy sometimes (usually?) lack bounded questions and precise answers, yet are not silly (ethics, for example.)
I don't think philosophy is about finding answers, the discussion itself is its purpose. Consequently, there is always the risk of generating closed, self-referential discussions in which the subject of the discourse is the discourse itself (post-structuralism vs. structuralism?) It also seems to be an accepted practice to hang an elaborate argument on nothing more than a personal opinion, as if doing so turned that opinion into an objective fact (I am thinking specifically of some of the arguments over consciousness.) For these reasons, I think you have to pick and choose from the offerings of philosophy if your goal is to teach general thinking skills.
>Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?
Honestly - I don't know. But I know from experience that learning different programming paradigms (structured, OOP, functional, logic, relational) is something very different from "Learning to write Fortran" in C, C++, Java, Python and Ruby. That learning Scheme without continuations or macros leaves most students with the impression that "[Scheme] can do everything C can [meaning iteration and if], but in a more weird way, so there is no use in this language whatsoever".
> Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?
Different perspectives on problem solving, absolutely. There is nothing comparable in natural languages to the paradigm shift required when first grokking logic programming or term rewriting.
> Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?
You can think about the theorems involved in writing a todo list or balancing your chequebook, but to actually do these things you have to think programmatically. That makes programming far more applicable to most people's lives.
> Precision and clarity - does learning programming languages develop better precision and clarity than studying philosophy and logic?
Absolutely. Philosophy is muddied by the imprecision of natural language. You can't lie or confuse your computer, it's a strict task master.
I am an applied mathematicians by educational background, while I am working more and more as a developer in my day-to-day job.
The answer that my personal experience gives to these questions is that programming has helped me a lot with precision and clarity. For me it probably boils down to the fact that a compiler is much more unforgiving than my own brain.
The AEC manages the federal election roll. Enrolling is technically compulsory for all citizens but only seems to be enforceable once you are on the roll.
Failure to get your named crossed of a a voting booth (voting isn't compulsory - turning up is) results in a $50 fine.
Here are a few justifications of democracy and how increasing voter turnout would affect them:
1) Epistemic (democracy is good because it makes the correct choices). Increasing voter turnout doesn't do much because 10,000 randomly selected voters are sufficient to get the correct answers and increasing less competent voters would actually make it work.
2) Preference Satisfaction (democracy is good because it maximizes preferences). Increasing voter turnout is only beneficial if it improves the representation of voters to actual population.
3) Consent (democracy is good because we consent to it). Increasing voter turnout is only good if you deny those currently not voting are somehow not consenting. Higher voter turnouts make it easier for government to justify laws however - 'but you all voted for this!'
4) Transformational (democracy is good because participating makes us better people). Increasing voter turnout would be good regardless of how representative the new voters are of the population at large.
TLDR - there are many ways to justify democracy, increasing voter turnout will be good/bad/irrelevant depending on the justification.
Hi Debra - (longish) question about the white labelling aspect of vote.org:
It seems like the implied value of vote.org is that increasing voter turnout can make democracy 'better' by making it more representative. This can only happen however, if the increase in or delta from voter turnout is itself representative of the community at large. If the increase in turnout is only from the extreme of one end of the political spectrum, then that doesn't seem to help democracy.
But if you are white labelling vote.org, then the organisations that use it will be far from partisan and therefore the delta from voter turnout wont be representative.
So if vote.org is used primarily by one side of politics, how does this help democracy? (assuming you can't show that side of politics is objectively better) And if vote.org is used equally by all sides of politics, how does the increased voter turnout change anything?
To address your first question, the actual quote is:
> Many forms of Government have been tried and will be tried in this world of sin and woe. No one pretends that democracy is perfect or all wise. Indeed, it has been said that democracy is the worst form of Government except all those other forms that have been tried from time to time.
So it's not a claim that democracy is the least worst simpliciter, but an empiric claim of history (and compared to 20th century alternatives like national socialism, fascism etc, is backed by evidence). None of that however, justifies the claim that democracy is the best form of government compared when compared possible alternatives.
Correct. The very best form of government is a good king with final say on all matters of importance to the state. The problem with that is that there have only been a handful of good kings over the last few millennia.
> Just two of the [24] research groups produced a significant, positive effect
If only they had used green jelly beans instead [^1]...
This is not limited to social psychology. Scientific publishing has a strong bias towards positive results. As long as null results are filed away, this kind of thing will continue to happen.
Beautiful UI. Schelling's models of segregation is a great example of how simulation and data-vis can create insights in the humanities & social sciences.
I made a similar (though much less beautiful) simulation for a workshop in in computational philosophy last semester - but replaced intentional with random movement when uphappy.
Perhaps this is not the best example given that Spain isn't from a common law tradition but I find the encroachment of criminal penalties for what are essentially civil matters very disturbing.
Criminal law exists to sanction actions that threaten society enough that the state is justified punish offenders ie murder or physical theft. Civil law by contrast exists to right wrongs between private parties ie suing for compensation.
Copyright violations strike me as a clear case for tort. It's a commercial, not a penal matter, but thanks to effective lobbying, the state has now become the MPAA's commercial lawyer.
Civil law by contrast exists to right wrongs between private parties ie suing for compensation.
I'd be the first to agree that draconian penalties for copyright infringement are inappropriate, but I don't think the above is a strong argument, partly because it assumes that whoever is being sued for copyright infringement actually has sufficient funds to make good on any harm they've done, and partly because it assumes that harm can be quantified to a standard a court will accept. Neither of those things is necessarily true, though substantial harm may come to the copyright holder who has been wronged all the same.
Whether or not it is effective or fair is a different matter. As you point out, there are often financial & power imbalances between parties. One would have to make a very different kind of argument that this justifies the state prosecuting on the wronged party's behalf rather than say, making tort more equitable.
Okay, then you can jail people if and only if you prove beyond a reasonable doubt that the downloaders they enabled were going to buy that music otherwise. Criminal court? Criminal court standards.
Six years is still pretty fucking ridiculous. And I somehow doubt the newspapers will see any management go to jail for grabbing people's photos from Flickr.
>Okay, then you can jail people if and only if you prove beyond a reasonable doubt that the downloaders they enabled were going to buy that music otherwise.
Providing pirated content is against the law whether the downloaders were going to buy the music otherwise or not.
I specialise in turning vague ideas into robust software. I’m really good at asking questions to get to the heart of a problem, translating these into actionable requirements, and implementing them in well tested and documented code.
Happy to work solo, lead, or as part of a team on any stack in the Ruby or JS ecosystems.