Friday, November 03, 2017

A Modeling Language for Thought

For maybe 20 years now, I've been searching for a way to create diagrams that help me clarify my thoughts, thus making it easier to focus on a given topic for longer, and have deeper thoughts about that topic. This could be especially useful for people like me, who seem to have worse than average memory, and thus could gain the most from serializing one's thoughts.

Argument maps are in line with what I'm looking for, but are not general enough (this by design, as their objective is specifically to create a visual representation for arguments). Unable to find a ready-made language, at different times I have played with the idea of creating my own, of which you can see a simple attempt on the left.

In addition to the lack of an existing language, an even more significant problem with a visual language is its reliance on a diagramming tool: so far, the choice of which tool to use isn't clear, existing tools are harder to use on mobile, and most actions must be made with a mouse or other pointing device instead of the keyboard, which makes them slow to use. This might also be the reason why we've yet to see a visual programming language attain an even modest level of success. This leads me to think that text, with its sentences organized in paragraphs, occasional bullet lists, and if long enough some headings, is still, regrettably, our best option for modeling thought.

Tuesday, September 12, 2017

Very Bad Wizards Discussion on IQ and Race

In episode 123 of the Very Bad Wizards podcast, David Pizarro talks about the sensitive topic of IQ and race, and in a segment, starting about 67 minutes into the podcast, he more specifically goes into the question of whether observed differences in average IQ between races are likely to have a genetic underpinning.

He first notes that the race classifications we make are mostly derived from sensory constraints of our species. He doesn't deny that, say, black/white exist as categories and have a genetic underpinning. However, it seems extremely unlikely that those differences are good trackers of the genetic diversity. Thus, he continues, it is implausible that complex traits, such as intelligence, would cluster exactly in what gives rise to the observable differences between races, and so equally implausible that differences in IQ can even be in part explained by genetic differences.

Let me try to make David's argument clearer with a car analogy. Say the Betas, an extraterrestrial species, were to land on Earth, knowing nothing about cars or mechanic, but having very good eye sight, were to classify cars based on their color. Say the Betas had evidence that black cars have more accidents than white cars, and wondered whether the difference was explained by the underlying mechanic of black vs. white cars (in humans, what we would call "genetic factors"), or due to something else (in humans, what we would call "environmental factors").

David could explain to the Betas how car color is a very bad tracker for mechanical differences between cars, unlike, say, horsepower, MPG, torque, etc. David would tell the Betas that knowing color is a very bad tracker for mechanical differences is enough for them to conclude that the difference in accident rate they observe doesn't come from mechanical differences, but rather from "environmental factors". This sits well with our intuition: if black cars indeed have on average more accidents than white cars, it most likely isn't because they are made in an inferior way, but because they have human drivers, and maybe humans don't see black cars as well at night, or humans who are on average prone to take more risk (men?), like black cars better than white cars, or some other "environmental factor".

After having done my best at steel-manning David's argument, hopefully in Daniel Dennett fashion, I'll have to admit I'm not convinced by it. Continuing on the car analogy, say another extraterrestrial species were to arrive on earth: the Alphas. The Alphas were as clueless on cars or mechanics as the Betas, but they classified cars on geographic provenance. They arrived in the 1980s, and noticed that Japanese cars were more reliable than American cars. In this case too, geographic provenance is a poor tracker of mechanical diversity, however in this case, David's argument wouldn't hold, as we know that the difference in reliability was explained by differences in American vs. Japanese car manufacturing processes. As it turns out, for cars, geographic provenance was strongly correlated with factors that had an influence on the way cars were made. And this was true, even though geographical provenance was far from being a perfect tracker of mechanical diversity; for instance, there were significantly more reliable cars made in the US in a lean manufacturing factory.

In conclusion, even if we grant that race is a bad tracker of genetic difference between individuals, it seems to me that David's argument alone does not provide us with enough of a justification to rule out that part of the observed difference in average IQ between races does have a genetic underpinning.

Friday, June 23, 2017

Is Your Time Really Well Spent?

If you're anything like me, you think somewhat despairingly of people who spend a lot of time, say more than 1 hour a day, on Facebook. You could speak of how this doesn't make them happy in the long run, and how they are the victims of algorithms perfectly tuned to feed them what they are attracted to.

But aren't you, if you're spending also north of 1 hour a day reading articles or listening to podcasts doing something very similar? Unlike Facebook, behind articles and podcasts there typically isn't a master algorithm as finely tuned to fit your preferences as Facebook's algorithm is said to be. However, the publications that “survive,”  both in term of being popular enough to still be around, and being the ones you keep reading and listening to, are often exquisitely tuned to your likings. So, effectively, the end result is the same.

And it might even be worse for you if, like me, you enjoy, say, spending an hour listening to an interview of Condoleezza Rice at the Stanford Hoover Institute, because it isn’t obvious that this isn’t time well spent. At least, not as obvious as if you had spent that time watching funny cat videos and reading comments on Imgur.

So, think about it: is your time well spent?

Tuesday, June 20, 2017

The Problem with “Does Parenting Matter?”

A recent Twitter exchange with Olivier Bruchez, reminded me of the unease I feel about discussions on the importance of parenting, or the lack thereof. To that question, such discussions often give answers of the form “parenting doesn’t matter as much as you think”, or on the contrary, “in fact, all you read is wrong, it does matter a lot”.

By “parenting”, let’s say we mean “everything parents decide to do in relationship to their children”. Let’s take “reading” as an example. Does the fact that parents read more have an effect on their children, say, level of academic achievement?

If you are doing a study on this topic, you want to disentangle this from the parents’ own level of academic achievement, as you don't consider one's own level of academic achievement to be a parenting decision. So in your study you control for that. Also, you might find that amongst people with a similar level of academic achievement, people with a higher IQ tend to read more, but since you don't take the parents’ IQ to be a “parenting decision”, you decide to control for that as well. Next, you find that some cultural aspect influence the amount of reading: say you find that parents born in the Jewish faith read more, even controlling for level of academic achievement and IQ. So again, you control for that again, as you don't take being born in a particular faith to be part of a parenting decision.

In the end, if you’re doing this enough, you’ll find no observable effect to parenting. But this is to be expected, as any of our behaviors, parenting decisions included, comes from a combination of our genes and our environment. So it is no surprise that trying to control for anything that could come from our genes or our environment, you find no effect to parenting. By wanting to disentangle parenting decisions from genes and environment, you're wiping parenting decisions out of existence. To me, such studies that concludes that "parenting decision don't matter" aren't showing anything about parenting, and only show the authors' confusion about the meaning of "decision".

Saturday, May 28, 2016

The Problem of Evil

The problem of evil, quoting from the Wikipedia article on the topic, "refers to the question of how to reconcile the existence of evil with an omnipotent, omniscient, and omnibenevolent God".

For Christian theologians, notably starting with St Augustine (AD 354–430), God created a perfect world, but gave Adam and Eve the power to deviate from His chosen path. In that view, God didn't create evil, and instead that evil is the deviation or privation of goodness. The existence of evil, they say, is the price we pay for being able to make free moral choices, and a world in which Man is able to make such choices is better than one were Man isn't, and thus God created a perfect world. This became Catholic doctrine, and this concept is often referred to as all is for the best in the best of all possible worlds, an idea which Voltaire (1694–1778) satirizes to great effect in Candide (1759).

Luther and Calvin stronger belief in predestination leads them to conclude that the fall of man was part of God's plan, and that, ultimately, we might just not be able to understand God's plan.

Monday, April 18, 2016

Waiting for the 2016 MacBook

I am very interested to what Apple will do with the new MacBook, also known as 12" MacBook or Retina MacBook, as it might tell us something about where their laptop lineup is moving. As of this writing, the new MacBook is expected to:
  • Be released by the end of April, which, would be in the next 2 weeks.
  • Come with newer CPUs, compared to the 2015 MacBooks. Those new CPUs have already been launched by Intel in Q3 2015, and are expected to be:
    • For the low-end model: Core m3-6Y30, succeeding the Core M-5Y31.
    • For the mid-range model: Core m5-6Y54, succeeding the Core M-5Y51.
    • For the high-end model: Core m7-6Y75, succeeding the Core M-5Y71.
  • Be about 25% faster, judging from the single-core Geekbench score, comparing the old high-end to the new high-end CPUs. Those scores look good (maybe too good), and would make the new high-end CPU just 5-10% slower than a 2013 Core i7 MacBook Pro.
When Apple introduced the 12" MacBook in 2015, it was in the ultra-portable category: it was a designed to be light and small, but compromising on performance, the availability of ports, and the price. And this is fine, because ultra-portables aren't designed to be entry-level machines; they are not expected to be used by, say, high-school students. Instead, ultra-portables are laptops typically used in addition to another machine, either a desktop or a more powerful but also more bulky laptop. The ultra-portable is the laptop you take with you when go to a coffeeshop, to a meetup, to a conference, on your vacation, on a business trip, or your couch at home, when you don't need anything more powerful.

In short, the 2015 12" MacBook was an ultra-portable, and not a replacement for the MacBook Air. But I have reasons to think that Apple has plans to expand the role of the MacBook, and have it progressively take the place of the MacBook Air as their new entry-level laptop:
  • The name – In 2015, Apple didn't call it the MacBook Something, with Something wisely chosen to evoke "ultra-portable". Instead, Apple just called it MacBook. This makes sense if you have in mind a lineup where you have the MacBook (for entry-level users), and the MacBook Pro (for power-users).
  • The small size of the market (pun intended) – The ultra-portable category exists because there is a market for it, but it is a small market, compared to entry-level and professional laptops. (For PCs, there is a fourth category: gaming laptops, also a smaller market.) I think that in 2015 Apple introduced an ultra-portable not to enter into a new category but as a way to develop more expertise in building lighter and thinner machines, with the idea that this technology would then be used on its entry-level and pro laptops. And isn't this exactly what they did with the MacBook Air? Remember how, when it was introduced, the MacBook Air was so expensive and slow, but so thin?
  • The shrinking size of the market – The new MacBook Pro is expected to be announced this summer, and to be much thinner. This will make the MacBook less appealing to MacBook Pro owners, as more of them will will consider their new MacBook Pro to be small enough.
Will Apple reposition its 2016 MacBook as more of an entry-level laptop? Here are some signs I'll be watching for:
  • A lower entry price – The 2015 MacBook started at $1,299. There is no way Apple will lower the price all the way to $899, the level of its least expensive MacBook Air. But they could move in that direction. (This also tells me that the MacBook Air will stay, at least for one more year, so they can keep a product at this price point.)
  • An additional USB-C port – One port is fine for a machine you mostly use away from your desk, but a second USB-C port, on the other side of the machine, like on Google's Pixel, would allow it to better compete as an entry-level laptop.
Will Apple do anything to move the MacBook towards being more of an entry-level laptop? Or do nothing special, and keep the MacBook firmly in the ultra-portable category, for at least one more year? Or do something completely different? We'll see. Hopefuly, very soon.

Thursday, April 14, 2016

Google Has A Language Problem

Apple had a language problem, which it solved in 2014 with Swift. It is now Google's turn to be in a situation not unlike Apple's, before the introduction of Swift: Google has a language problem.

The problem is Java, which is used to develop apps on Android, and internally at Google to create many of their own apps. The issue with Java is that it is controlled by Oracle, a company Google is fighting in court, and as a 20-year language that evolves very slowly, it is now just plain obsolete. To solve this problem, Google needs a new language, and I see 3 possible contenders, Kotlin, Swift, and Scala:

Kotlin Swift Scala
Benefits compared to Java High High Very high
Controversial Low Medium High
Difficulty to target Android Low Hard Medium
Difficulty to target iOS Hard Low Medium
Difficulty to target the Web Medium High Low

Other alternatives exist, but seem less realistic, at least in the short term:
  • A new Google language - Apple created its own language: Swift. So, couldn't Google come up with their own language as well? This would be a major undertaking. It isn't something outside of Google's league, but if such a large project was underway and getting even remotely close to something they could release, Google being a fairly open company, we would by now have heard about it.
  • An existing Google language - That would be: Go or Dart:
    • Go is designed for system programming, not application programming. It doesn't compete with languages like Kotlin, Swift, or Scala, because it wasn't designed to.
    • It would be all too easy to criticize Dart as a programming language, or describe how much of a failure Dart has been as far as its adoption goes, both within and outside Google. But there is no need to go there given the question that interests us. It suffices to say that Dart, maybe even more so than Go, hasn't been designed to compete with languages like Kotlin, Swift, or Scala, but rather in an attempt to be attractive to JavaScript developers reluctant to use strongly typed languages (ultimately a market it lost to TypeScript).
Getting back to our 3 contenders, no clear winner emerges from the above table:
  • Swift has a lot going for it, but a large amount of work would be needed to make it a viable first-class programming language for Android (think: IDE, APIs, interop with existing code). And maybe even more importantly, how wise would it be for Google to bet on a language designed and controlled by one its competitors?
  • Scala is the best technical solution, both for the capabilities of the language itself, its IDE support (JetBrains' own IntelliJ, Eclipse, and through ENSIME in Emacs, Vim, and Atom), a rich library ecosystem, its ability to target the web through the production-ready Scala.js, and a project underway to create a LLVM backend, which would enable it to target iOS. But the complexity of the language, both real and perceived, is a big hurdle to overcome.
  • Kotlin can be seen as a lesser-Scala: from a technical perspective, it might not be as strong as Scala, but it is strong-enough, and it is less controversial than Scala, and thus easier to sell to Java developers.
If I were Google's language tzar, that is, in the unique position to decide on Google's language strategy, I could see myself go with Scala. If instead, I had to bet on what option Google would go for, assuming it goes for one, I would put my money on them adopting Kotlin.

JetBrains is, to their credit, a fiercely independent company, so I'd be surprised if Google were to acquire JetBrains, but I can see Google announce they will support Kotlin as a first-class language for Android development, along Java. And maybe even will work with JetBrains to improve their JavaScript backend, and together work a on an  LLVM backend, ultimately allowing the same code to be compiled for Android, iOS, and the web.