That's not the same question though. I've answered those questions for myself, but I couldn't tell you what consciousness is or isn't, because that requires language, and language cannot suffice to communicate our personal experiences.
I actually wrote a paper comparing how Tractatus and Godel’s incompleteness theorems approach the concept of self-reference. (I believe it was the final for Philosophy of Mathematics with the brilliant Colin McLarty.)
I don’t have it hosted anywhere but iirc the tl;dr is that they’re more or less independently reaching different conclusions as the two models are fundamentally incompatible.
I found this piece revolting. The author feigns a conscience so that you too, conscientious engineer, can stomach working for the modern day equivalent of big tobacco. To be clear I don’t have a problem with anyone who works at Meta, but I do have a problem with taking the moral high ground in doing so. Admit it’s the wrong thing to do but too fun/lucrative to pass up, your life and that of the people around you will benefit.
Yeah, I tried hard to read this post as un-judgmentally as I could and found it very difficult to agree with how "righteous" it came off. It made me feel like I was metaphorically gagging reading the following quotes:
> The people at this company actually believe in the mission of bringing the world closer together.
> I have seen people at various levels of the company fight for the interests and safety of the billions of people who use our services
> people who rely on us to be good stewards of their data
That being said, I can completely respect staying for an intellectually stimulating environment, loving the content of your job, awesome compensation (autonomy, pay, etc.) and a company culture that feels comfortable to you.
As other comments have said it feels comparable to someone working at the digital equivalent of a Big Tobacco company and sharing how what they are doing is beneficial.
I would love to be checked on this which is why I am commenting: am I too in a bubble? Is my reaction to the perceived righteousness of Meta too much of me being overly anti-Meta?
P.S. sincere thanks to the post's author for putting their views out there -- although I disagree with their stance I applaud them for feeling fulfilled and caring about what their company does
I just joined Meta. I don't believe in the vision, or the mission, or the pillars, or whatever. I don't use Facebook, or WhatsApp, or Instagram, or any other Meta properties. I took the job for the money (I don't need or care about the name on my resume), and I plan to move on in a year when I don't need to repay the hiring bonus.
Listening to the self-righteous drivel they ram down our throats during orientation has made me literally and physically gag on multiple occasions. It's painfully self-serving, and it has made me dislike the company more than I did from the outside.
I 100% see social networking as digital tobacco, and I take pleasure in my other projects that I think are more helpful for mankind (or at least not negative). But Meta pays really well, and it's that pay that will allow me to pursue my other hobbies and interests.
Have I sold my soul? Probably. In a year I'll see if it was worth it.
Seriously, just say "I like money and interesting technical problems and don't really care about the bad stuff FB has done/is doing/will do." At least people who work at Exxon and Raytheon and Altria (the artist formerly known as Phillip Morris) don't publish little screeds about how important their work is, and how they're just misunderstood.
I've been around the block a few times, but I've never ever heard anyone tell me they don't deserve whatever money they've got. And I mean everyone from day laborer to executive to thief; they're all the heroes of their own story and they can always justify their actions.
That it costs people their reputation to try to do the right thing at Facebook, sure, I believe that much no problem. Right there with you about the rest.
What makes you think YC companies have any different standards than the rest of the corporate world? If anything startups are deliberately held to a lower standard on the justification of “disruption”. YC is a way to make people money first and foremost. Don’t be shocked.
"More readable code almost always means less efficient code."
Can you give examples? I'm not sold that the "low hanging fruit" of readability improvement (empty lines to break up "paragraphs", breaking up unintelligible one-liners into several lines, etc.) degrades performance. My intuition is that the compiler/interpreter ends up producing almost identical runtime code and therefore similar performance.
Unless you mean more along the lines of expressivity (i.e Python and Ruby can get a lot done with fewer statements compared to C), but to me this effect is in a different category than readability.
Take the following code, which I had occasion to write this morning:
foreach (var item in items) {
if (items.Where(item2 => item.Upc == item2.Upc).Count() != 1) {
item.Duplicate = true;
}
}
This is the most readable and straightforward code I could come up with for the task; it's also not particularly efficient, since it does at least twice as many comparisons as necessary (more if there are actually duplicate items). To make it more efficient would require extra loops and manually indexing them to skip over comparisons that had already made; in this context I decided against this because the performance impact was minimal since there are other far less efficient portions of the code which would best be addressed first if the program turns out to be too slow.
Ever heard of these things called "hashes" a.k.a. "dictionaries"? They are
magical boxes for elements that are indexed by name. You build such a magical
box of seen elements while going through the checking loop and you get the
time complexity of O(n) or O(n log(n)) instead of your current O(n^2), so it
won't explode when you get more elements passing through the code.
Note that this was conceived in just a few minutes of reading your code,
deciphering syntax only remotely familiar, and figuring out what was it
supposed to do, all with cold start (I haven't written much today yet).
Something went wrong with your thought process.
First, a small correction: the if statement in my original code can actually be written as the following, which is what I had in the actual code:
if (items.Count(item2 => item.Upc == item2.Upc) != 1)
With that correction out of the way, here's the code if I used a HashSet (you suggest 'a. k. a. "dictionaries"' but that is slower and I don't need the other half of the mapping which they would provide):
var set = new HashSet<string>();
foreach (var item in items) {
if (set.Contains(item.Upc)) {
item.Duplicate = true;
} else {
set.Add(item.Upc);
}
}
To my eye, this is less readable; in addition to having twice as many lines and an extra variable, it also takes extra work to figure out what it does; whereas my version does exactly what it says: if the UPC appears more than once, it marks the item as a duplicate.
For a final comparison, here's an implementation of the extra loops and manual indexing I suggested:
for (var i = 0; i < items.Count; i++) {
for (var j = i + 1; j < items.Count; j++) {
if (items[i].Upc != items[j].Upc) continue;
items[i].Duplicate = true;
items[j].Duplicate = true;
break;
}
}
This isn't significantly longer than the HashSet-based version, but it is even faster to run (I just benchmarked it) and also doesn't use an extra object which takes memory and needs to be managed and garbage-collected later.
In conclusion, while I appreciate your suggestion for a possible alternative implementation, I do not appreciate your impugning of my abilities with the suggestion that "something went wrong with your thought process", and implying that I may not be aware of basic data structures.
Dude, you're leaving O(n^2) landmines in your code and you're now justifying
them by linecount and readability (actually more like familiarity with using
sets and mappings). You have just proved my intuition about your abilities.
Not to menion that:
> you suggest 'a. k. a. "dictionaries"' but that is slower
In what way you think mappings are different in implementation than sets that
makes them slower? They only need to carry one more pointer, and you're
already writing in a language quite detached from bare metal.
One more thing, since you decided to "correct" yourself instead of letting
the mistake slip: your "working" code is still wrong, unless something very
weird happens in the data (but then calling it more readable this way is
fundamentally wrong).
> Dude, you're leaving O(n^2) landmines in your code
O(n^2) I do not dispute. "Landmines," however, I take offense at: my naive implementation can still check 10,000 items in less than three seconds; should this ever become a bottleneck I assure you that I will adjust the implementation accordingly. Considering that hitting this number would require expanding the entire company at least tenfold, and knowing how other portions of the code work, I feel justified in saying that this is likely to be the least of their problems.
> you're now justifying them by linecount and readability (actually more like familiarity with using sets and mappings).
The entire point of this thread was justifying by readability, so yes, I am. I'm well familiar with sets and mappings, I just don't think that they're the best solution for this particular task.
> In what way you think mappings are different in implementation than sets that makes them slower?
I don't know the internal implementation details, but having just benchmarked it I can tell you that Dictionary<string, Item> is roughly 8% slower than HashSet<string> for two otherwise identical implementations of this method.
> You have just proved my intuition about your abilities.
Likewise. From the preceding conversation, I conclude that you are inclined to prematurely optimize at the cost of maintainability and that you tend to look down on and make fun of anyone who you believe knows less about a topic than you, without taking the time to consider their point of view, or even basic politeness. You may not think that this description accurately depicts you; but then I don't think your opinion of me seems to be correct either.
Considering that I have now spent far more time than this code will ever run for arguing the point, I'm going to step away from this discussion now. I feel that I have made my point; increasingly heated argument seems unlikely to affect the outcome of the debate.
> O(n^2) I do not dispute. "Landmines," however, I take offense at: my naive implementation can still check 10,000 items in less than three seconds
If you're satisfied that the loop you presented runs for a time comparable
with three seconds for merely 10000 elements, it says plenty enough about your
craft.
> [...] I can tell you that Dictionary<string, Item> is roughly 8% slower than HashSet<string> for two otherwise identical implementations of this method.
Ah yes, benchmark comparing non-implementation (abstract class) with an
implementation (concrete class).
> From the preceding conversation, I conclude that you are inclined to prematurely optimize at the cost of maintainability
No. I just tend not to leave behind ridiculous algorithms, especially when an
acceptably efficient solution is of comparable code complexity.
> [...] You may not think that this description accurately depicts you; but then I don't think your opinion of me seems to be correct either.
Parts of it, yes, they do match. I'm an asshole that laughs openly whenever
sees statements that look ridiculous made by somebody who considers themselves
an expert (note that it doesn't matter whether they are or are not actually an
expert). But then, it's not my code that takes three seconds to walk through
ten thousands elements when -- as napkin calculations show -- it should take
under a millisecond.
As a personal anecdote, I was a vegetarian for ~3 years from late in high school to junior year of college. It was definitely a valuable experience that afforded me much perspective into my diet, the diets of others, and food in general.
When I started eating meat again it was under a vague condition to eat "good" meat, that is, either cooked fresh by my mother, or from a higher-end restaurant. This eroded a bit and after a year or so I was back to eating meat relatively unabashedly again.
A few days ago I spent my entire Saturday vomiting bile from food poisoning ($CMG is the top suspect), and now I'm back to my post-vegetarianism habits of being careful about the meat I consume. I'm aware of probability and statistics, so this is somewhat irrational in that sense, but I suppose my point is that I'm grateful for the experience I had of being vegetarian and I think everyone should try it for as long as they can.
EDIT: Oh, perhaps the most shocking part of the experience was how few people knew what the difference between being pescetarian, vegetarian, and vegan is, as well as dealing with all manner of assholes who couldn't fathom why anyone would do such a thing to themselves.
EDIT2: As for health, it bears mentioning that I knew a couple people who are/were vegetarians and had much worse diets than many non-vegetarians. Naively substituting a chicken breast for a block of cheese is _not_ healthy!
EDIT3: I made a point of almost never asking my friends to pick somewhere more vegetarian friendly. Almost anywhere, I could deal with. Notable exceptions were seafood restaurants and anywhere in the South of the USA. There's only so many onion rings one can stand!
> I was a vegetarian for ~3 years from late in high school to junior year of college
Observationally, this seems to be a stage that many young people go through at that time of life. At least on the surface - I've seen far too many "vegetarians" and "vegans" wolfing down greasy pepperoni pizza, blacked out at 3AM in my college days.
> I've seen far too many "vegetarians" and "vegans" wolfing down greasy pepperoni pizza, blacked out at 3AM in my college days.
Why is this still a trope? Being vegetarian or vegan does not require perfection. Think about how absurd this standard is. If you've ever done something unkind you are no longer a kind person. If you've ever written poor code, you are no longer a good programmer.
This kind of thinking is a huge deterrent to people being vegan or vegetarian. If they ever have a lapse in judgement or decision making they just give up completely because of this line of thinking.
There are people in this very thread calling for perfection and calling the vegans and vegetarians who relapse into eating meat as described in the article as "failed".
Even you're falling into the trap of labeling people as X or Y or Z.
Why can't the goal be "eat less meat" ? If you want to quantify it, make the goal "eat ~50% less meat" than you used to.
Alternatively, bring down the meat consumption to the level of Norway or Switzerland or Japan, countries just as prosperous as the US, but with even better health outcomes.
Even something as simple as "order a mostly vegetarian dish every other time you eat out" would go a long way.
I think the idea stems from the holier than thou attitudes you find from some vegans. The majority probably aren't that way but some are so insufferable that pointing out the hypocritical nature of their actions feels warranted.
Because the next morning they were back on their high horses, sneering down their noses at you for eating some delicious bacon, or bitching because you wanted to go somewhere that didn't have cruelty-free quinoa or something equally ridiculous.
I'm not saying that all veg*ans are hypocritical holier-than-thou assholes, but it's not a stereotype that was invented out of whole cloth.
Does anyone have data on the departure of executives at other companies, past or present? Of course the reaction is that this is something like an exodus, but I would love to see data on exec-churn at similarly sized companies for comparison's sake.