HNHacker News
TopNewBestAskShowJobs

drostie

4,724 karma · joined January 19, 2012

Hi, my name is Chris Drost. I'm an application developer at U.S. Engineering Company in Kansas City, MO. If you're a talented software engineer in the KC region, hit me up -- we may be hiring.

I am @crdrost on Twitter and Facebook. I almost never check my Facebook.

I have an M.Sc. in Applied Physics from the TU Delft in the Netherlands. I am from Ithaca, NY originally.

You should listen to more Troubled Hubble.

    Don't you forget the, the image in your retina
    To foresee the future, and find a use for
    Them telling me, everything, 
      that would happen to me anyway.

    If it isn't science, it doesn't exist;
    We make our own problems and blame them on
    Birds and bees, but we ain't seen nothin' yet:
    and don't you ever forget it.
Also, more Glaze.

    Every night I wake up,
    Thinking there's something missing in my heart:
        a canvas for the art.
    Every day I hear the sound of whirring fans,
    But nothing more:
        another scene yet to be scored.
    
    You're the empress, I'm the king:
        together we will rule this world
    You'll paint the scene, I'll write the melody:
        we will rule this world.
Maybe also some '90s stuff.

    And of course you can't become, 
    If you only say what you would have done:
    So I missed a million miles of fun.
Email me by my HN username @zoho.com or my twitter handle @gmail.com.
submissionscomments
drostie··on How many jobs really require college?
Nobody has really commented yet on how highly suspect the methodology here is, nor the tradeoff between education and experience, nor the tradeoffs inherent in the world "acceptable" when you're trying to figure out what the minimum acceptable education is to land a certain job.

Just for the easiest example, the given education stat for top executives (chief executives, general and operations managers, and legislators) is listed as "high school." It's not even "some college". Now if I come to you and say, "hey, my niece actually just graduated high school and she's pretty smart, has a lot of ambition and drive, really great extracurricular involvement -- can we set up a job interview where she might take over your company as CEO?" you would laugh at me! You would say, "let her get her MBA and manage real people for a few years, and then let's talk. Or I mean if she really can't wait, let's give her an entry-level position and if she's really as good as you say, she'll be managing in 5 years and might be able to get to the top in 5 more."

But if we say "minimum" as in "could you start a company with only a high-school education and find yourself as its CEO?" then of course the answer is yes. Heck, let's knock this one down a peg, that could happen even if you don't graduate high school, it's just less likely. Legislator? Sure. I mean, most legislators today are presumably former lawyers who have 7 years of post-high-school schooling in them, but all you really need to legislate is to be elected.

Or for another example, Devin has said, "Any job specific training takes less than six months. Examples: ...cook." I mean, that's partly true, some 1/4 of cooks in this country work at fast food joints, some other 1/4 of cooks work in cafeterias etc., but placing it at "high school" as if culinary school isn't a thing is just deluding yourself for the other half or so of cooks. And if you have the choice between going to culinary school for a year or going to work in a kitchen that will take you for a year, probably if you're fresh out of high school you're going to get a lot more out of the culinary school. And that's because education has a different sort of value from work experience, which makes them very hard to compare evenly. The cook who went to culinary school for a year probably knows how to cook a much broader diversity of things, but the one-year-anniversary line cook will probably have greater appreciations for, say, prepping quickly and efficiently, taking multiple orders at once, estimating the time that dishes take to cook and communicating that to others, and so forth. They're not easily comparable.

drostie··on Jeff Bezos’ Annual Letter
It should not drive you nuts that the two-party system is the best we have. The two-party system is the natural mathematical consequence of our electoral system, "divide the land into districts and each district holds a first-past-the-post vote." Fixed-point theorems are sufficiently robust and human intellectual attitudes sufficiently squishy that we will always be coerced into this. Abstract mathematics literally caused the US civil war, and it will keep amping up the anger and mistrust and divisiveness over and over, again and again, because the fixed point of our electoral system is two parties who both say "you're either with Us or Them, you have to choose."

[I have seen a recent push of progressive voices against gerrymandering, including both political sides (e.g. Schwarzenegger on the right and John Oliver on the left)... It is important to understand that the elimination of gerrymandering would help make the parties a little more volatile and would thereby help things get done, but it is very much a "rearranging the deck chairs on the Titanic" measure, the polarization and 50/50 split would stay there even if you used mathematical methods to do redistricting.]

We have a fine proportional system that we use to allocate our Representatives to the States, and it is worth remembering explicitly that the House was created to solve one big problem: we have a bicameral legislature because the Founding Fathers were split between people who said "every person should have an equal say in terms of what laws are passed" (House) and "every state should have an equal say in terms of what laws are passed" (Senate). People from low-population states did not want city-folk running over them, and that is what the Senate guarantees.

What we need is to use this same proportional system to allocate our House Representatives to the various national Parties. The founding fathers did not want to think in terms of political parties because they were all big intelligentsia egos who figured that you'd want to really know who you were voting for. What they didn't consider is that in a fork-o-philic model, someone can basically just make their own party about their personality and they'll get one or more seats if they're influential enough. (A great example is Trump's analogue in the Netherlands, a man named Geert Wilders, who basically just made a party that was about him and his own isolationist nationalism and it has been remarkably successful as the Netherlands has similar pressures to those that got Trump elected.)

No more gerrymandering, no more 50/50 partisan split: for the House, everyone gets an equal vote for a party, and the parties get proportional representation in the House via their Webster allocation of delegates. While the party composition starts off Republican vs. Democrat, in short order the Freedom Caucus and Green Party and Libertarians and so on will have their own representation there, too. The 50/50 split in the Senate will probably still infect the House, and your parties in the House will consistently be "left-ish" and "right-ish", but the openly nonpartisan House politics will also feed back into the Senate and kill some major road-blocks.

drostie··on The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness
Because (a) it does not let you relicense as GPL, which is the only thing GPL compatibility means ("Can you be press-ganged into our army later? Great: you're compatible. We just haven't assimilated you yet."), and (b) the FSF is under the impression that strong copyleft exists, which is practically not true (there have always been Purity Hoops that you can jump through to make the two interoperate) and may be legally not true (Ubuntu's stand in including ZFS is precisely that all copyleft is weak copyleft, and the only difference is if your walls are implicit and poorly defined as in the GPL or explicit and well defined as in the MPL and CDDL). So it's in their ideological interests to consider things as incompatible even if they grant the Core Software Freedoms plus the Copyleft they like so much. Like, license incompatibility is the core selling point of GPL. The actual legalese of the license is really rather confusing and long by comparison.
drostie··on The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness
"Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange."
drostie··on The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness
Let me force you to be concrete. What right are you even talking about?
drostie··on The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness
I mean, (1) has nothing to do with the Sun examples, it's not something unfortunate about CDDL but unfortunate about the GPL. If one thinks of it in national terms: there is a GPL Nation holding its land against a bunch of proprietary city-states; a huge swath of land is occupied by the neutral space of MIT and BSD, people who have no real national identity and GPL is fine with them, "Can you be press-ganged into our army? Yes? Great!". And then there's these strange lands MPL and CDDL which lie close to GPL; they culturally agree with GPL in many ways; they like copyleft and want their works to remain free... but they intentionally have a separate national identity because of practical and historical reasons (at some point they had trade deals with some proprietary city-states). And it's just unfortunate that the GPL does not allow for any collaboration anymore, because "if you have any national identity, that is against our nation's constitution and we cannot work together with you." Meanwhile all of these little nations can work with each other just fine, can work with the proprietary city-states just fine.

Regarding (2), the history is a bit murky. Danese Cooper wrote the CDDL and has said that GPL incompatibility was intentional; but several others have come forth (both at the talk that he said that, like Phipps, and since then, like Cantrill) to say that it was not a design goal at all, it was in fact a compromise between engineers who wanted an MIT/BSD license and management who wanted a GPL license.

The true story seems to be: Engineers were very firm about "if you force people to jump through the Purity Hoops to install proprietary drivers you are increasing the total quotient of worldsuck for generations to come and frankly, why the hell are we opening this system if we're going to make the world suck more." Meanwhile management was very firm about "we worked so unbelievably hard to open this thing up, we don't want some big player like IBM to just fork off a proprietary version, spend a big budget to become the big player in the Solaris game, and then all of our work open-sourcing this damn thing was for nothing." The CDDL was a clean-up of the Mozilla Public License which sensitively addresses both issues, it deliberately contains a big honking wall which is (and everything inside of it is) copyleft open-source, but the license has no problem being distributed with proprietary add-ons as long as the interfaces they use, baked into the copyleft open-source wall as they are, follow the copyleft open-source license of the wall and everything therein.

drostie··on The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness
That's not quite right. Non-copyleft licenses say "I will not sue you"; a sort of first-level copyleft license says "I will not sue you unless you potentially threaten to sue other people"... but the GPL is fully recursive: "I will not sue you unless you threaten to sue others in the ways that I don't like or do not threaten to sue others in the ways that I do like (namely, this sentence)."

As a concrete example of how this imposes real restrictions, the proprietary macOS got ZFS and DTrace starting, oh, ten years ago or so; Ubuntu got ZFS last year and there are still people who are pissed about it, wanting Ubuntu users to be forced to jump through the Purity Hoops that they already have to use for their proprietary drivers. Ubuntu's decision to ship ZFS cannot possibly be read as an attempt "to deny others the freedoms that Ubuntu enjoys." There is no freedom which Ubuntu enjoys which it is trying to deny others by shipping ZFS.

You still need to jump through the Purity Hoops to run DTrace: the "official channels" way is to not run DTrace (they recommend that you install systemtap and use a GPL application named `dtrace` which makes systemtap take DTrace-like input and produce DTrace-like output), and if you actually want to run DTrace you have to grab the `dtrace4linux` project off of GitHub and modify only your own system with it and then every time you load the thing your syslog will remind you that "module license 'CDDL' taints kernel, disabling lock debugging due to kernel taint," so I don't know what lock debugging is but I hope you don't need it.

drostie··on Ask HN: What do you want to see in Ubuntu 17.10?
byobu is basically an abstraction over screen and tmux, letting you use either with some common keybindings for spawning new windows and a common toolbar at the bottom telling you disk usage and load average and the like. I am not sure why purge-old-kernels is in the byobu package, that seems like a really poor placement for it.
drostie··on Ask HN: What do you want to see in Ubuntu 17.10?
I still remember the first time I was in a computer lab and I leaned too far away from my computer and my headphones that were blaring music popped out... and the whole room WASN'T subjected to the same loud music. And I opened up the Kubuntu audio controls and plugged in my headphones and the volume slider suddenly jumped up, then I unplugged again and it muted again. "Woah."

I remember trying it on whatever Windows computers were in the lab just to make sure I wasn't crazy and that this wasn't there all along, and sure enough, they kept the same volume no matter whether the headphones were plugged in or not.

One of the first PulseAudio victories I remember, at a time when I vaguely recall that it was a newcomer and people were really pissed at PulseAudio's bugs and recommending just straight ALSA instead.

drostie··on How Quantum Theory Is Inspiring New Math
If anyone was wondering what that next number was in the sequence, the sequence for the problem given is https://oeis.org/A076912 and it is now known to begin,

    5, 2875, 609250, 317206375, 242467530000, 229305888887625, 248249742118022000, 295091050570845659250, 375632160937476603550000, 
    503840510416985243645106250, ...
If you want a few more details you might check out https://www.encyclopediaofmath.org/index.php/Clemens'_conjec... but of course mirror symmetries have whole textbooks devoted to them nowadays, one of which the Clay Mathematics institute has released to the public [PDF warning: http://www.claymath.org/library/monographs/cmim01c.pdf].
drostie··on Bartholomew L. Bartholomew
Taking the manager's side for a moment, it echoes a somewhat-uncommon-but-important problem which we have in our industry: when management makes risk decisions for engineers, rather than engineers making those decisions for themselves. This gets into a mess of definition, but we can define that a superior in the organization who is fully informed about the costs and benefits and trade-offs and options, understanding and weighing it all, is still doing "engineering" and the problem is precisely that some way up the organizational hierarchy this capability breaks and we transition from "engineering" to "management". And the problem is precisely that at that level, administration has to transition from top-down authoritarian to bottom-up support, from a general directing their soldiers to the janitor slopping up their messes. Of course there is still some role for long-term vision, but the point is that this role does not encompass specific decisions that bear business risks, because these roles can't, because these roles are by definition not able to be completely informed about those risks.

In this case, we see a supervisor who is still close enough to the code to have the engineer's hat on, but whenever they interact with their own superiors they get the same refrain of "I don't understand this" -- so those people are managers. The problem is that the risk decision of keeping or firing the troublesome team member (as well as other decisions like whether the team's methodology should be agile or not etc.) has been usurped by management.

Normally this decision-making takes a more-concrete form like the 90s-era "And the code absolutely must be written in Java" ... "do you know what Java is?" ... "Yes, it is the software that enterprise businesses like ours use! We must use it!" ... "But this will be faster and more maintainable in another language" ... "Don't care, we need Java", or whatever. In this case I find it interesting that the issue exists one level up in hierarchy, sort of the same problem at a higher abstraction.

drostie··on Does Science Advance One Funeral at a Time?
That would be because that quote inspired the research. However the mechanism that they discovered is actually somewhat more subtle; it is that "rockstar scientists", intentionally or not, suppress radical new ideas coming into their disciplines. Since radical innovation is by and large something that the community-as-a-whole has (in the sense that each person has a tiny probability of coming up with the radical idea so the actual idea-havers are kind of randomly selected from the community), either implicit effects of "oh things are moving so fast in that field, these people are so smart, I will never measure up" or explicit effects of people in the field saying "why the heck would you pursue that path, it's obviously bonkers and we're doing so much better with this other approach..." convince those community members to not come forward with their radical innovation, even as it's sorely needed. Rather than the opponents of the idea dying, they are interested in the cases where the supporters of an idea die, which allows these radical ideas to come out of the woodwork.
drostie··on Golden powers are nearly integers
If people are interested in this sort of thing, there's some nice linear algebra underlying the idea.

The Fibonacci recurrence is a linear recurrence, meaning that if you have two different sequences such that

    F[n] = F[n - 1] + F[n - 2]
    G[n] = G[n - 1] + G[n - 2]
then the scalar multiples (multiply every element of F by some value k) and termwise sum of F and G will also solve this recurrence. One nice thing to do then is to search for a base p such that one solution for the recurrence is P[n] = p^n. This gives a formula for p, namely p² = p + 1, which also characterizes the golden ratio φ = (1 + √5)/2 and its negative reciprocal -1/φ = (1 − √5)/2.

Well, remember that the recurrence gives you everything if you also specify the first two numbers F[0] and F[1]. We know that these two sequences that we just computed are

    P1 = [1, (1 + √5)/2, ...]
    P2 = [1, (1 − √5)/2, ...]
and given F0, F1 you can use some simple linear algebra to solve for a and b such that:

    a P1[0] + b P2[0] = F0,
    a P1[1] + b P2[1] = F1.
This gives a closed form solution for the Nth term in terms of these Ps. So the sequences obeying the recurrence actually form a 2-dimensional vector space and these polynomials just happen to be a nice basis for that vector space.

Similarly for the case of the powers of phi, we can use this argument in reverse to say "I know I want P1 plus something times P2 which causes all of the terms to be integers," P2 will then approach zero (since it has modulus less than 1).

For this, we can look at the recurrence and say "oh, we just need the first two terms to be integers and then the recurrence makes everything else integers," so choosing a = 1, b = 1 gives us F[0] = 2, F[1] = 1, and these happen to be called the "Lucas numbers".

Similarly we could expect that the powers of any solution to p² = m p + n, integer m, n, p > 1 will be close to the integers as long as the other solution q lies somewhere in the unit interval -1 < q < 1. Completing the square gives (p − m/2)² = n + m²/4, the solutions are evenly spaced about m/2 with a distance from center to solution of √(m²/4 + n).

So for example the recurrence T[n] = 3 T[n-1] - T[n-2] is solved by the numbers (3 ± √5)/2 and so (3 + √5)/2 must also have this property, whereas T[n] = 3 T[n-1] + T[n-2] gives you (3 ± √13)/2 and has this property too.

drostie··on The beginning of Git supporting other hash algorithms
I'm not quite so familiar with the Git internals, how do you deal with the problem of having different non-leaf nodes scattered through the directory tree?

This might be a non-issue based on how Git stores the tree, but I can imagine one simple model where each directory would be a sort of "collection object", a binary encoding of a list of (filename, hash) pairs in filename order, and therefore the directory gets a hash of its own. But that means that when you're communicating with a SHA-1 repository you don't just need to rename this object; its contents also need to be changed pre-rename, and then you need to store every internal node twice. I'm not seeing that in your summary.

Is it just that Git doesn't have any internal nodes in the directory tree per se because the "filename" is a full POSIX path with subdirs? Or what?

drostie··on Ask HN: What are some examples of good code?
One of the first tech talks I remember was Bryan Cantrill at Google, and I vaguely remembered that he mentioned at the beginning of that talk that he had contributed to a book called Beautiful Code, so I double-checked and it seems to be the same book.

Looking back up the talk, it points to his review of the book here: http://dtrace.org/blogs/bmc/2007/07/28/on-the-beauty-in-beau...

> More specifically: read [two specific chapters with very different attitudes on what makes code beautiful]. It seems unlikely to me that one person will come away saying that both are beautiful to them. (And I’m not talking new-agey “beautiful to someone” kind of beautiful — I’m talking the ”I want to write code like that” kind of beautiful.) This is not meant to be a value judgement on either of these chapters — just the observation that their definitions of beauty are (in my opinion, anyway) so wildly divergent as to be nearly mutually exclusive. And that’s why the title is perfect: both of these chapters are beautiful to their authors, and we can come away saying ”Hey, if it’s beautiful to you, then great.”

drostie··on The Dangerous Safety of College
Worth pointing out: the extreme polarization appears to be the straightforward consequence of our election process in the States.

Our government divides the country into a bunch of districts and forces each one of them to run a first-past-the-post election. Every position is first-past-the-post. The problem is that first-past-the-post seems to have a fixed point, where if parties get too popular they fragment over minor internal differences, or if not popular enough they polarize and demonize to try to suppress third-party turnout and collect those votes for themselves. The fixed point is therefore that 50% of the legislators belong to one party, 50% belong to the other, and everyone is filled with credulity for their own side and hatred for the other. And mathematical fixed-point theorems seem to be general enough to converge on this fixed-point.

It's worth pointing out that you can just look at the presidential election history and see a sequence of these convergences culminating in the US Civil War, and we seem to be falling back into it in the past several election cycles -- not just this last one.

What's even more interesting is that we use proportional methods in the States. The proportional system that you might know as the Sainte-Laguë system, we know as the Webster system and use to allocate House seats among the states. If we used something similar to elect parties to the House, we could probably keep the Senate and the Presidency the same and it would still give a sort of destabilizing effect to the two-party hatred-hegemony.

drostie··on VMware joins Linux Foundation: what about the GPL?
Consider it me paying forward the joy I got from Fork Yeah!, which is still somewhere in my top 10 tech-talks of all time. :)
drostie··on VMware joins Linux Foundation: what about the GPL?
Approximate η-expansion:

"I understand your outrage, and I also have mixed feelings about the role of the Linux Foundation in open-source. I am on the Technical Oversight Committee of the Cloud Native Computing Foundation which is a Linux Foundation project. However I do want to say that the Linux Foundation is a not-for-profit 'business league' under US law, rather than a not-for-profit 'charitable organization.' The fact that they have these partner companies which make them up, gives them a lot more money than the open-source charitable organizations can provide. Because they have more money, in my opinion the Linux Foundation has the potential to do a lot more good for open source, and so my personal goal is to work from within the Linux Foundation to help it do that. For example, I was very vocal about us buying and open-sourcing RethinkDB. What you're asking for is for us to test the 'purity' of businesses before we let them join the league that is the Linux Foundation. That is a bad idea. It just means fewer businesses will join the league and less of their money will be available for open-source. The Free Software Foundation and Apache Foundation are good examples of similar things: charitable organizations which now do not have very much money because they are not willing to be 'tainted' by big business. On the flip side, please do not donate to the business league as a private individual; give your resources to these charitable organizations who need it instead. But I would rather have VMWare be one of the league contributors than not have their money. We can always work from within the Linux Foundation to say 'you have to listen to these people who want Linux to remain committed to open-source,' so that they keep funding these projects that keep our open-source movement going. On the other hand I understand why you think that taking VMWare's money is essentially 'selling out,' saying that we care more about the money than about our principles."

drostie··on To Know If the Election Was Hacked, Look at the Ballots
I would only add an asterisk for part 3: whom you voted for ought to be secret from everyone other than you. But you should be able to verify who you voted for.

Here's one way that a crypto-voting protocol might give you this right. It provides for a separate ballot for each race, and each ballot has a perforation down the middle so you can separate it into two halves. The candidates are randomly ordered, with their names on the left-hand side of the perforation and your vote on the right-hand side. When you vote, the machine tears off the left-hand side and returns it to you, while it scans in the right-hand side, and then locks it in a secure box for auditing. Then your vote is recorded in a public database with your name and which-number you voted for, but the correspondence between that number and that name is only privately recorded on the half of the ballot that you retain. So you can verify that the database says 3 and that was the Green Party candidate who you voted for; but nobody else who sees the 3 on the web site knows directly what it means.

The protocol might then do two more things with this two-sided randomized ballot:

(1) Create plausible deniability. This is done by putting other left-hand-sides of other torn ballots into the voting booth, for you to choose from. Even if your boss demands that you vote Libertarian and goes so far as to hire goons who mug you for your piece of paper on your way out, that boss cannot prove that you didn't just take a left-hand-side from the voting booth which "proves" that you voted Libertarian, even though you voted Green. Suddenly the only people who can buy votes are state-level conspiracies who can put cameras in the polling stations etc. It may sound weird that you're making it hard for someone to sell their own votes, but it makes it hard also for anyone else to thereby buy them.

(2) Create confidence in the two-sided ballot. The biggest point of lost confidence in the two-sided ballot is that when you see 3, you think that you know who you voted for, but who's to say that these numbers match up with the votes that are stored in encrypted form on the ballot? You will want to therefore let someone decrypt a ballot or two at their leisure, to build up this confidence. However if you do, the thing is decrypted and no longer suitable for voting, so it must be immediately destroyed. So that's the end result; you have this thing called the Checker which issues a network request to the election authority asking for a ballot to be decrypted; when it is, its right-hand side is simultaneously shredded. It tells you the order that's on the left-hand side; you verify that against the actual left-hand side. Boom, there is no longer any tampering with the mapping between names and encrypted data, at least not on a large scale, by anyone who is not the central election authority themselves. If there is, people will hopefully notice and complain loudly.

drostie··on 4-bit calculator made from cardboard and marbles
No, you don't understand: the conclusion of the Chinese room argument is precisely your statement "more stuff inside is needed for understanding it, than just input and output." That's precisely why consciousness is not a reduction to executing the proper computer program.

Maybe you're not clear on what computers are? I strongly encourage you to look up for example the definition of Turing machines. They do not have any "stuff inside"; they consist of a subset of mathematical functions from bitstrings to bitstrings,

    data NextMove s v = GoLeft s v | GoRight s v | Halt v
    newtype TuringMachine s v = TuringMachine (s -> v -> NextMove s v)
A Turing machine is a mathematical function, a subset of (s, [v]) -> [v] that can be generated by the above functions.

Mathematical functions are defined as pairs of inputs and outputs. There literally is no "stuff inside" them. They're just sets of (input, output) pairs satisfying left-uniqueness: if (i1, o1) and (i1, o2) are both in the function then o1 = o2 and they were the same pair all along.

Again, Searle is happy that our brains are computers and happy that our brains are conscious. But they are not conscious by virtue of running the right computer program with their computational aspects. In fact, getting you to compute something is relatively hard and unnatural, which is why computers are so great as calculators whereas it takes many years to teach humans the same.

drostie··on 4-bit calculator made from cardboard and marbles
That's mostly true and he's even admitted it on several occasions. (His TED talk for example.) He thinks that you can ultimately get some sort of (possibly quantum) electromechanical microscopic description of consciousness by poking the brain with finer and finer instruments, but he doesn't know what we're going to find when we do that; so he's pretty consistent about "we don't have a microscopic definition of consciousness because the science isn't done yet--but we can at least define macroscopically what we mean."

Remember, Searle wants to stop before the scientific domain and he is very optimistic about what science can conclude. I myself am more skeptical that we can get to consciousness without some sort of philosophical innovation. Like, I got my degree in physics, so I'm predisposed to think that it's going to work like "here are the building blocks of qualia, each one needs to be identified with some worldline of some particle moving at speed c, so you get timeless processes with qualia at the bottom of your physics: then you can build consciousness by intertwining these basic qualia into bigger and bigger experiences and fractally including their history within themselves to serve as memory and so forth." I want to start with building blocks and laws of combination and at the end come out with the solution. Searle doesn't want to make any assumptions and seems to think "it's like with QM, we basically invented the finer points of philosophy we needed once we got a chance to poke with finer and finer instruments. We just need to get the big points now, that consciousness is a system feature of the brain like the liquidity of water, and stop trying to reduce it, and we'll get there soon enough."

drostie··on 4-bit calculator made from cardboard and marbles
I have no clue what Searle would say, and my degree is in physics not philosophy. But my best guess is that it's probably a borderline case? The person inside the Chinese room still of course has access to qualia, and those qualia do line up in a one-to-one way with the outside world: this suggests clearly "not a p-zombie." But it does seem that in an important sense they're not the right qualia; to use that language, "there's something that it feels like to talk about a waterfall, and the person in the Chinese room does not feel that when they talk about a waterfall."

If you want to up the geekery factor to eleven, you could probably think of the Chinese room as a sort of homomorphic encryption.

drostie··on 4-bit calculator made from cardboard and marbles
Hi! Searle fan, here.

Searle is not, as you might at first anticipate when you see that he's on the "computers can't be conscious" side of the argument, some sort of woo-woo psychic-spiritualism philosopher; he's actually really grounded and relatively materialistic, though he despises the latter term. (He thinks that you should not respond to the problems of dualism by choosing one or the other side of the duality to commit to, and argue the other into nonexistence -- but rather by saying "oh I guess it was stupid to draw a line here in the first place.") Even the earlier simplification I gave, he "thinks computers can't be conscious", he'd object to directly. He thinks that you're a computer, and he thinks that you're conscious. He just doesn't think that you're conscious by virtue of being the computer that you are. So that's who we're talking about here.

Now, Searle says: we know, or think we know, that the brain is conscious, and it's conscious due to some aspect of the dance of molecules that's going on under the hood. And we happen to have this model of dances, called computation, which is defined in terms of abstract symbol-shuffling: the great strength of computation is that the 0s and 1s can be voltages and electric currents (as in transistors) or magnetic alignments of spins (as in hard drive) or how a gear is turned (as in the difference engine) or whether a resistance is infinite or low (as in your keyboard). They're just abstract symbols.

At its most abstract the Turing test suggests that any human language can be boiled down to these abstract intrinsically-meaningless symbols (which is almost certainly true; that's the premise of the invention of writing), and then that anything which can output symbols in a way that's indistinguishable from a human being, deserves to be given the title of "understanding" that language.

Searle steps in and says, no, that's crazy. And he says it's crazy because he's a philosopher and philosophers are very concerned with what words mean exactly, and the word understanding means exactly that these things you're talking about are not abstract symbols, but a computer necessarily treats them that way; it's in the definition of computation that the symbols are abstract.

Now that you understand who this is and where he's coming from, maybe you can understand the argument better. He's trying to try to give a more formal proof of this above statement. So, he steps in with this Chinese room argument.

The Chinese Room argument says: Your brain is conscious, because of the dance that its neurons do. Now according to this nice computer-reductionalist view, anything which does any dance is understanding a language as long as it produces results which are indistinguishable from a human's responses. So Searle says: let's step inside some Turing machine's dance so our brains are doing two dances at once. The very asset which makes computers awesome allows us to take a Turing-test-passing-algorithm and perform it ourselves: we are the computer, we get this stream of symbols in, we look up rules in some complicated rulebooks, we stream some symbols out, and we now pass the Turing test for understanding Chinese. But is the test correct: do we actually understand Chinese? No. There is no reasonable definition by which we understand Chinese just by performing this complicated computational dance. And this applies even if we move all of the rulebooks and whatever into your skull so that the neurons do those things.

Now here's where we come to the conclusion that strong AI is impossible: the human has everything which is part of the definition of computation. I'll repeat that twice more. The human embodies a whole, complete, computer. There's nothing which a computer can be (by virtue of being a computer) which the human is not. So if we go this far and we say "that brain does not understand Chinese" we have to carry that over; "that silicon does not understand Chinese, either." And no computer will understand Chinese merely by virtue of running this computer program. Clearly our understanding of Chinese is not a property of arbitrary dances of neurons which can solve a Turing test, but there is something special about the right dance of neurons which solves a Turing test. The mere fact that the right dance exists points to some physics which is not reducible to computation.

In other words Searle thinks that you can simulate people as much as you please, but that simulations are not reality, thank you very much. Just like we humans are very good at simulating pain-behavior without actually being in pain, so too can a computer simulate understanding-behavior without actually understanding a thing. If you want to understand how understanding works, computers will doubtless be a useful tool, but they cannot offer a complete and final answer precisely because they do not pin down the material dance firmly enough to get to something causal.

drostie··on Voting Paradoxes [video]
Ah, what I know as "figure-skating voting". I don't know very much about these except that Arrow's theorem can't apply directly to them because they have a different ballot structure; however given that Borda is something of a special case of score voting (in the same way as in crypto; random permutations are special cases of random functions meeting different needs), presumably there are some regimes where you can push it so that it has similar behavior.
drostie··on Voting Paradoxes [video]
I haven't fully investigated it yet but at one point I played with the idea of a "Markov election" based on the fact that Arrow's impossibility theorem assumes determinism. Nondeterminism is not necessarily a bad thing, if people agree that it was fair! [1]

In this case your rankings for the candidates constitute a Markov matrix where you specify that your vote should "flow" from these candidates over to those candidates. For example someone voting for Alice over Bob over Carol might have a Markov matrix which states their vote is:

    1.0  1.0  0.5
    0.0  0.0  0.5
    0.0  0.0  0.0
saying "All of the A votes I make should ideally stay for A, all of my B votes I would like to flow to A, all of my C votes I would like to flow to B or A." Part of the reason that I haven't figured this out yet is that I don't know how one should pick these numbers, exactly, to be robust against Arrow's problems (like adding another candidate not affecting the relative preferences of two existing ones).

Anyway, based on the election, we average everyone's Markov matrices together! Then we start from a state where each candidate has an even share of the vote and everyone collectively determines the flow of the votes in successive cycles. This basically selects out the eigenvector of the Markov matrix with the highest eigenvalue, which represents some probability distribution among the candidates. Now to resolve the pesky problem of cyclic preferences, we use a fair random number generator to choose from the resulting probability distribution. Thus everyone has an even say in who they want to win, someone gets chosen at the end, and if someone really is strongly dominated by someone else then they will generally get eliminated by the flow of votes from the other to them.

[1] While I have you excited about randomness I am also a fan of choosing a leader at random out of the entire population, educating them during a transition period, then handing them the reins. If you happen to disbelieve in the Buddhist metaphysics then an example is the tulku system for obtaining leaders, where they follow somewhat-ambiguous instructions from the previous holder of the seat to seek out a child born at a specific place at a specific time who is believed to be the specific reincarnation of the previous holder of the seat. If you don't believe that metaphysics is right then the search essentially chooses a child at random to be the leader. Seems to usually work pretty well for them either way. There's another example from Muslim history where the leader of the dynasty did not go to one's child because one did not have children; instead it was transferred from eunuch slave-soldier to eunuch slave-solder.

drostie··on Voting Paradoxes [video]
If you mean that the top candidate earns N points and the Nth candidate earns 1 point, I answered that in this comment:

https://news.ycombinator.com/item?id=12875982

drostie··on Voting Paradoxes [video]
There are many ranked voting systems and that one is called a "Borda count." It's really cool but it has its own flaws, as you'd expect from Arrow's impossibility theorem.

Here's the most basic problem: the video that we're looking at made an implicit assumption when it proposed ranked voting: it said that "here are peoples' preferences!" and then it copied those preferences over to the ballots. Given the way that they're doing ranked voting, this equivocation makes sense, of course you're going to rank in your actual preference order. But with the Borda count this assumption is totally wrong and a lot of the confusion from first-past-the-post systems reoccurs: there is no reason to vote your actual preferences. Consider the 2016 US presidential election as done via Borda count, if we assume peoples' present polling is honest. Think about someone who supports Jill Stein; their preferences are typically Jill > Hillary > Gary > Donald. Will Jill lead their ticket? Given the very lackluster showing of Jill, they will probably narrow down the race mentally to "Hillary or Donald" and turn in the ballot "Hillary > Jill > Gary > Donald," to try to avoid a Trump presidency. It's the same spoiler effect as we had before.

It's not just an isolated problem like that suggests. Suppose an election where we have three candidates, Alice, Bob, and Carol. There are nine voters with the preferences,

    4xABC, Alice > Bob > Carol
    1xACB, Alice > Carol > Bob
    2xBAC, Bob > Alice > Carol
    2xCBA, Carol > Bob > Alice.
Alice is the majority's first choice and only 2/9 of the peoples' last choice, so you'd figure she'd be a shoe-in to win the election. Indeed, she'd win a ranked-runoff election and first-past-the-post election, while the pairwise election has the following ballot counts:

    A beats B 5 - 4
    A beats C 7 - 2
    B beats C 6 - 3
The pairwise election therefore also decides Alice > Bob > Carol. But while these other systems all have Alice winning for relatively easy-to-understand reasons, if Alice's supporters turn in honest ballots in the Borda election, then under a Borda election, Alice LOSES!

This is because the remaining four voters see it as down to an Alice-vs-Bob election and want Bob to win, so they turn in ballots saying BCA. The resulting total of points (3 for first place, 2 for second, 1 for third) is:

    (ballots: 4x ABC, 1x ACB, 4x BCA)
    Alice: 4 * 3  +  1 * 3  +  4 * 1 = 19 points
    Bob:   4 * 2  +  1 * 1  +  4 * 3 = 21 points
    Carol: 4 * 1  +  1 * 2  +  4 * 2 = 14 points
Alice however is a savvy politician and convinces her own supporters to rally against Bob to get Carol to look much better than Bob, so that they hand in ACB ballots. This is a measured tactic to turn it into an Alice-vs-Carol race which gets the BAC voters back on her side, since now Bob is no longer a strong contender and they vote Alice. It gets complicated!

    (ballots: 5x ACB, 2x ABC, 2x CBA)
    Alice: 5 * 3  +  2 * 3  +  2 * 1 = 23 points
    Bob:   5 * 1  +  2 * 2  +  2 * 2 = 13 points
    Carol: 5 * 2  +  2 * 1  +  2 * 3 = 18 points
Except Carol has a trick up her sleeve. She sees that Alice is doing this and so runs with her friends Dwayne and Erica, who agree with her on everything but are slightly less preferred by the voters in general. Since they are so similar our original setup is 4xABCDE, 1xACDEB, 2xBACDE, 2xCDEBA. Now if the ballots are cast with the smear campaign against Bob in full force you have:

    (ballots: 5x ACDEB, 2x ABCDE, 2x CDEBA)
    Alice:  5 * 5  +  2 * 5  +  2 * 1 = 37 points
    Bob:    5 * 1  +  2 * 4  +  2 * 2 = 17 points
    Carol:  5 * 4  +  2 * 3  +  2 * 5 = 42 points
    Dwayne: 5 * 3  +  2 * 2  +  2 * 4 = 27 points
    Erica:  5 * 2  +  2 * 1  +  2 * 3 = 18 points
Suddenly Carol wins! Or, if Alice smears Carol almost as much as she's smeared Bob, then Dwayne just takes Carol's place and Dwayne wins; remember, they're largely identical! (You might wonder whether the effect of adding Dwayne and Erica to the voting has meant that Alice doesn't need to smear Bob anymore and whether Carol becomes her enemy #1; the answer is that if we just substitute C -> CDE in the above "Bob wins" tally then Bob gets 34, Carol gets 32, and Alice gets 29, at which point we need to re-evaluate the strategic voting because you KNOW that after that mock-poll comes out, the news will classify Alice as a 3rd-place finisher and her own majority voting block might rebalance around the assumption that it's largely a Bob-vs-Carol race.)
drostie··on Dyn Analysis Summary of Friday October 21 Attack
With only a modest simplification you can view security as ultimately just being a figure measured in dollars: "it costs an adversary $X to beat these countermeasures." Your goal in securing a system is not to push X to infinity, though that might be a reasonable goal (e.g. if you're a security researcher designing new crypto primitives). Instead your goal in engineering your company's security consists in evaluating the value $V of what you're securing, and then raising X until X > V. There are uncertainties in measuring X and V and in how attackers will view these tradeoffs and so forth, but it's nothing you can't account for by building in an engineering tolerance like X > 2V. The basic story remains.

Spotify simultaneously has large resources and offers a non-essential infrastructure service (music to listen to while you're doing something else). The V gained in DoSing them is very small. They got attacked anyway because they shared infrastructure with other companies, which pools the V together to create something much larger. Some attacker saw a case where V >> X and attacked it to great success until Dyn was able to bring up X again. During the interim, Spotify was down despite having V << X.

In short: Spotify probably can't do DNS better than Dyn, but they can do DNS better than the sort of people who have reason to attack them (presumably trolls, maybe some future hacktivist who doesn't like some business decisions they make, unscrupulous competitors). This attack was a wake-up call for them, "oh, if we're pooling with these other folks then we'll become targets of larger hacktivist attacks and state actors, who are not directly targeting us per se." Those attackers could presumably still take out Spotify's home-rolled DNS, but they have no real motivation to target Spotify in particular any more.

drostie··on Parsing JSON is a Minefield
Well that's the difference: it's the discrepancy between handling the data you're handed, and all the data possible. JSON has a lot of edge cases that are very infrequently exercised. Therefore a "robust, production-ready parser" is not usually what's desired by the pragmatist with the deadline. This can inevitably lead to security holes, but it doesn't necessarily. For example, sometimes the inputs are config files curated by your coworkers, or outputs which come from a server under your control and will always be in UTF-8 and will never use floats or integers larger than 2^50.

Taking it the other way, we can also ask "how can you optimize the parser to be as simple as possible, so that everything is well-specified and nobody can eff it up, while still preserving the structure that JSON gives you?" I tried to experiment with that about five years ago and came up with [1], but it shows a nasty cost differential between "human-readable" and "easy to parse." For example, the easiest string type to parse is a netstring, and this means automatic consistent handling of embedded nulls and what-have-you... but when those unreadable characters aren't escaped then you inherently have trouble reading/writing the file with a text editor. Similarly the easiest type of float is just to take the 64 bits and either dump them directly or as hex... but either way you don't have the ability to properly edit them with the text editor. Etc.

But I am finding that the central problem I'm having with JSON and XML is that it's harder to find (and harder to control!) streaming parsers, so one thing I'm thinking about for the future is that formats that I use will probably need to be streaming from the top-level.[2] So if anyone's reading this and designing stuff, probably even more important than making the parser obviously correct is making it obviously streaming.

[1] https://github.com/drostie/bsencode is based on having an easy-to-parse "outer language" of s-expressions, symbols, and netstrings, followed by an interpretation step where e.g. (float 8:01234567) is evaluated to be the corresponding float.

[2] More recently I've had a lot of success in dealing with more-parallel things to have streamability; for example if you remove whitespace from JSON then [date][tab][process-id][tab][json][newline] is a nice sort of TSV that gets really useful for a workflow of "append what you're about to do to the journal, then do it, then append back that it's done" and so forth; when a human technician needs to go back through the logs they have what they need to narrow down (a) when something went wrong, (b) what else was on that process when it was going wrong, (c) what did it do and what was it trying to do? ... you can of course do all this in JSON but then you need a streaming JSON parser, whereas everyone can do the line-buffering of "buffer a line, split the next chunk by newlines, prepend the first line with the buffer, then save the last line to the buffer, then emit the buffered lines and wait on the next chunk."

drostie··on JsonLogic – Build complex rules, serialize them as JSON
I actually don't think that would be all bad if you in addition paired some parsers and serializers for other formats in your standard library.

That could actually be a really fun language: "you can write this in Haskell-syntax, Python-syntax, or C-syntax, we don't care, just make sure that you enclose it in the corresponding

    <parse-as lang="c">
    // ...
    </parse-as>
and then `myprogram.c.x` will get compiled to `myprogram.x` which is a standard XML file, which you can then edit with `x-to-py myprogram.x >myprogram.py.x && vim myprogram.py.x` and have a field day of it."

Sort of like the PL equivalent of Lennon's Imagine.

← PreviousPage 5 of 34Next →