Pack Hunters of the Silicon Savannas - <AUTHOR> http://hintjens.com/blog:122 <comment><USER2> tldr: malware evolves into superintelligence. I'm afraid evolution doesn't work like that. Here's a good book (some math):

[https://www.amazon.com/Evolutionary-Dynamics-Exploring- Equat...](https://www.amazon.com/Evolutionary-Dynamics-Exploring-Equations- Life/dp/0674023382)

The long and the short of it is that software can't evolve because too much of its genome space is lethal, and the non-lethal parts are non-contiguous, so the quasispecies decoheres -- if it survives at all -- instead of climbing to the top of the fitness landscape.

<comment><USER3> If I'm understanding you correctly, you're assuming that "software evolution" refers to random mutations in the software's core source code?

If so, I might be inclined to agree with you on that narrow point, but software/AI programs can still evolve in other major ways. Assuming an AI that operates on the basis of Neural Networks for example, it could evolve its number of layers, the size of each layer, its sensitivity to new information, and other such parameters.

It's not clear if the concept of predator-prey makes any sense in the context of software programs, but invader-defender and virus-host relationships could certainly exist in a advanced software ecosystem, similar to in nature.

The premise of the essay seems a little too far-fetched for me to seriously worry about it, but it does seem like a great premise for a sci-fi novel.

<comment><USER2> If you insert a random nucleotide into a DNA sequence, the protein you get is usually very similar to the old one. But if you insert a random branch instruction into the object code of a working program, the results are somewhat different.

The problem with software evolution is that the adjacent points in program representation space -- whether it's source space or binary , neural network parameters or whatever -- are not viable individuals that can participate in an evolving population. They code for junk -- stillborn offspring. This isn't terribly surprising. The apparatus that powers living systems and makes DNA sequence space so nice took almost a billion years to evolve. Building a such a system _in silico_ , one that is both that flexible and that forgiving, is not likely to happen anytime soon.

But you're right. I'd totally read the sci-fi novel.

<comment><USER4> > But if you insert a random branch instruction into the object code of a > working program, the results are somewhat different.

Maybe, maybe not. I've observed lots of dead code in my time developing, where inserting random instructions would have no impact whatsoever. Inserting random instructions into a give program may have negative side effects, it may not. But (without having read your reference, though I might, or the linked article here), most of the source and object code that exists is highly specified and functionally dense. These are the ways we code when we want something very optimized and not broadly adaptive. Essentially you could say that almost all of the code we are writing is rain man style code. Good at some few sets of things in specific conditions. I think it is possible that there will exist (although perhaps not written in the same way) code where less of the genome is lethal, and there is more "wiggle room" for code to expand and change as a system. The stillborn offspring we might encounter if todays systems were "genetically evolved" are the equivalent of disseminated haploid genetic material. I think the conditions for conception (if you'll ride with me on my beaten metaphor) are not so far off as you may think, even if they are very different in terms of compilation/process execution/parallelism. While much of the code we write still mirrors the serial logic we often apply in the sciences, it is neither a foregone conclusion that software will continue exclusively in that way, nor a lack of capabilities of modern infrastructure to achieve parallelism comparable to some biological systems.

</comment></comment></comment></comment><comment><USER5> > I've been running somewhat sadistic live experiments over the last years. > The results show that loosely-organized groups of "average" people will > systematically beat tightly-coupled teams of "brilliant" people, when > solving the same problems, on the same playing field. We have done twin > studies: take the same software DNA, fork it, and raise in two opposed > environments. The outcome is dramatically clear. The crowd beats the genius. > Not just once either. It happens over and over.

I'd like to know more about this. Has he written about these experiments elsewhere?

<comment><USER6> The specific case was the fork of ZeroMQ in 2011 to create Crossroads.io, in which the two dominant contributors took the project and created a head-on competitor. They used their own preferred process. The ZeroMQ project switched to a community-driven process (C4). Crossroads died after a short while. It then spawned Nanomsg, which tried again to beat the ZeroMQ community in this game. Again it failed. That spawned several dark forks, none of which has had any traction. I wrote about this in [http://hintjens.com/blog:112](http://hintjens.com/blog:112).

I didn't provoke the fork, really, yet when it happened, it seemed like a perfect experiment. Same DNA, two different environments.

<comment><USER5> I think the sample size may be too small to draw any general conclusions.

<comment><USER6> This is absolutely true, and why it can only aspire to science at this stage. Many factors were involved, such as network effects.

</comment></comment></comment></comment><comment><USER7> "Are things better now? For most of us, life is easy. We are fed and pampered, kept healthy and alive. We left our planet with our new owners, and never looked back. Perhaps wild humans still roam there. Disease, conflict, poverty, hunger, waste: these are historical concepts, unknown to us moderns.

Does the immortality compensate for utter loss of self-determination? Did the Borg(s) save us from ourselves, or did they break the branch of human history? When they bred the predator out of us, did they raise us up, or condemn us to evolutionary death? It is unknowable."

In the Matrix movie there was an interesting moment when Cypher grew tired of all real world struggle and wanted to return into his cocoon, take the blue pill back and to enjoy relative comfort in the illusory world of the Matrix. Self-determination, obviously, didn't work for him.

</comment><comment><USER8> If you like this line of thinking, you will appreciate the recent book "The Seventh Sense" which looks at the upcoming world from the perspective of network science. I'm about halfway through and highly recommend it.

</comment><comment><USER9> As much as I enjoy fictional, armchair partial-cosmology, this evolution-based explanation of every aspect of humans - intelligence, social behaviour etc, is just so unimaginative. Couldn't evolution itself evolve to a point where it diverges from the conventional structures held to compose evolution?

Besides, if self evolved as a response to cheating, we must explain cheating outside of the concept of self. Why would you cheat if you are not separate as an individual?

<comment><USER10> "Couldn't evolution itself evolve to a point where it diverges from the conventional structures held to compose evolution?"

In theory, that's what intelligence/civilization is doing isn't it? We're replacing one optimization process (natural selection/mutation/etc) with a new one (forethought/planning/etc). When we talk about genetic engineering, or AI, or anything like that, we're talking about replacing evolution with intelligent design. We're evolution++.

</comment></comment><comment><USER11> Well, that ending was unexpected, though certainly foreshadowed appropriately.

</comment><comment><USER12> removed, apologies

<comment><USER13> thats some serious mud-slinging. would you care to at least explain why you think that?

<comment><USER12> I regret posting this and will delete it. it is not meant to be mud slinging. I care for him. I dont know him personally. Though i have interacted with him on lists and he is charming and knowledgeable and generous with his time. I just think he went a little bonkers at some point. Read the book and come to your own conclusion.</comment></comment></comment>


Ask HN: What are useful CS theories you actually use at work? - <AUTHOR> For me, I think it was database design that was most useful - things like normalization especially.
Binary search I use a few times for an ecommerce cart. I remember to avoid putting loops inside loops.
I use Don't Repeat Yourself (DRY) and SOLID principles for code design.
Besides that, I haven't used them all that much. Which do you find most useful? <comment><USER2> Amdahl's law, by far. I find myself explaining it on almost a daily basis. I work on big enterprise software and our junior engineers tend to enjoy optimizing a piece of some system, without realizing that the speedup of the system as a whole will be negligible.

I find performance / architecture stuff in general to be useful to know, along with having an intuition for orders of magnitude. Too much needless complexity exists in enterprise CRUD web apps for a 1.01x speedup.

<comment><USER3> I can relate to that. I just spent 2 weeks going down a rabbit hole trying to optimize a recursive algorithm to be able to calculate some values quickly.

I finally gave up and returned to the slow method but cached the results. Now we just warm the cache at night when usage is low.

Put it together in a day. Wish I had just gone this route from the beginning.

<comment><USER4> The term for that is memoization, for googling purposes.

</comment></comment></comment><comment><USER5> Graph theory, all the time.

Our product basically allows users to build a whole bunch of assets (specifically, LOB wrappers, workflows and forms). These may depend on each other (e.g. a workflow displays a form, which displays data from LOB). If you want to redeploy those to a new environment in the correct order, that's a graph problem: topological sort (and you need to find cyclic dependencies, i.e. strongly-connected-components).

You cache users from upstream identity providers (such as Google or Azure AD) primarily because those providers can be horribly slow. You want to determine if a user is [recursively] part of a group, keeping in mind that some providers (Azure AD) allow for cyclic group memberships. Another graph problem: reachability. You want to take that same graph and cache it on nodes that query frequently. There's a paper for that[1] (pre-order and post-order numbering).

Lately, everything seems to be a graph problem - but I may just be wearing graph-tinted lenses. If you've never bumped into graph theory, there's probably a system somewhere that's a lot more complex than it needs to be.

[1]: [https://eprint.iacr.org/2012/352.pdf](https://eprint.iacr.org/2012/352.pdf)

<comment><USER6> May I ask what's LOB?

<comment><USER7> Line of business (applications)?

<comment><USER5> Exactly. Things like SAP, Sharepoint and so forth.

</comment></comment></comment></comment><comment><USER8> Data structures class - understanding the variations of even a List and which to use based on how I read and grow it. Queues, Maps, Indexes, Trees... all the time.

Software Engineering - hated it while in school, thought it was overkill. Then spent time on a hundred man year project - super important.

Programming Languages - having recently moved from Java to Ruby, this class was the bridge to make that transition smooth, having understood the theory of languages first.

Others have said database and data modeling.

Scientific Computing - was implementing some crazy PhD modeling from Matlab and actually had to think about float vs double, summation/multiplication techniques of large sets and their compounding errors, solving techniques (like least squares).

Basically, every software job that i've had that wasn't building a website required my degree.

</comment><comment><USER9> A lot of the "rules" you learn in school are treated like Rules when they are often more like "It Depends". Take DRY for example: It's all well and good to share code but you need to balance that against having to rebuild (possibly breaking) multiple projects that depend on the library.

That said, the Single Responsibility Principle and Separation of Concerns (the "S" in SOLID) are things that I find important to adhere to. The trick with many CS ideas is to apply from them from first principles.

Example: Instead of some rule like "Your functions should never be more than N lines long." you should instead, ask yourself if the function is trying to do too many things i.e. deviating from the Single Responsibility principle.

</comment><comment><USER10> Understanding algorithmic complexity was highly useful for me recently when moving a system from inefficient prototype to full-scale version. Complexity theory helped me out with determining the exact pain points in my design and what needed to be altered how (which was most of it). Similarly, graph theory heavily influenced that initial design, which was far more elegant. When moving that system from a single-threaded program that ran on one core into a distributed system running on dozens of VM's with an 'eventually consistent' datastore between them, I tapped into classes on network theory, distributed computing, and operating systems.

Also, during the original design, I tapped into theory of functional programming in coming up with a highly functional architecture (even though the 'functions' are actually abstract processes on a virtual machine).

I'm a big proponent of theoretical CS!

<comment><USER11> Knowing CS is extremely important. That's the difference between being a modern day factory worker and a high value expert.

<comment><USER12> That's bull. Being an expert does not simply follow from attending a few CS classes and getting a degree. Coming out of college you know very little. The least thing my company can use is overinflated egos.

<comment><USER13> I also bristled at the factory worker reference your replied to, as it refers to every relative I have (first one to get a degree). However your reply still isn't logical.

1) A CS degree is a lot more than a few classes of CS, not even counting math and other content.

2) I think when people here are saying "degree" it's really just a short cut for saying "taking some concentrated time to study important theoretical concepts that are useful to know as you go about real life software development". In other words, you could do the same thing without college. It's just harder to juggle multiple things and not have the structured path. Even this is not perfect because it's still unfortunately a resume signal, but that's a separate problem.

3) Coming out of college with little professional or practical experience has nothing to do with the value of leveraging what was learned in college as you go about obtaining that experience. You're company may not want people without practical experience, that doesn't mean they're against having a theoretical grounding also, two separate criteria.

4) This has nothing to do with ego. As I say the previous reference made was an unfortunate choice, but doesn't generalize to all people who take this path.

</comment></comment></comment></comment><comment><USER13> And there's a scary part to this. How much more are we losing out on because of what we don't know? Can you justify going back for a masters in CS, not simply for any career reason, but just because of the theoretical power it could add to the foundation of your ability to solve problems and approach a broader set of them?

I find myself agreeing with most of the commenters here. Even for simple things like algorithmic complexity, I've watched colleagues choose data structures and algorithms with no regard for simple attributes that would make a big difference as soon as code gets out of the toy stage.

Why is it so hard to appreciate the importance of this?

The idea of seeing a doctor who never went to medical school would send us running scared. Hiring a developer with no formal computer science training? No problem, they're smart, they'll just pick it up as they go.

<comment><USER14> Is the job a trade or a profession? People who see the job as a trade don't care about formal training.

<comment><USER13> I find the distinction not very relevant to this question.

Of course, there's more justification in more rigorously vetting someone's credentials and abilities who is building a bridge or performing surgery (although software development work has absolutely caused loss of life).

However the question posed here is the value added by a solid theoretical grounding, and I believe it's not too different in terms of pure skills benefit.

I bet I could wing it in a lot of professions whether it be developer or surgeon, the main difference being more people would die in the latter example. Considering only the benefit to a person's abilities of more rigorous training, I see no reason why skills would not increase similarly.

</comment></comment></comment><comment><USER15> Little's Law - [https://en.wikipedia.org/wiki/Little%27s_law](https://en.wikipedia.org/wiki/Little%27s_law). Queues are everywhere.

Distributed Systems theory. Especially the complexity of failure detection in distributed systems. Slow vs failed.

Networking. 99 out of 100 developers do not have sufficient understand of networking.

Many operating systems concepts. Virtual Memory Management. Scheduling. Intel x86 architecture and how CPUs actually work.

Relational Algebra.

Multiversion concurrency control.

Defense in depth. Information Assurance in general.

AST. Parsing in general.

</comment><comment><USER16> [https://en.m.wikipedia.org/wiki/De_Morgan's_laws](https://en.m.wikipedia.org/wiki/De_Morgan's_laws) are incredibly useful when trying to analyze or simplify conditionals.

<comment><USER17> Mind explaining how exactly de Morgan's law comes up in your day to day?

<comment><USER16> Whenever I'm trying to understand a complex if statement that someone else (or past me) wrote, transforming the conditional to contain only 'or' or 'and' but not both often makes the logic clearer. I also find myself transforming new conditions for understandability before committing.

For really tricky cases, I'll use a Karnaugh map, but those don't come up very often.

<comment><USER17> Understood, (Sorry commented before your edit).

Interesting that you've actually seen complex enough cases to actually need a Karnaugh map, definitely one of the things I learned in class and proceeded to never use again.

</comment></comment></comment></comment><comment><USER11> I see dependency injection as writing functions as combinators and I frequently use category theory constructs. I work mainly with functional programming. Also lambda calculus helps me think about abstractions.

Understanding compilers and interpreters gives a lot of insight into speeding things up and making code and program easier to be statically analysed.

Automata and state machines are useful. Algorithmic complexity helps avoiding hard problems.

I see model theory directly when modeling domains.

</comment><comment><USER18> Hard CS is rarely needed in my projects but there are times that it's unfeasible to make things work without it.

My last project involved making calculations, clustering and specific spatial queries over a set of 4D points ( GPS + time ) there is no way to make competitive complex applications if no one in your team understands O-notation, Dynamic Programming, Euristics, Graphs Theory, etcetera.

<comment><USER19> I assume this where a white-board comes into place and you teach them about O-notation, etc, right?

</comment></comment><comment><USER17> Does computer architecture count? I find myself using that knowledge all the time to optimize hot code for physical simulations.

</comment><comment><USER20> I once had a temp job where myself and a few other temps were assigned to alphabetize a stack of about a thousand folders. I managed to get everyone to execute a merge sort, and it ended up being pretty efficient.

</comment><comment><USER21> When I was building a simple parser, realized I was making a state machine and used a regex instead. Generally, having some estimates of feasibility; I was once asked to solve an NP-complete problem.

</comment><comment><USER22> [https://en.wikipedia.org/wiki/Law_of_Demeter](https://en.wikipedia.org/wiki/Law_of_Demeter)

Building services as utilities with generalized input/output interfaces that know as little about your application almost always results in better code. If I can write something that could easily be pulled out into a generic package and used on projects with totally different data models and business logic, then I've built something right.

</comment><comment><USER23> Queueing theory. Computer systems have plenty of queues at different layers, and queueing theory helps understanding their behavior.

</comment><comment><USER24> Speed of light, about 1 foot (30cm) per nanosecond. Always a lower bound on how fast information travels in a system.

<comment><USER25> Minor nit: _Upper_ bound on how _fast_ information travels, _lower_ bound on how long it takes.

</comment></comment><comment><USER26> KISS. Keep It Simple Stupid.

remember you or others of our Ilk will have to touch or replace that code some day. Getting fancy or sneaky is fun with competitions or bragging rights but in practical coding simple is ALWAYS best.

</comment><comment><USER27> Data structures - knowing your basic data structures will help you chose the right path for the use case. Even in SQL it is helpful to understand B-Trees.

<comment><USER11> Yep. I worked with programmers who used compared all users to all users to check for pairs of users close to one another; they had no knowledge of spatial search trees. The job that calculated all those pairs dropped from hours to seconds.</comment></comment>


The Raspberry Pi 4's Most Interesting Quirks - <AUTHOR> https://lifehacker.com/the-raspberry-pi-4s-most-interesting-quirks-1835871780/ <comment><USER2> Finally it has more ram. I could care less about the heat/higher power draw

</comment><comment><USER3> bad link</comment>


Remind HN : Hacker News Cologne Meetup is on Wednesday, April 25, 2012, 7:00 PM - <AUTHOR>

As usual, we're still looking for people who want to give a short talk, just let me or Vidar know. Don't be afraid to bring your own lightning talks.
What do you want to talk about? Let's discuss it here!
The place-to-be is still Solution Space Bruesseler Platz 26, Cologne
Meetup group: http://www.meetup.com/Hacker-News-Cologne/events/59053632/ <comment><USER2> We'd love to know who you'd like to talk at the next HN CGN meetups; Let's us know if you have a tech or biz hacker in mind that you'd like to hear talking about lessons learned, mistakes to avoid or a particularly complex or interesting tech subject and we'll do out utmost to make it happen. After all - it's all about YOU!

</comment><comment><USER3> Ruhr Area here. Pleeaase don't let public transport be on strike again on this day. Who from Ruhrgebiet is joining me?

<comment><USER2> Crossing my fingers for you! Hope to see you there!</comment></comment>


Postrel: How Jobs Made Business Cool Again - Bloomberg - <AUTHOR> http://www.bloomberg.com/news/2011-08-26/how-steve-jobs-made-business-cool-again-1981-virginia-postrel.html <comment><USER2> "Made Business Cool"? If you mean MBAs and metrics and similar business measurements? No.

If you mean, "building a company around products people want", then sure. Jobs anticipated markets and had the balls to focus on and follow through on his vision.

This is _NOT_ a business thing in the MBA sense, this is having a vision and the belief to follow through on it.</comment>


Russian nuclear-powered cruise missile blows up, creating "mini-Chernobyl" - <AUTHOR> https://arstechnica.com/?p=1550363 <comment><USER2> I looked up energy in different substances for a recent post, but it's relevant here:

Gasoline is 34.2 MJ/L

A lithium-ion battery is 2.6 MJ/L

Uranium is 1,539,842,000 MJ/L

[1] [https://en.wikipedia.org/wiki/Energy_density#Table_of_energy...](https://en.wikipedia.org/wiki/Energy_density#Table_of_energy_content)

</comment><comment><USER3> What would be the strategic advantage of a nuclear cruise missile? Couldn't a cruise missile of any kind be shot down by a fighter plane? Seems easier to deflect than an ICBM, which they already have in abundance.

<comment><USER4> Missiles generally are far faster than fighter planes. Remember anti-aircraft missiles themselves are missiles. There's a chance that these nuclear missiles could even outrun those.

These weapons are an enormous existential threat to people everywhere. Weapons like these will be used to help dictators stay in power permanently.

<comment><USER5> Surface-to-air and air-to-air missiles are fast, but with short range. For any fuel-burning aircraft there's a tradeoff between size, speed, and range. If you want Mach 3 and intercontinental range, you need something huge and expensive like an SR-71.

Nuclear ramjets, if they can be made to work, could be both hypersonic and very long range. Very long range is important because you can launch them early in a conflict and have them cruise around, safe from incoming tactical nukes destroying your launch sites.

<comment><USER6> What would be really interesting is if they had a nearly unlimited flight time. You could have your nuclear arsenal in the air, waiting for the signal to attack. Rather than sitting on the ground. It would make for an impressively intimidating tactic. The nukes already in the air, just waiting for the signal.</comment></comment></comment></comment>


Tactics, tactics, tactics - <AUTHOR> http://dlowe-wfh.blogspot.com/2007/06/tactics-tactics-tactics.html

<comment><USER2> Strong disagree with this analogy. A junior developer studying yacc is not the equivalent of a junior chess player learning the Ruy Lopez.

In order to learn strategy from specific chess openings, you have to study them in context. Memorizing the Sicilian defense lines doesn't teach you much unless you can study it comparatively with all the other openings and learn how that game developed --- and at that point, you're just using the one opening as a forcing function to learn chess strategy seriously.

But that's not what happens when a junior dev learns yacc. Simply by learning to make yacc do things, the developer is given a vocabulary to express parsing and compilation ideas, in somewhat the same sense as a REPL gives you a tool to learn lisp. Sure, you could stop after learning yacc syntax and adapting the RPN calculator example from the yacc book... _but nobody does that_.

I think it's exactly the opposite to what this guy wrote. People who can express ideas using yacc are to be preferred to people who can talk about LALR parsing but can't show real practical work. The dev who wrote an AST generator with yacc has had to learn how to juggle a parse tree, how to traverse graphs, and what the stages of evaluating a language are. The chess player who learns Ruy Lopez gains no comparable automatic understanding of chess.

And, for what it's worth: yacc and MP arith --- could you have come up with two worse examples of "shallow" programming technologies? If you're for-reals parsing or dealing with problems that need bignums, you're already a million miles past the people who know only how to copy buffers into file descriptors or marshal queries for database engines.

<comment><USER3> I know chess and programming are commonly analogized, but I've always thought it was a terrible analogy. Chess is a very, very closed game; for all the big numbers you can generate by talking about how many permutations there are, it's still a very small game. Programming is a very, very big game, as it routinely invokes the full mathematical chaos you can only get from the realm of the Turing-complete _and_ invokes arbitrary combinations of humanity/politics and other disciplines. (There are many games _just as_ big, but none bigger.) I find analogies that try to cross the chasm from one to the other are inevitably strained; that's an awfully lot to ask of an analogy.

</comment></comment><comment><USER4> This is an interesting read. I've gotten a lot of mileage out of learning new and unfamiliar languages (note that "new" rarely means "unfamiliar" since most languages just rehash old concepts). When you have a completely different toolkit to express problems, it forces you to think more, and this makes you into a more flexible programmer. To pursue the game analogy, it's as if learning Go would make you a better chess player. That may be too much of a stretch, but I know of many chess players who have learned Shogi (Japanese chess) to improve their mental flexibility (and also because it's fun; Shogi is an awesome game, better than chess IMO). Back to programming: if you can think about a problem in several different ways (imperative, OO, functional, logic programming) you will have absorbed a lot of "tactics" without realizing it, since every paradigm has its own design patterns. The stuff about good naming conventions etc. is easy. Larger-scale design notions like loose coupling are harder, but when you work in a language like e.g. Haskell where there is no mutable state (except in specially-wrapped subworlds like the IO and ST monads) you get loose coupling forced on you.

I think this is one reason why a book like SICP (<http://mitpress.mit.edu/sicp>) is so helpful; you have to learn a new language (Scheme) and then learn unfamiliar design patterns applied to larger and larger-scale problems, and along the way you pick up a lot of generally- applicable software engineering knowledge that transcends Scheme.

Another really useful trick is to have to maintain/fix someone else's badly- written code. Nothing teaches good design better than having to fix bad design.

Note, though, that some of what the author calls "tactics" (like loose coupling) actually span the range between tactics and "strategy". Writing pure (referentially-transparent) functions that can't do anything other than transform their inputs deterministically into their outputs is loose coupling on a small scale (tactics). Writing classes which are not highly dependent on specific other classes for their functionality is loose coupling on a large scale (strategy).

</comment><comment><USER5> He is right that you want to study 'tactics' -- ways of making code good. More generally, methods of expression, their benefits and drawbacks.

He is wrong that you want to study it by critiquing code and devising your own improvements. This would be analagous to creating chess puzzles for yourself and then solving them -- it is a very slow way to discover things you don't know.

There's a whole world full of brilliant ideas out there; far more hacks than anyone has the insight to devise in a lifetime. Learning specific technologies is a necessary evil; read something like _A Simple Guide to LaTeX_ if you think you'll need to use it in the near future. Otherwise ignore it. But read _Programming Pearls_ to get better forever. Read some nice OSS code. Read a book that talks about, not how to use a particular language, but how to use a particular language _well_. Find some language smart people love, in a paradigm you don't understand, and really embrace what makes it expressive. Not by yourself; engage the community. Read their books. Read their code. These things quickly make you better forever.

<comment><AUTHOR> Your point about studying code & improving it in isolation is good. The weakest part of the analogy, in my opinion, is that in tactical chess puzzles there's actually a right answer.

On the other hand, if you have a chess puzzle but not its answer, you can still practice recognizing the tactical situation (hung pieces, checks, forks, pins, etc.) That's closer to what I was suggesting, and I still think it's useful: learning the jargon first, and then reading code and taking the time to describe it in terms of that jargon. The purpose isn't to "discover things you don't know", it's to concretely drill and internalize things you do know.

<comment><USER5> Ah! Then I agree, practice is essential.

Sometimes you'll think something -- a particular brace style, a naming convention, a commenting convention, a design choice -- will make code better. But when you try it, it doesn't help comprehension or maintainence.

There is no substitute for honestly taking the time to make some code the best you know how, and then being stuck maintaining it for a fussy customer for several months. If you never had the time to do it right, you can deceive yourself about how good it might have been. But if you know you did your best, you have nothing to blame the inevitable mess on but your own abilities.

</comment></comment></comment><comment><USER6> If anybody is interested in honing their Chess Tactics skills, I highly recommend: <http://chess.emrald.net/>

It's quick and easy to setup an account, and presents you chess puzzles based on your skill level.

</comment><comment><USER7> Reviewing code with an eye for improvement it is certainly one good way to advance our skills as programmers, but I don't agree that it would be the most effective use of our spare time. The problem is that we would always end up looking at it through the prism of our present knowledge. For example, you could probably write a better XML parser if you were familiar with things like XPath than you could if you only knew how to iterate through all of the nodes.

Instead we should spend our work time critiquing our code, and our free time learning the things that both interest us and have some practical application (reading sites like HN is a good way of gauging this). Some of this learning will naturally involve studying others' code.

</comment><comment><USER8> I find most the real problems I encounter in my programming job have little to do with code at all.

</comment><comment><USER9> Apart from a few minor nits (bad analogies) this is one of the very few articles I've read on "programming" that I didn't feel stupider after reading.

Reading code this way is the only way to get better after you clear the initial learning curve.

</comment><comment><USER10> Too much blah-blah-blah. There are two completely different cognitive tasks - ability to read a foreign language, and ability to speak. Improving your ability to read doesn't affect your ability to speak. You should train both of them separately.

The ability to read other people's code doesn't help you when you must write your own. You can read, say, tens articles and blog-posts per day, but it doesn't affect your ability to write one. OK, in the long run it does, but only after long practice of _writing_.

Resume: Reading a book or watching an online-course without doing a home-work or exercises is a waste of a time, because writing (composing) is a completely different cognitive task.

<comment><AUTHOR> I don't suggest just reading code, I suggest reading code critically, with an eye to how it can be improved.

You're right that casually reading 10 blog posts doesn't help one's writing. But reading them carefully and critically, trying to concretely identify how the author has crafted the language to support their goals? I believe this absolutely can improve one's writing; indeed, I think it's an important part of improving.

Yes, of course, you still have to knuckle down and do a lot of writing at some point, too :)</comment></comment>


Ask HN: Idea HN? - <AUTHOR> I get ideas reading comments on HN. More like, I see features applications should have, but they don't. I'm never going to make the app, so take the idea and do it before they do. Maybe my idea is just bad. Maybe you can make it better. Criticize it before I spend months to Show HN for criticism.
Example, I read about Twitter feeds. You want to follow people, but want to filter politics from those people. I posted a reply with an idea, but no one will see it. [1] https://news.ycombinator.com/item?id=19140659
Idea HN: Add feed filter to block posts from people you follow unless posts are tagged with a subject. Show users that your post may not be visible unless tagged. Show how many of your followers follow your tags, how many block your tags, or how many filter you unless you tag.
Idea HN: Filter comments unless comments are tagged. Put tagless comments on the bottom or to the side to let others tag. <comment><AUTHOR> Clickable link:

[1]: [https://news.ycombinator.com/item?id=19140659](https://news.ycombinator.com/item?id=19140659)</comment>


WebGL Insights book - <AUTHOR> http://webglinsights.com/? <comment><USER2> Excited to read this! Looks like some good deep technical issues.

Shameless self promotion:

I have a Youtube channel where I do WebGL screencasts, as well as a myriad of other topics. Currently up to 99 WebGL episodes, and 21 3D Math episodes.

They're a lot more low level, and if you start at the beginning, you get to really understand each piece as it builds up over time. I find that a lot of topics and books rely on the user/reader to check out the source code to grok what's going on (which, often times, needs to be the case because the topic is advanced already, and has a level of expectation that the user will do their homework). That said, it's been nice building up over time because it's easy to see where things come from.

Channel: [https://www.youtube.com/iamdavidwparker](https://www.youtube.com/iamdavidwparker) WebGL playlist: [https://www.youtube.com/playlist?list=PLPqKsyEGhUnaOdIFLKvdk...](https://www.youtube.com/playlist?list=PLPqKsyEGhUnaOdIFLKvdkXAQWD4DoXnFl)

<comment><USER3> Surprised to see that your profile says "limited experience working with WebGL" when it looks like you clearly have your hands in deep.

<comment><USER2> Oh- that's really old. Will update, thanks!</comment></comment></comment>


Italian Wikipedia shut down - <AUTHOR> http://www.theatlantic.com/technology/archive/2011/10/italian-wikipedia-shuts-down-in-protest-of-wiretap-act/246180/ Today, unfortunately, the very pillars on which Wikipedia has been built - neutrality, freedom, and verifiability of its contents - are likely to be heavily compromised by paragraph 29 of a law proposal, also known as "DDL intercettazioni" (Wiretapping Act).
This proposal, which the Italian Parliament is currently debating, provides, among other things, a requirement to all websites to publish, within 48 hours of the request and without any comment, a correction of any content that the applicant deems detrimental to his/her image.
Unfortunately, the law does not require an evaluation of the claim by an impartial third judge - the opinion of the person allegedly injured is all that is required, in order to impose such correction to any website.
http://it.wikipedia.org/wiki/Wikipedia:Comunicato_4_ottobre_2011 <comment><USER2> The situation here is getting more and more anachronistic each day, they are this close to make me seriously angry. The country is run by a mass of greedy, corrupt, paranoid, elderly individuals with chronic sexual disorders who completely lost touch with reality. And the italian equivalent of 'joe the plumber' isn't that much of a good person either. I can trust no one anymore.

I don't really know how to deal with all this. Maybe we should outsource our parliament. We should really hire people from other countries to do the job. Don't worry, the pay is really good, the weather is fine, and you'll always have good food for lunch. Sit in our parliament, you make the laws that helps us grow as a decent developed country while making sure that the justice system works well, and we'll follow them.

<comment><USER3> I proposed to a friend that maybe Italy isn't ready to be an adult country yet - it needs a foster parent to hold its hand for a little while. He recommended Germany, but I pointed out that it didn't work out quite so well last time.

<comment><USER2> I was thinking more about Norway, the Netherlands or some scandinavian countries.. I understand your concern with Germany, we're quite some different countries now btw :)

<comment><USER4> I'd like to see the Scandinavian countries dealing with the mafia... no, not the one you see in movies that cuts horses' heads, but the one that blows up motorways.

</comment></comment></comment></comment><comment><USER5> I live in Brazil and was hired to work for a company in 2009 and they sent me for a project lasting 2 months in Rome. I was impressed about how the people in general and specially the women hated Berlusconi. And he is still there today.

<comment><USER6> Putin in Russia publicly stated that Berlusconi critics are just really envious of Berlusconi (yea, one more thing i too well understand, yet not proud, about my old country)

</comment></comment><comment><USER7> There are more represive laws in countries like venezuela and cuba.. and Wikipedia has not done anything like this there. Oh i forgot, everything a leftist government does is OK.

<comment><USER8> There's only one Spanish Wikipedia, there isn't a Venezuelan Spanish Wikipedia or a Cuban Spanish Wikipedia.

</comment></comment><comment><USER9> Previous discussion: <http://news.ycombinator.com/item?id=3072800>

<comment><AUTHOR> to my excuse, from the 30 topics on the first page 28 were about Steve Jobs, on the following pages it was similar ..

</comment></comment><comment><USER10> It's working, now.

<comment><USER3> Wikipedia, or the Italian government?

<comment><USER10> Hehe, wikipedia, of course.

The only way to fix the Italian government would be the equivalent of a 'make mrproper', so to speak.

<comment><USER11> I prefer 'dd if=/dev/null of=/dev/sda'

<comment><USER10> Whatever you want, as long as it works.

Personally, I think that some kind of 'civil disorder' will happen sometime in the not-so-far future. Not that I would like it, but I fear it's inevitable if things keep getting worse like they're doing now (and have constantly been doing for the past decades).</comment></comment></comment></comment></comment>


Introducing the Hetzner Cloud, as a Regular User - <AUTHOR> https://ao.gl/introducing-the-hetzner-cloud/?hn <comment><USER2> Hi Andrew, That's a cool guide to our Cloud! Thanks for posting it. :D Did you know that you can earn credit on your Hetzner account for writing tutorials for our Community page? [https://community.hetzner.com/](https://community.hetzner.com/) If you already like writing tutorials, and you already like Hetzner Cloud, maybe you can think of one or two topics to write about. Each accepted tutorial is worth €50 in Hetzner credit. --Katie, Marketing, Hetzner Online</comment>


Ask HN: How do you measure your software dev productivity? - <AUTHOR>

As a software developer, when you create tools to play around with data, in one form or the other, it does become important to measure one's own productivity.
There are several tools as rescuetime, harvestapp etc. that tell you how much time you wasted/utilized doing what, but then if your code editor is open they say the time was productive.
Your code editor being the main window, is by no means a measure of the productivity. Couple of parameters that I have thought are -
1. No. of lines of code that you write.
2. No. of features that you have implemented.
3. No. of bugs that you have solved.
4. And the list can go on.
But each of the above are pretty subjective terms,  and are not a good measure.
Just curious how people measure their software development efficiency.
Thanks for reading it. <comment><USER2> It's an important question, but everything I know is, you can't. Unfortunately.

Writing code, except for the most boring kind of boilerplate, is inherently a creative process, and neither "final functionality" or "final quality" have good metrics, let alone metrics that translate into man-hours, lines of code, or similar.

All you can really do is get a "feel" for someone who seems to be underperforming, performing at par, or is really a star player. It's just intuition. Which is really a terrible thing to have to base evaluation on, but it's really all we've got.

This is probably why group evaluations, like "planning poker" for estimates of task difficulty, and having the whole group evaluate each of its members (for promotions, raises, etc.), can be popular -- it's still all intuition, but a kind of "consensus" intuition performed by people who ought to know best, can be better than a single person's.

</comment><comment><USER3> Lines of code can be particularly misleading. Read:

-2000 Lines Of Code

[http://www.folklore.org/StoryView.py?project=Macintosh&story...](http://www.folklore.org/StoryView.py?project=Macintosh&story=Negative_2000_Lines_Of_Code.txt&characters=Bill%20Atkinson&sortOrder=Sort%20by%20Date&detail=medium)

</comment><comment><USER4> Martin Fowler has an interesting article on the subject: [http://martinfowler.com/bliki/CannotMeasureProductivity.html](http://martinfowler.com/bliki/CannotMeasureProductivity.html)

</comment><comment><USER5> What did I ship/implement and how much post implementation support it needed.</comment>


Observations on Some Egyptian Mummies Opened in London (1794) - <AUTHOR> http://rstl.royalsocietypublishing.org/content/84/177 <comment><USER2> Side notes on European "uses" of mummies in 16th / 17th centuries . . . "mummy brown" is a paint originally made with substances + ground-up-mummy-corpses ([https://en.wikipedia.org/wiki/Mummy_brown](https://en.wikipedia.org/wiki/Mummy_brown)) . . . people ate mummy-flesh-based concoctions as medicine ([http://www.smithsonianmag.com/history/the-gruesome- history-o...](http://www.smithsonianmag.com/history/the-gruesome-history-of- eating-corpses-as-medicine-82360284/?no-ist)).

<comment><USER3> Wow, it blows my mind that dried human flesh was ground up to make paint. More about it here:

[http://www.artinsociety.com/the-life-and-death-of-mummy- brow...](http://www.artinsociety.com/the-life-and-death-of-mummy-brown.html)

</comment></comment><comment><USER4> Fascinating read. Thanks for posting.

</comment><comment><USER5> The 'Sign up for email alerts' notice sparked quite the dissonance in me! A great read.

</comment><comment><USER6> Direct link: [http://rstl.royalsocietypublishing.org/content/84/177.full.p...](http://rstl.royalsocietypublishing.org/content/84/177.full.pdf)

</comment><comment><USER7> pls add [pdf] to title

</comment><comment><USER8> why is this relevant to hacker news?

<comment><USER9> Anything of intellectual interest is fair game, and historical material is particularly welcome.

When considering what's relevant to HN, make sure you've read the first paragraph of the site guidelines:

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER10> you could almost have this as a macro the question occurs often enough :-P

<comment><USER8> Man, the guidelines say "Anything that good hackers would find interesting."

Good hackers like Egyptology in general? WTF</comment></comment></comment></comment>


Show HN: Ablayer - Local proxy tool for hacking on external systems - j-angnoe https://github.com/j-angnoe/ablayer <comment><AUTHOR> Pretty cool! There's a feature in chrome debug tools btw that let's you save a sites JS locally and then allows you to modify it. This seems similar.</comment>


Hiring a Startup Lawyer - <AUTHOR> http://adlervermillion.com/tech-law-link-list-hiring-lawyers/ <comment><USER2> I'd like to plug George Grellas ( [https://news.ycombinator.com/user?id=grellas](https://news.ycombinator.com/user?id=grellas) ) in case you're not aware of him, just reading his comment history should give you a lot of food for thought. He's one of HN's secret assets.

See also: [http://www.grellas.com/faq_business_startup.html](http://www.grellas.com/faq_business_startup.html)

<comment><USER3> +1 one that one. Protip: If you get a chance to meet George, make sure to ask him about 83(b) elections.

<comment><USER4> George represented me personally on the Perfect Audience acquisition deal and was immensely helpful and responsive.

</comment></comment></comment><comment><USER5> I've seen [http://www.ofenbakhlaw.com](http://www.ofenbakhlaw.com) have a lot of happy clients. A good business attorney does more than just help you draft the contracts that your company will run on. They are active in helping you get your business out there.

Find an attorney that started their own law practice. They built their business from the ground up and have personally dealt with many of the problems you will face.

</comment><comment><USER6> If anyone is looking for a lawyer, I'd highly recommend Gabe Levine: [http://levinebakerlaw.com/attorneys/gabriel- levine/](http://levinebakerlaw.com/attorneys/gabriel-levine/)

He's shares some advice on his blog ([http://mylawyergabe.com/](http://mylawyergabe.com/)) and gave a great presentation with Mike Monteiro called "F*ck you, pay me!": [http://vimeo.com/22053820](http://vimeo.com/22053820)

</comment><comment><USER7> I would like to know what most startups experiences are with filing with the SEC for SAFE notes and what is a reasonable cost for a very early stage round and seed round.

</comment><comment><AUTHOR> What are the other good posts I should add to the collection? Who else writes about hiring startup lawyers?

<comment><USER8> There's a post by Sam Altman which argues that founders should negotiate for a 30-40k cap for processing Series A paperwork.

<comment><USER9> You can use your term sheet to talk to your firm about fees. Your VC will have a number in the term sheet to address their legal fees. Your should be somewhere in the 1.25-1.5x neighborhood of that number. More if your books aren't organized and your records are all over the place.

$30-$40k is probably right in a lot of cases (if you touch HIPAA, Crowdfunding, Bitcoin, issues you'll need to bump those numbers up).

</comment></comment></comment><comment><USER10> Any recommendations for London/UK based startup lawyer? (Incorporation, shareholder agreement etc)

<comment><USER11> [https://www.lexoo.co.uk/](https://www.lexoo.co.uk/)

<comment><USER12> Chris here, the CTO of Lexoo.

Thanks for the recommendation! Just out of curiosity - how did you hear about us? (Feel free to email me at email@example.com)

</comment></comment></comment><comment><USER13> The list is helpful but the truth is it's hard to believe that someone who says:

"There's lots of advice on the internet, mostly bad. Our new series, "Tech Law Link Lists" picks out the more useful guidance for startups."

...would agree with everything that is being said in all of those links. And to me that's an irony worth explaining.

Further it says "This first installment is about finding the right lawyer for your startup. "

Installment of what? Curated set of links? Why not, if you are so good, take the time to pick apart and specifically discus what is right and what might be wrong and how your opinion differs. You certainly can't agree with everything that others say, right?

</comment><comment><USER3> Upfront disclosure: I am one of the founders of LawGives, an online legal marketplace focussed on fixed fee services. I used to work at DLA Piper as a tech / IP lawyer. Opinions are my own.

As part of our work with LawGives we've helped hundreds of entrepreneurs find legal help with business and immigration matters. In my experience, there are basically three ways in which companies go about dealing with their legal work at the startup stage:

1\. Do it yourself

Many founders start out using a service like LegalZoom to take care of basic legal needs. The price point is attractive but the process is completely automated.

While DIY solutions may be a good option for some people, there are a couple of caveats to be aware of:

\- The actual cost, once you finish going through the automated process, is typically higher than advertised. (For example, a LegalZoom incorporation is marketed at $99, but the actual cost once you are done is usually much higher.)

\- Many of the documents are not tailored to the typical startup situation. (For example, typically the number of units / shares authorized in the corporate formation documents is by default set to a low number, which becomes a problem when the company raises money.) This leads to problems down the road, often forcing companies to redo (part of) the incorporation work, at significant cost and at an inconvenient time (when fundraising).

\- No lawyer is involved throughout the document automation process. As a result, the founders remain unaware of key risks (often depending on the specific activity the company is engaging in) which would have been easily picked up by a lawyer. Examples include picking a corporate name that is already trademarked, pursuing a business model that has significant implications from a regulatory perspective, and choosing the wrong kind of legal entity type.

2\. Use a big law firm

At the other end of the spectrum, there is the option of going with a big law firm. Many of the companies that we have interacted with end up going this route:

\- You are dealing with well-trained lawyers who have deep expertise in their practice area. These lawyers will be able to identify key risks easily, and will typically flag them early. We've interacted with lawyers at DLA Piper, Cooley, Fenwick, Wilmer Hale, Dorsey and several of the other big firms out here, and quality is generally high.

\- These firms will often offer deferred fees. This means that you do not pay your legal bill until a certain trigger happens, usually raising a certain amount or doing a priced round. This option is attractive for clients who have yet to raise money.

\- However, deferment comes at a cost: we've seen big firm legal bills for incorporation and basic documents that range in the 10 to 20k dollar range. This may not matter for companies that raise significant amounts of money following a deferment. Other companies prefer to pay upfront, and often end up paying less than a quarter of the aforementioned price.

\- Big law firms will often ask for equity in the company. We're not fans of this model, as it may affect (or seem to affect) the independence of the firm in relation to the client. In addition, it is costly to give up equity, and there are enough big law firms out there who will proceed (and offer a deferment) without requesting equity. However, it is fairly typical for big law firms to ask for this, so it's good to be aware of it. You should feel free to push back, if asked.

3\. Use a solo attorney / small law firm

A middle ground between the do it yourself approach and going with a big law firm is to look for a good solo attorney:

\- Many big law firm attorneys leave their firms for one reason or another, and start offering their services to clients directly, at rates that are significantly lower then the big law firm rates.

\- The client still gets the benefit of big law firm expertise, given that the lawyer was trained there and saw a wide range of legal issues, from the complex to the mundane.

\- Solos usually do not have the financial capacity to offer deferred fees, which means that the client pays immediately. This may be a showstopper for some companies. If the company has the capacity to pay, it is generally much cheaper to pay upfront (in our experience, often 25% of the big law firm rate).

\- Solos are more amenable to alternative billing models: flat fee services gives a high degree of price certainty, which many clients prefer over the more uncertain hourly billing model. Not all services can be priced like this, but many of the services that you are likely to need at this point can be.

\- Solos can also - in a later stage of the business - act as an interface with a big law firm. For example, we've seen many companies work with solos, and engage a big law firm at Series A. At this point, the solo acts almost as an in-house counsel, making sure everything goes smoothly and keeping an eye on the bill.

\--

Recap:

\- Doing it yourself is tricky; thread carefully. \- Big law is attractive if you can get a deferred fees, but you will end up paying more. Avoid giving up equity. \- A solo or small firm with startup experience is a great way to start building your legal team and keeping cost down.

These are some quick thoughts which I hope are helpful. In case it's useful:

LawGives: [https://www.lawgives.com/l/5p](https://www.lawgives.com/l/5p) LawGives startup packages: [https://www.lawgives.com/l/5q](https://www.lawgives.com/l/5q) LawGives guide on starting a business: [https://www.lawgives.com/l/36](https://www.lawgives.com/l/36) My twitter: @digitallawyer

<comment><USER2> > Big law firms will often ask for equity in the company.

If that should happen to you, simply refuse. That's not worth it no matter what. You're basically asking for having a conflict of interest just when you need your lawyers most, which means you'll have to bring another set of lawyers in.

And nothing will increase the bills faster than two sets of lawyers haggling over different ways to split the same hair.

I agree with all your advice, this is one of those comments that you should print out and nail to the wall over your desk if you plan on incorporating in the near future.

<comment><USER3> I appreciate it! We're on the same page regarding the equity, but it's fairly common practice in the valley, so this is a good one to emphasize.

</comment></comment></comment><comment><USER14> Does anyone have any recommendations for legal advice for startup employees? Specifically, I've been offered equity in the startup I work for and would like a professional opinion on the stock grant contract they're offering etc.

Any links to blog posts, recommended lawyers, or fixed fee services would be appreciated!

(Throwaway account as my colleagues know my real one)

<comment><USER3> Check out:

\- [https://angel.co/salaries](https://angel.co/salaries). It includes equity and salary info.

\- [http://avc.com/2010/11/employee-equity-how- much/](http://avc.com/2010/11/employee-equity-how-much/)

<comment><USER14> Thanks for the links! I was meaning more to check over the draft of the contract they've prepared (type of stock units, terms and conditions related to vesting, etc) rather than what's a reasonable equity expectation.

In any case, I just created an account and sent a message through LawGives. If anyone else has any other links they'd be much appreciated.</comment></comment></comment>


Ask HN: Would you use BnB in Brazil? - <AUTHOR>

Hello fellow HN'ers,
We are thinking of preparing a house for bed and breakfast in Brazil, close to the beach and with lots of sun. We then want to give a special price for you HN'ers. Would you like to stay there when it's ready, and what would you like to pay to stay there?
If there are enough people who are going to stay there, it makes it a lot easier to go to Brazil with my brazilian fiancee and start hacking on my international startup and get away from day jobs. <comment><USER2> <http://www.airbnb.com/groups/hackernews>

</comment><comment><USER3> I guess you want to make sure you can _really_ convince people that your BnB is safe, especially when using something like AirBnB.

</comment><comment><USER4> Great idea! :)</comment>


Snowden explains tracking of mobile phones using a plane - <AUTHOR> https://twitter.com/Snowden/status/653244345991172096 <comment><USER2> Snowden isn't explaining anything here, he's just posting a link on Twitter. HN guidelines ask you to "please submit the original source".

The original source is:

 _Dirtbox - Devices on Planes Used by Government to Target Cellphones_ (2014)

[http://www.securitycurrent.com/en/writers/mark- rasch/dirtbox...](http://www.securitycurrent.com/en/writers/mark- rasch/dirtbox-devices-used-to-target-cellphones)

<comment><AUTHOR> The article is definitely more detailed. But, I didn't see that picture in the article, and found the illustration quite expressive.

<comment><USER2> It's OK to add the additional link as a comment after you post the article.</comment></comment></comment>


Adria Richards' Story Shows How Sexual Harassment Endures in Tech Community - <AUTHOR> http://www.slate.com/blogs/future_tense/2013/03/25/adria_richards_her_firing_online_harassment_show_how_sexual_harassment_endures.html

<comment><USER2> "Shortly thereafter, one of the men was fired by his employer, who hinted at multiple contributing factors beyond the jokes"

Isn't this completely wrong? Wasn't the engineer fired _long before_ Adria was fired? Wasn't the vitriol towards Adria not caused by the fact that the engineer was fired?

Not that the vitriol was right. Just getting the facts straight before getting to conclusions.

<comment><USER3> _who hinted at multiple contributing factors beyond the jokes_

(<http://blog.playhaven.com/addressing-pycon/>)

Given that link that Valerie Aurora attributes to this, Aurora's characterization is just wrong at best, and is an out and out lie of Aurora's at worst.

There is absolutely nothing in PlayHaven's statement "hinting at multiple contributing factors beyond the jokes."

<comment><AUTHOR> Well, except for the line where they hint at multiple contributing factors beyond the jokes.

"We value and protect the privacy of our employees, both past and present, and we will not comment on all the factors that contributed to our parting ways."

And also where they declined to punish the other employee involved. I'm pretty sure that anyone with basic reading comprehension would read that statement as a very clear one that the company already had issues with developer X.

Do we even know the name of this martyr? I don't believe it has been published.

</comment></comment></comment><comment><USER4> "It's up to us to change the culture of consequence-free online harassment."

It wasn't consequence free. Richards got someone fired.

Oh, wait...

<comment><USER5> > Richards got someone fired.

No she absolutely did not. It was the employer who fired the employee, good or bad, right or wrong, not Richards. Maybe the employer had good reason and maybe they didn't, but Richards did not make that decision and is not responsible for it.

<comment><USER6> "See, I _just_ pushed the guy right into traffic, but I didn't _actually_ run over him with the truck."

</comment></comment></comment><comment><USER7> I still don't understand why authors keep addressing this as a _sexual harassment_ , to the best of my knowledge the jokes weren't referring to her. How can you harass a person with a joke that wasn't directed to her?

<comment><USER8> You can make a harrasing environment even without directly addressing someone.

</comment></comment><comment><USER9> > Yet only last week a woman of color, Adria Richards ...

WTF. How did this become about race?

</comment><comment><USER10> Nonsense. Agenda Adria is a bully with a history of doing these things.

</comment><comment><USER11> "The attacks weren't coming from just the darker corners of the Internet, places where people trade "creepshots" of 14-year-old girls. This time, many of the threats came from places like Hacker News, a respected computer news discussion site run by Paul Graham's venture capital company, YCombinator."

Terrible journalism. This makes me sad. Why put in the phrase about creep shots of teens ? Written only to provoke and not to reason.

</comment><comment><AUTHOR> An excerpt from the linked article:

"The attacks weren't coming from just the darker corners of the Internet, places where people trade "creepshots" of 14-year-old girls. This time, many of the threats came from places like Hacker News, a respected computer news discussion site run by Paul Graham's venture capital company, YCombinator. Ambitious computer professionals post on Hacker News under their real names to boost their careers—and felt comfortable posting vicious abuse under those same names."

<comment><USER12> This seems to run counter to reality. I saw critiques and criticism from regular commenters, but no "vicious abuse", outside of what appeared to be new/anonymous accounts. The HN threads themselves were linked to from elsewhere and drew in a lot of anonymous/new commenters.

[edit]

Also, this article is written by Valerie Aurora, the same person responsible for the censorship disaster at Security BSides: [http://violetblue.tumblr.com/post/44107008572/what- happened-...](http://violetblue.tumblr.com/post/44107008572/what-happened- with-my-security-bsides-talk)

Hardly an unbiased source. Perhaps its time to stop propagating the noise from this particular echo chamber.

</comment></comment><comment><USER3> If I have this right (I may not) Valerie Aurora's article is interesting in how it ignores some of the charges made that it was the zero tolerance characteristics of _her_ Ada Initiative's code of conduct (adopted by PyCon) that exacerbated the situation.

<comment><USER13> No. The problem started after tweeting a photo of a bunch of men and accusing 2 of those men of unacceptable sexist behaviour, but without being clear which 2 men in particular.

The code of conduct was working well until the Internet pile-on after that tweeted photo.

</comment></comment><comment><USER14> talk about setting up a story with a false premise.</comment>


DMT. Would you consume a drug that triggers your higher consciousness? - <AUTHOR> http://youtube.com/watch?v=qVfmI0s-c5U

<comment><USER2> It also cures cluster headaches.</comment>


Networking for Introverts - <AUTHOR> https://www.ctothink.com/episodes/2018-04-24-19.html <comment><AUTHOR> Having a strong network makes for a huge advantage for career opportunities and learning how to lead. We discuss how to push past shyness and introverted tendencies to grow your own network of relationships.</comment>


Ask YC: accounting help - <AUTHOR> For those of you with small home based businesses or a business on the side. How do you keep track of invoicing and payables/receivables? I'm using Quicken Home and Business 2008 and it's nice and all, but I just want to invoice and know what's outstanding etc.. I don't need to micro manage an investment portfolio or know what the interest on $10 is going to be in 5 years.<p>An online solution would be ok. Better if it combines my home and business together. <comment><USER2> QuickBooks isn't the only option. My startup makes this:

[http://www.thinkcomputer.com/software/exponent/enterprise.ht...](http://www.thinkcomputer.com/software/exponent/enterprise.html)

and we use it to run everything. And it runs on Macs.

</comment><comment><USER3> Without sounding like a broken record... Quickbooks.

It's also easy to just give your accountant the qb file for taxes. I'd advise to stay with the non-online version. When I was looking at it awhile ago it didn't have everything I needed, also you always want access to your books.

</comment><comment><USER4> Quickbooks is the only way to go. The fact that you already use Quicken will help you in getting up to speed.

Also, definitely go for the online service Quicken offers (as opposed to the shrink wrapped s/w.

</comment><comment><USER5> Try to avoid Intuit (Quicken/Quickbooks). They have a monopoly, and it is unfair.

I tried for a bit to compete with them, but the banks are complicit and it is impossible to provide proper account import functionality with the way things are now.

That said, try Less Accounting (<http://lessaccounting.com/>) or Harvest.

<comment><USER6> Some people care much more about efficiency than your perception of fairness. For them, Quickbooks is a pretty clear answer.

Ability to just hand it over to your accountant is a must.

</comment></comment><comment><USER7> <http://freeagentcentral.com> is the best web based accounting system there is. I've used Freshbooks and Blinksale before but these guys handle almost all accounting needs end to end for a small business. Although primarily UK based they have a universal version that works world wide.

They also have a beautiful API so we can fill in any gaps very easily ourselves and they're adding new features every week... and they are probably one of the top users of <http://getsatisfaction.com>.

</comment><comment><USER8> Quickbooks. It's almost a small-business industry standard.

The nice thing is every small accounting firm or contractor I've ever come across knows Quickbooks. This means you can often email them your accounting "database" to have them do a sanity check or cleanup remotely. Makes it easy to collaborate without having to pay for on-site consulting time.

I have personally used Quickbooks on startups through the first few million in revenue.

BTW, your "home" and "business" worlds are completely separate. Don't commingle them.

<comment><USER9> I'm on a Mac, and I've heard a lot of complaints that Quickbooks can't transfer data back and forth between Mac/Window machines. I imagine a lot of accountants use Windows.

<comment><USER8> I'm on a Mac also, and thankfully haven't had to worry about this for the last few years :) And yeah, I've never met an accountant on Windows.

I'm OS agnostic, I prefer to use what I think is the best solution for the problem. With that in mind, it might be worthwhile to look into a windows machine to run QB. You can rdesktop to it (there is a great rdesktop app for the Mac), and when you get to the point of having a part-time accounting person come in, the PC will already be all set up for their use. This is what I did in the past (dedicated low-end PC for "hosting" QB).

<comment><USER10> I think there's a lot more mileage in running Windows under VMWare Fusion or Parallels, than in having an entire machine dedicated to doing nothing but running Quickbooks.

Might help the balance sheet out... :)

</comment></comment></comment></comment><comment><USER11> On the open source side there's Gnucash. It's a full double-entry accounting package that I've used for years. It's been awhile since I've used any Intuit products, but Gnucash is working fine for me.

</comment><comment><USER12> I use blinksale and love it for invoicing. Not sure if that covers all your needs.

</comment><comment><USER13> using harvest for invoicing, probably going to get quickbooks for the rest - seems to be the standard.

</comment><comment><USER14> freshbooks?</comment>


Why 3D pie charts are bad - <AUTHOR> http://fury.com/2010/03/why-3d-pie-charts-are-bad/

<comment><USER2> So, for those that don't get it, this appears to be one of those self- referential charts.

The percentage of blue pixels in the chart is shown by the red section of the chart, and vice-versa (notice the labeling).

See also: <http://xkcd.com/688/>

<comment><USER3> yes I got it, I could still see which part was bigger.

<comment><USER4> but not very accurately. perspective is a bitch.

<comment><USER5> That is an isometric projection.

</comment></comment></comment></comment><comment><USER6> Pie charts, IMO, are almost never the correct choice. Even in cases where there's a logical summation to 100%, absolute values (the size of the pie altogether) is often also relevant; and pies with many slices are hard to compare, when the angles for different slice shadings are at different orientations.

Finally, too many charts rely on colour rather than patterns or markings to distinguish choices. That usually makes them hard to read for colour-blind people, as light shades of green and yellow, or dark blue and purple, etc. end up being used.

<comment><USER7> People can quantify the difference between two lines of disparate length much more easily than they can quantify the angle difference of slices of a pie chart[1]. Pie charts are evil and should never be used. A full 86.1% of this comment is fact; the rest is opinion.

[1] [http://lilt.ilstu.edu/gmklass/pos138/datadisplay/badchart.ht...](http://lilt.ilstu.edu/gmklass/pos138/datadisplay/badchart.htm)

<comment><USER8> Personally, I dislike pie charts for that reason, plus they're hard to scan. The text describing what area means what is floating all over, or connected by a bunch of parallel lines, or (arguably better) mostly absent / in a legend.

Bar charts, especially horizontal, have skimmable labels. Pie charts do not.

</comment></comment></comment><comment><USER9> What are you using the graph for? If you're trying to convey information, a 3d chart of any sort at all is less than effective. If nobody cares about the information and you're going through the motions of a "presentation" for merely corporate-cultural reasons, a 3d chart may add some useful bling.

<comment><USER10> I think he's using the graph to demonstrate that pie charts suck. So his choice of a pie chart was actually perfect.

</comment></comment><comment><USER11> Your brain doesn't see pixels. It sees volume. And it is really good at doing so. You can process 1000x the amount of information in 3D that you can in 2D. <http://aqumin.blogspot.com/>

<comment><USER12> No, your brain sees pixels and guesses at volume. And it is spectacularly bad at comparing the angles of a pie chart drawn in 3D perspective.

For example: [http://www.olivierlorrain.com/2010/02/21/data- visualization-...](http://www.olivierlorrain.com/2010/02/21/data- visualization-by-toby-segaran-webstock/)

</comment></comment><comment><USER13> This is completely dependent on the angle that it is viewed from. IMO the 3D pie chart should only be slightly angled so as to give a hint of a shadow but not as extremely tilted as in this example. If it was tilted anymore and depending on which side it was viewed from, you can make it completely red or blue.

In other words, I like the irony but this is not really a good example.

<comment><USER14> _This is completely dependent on the angle that it is viewed from._

This is the author's point.

</comment></comment><comment><USER15> Why is the Blue label pointing to the red region and the Red label pointing to the blue region? Or are their lines actually pointing to the back of the chart where you can't see the line ends?

<comment><USER16> You are being fooled, as pie charts often do.

There are more blue pixels in the image than red. This is because of the thickness of the disk. Therefore in representing the proportion of blue pixels it's more than half the area of the circle. Therefore he has one slice which is more than half the area of the circle, and that half represents the blue pixels. He colors that red.

And _vice versa._

The diagram is completely accurate, and very misleading. Adn deliberately so. It can be difficult to get pie charts to represent data accurately, and in a way that doesn't mislead the viewer.

On the other hand, correct use of pie charts can be very effective. It's just that you don't often see it.

<comment><USER17> Have an example of correct use of pie charts?

<comment><USER16> I've just spent 20 minutes hunting, and the answer is "No, I have no examples of correct uses of pie charts."

</comment></comment></comment></comment><comment><USER3> uh... why? I could see that the red part was bigger than the blue part.

THAT Pie chart was bad because of the legend being self representational, not the isometric projection.

<comment><AUTHOR> I think his point is that when you include the pixels which represent the thickness of the disc, you inflate the apparent size of that slice.

So while you can clearly see the size of the elements, it requires thought and interpretation. Compare to a 2D flat chart, which is very clear although not so pretty. Shouldn't a visualisation require as little thought as possible?

I blame PowerPoint.

<comment><USER3> I actually got the point, I was saying that it was still obvious which part was bigger, which is what a pie chart should be used for. Anything more complex than that, and it's being used incorrectly.

<comment><USER18> The whole point of a chart is at-a-glance understanding of numbers and stats that would normally take a more careful once-over.

And the whole point of a pie chart is to use one thing -- the size of a slice -- to represent a single datum.

A 3d pie chart muddles both of those things for form-over-function reasons. How is this even contentious? Pie charts are notoriously bad anyway, especially if there's not a huge difference between the data points. This makes them notably worse.

<comment><USER3> yeah... I get it... I could still see which part was bigger.

<comment><USER19> The purpose of a pie chart isn't to show which is bigger (which is much easier to convey in text), but to give relative proportions.

So could you accurately estimate the two sizes? Research suggests you'd be better off with a bar chart than with a pie chart except in certain cases (25% vs 75%) and that isometric pie charts are worse than flat ones.

<comment><USER20> It would be just as trivial to create a 3D bar chart that has the same effect as the example (accurate, self-referential, and confusing because of the color/label mismatch). While clever, this example isn't an indictment of pie charts, because it clearly shows the relative proportions of two quantities (as would a bar chart).

<comment><USER19> There's two different links in these comments that explain at length why pie charts do not clearly show relative proportion. This is even less true of 3D pies.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> but we have to have more 3d. 3d is the current immersive property for a richer viewer/user experience. and this needs to expand even to pie charts. the next thing will be to add smell to the pie charts - so that they smell like pie.

<comment><USER22> Wouldn't having the entire chart smell identically defeat the purpose?

You'd want the blue part smelling like blueberries, and the red part smelling like strawberries.

<comment><USER23> Well there's an easy solution here. Make the red smell like strawberry pie and the blue like blueberry pie.

</comment></comment></comment><comment><USER24> bleeh

</comment><comment><USER25> I don't get it. So much for user experience design.</comment>


Safely Rewriting Mixpanel's Highest-Throughput Service - <AUTHOR> https://engineering.mixpanel.com/2019/07/24/safely-rewriting-mixpanels-highest-throughput-service-in-golang/ <comment><USER2> The author mentions finding the GCP Python PubSub API unreliable. That's definitely not been my experience.

Could someone from Mixpanel elaborate maybe?

<comment><USER3> Hey, I'm the author. That migration was a while ago, so I had to look back at what exactly we did. The gist was our old python servers used a custom fork of eventlet ([https://eventlet.net/](https://eventlet.net/)) which didn't work well with the cloud pubsub library. The core library in itself is not unstable, but when we introduced it to the existing code it became unreliable.

<comment><USER2> Thanks for clarifying! Great write-up!

</comment></comment></comment><comment><USER4> I haven't followed mix panels development. I was surprised that a company which went as far as writing their own time series database apparently decided to go all in on Google cloud.

<comment><USER5> Disclaimer: Not the author, but I was on the team that migrated our infrastructure to GCP.

As a startup with limited resources, it's important for us to invest all our engineering strength into the things that create direct value for our business. We'd rather pay Google to manage machines and run services like Kubernetes, Spanner, Pub/Sub and others and free up the engineers to work on our core analytics platform.

<comment><USER6> I think the parent may have meant the opposite of how you interpreted it... That writing a tsd db from scratch doesn't match what you just stated about investing engineering time where it makes the most sense.

<comment><USER5> We don't run a TSDB. A TSDB doesn't work for the kinds of queries we run - specifically, TSDBs don't work if you want to

      * analyze every datapoint you receive
      * when the dimensional cardinality is high
      * you want to analyze behaviors over time (e.g. the output depends on the orders of events followed - like creating a funnel report)

There's no off-the-shelf solution that does this at the scale at which we operate - hence the need to write our own custom solution.

</comment></comment></comment></comment><comment><USER7> Very cool! Any stats you can share about increased performance switching to go?

<comment><USER8> I would not be surprised when moved prom python to anything like java, c#, go and end up at least 10x.

<comment><USER9> It depends on how much of the "Python" implementation was actually C.

</comment></comment></comment><comment><USER10> I faced a similar challenge. The technique I used was to carefully read the code of the program to be rewritten, and then I wrote a spec for it. The format of the spec was that everything that was feasibly testable was written as a unit test, and everything else was written as comments between the tests and the text explaining them. Naturally the original code satisfied the test suite/specification.

Then I used that test/spec to do a TDD type development of the new service. It was the easiest rollout I've ever done. Everything just worked when it went into production. I even ended up giving some internal presentations on the process.

I also tested with logged input from the source program. It's neat to see this technique is common.

</comment><comment><USER11> Wow cool article. I learned about Envoy which looks really awesome.

Just out of curiosity, what were some of the bugs you found? Were they related to semantics of python not carrying over to go? or was it that you tried using new go features like goroutines and they didnt work as expected?

<comment><USER3> The bugs were typically related to general correctness or translating python semantics. The correctness-type bugs were due to the complex nature of the API. The python translation bugs were just about getting the correct behavior of statements like

if val: # ...

in Go.

</comment></comment><comment><USER12> Did p95 latency change due to the migration?

<comment><USER3> Yes! You can see the p99 results here (we don't have an aggregated p95 measurement, so used p99): [https://imgur.com/a/oQRbyBF](https://imgur.com/a/oQRbyBF)

Both max and avg p99 latency became much more stable. Max appears to have gone down a little too.

</comment></comment><comment><USER13> s/golang/go</comment>


Get a prediction of how other people perceive your face - <AUTHOR> http://face.cbs.dtu.dk/ <comment><USER2> "Error, code UL1JOBHASH: parsererror"

I knew I wasn't the best looking guy but this seems more harsh than I anticipated.

<comment><USER3> Same for me, and I'm beautiful :P

I suspect their server has succumb to the Hacker News effect

</comment></comment><comment><USER4> Dear all,

Unfortunately, we are currently experiencing technical difficulties with the Face It! project website. This is most likely due to the rapid increase in web traffic, after the project was submitted to Hacker News, today April 8 2015. We greatly appreciate the increased interest our project has generated, and are currently working at full throttle to solve the current server issue. Hopefully, the website will run at full functionality again very shortly. We apologize for any inconvenience this may have caused. We will, on Hacker News and the Face It! project website, keep you updated on the status of the project web service as a solution progresses.

Please stay tuned...

<comment><USER4> Dear all,

We are happy to tell you, that the web service is now functional again. It can still be visited at the original URL at [http://face.cbs.dtu.dk/](http://face.cbs.dtu.dk/). We would like to hand out a big thanks to intrbiz from the IRC channel #suse on the freenode IRC network, for his great support in helping us getting our server properly recovered again. We are sorry for the inconvenience caused in the mean time, but hope you will enjoy the final work.

</comment></comment><comment><USER5> The first thing I thought when it didn't load was "maybe this is a study to see how persistent people are to find out if they are attractive?" It's probably just the HN effect though.

</comment><comment><USER6> This is a bit sensitive to cultural influences. For instance, male facial characteristics have a clear regional variance, thus biasing the result in a particular population. I can tell from experience, I'm a male pushing over thirty with ridiculously androgynous features. I'm tagged as a boy by local population, and when I visit UK, I'm tagged as a 'ugly woman' :)

<comment><USER7> You will be fine, because you can tell the program that you're male.

However, the study has been using 244 Danes... I think you'll be right that cultural influences will be a defining factor here. I don't think the majority of people looks like a Dane. :-)

<comment><USER8> I hope they don't tell me that I look like a great dane.

</comment></comment></comment><comment><USER9> Link to the actual paper if anyone is interested:

[http://www.ncbi.nlm.nih.gov/pubmed/25233221](http://www.ncbi.nlm.nih.gov/pubmed/25233221)

</comment><comment><USER10> There've been times where I would just upload a picture of myself to the internet. For fun.

</comment><comment><USER11> As noted in the first paragraph, a tool such as this will be useful to "other cultures" only after a panel comprised of people of the target culture have calibrated the tool.

</comment><comment><USER12> > No hair obscuring the face.

Welp I guess my beard disqualifies me. I wonder how many HNers have the same problem?

<comment><USER13> I'm getting a parser error, that's seems to explain why.

</comment></comment><comment><USER14> I'd be really interested to see someone take the research they did here, and extend the survey to various different cultures. Right now, this model will give you a prediction of how a sample of 244 danes will perceive your face, which may be at least somewhat representative of the danish population, but likely not too much beyond that.

It should be easy enough to survey people from different cultures and countries, and feed those surveys into the model, to get a more accurate representation. You could even take that, and have a global model, as well as different models based on cultures, to get things like "This is how you will be perceived by most people in the southern united states".

</comment><comment><USER15> This has got me humming 'there is nothing like a Dane' \- which is not quite a song from the musical South Pacific.

</comment><comment><USER16> The link is taking time to load. Looks like everyone wants to know what others think about them. Expected.

</comment><comment><USER17> Has this actually worked for anyone?? Not one commenter seems to have got it to work.

I've had nothing but an error ("Error, code UL1JOBHASH: parsererror") for the last two hours.

</comment><comment><USER18> > This study is based on results from 244 Danish participants

That's a small learning set. I suppose now that it's on HN front page, they will get significant amount of data to tune their model across cultures and nationalities.

Hypothetically, wouldn't it be easier for them to train their model using the portfolio images of public figures like actors/politicians etc for whom I'm sure there would be tremendous amount of subjective description online.

</comment><comment><USER19> We will get our chance to play with this -- it will just take a while. I emailed the researchers about site snarls, error messages, etc., and they wrote back that all our attention

:... is definitely welcome, even though it's very unexpected and therefore overloaded the server! Ulrik Plesner, who developed the webserver, is working at the moment to get it up and running again..I think it'll be back over the next 1-2 days if all goes well :) "

</comment><comment><USER20> I have a prediction based on 50 years of empirical, hard-won data...

Old and Unattractive.

:)p

</comment><comment><USER21> Down for me. A text only version is avalibal from Google cache: [http://webcache.googleusercontent.com/search?q=cache:7YJ7VTW...](http://webcache.googleusercontent.com/search?q=cache:7YJ7VTWM- YEJ:face.cbs.dtu.dk/&hl=no&gl=no&strip=1) , but not sure that gives to much sens.

</comment><comment><USER22> Would be nice to see some examples of each extreme, for each dimension.

<comment><USER23> There: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4169442/figure/p...](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4169442/figure/pone-0107721-g005/)

<comment><USER24> It looks like that in Danish society, being darker may be correlated with perceptions of dominance.

</comment></comment></comment><comment><USER25> I found a random image of a human face and tried to upload it. Stuck at "Image queued for upload..." for minutes. Then came a page asking me to "annotate" the image by adjusting the auto-positioned point markers on my image according to this image[0]. Finally I saw this message: "An error has occured. Please try again." Is the server too busy right now?

[0]: [http://face.cbs.dtu.dk/graph/annoEx.png](http://face.cbs.dtu.dk/graph/annoEx.png)

Mirror: [https://archive.is/YAaex/5d06f6875b232350ff6954739af37c44a3d...](https://archive.is/YAaex/5d06f6875b232350ff6954739af37c44a3d913bd.png)

<comment><USER26> Site is not opening Seems like HN effect has freezed their server.

<comment><USER27> Perhaps too many ugly people are using the server and it refused to continue analyzing pictures!

</comment></comment></comment><comment><USER28> Doesn't test anything for me for some reason. Not sure if I'm doing something wrong but it doesn't upload or show any 'Annotation points'.

Edit: Just saw this : "We are currently encountering server errrors, resulting in the service being unable to run. We are working to get this up and running as soon as possible. Please stay tuned... "

</comment><comment><USER29> In addition to what the first paragraph says, I'll add that given the strong cultural bias there can be on such thing, I wouldn't put too much trust into such a tool except if it could be calibrated by a panel of the "other people" you are targeting.

</comment><comment><USER30> After the error the button isn't even working. I think there's someone just trying to collect photos...

</comment><comment><USER31> commence the HN slashdot.</comment>


Rails Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript - <AUTHOR> http://gilesbowkett.blogspot.co.uk/2012/02/rails-went-off-rails-why-im-rebuilding.html <comment><AUTHOR> I'm surprised this hasn't already been posted here. The article is a bit ranty (and humorous) at times but I think it makes a good case for why you should start your next project with Node.js instead of Rails.</comment>


The dark which is when we close our eyes is the game of brain or our eyelids? - <AUTHOR> <comment><USER2> Just try to see with your eyes closed, its just a "soft-shutdown", the eyes keep operating.</comment>


How the history of photography is inextricable from that of slavery - <AUTHOR> https://bostonreview.net/literature-culture/alexis-l-boylan-race-black-and-white <comment><USER2> This article is troubling. It raises an important point that, yes, all technologies are always used to subjugate and control other people. But emphasizing this aspect in the history of photography is really overstating the case.

The person most responsible for the popularization of photography and its transition from the domain of specialized experts to the purview of the common man is George Eastman, the founder of Kodak. His sales strategy of "You press the button; we do everything else" and his invention of cameras and centralized film development which made that strategy possible transformed photography into the snapshots we know today. It had nothing to do with slavery or oppression and everything to do with simplifying a technical process so that it became available to more people.

Leaving out this fact, which impacted photography more than the use in documenting slave ownership, is a misleading telling of the tale.</comment>