How to leave academia (for science PhDs) - <AUTHOR> http://www.chrisstucchio.com/blog/2012/leaving_academia.html <comment><USER3> I recently left my PhD program too (I'm "mastering out" in local parlance ;)) and what this post doesn't address is what I found to be the hardest part: making a decision to leave a world where people that leave are construed as a failures (note: contrary to my expectation, I've only received support in my decision from my awesome and anomalous department.) (Also, I should note that I left a software industry job to do the PhD so I knew I shouldn't have difficulty finding a job.)

For anyone who wants to take the leap but is afraid or unsure, I offer some words that were incredibly helpful for me from some of fantastic friends. To quote my amazing advisor from his response to my "I'm leaving" email:

'We had a Head of Department at Lancaster who used to stomp around the corridors moaning - "I've just lost another student to industry. He's got a great job, has a starting salary bigger than mine, is working on a fabulous project with better resources than we have. In what mad world is this judged as a failure?"'

And another colleague, who's currently a junior professor: 'You know, most Ph.D.ers are smart and successful people. Hence they have a difficulty in saying "This is not for me". They instead say "I've been successful all my life, and I finished everything I started, so I should finish this as well". By saying that, they choose to hang in there for many years in a depressed state.

Sometimes, the most courageous thing and the best thing to do is to quit when you know you would rather work in another capacity, or when you know you don't want to work in academia. I congratulate you on your decision and I hope the best for you. ( In case you later decide to come back to academia, it will be waiting for you, so I would not worry about it.)'

Best of luck, those of you that are struggling with the decision. If you're anything like me, if you decide to leave you'll feel better than you have in years =)

<comment><USER4> "to leave a world where people that leave are construed as a failures"

That was very much the view when I left - is it a view that is particularly common in the UK?

<comment><USER3> I can't speak to that, except what my British advisor said =)

</comment></comment></comment><comment><USER5> > Also, if your degree is in English, the best I can do is point you here > (link to Starbucks job page).

I know it's supposed to be funny (i.e., it's "just a joke") and I grant I may be sensitive since I have a BA in Comparative Literature (a graduating class of 1 in my major) and a PhD in Classics, but this came across as completely obnoxious and unnecessary. Don't know anything about Humanities? Fine. Don't talk about them.

Still, thanks for the link to Software Carpentry. I didn't know the site, and it looks like a good place to point people for introductory material on the shell, make, and so on.

<comment><USER6> Slightly offtopic question: I re-read Odysseus a couple of weeks ago and was wondering about the name Telemachos. My rudimentary knowledge of etymology tells me that he's a "far away man". Given your username and the fact that you have a PhD in classics: what's your opinion of how the name/etymology of the character relates to the role that Telemachos plays in the epic?

Obviously he's far away when Odysseus is out and about, but he's quite present in the beginning and end. It seems like there's more to it than that.

(For those who don't remember / haven't read it, Telemachos is the only son of Odysseus in the epic. He's pretty much a younger copy of Odysseus.)

<comment><USER7> tele = far

machos = battle

Perhaps it means that he was far away from the battle or it means that he battles from afar? The latter would seem a better fit for Odysseus himself.

<comment><USER5> You said it much more succinctly than I did. He "battles from afar" - that is with a bow - hits it on the head. It would not have been so unusual for a son to be named for an excellence of his father.

</comment></comment></comment></comment><comment><USER8> I received my PhD (Physics) in 1999 and went directly to industry. At that time I saw industry as a well paid post doc. My intention was to work a few years and then seek an academic position.

In 2001 I had an offer from a top engineering school in Canada to join their faculty. And I said no.

Academia attracted me with the promise of intellectual freedom -- the ability to work on what ever problems I wanted to. This is a lie. To be successful in Academia, one needs to pick a narrow field and become the biggest expert in the smallest space. Neils Bohr described this as knowing more and more about less an less until you know absolutely everything about nothing.

In Industry I can move around to whatever problems fascinate me most. I've worked in Optical Componetns, designing video games, and now what I call computational sociology on social networks. My pattern has been to work in a field of about five years until I've built up the expertise I desire to have, then move on to a completely different field.

For those recently dropping out of academia or considering dropping out, you know in your heart it is the right choice. Don't worry about what people in that little club think. A decade from now they will be looking at you. With envy because you are free to work on the most exciting and interesting problems while they are stuck in the same shrinking field for the last ten years.

<comment><USER9> I'm doing a Masters in theoretical physics and I've got to ask, is it common to first go work a few years before going into academia? It surprises me how little we are informed of these things.

Being locked in is my biggest fear for going for a PhD. I don't want to spend the rest of my life on a single topic, perhaps I don't even want to stay in theoretical physics.

<comment><USER8> Most graduate selection committees will look favorably on a couple of years industrial experience between doing a Masters and doing a PhD. This is irrespective if you continue in physics are switch to a more applied discipline such as engineering. Following the 2008 recession, many people who lost their jobs went back to school to pursue masters and PhD degrees, so this is now quite common.

My opinion is if you are afraid of being locked in, then industry is better place. If you are willing to trade job stability and short term income to not be locked in, then learning how to start and build your own company around your ideas is the best way to retain flexibility.

</comment></comment></comment><comment><USER10> If you're in the right areas of computer science, esp. machine learning, the answer seems to be that you have to make active effort to _resist_ leaving academia, but not much active effort to let yourself get hired away. The recruiting at grad schools and even academic conferences from folks like Palantir has gotten pretty aggressive lately! They're particularly good at supplying temptation at that moment when a student's finished everything but writing up the dissertation ("ABD").

</comment><comment><USER11> I'm finishing my PhD, and starting a post-doc in the fall. I had wanted to break out into industry, because I didn't see myself in academia in the long term, but I didn't get anywhere with job applications, so here I am.

I have a few questions:

1\. My work consumes most of my time and energy - how would one find time to work on side projects and build a portfolio, when the academic workload is so all-consuming

2\. I felt like I had to apply for industry jobs in my niche, otherwise I would be competing against a much larger pool of general engineers/science graduates. Considering that I've spent most of the last 5-6 years focusing on work in a specific niche, how can this be used for leverage for more general technical positions?

Thanks for the interesting article!

<comment><USER12> Concerning the workload: As far as I'm concerned, the academic workload is definitely not all-consuming. From watching my colleagues, I came to the conclusion that everybody chooses their own workload. Some of my coworkers come at 9AM and leave at 4PM; others think they absolutely must finish that experiment and stay until 10PM. Some people think they must immediately rush to the lab if their supervisor sends them an email on Saturday afternoon; others just ignore the email until Monday morning.

I have never heard of anybody getting into trouble for turning their computer off on the weekend, or working normal hours; I think much of the pressure is self-inflicted.

Personally, I currently work in academia (doing my PhD), and I run a profitable business on the side (selling my own software). Sometimes this is a bit stressful (when you have to prepare a talk and keep getting emails from customers because of a nasty bug you introduced in the last release), but most of the time this works out just fine.

<comment><USER3> Seconded. Some of the most successful academics I know keep regular 9-5 hours and leave their work at the office, have spouses and children, etc. I've noticed a lot of them are fantastic at time-boxing and that some of my less successful colleagues aren't so much, and the freedom the academic schedule gives them ends up being more of a hindrance than a help.

<comment><USER13> Are those tenured professors that have their grad studends and post-docs do all the work for them ? :)

<comment><USER3> Haha, nope, lots of PhD students and junior profs that have their act together.

</comment></comment></comment></comment></comment><comment><USER14> > 100 passengers have queued up to board a plane, and are lined up in the > order of the seats on the plane (n=1..100). However, the first person lost > his ticket and selects a random seat. The remaining passengers will occupy > their assigned seat if it is available, or a random seat otherwise. What is > the probability that passenger 100 sits in seat 100?

It really worried me that I couldn't figure out how to work that out. I thought about what I'd do in an interview if I was asked that, and I figured (if I had my laptop) I'd write some code. So I gave myself 5 minutes by the clock, and wrote a little python program that simulated the situation and counted the results. I ran 5 million iterations, which with pypy took 59 seconds. The number I got out was a 97.335% chance of person 100 being in seat 100.

I have 3 questions:

1\. Is that the right answer?

2\. How are you supposed to work it out?

3\. Would working it out the proper way take less than 6 minutes?

Edit: It seemed like too high a number, which is part of why I asked. I looked through my code and found a dumb error - I forgot to remove the seat from the 'available' list if the person finds their assigned seat. That's what happens when you write code on a 5 minute deadline. Now I'm consistently getting 49.9%, which seems more reasonable.

<comment><USER15> I think this is more slightly more on-topic as a reply here

> Consider the integers from [0,1000]. Suppose a particle starts at position > n. At discrete instants of time t=0,1,2,…, the particle moves up or down > with p=0.5. What is the probability that the particle reaches 0 before > t=1000?

The answer is 50%, right? I can't explain it properly, but my thinking is that the random walk is symmetric and 0 and 1000 should have equal weights. Maybe a good explanation is harder than the correct answer in this case.

<comment><USER16> I believe the right answer is about 2.5% (0.0247)

Here's some imperative scala:

         object particle {
           def main(args:Array[String]) = {
             val simulations = args(0).toInt
             val rng = new util.Random
             val reachedZero = (1 to simulations).map(_=> {
               var t = 0
               var z = 1+rng.nextInt(1000)
               do {
                 z += {if (rng.nextBoolean) 1 else -1}
                 t +=1
               } while( z != 0 && t<1000)
               z==0
             })
             println( reachedZero.count(_==true)*1.0d/simulations )
           }
         }

         ---
          >scala particle 1000000
          >0.024782

Some intuition: If there were only 2 positions {1,2}, and you picked 1 with probability 0.5, you could get to 0 by going down once with probability 0.5. Going up wouldn't help since you'd have to go down to be back at 1, at which point you've exhausted your chances. Suppose you picked 2 with probability 0.5, you'd have to go down twice consecutively to hit 0, which has a probability of 0.5^2. So overall, your probability is 0.5^2 + 0.5^3 = 0.375 You can try working it out with 3 positions & 3 turns, and suddenly its not so easy....:)

<comment><USER17> Nice simulation work! Initially I thought this was a one dimensional random walk problem where the answer is a function of n (as other comments have pointed out). In that case, there (n choose k) paths that take k steps in a single direction of n total steps, and each occurs with p(0.5^n). In this problem we are given n, but not k. Given a starting point, we can easily calculate the probability of crossing 0.

So my question is, how are you dealing with the initial condition?

<comment><USER16> The initial condition is assigned to you randomly, from the closed interval [1,1000].

Suppose there were [1,k] spots. You are assigned an intial value from [1,k] and you then have to reach 0 before time t=k. Here's my code to solve the general case

         object particle {
           def main(args:Array[String]) = {
             val simulations = args(0).toInt
             val rng = new util.Random

             (2 to 1000).foreach(spots=>{
                 val reachedZero = (1 to simulations).map(_=> {
                   var t = 0
                   var z = 1+rng.nextInt(spots)
                   do {
                     z += {if (rng.nextBoolean) 1 else -1}
                     t +=1
                   } while( z != 0 && t<spots)
                   z==0
                 })
                 val prob = reachedZero.count(_==true)*1.0d/simulations
                 printf("%4d spots: %.4f\n",spots,prob )
               })
           }
         }

         >scala particle 1000000
         2	0.3773
         3	0.329
         4	0.292
         5	0.2714
         6	0.2624
         7	0.2428
         8	0.2247
         9	0.222
         10	0.2157
         ....

So your chances drop from 37% to 21% as the interval expands to 10 spots. At 100 spots, its 8%. By 1000 spots, you have a meager 2.5% chance of crossing 0 before 1000 seconds.

</comment></comment></comment></comment></comment><comment><USER18> I left a PhD program a few years back (technically graduated, but I don't think of it that way). A year or so before I did, I remember very clearly being out to drinks with my professor and fellow students, and mentioning that I had no intention to continue a career in academia. In fact at the time I was thinking of translation (I've since drifted to web development, but languages and translation are still central to much of what I do).

The response (in Japanese, but I'll translate) was "what a waste" ("mottainai"). What a waste. All that potential I had, and now I was just going to waste it on "work", like everyone else. No doubt my supervisor, who said it with a genuinely disappointed look (echoed with a nod by a fellow student and friend sitting beside me, which only made it worse) meant it in a positive sense, but I never forgave him for it. It stuck with me, somewhere very deep inside me, first as something confusing and distressing, then as a kind of symbol, something emblematic of everything that is wrong with academia.

To anyone who is hesitating: if your only reason for staying in academia is the fear of what will happen if you leave, then it is time to leave.

</comment><comment><USER19> The post is awesome. Having just "graduated" (dropped out of my PhD program) and also interviewed a bunch of really smart folks who are making the transition to the "real world", I cannot emphasize the importance of the following for a good machine learning/engineering interview:

1\. It doesn't matter if you have done research in a topic, do brush up on simple machine learning algorithms. The math after going through a PhD should be really easy for you. However, it is hard for an interviewer to gauge how good your math background is when you have done most of your quantitative work in a totally different field and you don't have enough of a common intersection.

2\. Write code! If you are joining a small to middling start up, even if you will eventually be doing quantitative stuff, your peers will be people from engineering and they will evaluate you as a programmer. Brushing through something like the Algorithm Design Manual is going to be amazingly useful. Back in school, there was a linguistics professor who wrote most of his code in Scala, used version control and pivotal tracker. If someone who is working towards tenure can do it, there is no excuse for you. :-)

3\. Try to work on tiny projects that involve some data analysis and some programming. If you are an R guy, do it in python and vice versa. Most importantly, think of the whole pipeline: taking the data (Infochimps/ AWS public datasets), cleaning it up, processing it using a random machine learning algorithm (pick any, its an easy and awesome learning opportunity), and then visualizing it. Repeat with cooler tools (E.g. d3.js for the visualization etc). The importance of this process is that it moves you away from the traditional anonymized datasets that you see in academia and helps you encounter real world data and gain intuition for that. This is incredibly helpful in the interview process because it allows you to get good ideas about other people's data and how to think about it.

</comment><comment><USER20> What about negative anecdotes? Has anyone here regretted his or her decision to leave academia? Particularly, have you found the work less rewarding or interesting?

I ask as a grad student with a background in chemical engineering. I've known two professors who've done the inverse – industry to academia – and they've provided convincing stories for academia. In both cases they found academic research (in engineering and the physical sciences) to be more interesting and personally rewarding than industry.

Is the situation different in software and related industries?

I ask, as I've been considering transitioning to such a career myself after grad school (my research is in computational modeling and simulation). My biggest fear is that I'll find myself in a job that I find boring and will regret my decision. Doubly so, as such a career transition will make it very difficult to reenter my academic field.

<comment><USER21> > _What about negative anecdotes? Has anyone here regretted his or her > decision to leave academia? Particularly, have you found the work less > rewarding or interesting?_

I left academia after undergrad, despite applying and getting into graduate school. My degree is in Computer Science, my specialty track was Programming Languages and Compilers, and my senior thesis was in Systems Programming Languages.

I had job offers and eventually took one. What I found was that industry is smug, deceptive, fad-driven, cares nothing for fundamental problem-solving until you pay them for it, and (of course) near-fatally infected with live-to- work-ism and the Californian Ideology.

* Smug: despite many of them having MSc degrees or being PhD drop-outs, most of the professional programmers I've met deride research itself as essentially pointless. Someone once asked me point-blank at lunch why I wanted to publish an invention/discovery of mine in a research paper, why I didn't just go found a start-up based on it. My discovery is in type theory: not exactly the most amenable field for using Ruby on Rails to pump out a "minimum viable product". Further: type-theory results are mathematical rather than empirical, the proofs have to be checked. _Peer review has its just place in the world, and thus so does Research Science._

* Deceptive: many of the people I met did not know or care whether their software served its intended purpose well, or whether that purpose was a good purpose, or whether (provided it was a good purpose, which I shall note that, say, investment banking isn't) it _can_ be served well. The hiring binge I saw was completely uncorrelated to having an actual workload for the people they wanted to hire. The idea seems to have been to hire everyone's Hackathon friends.

* Fad-driven: look at the ads for hiring "rock-stars" and "ninjas", and then realize that most of these people earning six-figure salaries _just_ build web-sites or silly mobile applications. Who thought Groupon was a good idea (I'll note that I _never_ did)? _Why should everything be an ad-based web application to the point that things other than ad-based web applications simply don't get built that often anymore?_

* Cares nothing for fundamental problem-solving: Industry is infected with marketer-thinking (trying to please a perceived primary market of investors and secondary market of customers) rather than fundamental business-thinking (building cars instead of faster horses). The industrial programmers who can possess substantial skill in fundamental Computer Science, or who solve problems in Computer Science, are a vocal but still _small_ minority. Think of Steve Yegge and his "cat-picture problems," and remember that Steve Yegge is talking about major companies like Google and Facebook spending their energy on cat-picture problems.

* Live-to-workism and California Ideology: I was astounded and offended to find myself hearing hour-long talks between otherwise intelligent, humane and respectful coworkers on libertarianism and Austrian economics. Further, the software industry is powered by "passion" (a component of the Californian Ideology), which has mostly just become an excuse for long, unbroken workdays, fanboyish loyalty to employers/companies, and programming-centered social events outside work. The programming profession expects you to _love your job_ , no matter what it is. Not enjoy, not like, not perform competently, _love_. The assumption is that if you didn't love what you were doing, you would leave. Never mind real life, where the state of one's bank account is more than just a way of keeping score, programming jobs are clustered in some of the world's most expensive metro-areas, people have families, and they may have _moved_ to enter their programming job.

I'm not quite back in academia _yet_ (only admitted to one graduate school so far, with non-guaranteed funding, two other applications still pending), but I'll be damned happier when I get back there. And of course, unbias this anecdote by accounting for its kvetchiness and negativity, because you _asked_ for a negative opinion about industry.

<comment><USER22> Of course everything you say about the software industry is true, right down to the "libertarianism and Austrian economics" (I take it you prefer critical race theory and postcolonial studies). Otherwise, your critics would have said something rather than just downvoting you.

Your problem seems to be that you haven't considered the possibility that academia is even worse. Academia is even worse. (I dropped out of the Berkeley PhD program in 1992 - specialty, OS and languages. From what I can tell, academia has only gotten worse since then.)

I could produce a parallel list of bullet points, but I'll just say three things. The only reason to go to grad school is because you want to be a professor. The only reason to be a professor is because you want to be a bureaucrat. Do you want to be a bureaucrat?

Even if you want to be a bureaucrat, there's no guarantee that you'll be good at it. Good bureaucrats don't write posts like the one you just wrote. They don't antagonize anyone, ever, in any way. They would rather lie - and they do. Are you good at that?

One of the things you'll discover in academia, for instance, is that the most appalling faux pas you can commit is to say anything bad about your colleagues' research. "Colleagues" meaning, of course, only whatever little log-rolling grant mafia you've wound up joining. You're perfectly free to criticize its enemies - though not the endeavor as a whole. Oh, you didn't want to join a mafia? You think someone is going to fund you just because you're smart and have cool ideas? Strange ideas you have there, kid.

I understand what you want CS research to be. CS research isn't what you want it to be. CS research is a gigantic government bureaucracy. Nor is it unique. Science itself is a gigantic government bureaucracy. Do you think it's not deceptive? Systematic deception is its very lifeblood.

Can science of the sort you're looking for exist? Of course it can exist. You can find it very easily. All you need is a time machine. Set the controls for at least 40 years ago.

Otherwise, the simplest way to do the kind of research you want to do is to decide quite consciously to give yourself over to the salt-mining industry in the most mercenary possible way, spend a decade making as much money as you possibly can (and spending as little as you can), and (if you succeed) found your own little university of one. It's not Victorian science, either, but I'll tell you it's a lot closer than Berkeley.

<comment><USER21> > _Of course everything you say about the software industry is true, right > down to the "libertarianism and Austrian economics" (I take it you prefer > critical race theory and postcolonial studies)._

Why would I prefer that bunch of idiot hippies? My preference is for Karl Marx and Henry George (with the former being better at seeing what capitalism really is, and the latter being the better economist).

> _Your problem seems to be that you haven't considered the possibility that > academia is even worse. Academia is even worse. (I dropped out of the > Berkeley PhD program in 1992 - specialty, OS and languages. From what I can > tell, academia has only gotten worse since then.)_

This is precisely what I was considering at the end of undergrad. Hell, I'm in basically the same specialty as you were.

> _Even if you want to be a bureaucrat, there's no guarantee that you'll be > good at it. Good bureaucrats don't write posts like the one you just wrote. > They don't antagonize anyone, ever, in any way. They would rather lie - <USER2> > they do. Are you good at that?_

Cool story, bro. Do you think I didn't consider the office-political implications of what I wrote?

* Most academics don't read Hacker News.

* Most academics would perceive this as on their side.

* I openly admit that I wrote the post not even with mere bias but with an active bent towards an overly-negative portrayal of reality.

* Most start-up folks here on Hacker News don't necessarily agree in whole, but agree in part. I've seen Steve Yegge's speech referenced a disturbing number of times on Reddit and HN.

* Most of the votes have been upvotes, indicating a perception that the discussion is worth having rather than storming off in a huff and blacklisting the offending poster.

> _You think someone is going to fund you just because you're smart and have > cool ideas?_

No, I thought someone was going to fund me because my adviser is well-known and prestigious within the field. There's no point breeding inferior academic DNA into myself, is there?

> _Otherwise, the simplest way to do the kind of research you want to do is to > decide quite consciously to give yourself over to the salt-mining industry > in the most mercenary possible way, spend a decade making as much money as > you possibly can (and spending as little as you can), and (if you succeed) > found your own little university of one. It's not Victorian science, either, > but I'll tell you it's a lot closer than Berkeley._

For my field I never even saw any point in applying to Berkeley, but how do you propose to go about this? Even the successful industrial programmers I know, unless they became millionaires off a start-up, did not actually make enough money to "settle down" out of working and "found your own little university of one."

Provided you had the cash, it does sound like a fine idea.

<comment><USER22> _Why would I prefer that bunch of idiot hippies? My preference is for Karl Marx and Henry George (with the former being better at seeing what capitalism really is, and the latter being the better economist)._

Come on, you don't think you can shock people with Karl Marx, do you? In 2012? Try some Maistre, Carlyle, Froude. Maybe even George Fitzhugh or R.L. Dabney. Here, this'll get you started: <http://books.google.com/books?id=an2LWYTh2ewC>

_No, I thought someone was going to fund me because my adviser is well-known and prestigious within the field._

Maybe you're not such a bad bureaucrat after all! But I meant not while you're in grad school, but after. Of course, if you stick with your mafia, and it's a good mafia, you can keep the party going. Perhaps. Definitely make sure you don't alienate your betters.

 _Even the successful industrial programmers I know, unless they became millionaires off a start-up, did not actually make enough money to "settle down" out of working and "found your own little university of one."_

Yeah, that's what I mean. Dedicate yourself completely and unreservedly to the foul, foul art of money-grubbing, and/or money-saving. Or possibly money- stealing. Anything is better than either conning investors, or conning the government. Have you considered growing pot?

(I won't say this worked _perfectly_ for me, but it did give me time to write my purely functional operating system. Unfortunately this took longer than expected and I'm now kinda broke. And I really can't turn my daughter's closet into a grow-room. So, we'll see if anyone thinks they need a purely functional operating system... Kickstarter, here I come.)

<comment><USER21> _Come on, you don't think you can shock people with Karl Marx, do you?_

The point isn't to shock. The actual point was that you're _not supposed to talk politics in the workplace_. I wasn't preaching Marx to coworkers, so why were they railing on about Hayek?

 _Yeah, that's what I mean. Dedicate yourself completely and unreservedly to the foul, foul art of money-grubbing, and/or money-saving. Or possibly money- stealing. Anything is better than either conning investors, or conning the government. Have you considered growing pot?_

You've got to be kidding. You would rob people before "conning investors" (ie: making an actual go at a business) or "conning the government" (ie: making an actual go at research)?

Just link me to your "pure functional operating system" already, or I'm calling troll-post.

<comment><USER23> _> Just link me to your "pure functional operating system" already, or I'm calling troll-post._

Moldbug's system:

<https://github.com/cgyarvin/urbit/>

Its blog:

<http://moronlab.blogspot.com/>

<comment><USER22> That shit be _old_ , man. Well, not the code... the blog.

Lesson 1: your research project is not an open-source project. Until it's done.

Lesson 2: extraordinary claims require extraordinary evidence.

That said, if you want to see some very odd-looking code:

[https://github.com/cgyarvin/urbit/blob/master/jupiter/sys/20...](https://github.com/cgyarvin/urbit/blob/master/jupiter/sys/205/watt.watt)

Scroll down to the RSA implementation around line 2500. You won't learn anything. And why does a self-compiling compiler need an RSA implementation, anyway?

<comment><USER23> _> Scroll down to the RSA implementation around line 2500._

I saw it when you checked it in. Be careful what you post for public consumption, someone might actually _read_ it.

 _> And why does a self-compiling compiler need an RSA implementation, anyway?_

You gave this one away already on MoronLab, for anyone who wishes to see.

Any why has the Urbit Dukes list been so quiet? Make some noise, Moldbug.

<comment><USER22> Neighbor, please. It's hard enough trying to reinvent the wheel by myself. With any help it'd be downright impossible.

There's a great anecdote about Jessica Mitford from the '50s. Mitford had spent years writing an autobiography and, during this process, had constantly been passing drafts around to all her commie-princess friends. Of whom as you'd imagine there was a great number. Finally she got an agent, whose name I forget but I'm sure was a big New York queen of some kind, who shut her down and forced her to finish the book instead. "It's like parading around all day," the agent told her, "in your underwear."

The system has only been self-hosting for 7 or 8 months. Until November the parser was still de facto impure. The packet decoder has never been tested and isn't even in the kernel. String syntax is nonexistent, the prettyprinter prints pure dog crap, Nock 6 was an aesthetic disaster so Nock 5 is actually Nock 7 but with the calling convention reversed, persistence is nonexistent, stack overflow recovery is nonexistent, profiling has succumbed again to bit rot, HTTP is completely untested, etc, etc. I could explain all these things to you, or I could finish putting my clothes on.

Obviously it's on a public repository and all the code is PD. Crap you can even build the thing if you like. You can even fork your own kernel and try to compete with me! Don't expect any documentation, however. If I don't answer my email I don't have to accept patches. If I don't read my email I don't have to answer it.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> Just tossing in that Finance isn't your only option for a healthy PhD paycheck in NYC. With exactly those same skills you could work in silicon alley or at a company like mine which does analysis on bank (or other corporate) data.

Also, you don't have to sell your soul to work outside of Academia. For example, we find terrorists and drug lord hiding cash in USA banks (Anti-Money Laundering) using machine learning. It's very satisfying and the pay is good too.

<comment><USER25> Where are all this high paying jobs? Average data scientist salary at glassdoor is probably less than 100k.

<comment><USER24> Glassdoor doesn't seem to give me any salary results for "data scientist" in NYC.

<comment><USER25> Yeah, sorry, these hits were some other scientists. So what is the pay like in NYC?

<comment><AUTHOR> For data scientist, probably $100-150, and it can definitely go up.

<comment><USER26> The market isn't clearing right now. There are "data scientists" without jobs and there are companies without data scientists. Companies who can pay in that range can hire. Data people who can ask for that salary can get jobs. Sorry if that's cryptic.

</comment></comment></comment></comment></comment></comment><comment><USER27> Here's a simple checklist for all you CS (Systems) PhDs not sure what to do next. When writing a paper, which section of the paper are you most excited by?

A) Introduction (big picture/motivation/related work): You should remain in academia where you will enjoy writing grant proposals, or be a senior exec (not hands-on) in industry.

B) Design/Implementation: Academia is not for you. Join a cool startup or Google/Facebook/... (or of course start your own venture)

C) Experimental Evaluation/Results: Join industry (tech or finance) in a quantitative role.

YMMV. Also, this is not applicable to PhDs in Theoretical CS or in other Sciences.

</comment><comment><USER28> Jeeeeesus christ, that grep is ugly.

      grep "[0-9]\{3\}[-]\?[0-9]\{3\}[-]\?[0-9]\{4\}" filename.txt

The default behavior of grep appears to be to _not_ treat {}?() as special characters. Which is generally boneheaded in my experience, and certainly in this case. An irritated man will use egrep--short for grep -E, "extended regexes"--i.e. sane regexes:

      egrep "[0-9]{3}-?[0-9]{3}-?[0-9]{4}" filename.txt

This is just a direct translation. If I wrote the regex myself, I would probably also recognize spaces as delimiters (as in "999 999 9999"), and maybe note that the area code might be missing or have parens around it, etc.-- depending on just what I was trying to parse. I dunno, maybe he's parsing regular machine output and his original regex would suffice, so I won't go farther than an equivalent translation. But I will, for kicks, mention this:

      egrep "([0-9]{3}-?){2}[0-9]{4}" filename.txt

(Note that - is not a special character in either grep or egrep, although command-line programs in general treat specially any argument beginning with -, so it is a good idea to use [-] instead of - if that happens to be the first character of your string. But after that, no.)

Also, for general purposes, grep -P (Perl regexes) is best of all, because it can do *? non-greedy matching. A really irritated man has aliased pgrep to "grep -P --color=auto" in his bash startup file, and has also (perhaps dangerously) aliased grep to it as well. (That breaks fewer things than altering GREP_OPTIONS.)

</comment><comment><AUTHOR> By the way, if anyone has good links, particularly on the topics where I've admitted ignorance, please email me. My info is in my profile.

</comment><comment><USER29> "In academia, the end product is a publication and _your code needs to work only once._ "

In my experience as ex-academic, the above is all too true in too many computational fields (and many sub-fields of CS). So I ask what scientific value (or any kind of value, for that matter) is being generated by grinding out publications with results that won't be repeatable?

<comment><USER30> Depends on the journal you're publishing in.

Lots of journals (at least in my biological sciences field) require you to submit your code along with your publication so that a) the editor can repeat your results to accept your publication and b) for other scientists to repeat your stuff. Biostatistics AFAIK has an editor responsible solely for reproduction of results.

Personally saying lots of my code is repeatedly re-used by colleagues who can't program, for example scripts that parse BLAST-output and get the best result for each query etc.

<comment><USER29> Your point is well-taken and (thankfully) there are safeguards in place at top journals. However, Rob Tibshirani examined this a while back with a case study and came up with some unsettling conclusions about reproducibility: <http://www-stat.stanford.edu/~tibs/FL/report/>. The case study highlights the importance of debugging not only code, but also the entire experimental process.

<comment><USER30> True!

If you want a newer example, here's a very recent paper which looks at the results of a couple of RNA-Seq-papers and after being able to reproduce only 12% of the results, concludes that they all used the wrong assumptions in their statistics: [http://www.plosgenetics.org/article/info%3Adoi%2F10.1371%2Fj...](http://www.plosgenetics.org/article/info%3Adoi%2F10.1371%2Fjournal.pgen.1002600)

Which shows that the editor really needs to know what's going on and why in each paper - I don't think every editor can know everything about his or her field.

</comment></comment></comment></comment><comment><USER31> PhDs interested in data science job may find the Insight Data Science Fellowship a good opportunity:

<http://insightdatascience.com/fellowship.html>

It's a paid six week post-doctoral training fellowship in SV that ends with interviews with companies looking for data scientists.

</comment><comment><USER32> I know this is cliched, but of the ~30 students who started the Computer Science Ph.D. program at Stanford in 2006 with me, maybe 10 have dropped out. A few of those ten have gone onto successful startups and are now far, far, far wealthier than any of us who remained in the program could hope to be :)

<comment><USER33> This is an interesting sample. What happened to those who dropped out but did not strike it rich in Startupland?

I think one of the hardest parts about leaving is showing that you are moving onto better things; it's easier to _tell_ people you are leaving if you have a 150k+ offer. Leaving to try a startup would be socially difficult to communicate

</comment></comment><comment><USER25> Seriously? Learn web development? No one hires PhDs for web development skills. It is only useful if you want to be a pure software developer, not a quant or a data scientist. It might even be a negative when applying for some jobs.

<comment><USER19> Well they might not be hired to do just web development but I think learning about the web stack is incredibly useful because it helps you get your work out to people. This is important especially in a (early stage) start up where you might have to rapidly prototype solutions and you can't have your own pet designer to whip up visualizations for you. In fact, if you read the blogs of some of the data scientists at twitter/linkedin, its immediately clear that they have some know-how of the web stack in the way they are organizing and visualizing results. (Everyone likes pretty pictures)

<comment><USER25> You do not need to be a web developer to write a blog. R, MatPlotLib and Matlab make pretty pictures.

<comment><USER19> Not saying you need to be a web developer to write a blog. All, I am saying is that the web provides a way to do interactive visualizations in a manner not provided by Matlab/R/matplotlib. For example, colleague at Mozilla did this: <http://skedasis.com/d3/smoothers/>

</comment></comment></comment></comment><comment><USER34> "When you are ready, the teacher will appear" - Buddhist saying. Getting through a PhD is easier and more fun if your mind is into it. Yours is clearly not, so why try to swim upstream? Go where your mind and soul are telling you that you belong. If you ever decide the PhD is the right move for you, you can re-open that chapter and go for it.

I'm getting ready for a change in career, and for the exact same reasons.

</comment><comment><USER35> He's using Hyde and recommending the article's audience to use Django or Rails? If he's going to point out webdev with only some fleeting interest it might be more helpful just to say something like, "HTML/CSS is your new weekend project. Hardcode it in a couple hours or use whatever system gives you the least pain: SSG, framework, blog-based, etc."

<comment><AUTHOR> Clearly you haven't bothered to look me up.

Do you believe I should have used Django or Rails for my personal website? Was Hyde the wrong tool for the job?

<comment><USER35> Look you up? I read the article, if that's what you mean. I use a static site generator as well, I was just curious as to why you wouldn't recommend that instead since it's powering your own site. I don't disagree, it just seemed odd.

<comment><AUTHOR> I'm CTO of a django-powered startup, which I link to on my website. Django is great for dynamic content, learning it will teach you about databases and help you make nice UI's.

My personal site is just boring static pages. Hyde (or Jekyll, for the ruby folks) is the right tool for such things.

<comment><USER35> I apologize if my response offended you, maybe I can be clearer with some more detail: _it just seemed odd_ , considering Hyde is linked on the post and Styloot is not (and even there, the only way I know that it has anything to do with django is by finding it under technologies used in your resume).

If you want to become a web developer, then sure– django or rails, take your pick (or anything other framework that suits your fancy, though I too would go with django). But that wasn't your point.

>No one hires PhDs for web development skills, but knowing some basics certainly opens up some doors. I wouldn't want to hire a PhD who would couldn't build at least a demo himself.

Some basics would include HTML, CSS, and Hyde as well, no? Especially if the point is to give yourself a proper web presence such as your own site. I was wrong to call it a 'fleeting interest', that was simply my impression from only looking at the post. However, if you're willing to expand on that bit it would probably be beneficial to those who aren't already aware since they're your target anyway.

Aside from all of this, thanks for the Software Carpentry link– this should come in handy the next time I try to help someone dive into programming.

<comment><AUTHOR> Sorry, I probably overreacted.

The of learning django isn't simply to build a personal website, but to build some easily demoable app to show that you can code.

That, and also because the web is becoming a fairly universal UI system. If you need a GUI, the easiest way to do it is via a webapp.

</comment></comment></comment></comment></comment></comment><comment><USER36> I recently did a blog post about a similar issue, the tension between doing software work in academia vs in industry. In a way a kind of prequel to this post. [http://elazungu.wordpress.com/2012/03/26/the-researcher- prog...](http://elazungu.wordpress.com/2012/03/26/the-researcher-programmer-a- new-species/)

</comment><comment><USER37> I know a tenured professor who is well respected in his niche of engineering specialization. He has attracted several million dollars in grants. The research center he runs, in his words, is a startup with his own hard working employees.

Why work like you are working at a startup in some research lab with no stake?

</comment><comment><USER38> >Also, if your degree is in English, the best I can do is point you here [Tired, old, and stereotypical Starbucks link Hurr durr].

Really? Was that necessary? Why can't someone with an English background learn to code especially with burgeoning fields like NLP.

</comment><comment><USER39> Which EE specializations are generally best for maximizing backup options in industry in govt/finance/data science?

<comment><USER40> If you want a job, go get a job. Don't undertake 6 years of PhD study unless you love what you're doing.

<comment><AUTHOR> That's silly. Most people with a PhD don't get academic jobs. It would be foolish not to plan for that possibility.

I don't know much about EE, but I'll talk about math. It's unlikely you would enjoy research on nonlinear wave equations but hate stochastic PDEs. If one has far better job prospects, it's silly not to focus on that one unless you are dead certain you'll win the academic tournament.

<comment><USER40> PhDs make marginal improvements on one's employment prospects vs a Masters degree.

If you're doing it for the cash don't even undertake a PhD. Go get an MSc, go get a job, save four years of your life.

If you're gambling on getting into academia, you won't get the publication record you need if aren't motivated to do the work, and you won't be motivated to do the work if you don't enjoy what you're doing. If you don't get into academia but do have a quantitative PhD you will get a job quite easily, so why worry about your particular field.

My conclusion is that there is simply no point doing a PhD unless you really enjoy the work you're doing.

<comment><AUTHOR> _...you won't get the publication record you need if aren't motivated to do the work, and you won't be motivated to do the work if you don't enjoy what you're doing._

The point I'm making is that if you are unmotivated in elliptic PDEs, you'll probably be unmotivated in control theory as well. The fact is that research is research.

You might hate experimental physics and love theory, or hate computation but love experimentation, but these distinctions between subfields (condensed matter vs photonics) that seem huge in academia are not that big in reality.

If these small distinctions can give you a big advantage 50% of the time, it's a tradeoff worth making.

</comment></comment></comment></comment></comment><comment><USER41> In my belief system, working in finance or for the industrial-military complex are //unethical// choices for someone to make.

Doing a software startup is the only remaining choice for me then...</comment>


Why I cycled a hundred miles to meet my first customer - <AUTHOR> http://www.cyclelove.net/?p=2190

<comment><USER2> I really like how the author enumerated all his "mistakes" along the way.

I was reminded of my mistakes the night I couldn't sleep and embarked on a full-day bicycle journey up to San Clemente at 3am (mistake #1). Woefully unprepared (#2) and on my mom's upright commuter bike (#3), I got lost in Camp Pendleton (#4) after convincing the entry guard I'd walk my bike all the way to San Clemente since I didn't have a helmet (#5). Pretty soon I started hearing closeby gunfire (#6), found myself next to extremely fast traffic (#7), and was eventually escorted off the premises by a friendly, but firm Military Police officer whose parting words of wisdom were "you might want to try the 5; the highway patrol might have a problem with it, but you sure as hell can't ride back this way!" (#8).

As soon as I got off the base, I opted to explore a bit before immediately taking my chances on the freeway. Sure enough, there was a deserted road a little off the beaten path, sandwiched between the army base and the freeway.

Pretty soon, I realized the MP had inadvertently dropped me off in familiar territory. I was on the very beach trail to San Clemente I had taken with my dad, from many years prior in my childhood when I went on my first multi-day bike tour.

A few whimsical "mistakes" every now and then can make up for the rest of the bullshit in life. Oh, the places you'll go!

Great post, thank you for sharing!

<comment><AUTHOR> Whoooa, that's a fairly crazy outing!

</comment></comment><comment><USER3> I really enjoyed reading this. I liked the writing style, and the mood of the pictures gave the story a good feeling to it.

Thanks for sharing.

<comment><USER4> I agree, it was a very good read.

<comment><USER5> Yea! What a great post. Subscribed to the blog in fact.

</comment></comment></comment><comment><USER6> "No visible lycra — I am not, and do not intend to become, a mammil." "No fancy gear, cleats or hi-vis — I will make the journey as a human on a bike, not a "cyclist"."

Although the article is well written, and the t-shirts are nice, I can't help but feel the author is very narrow-minded. There's nothing wrong with wearing lycra, cleats, or hi-vis - it does not define the type of cyclist. This does nothing to integrate and align the interests of the different cyclist groups (ironically his mission statement is to celibate the diversity of cycling). To each their own, and if your interest is in cycling on busy roads in the dark without any lights, hi-vis or helmet then that's your choice. But don't label those who value their comfort and safety over how they look.

<comment><AUTHOR> I take your point, and with the benefit of hind legs it does sound a little like I'm venomously anti-safety/lycra, which was not my intention.

In fact I did have Lycra shorts on for this ride, always use lights at nights, and wear a helmet for most journeys I make. I've also frequently ridden clad head-to-toe in a certain stretchy fabric.

It's just for this particular outing I wanted to emphasise the fact that you don't need loads of special equipment to ride a bike - as I think this is a misconception that puts a lot of people off getting on a bike in the first place. The more cyclists there are on the road, the safer it becomes for all of us.

CycleLove has covered naked riders, pro riders, pregnant riders and slow riders... I don't really mind how people ride, so long as they enjoy it, and don't endanger other road users.

</comment></comment><comment><USER4> I am amazed that a human being can cover 100 miles in a day, even if on a bike. Awesome.

I feel like such a lazy bum!!

<comment><USER7> The bicycle is the most efficient means of human transportation there is, in terms of distance/energy, as long as you have reasonably surfaced roads or trails.

 _Sigh_... I dearly miss frequent rides.

<comment><USER8> You should move further away from your office.

Or move your office further away from your home.

I went and chose an office location that allows a 25 minute train ride, but the cycle ride following the river is far nicer and only takes an hour... so I do that instead (with the train as fallback if I'm having to make an exception once in a blue moon).

<comment><USER7> Riding != commuting, for me. I mean, being on a bike is nice, but going for a ride implies a more care-free attitude, and the complete liberty to go fast and sweat (there are no showers in the office). My favorite thing, once upon a time, was to just grab the bike in the morning and go.

<comment><USER9> I think you're just looking for an excuse ;)

I do 2h training rides (in full lycra, of course) before work, and we don't have a shower. Come to work, change all my clothes, put some water in the face, apply deodorant and I'm set.

<comment><USER10> I also cycle to work and do the same thing (change clothes, apply deo). Only a 25min or so ride though. I cycle differently to work than going back, makes it more interesting.

</comment></comment></comment></comment></comment></comment><comment><USER11> He was lucky it was only Peterborough. It could have been Newcastle, or Glasgow. When you live in London everything is so busy that it becomes easy to assume that everyone else must live there too.

</comment><comment><USER12> i just came back from a 100 mile ride - you're a nutter to be doing it without cleats - you lose so much energy and it's asking for foot/ankle problems if you don't have stiff soles. i hope you had straps at least.

as for the lycra i have to say i feel the same way.. it stays underneath or is replaced by too-expensive rapha stuff where applicable.

nice tshirts anyway.

<comment><USER13> That isn't actually true. Cleats or no, the power comes from the down stroke not the up stroke: see [http://roadcyclinguk.com/riding/bike-fitting-the-myth- of-the...](http://roadcyclinguk.com/riding/bike-fitting-the-myth-of-the- upstroke.html) . While there are good reasons to use cleats (mostly so your feet won't come off the pedals), I haven't seen any evidence of significant efficiency gains. Furthermore there are plenty of ordinary shoes with sufficiently stiff soles to cycle in.

<comment><USER12> that's interesting.. i would have said from feel that accelerating and especially sprinting up hills i was pulling up - but perhaps the benefit is just that my feet are stuck to the pedal at the top rather than lifting off.

</comment></comment></comment><comment><USER8> Hey, 3stripe! Good to see you on here, I didn't realise that you were. Great blog post, drop me an email or PM and I'll put a mention in the LFGSS email for you.

Are you going to Impetus Momenta on the 6th? If so... see you there.

Velocio

<comment><AUTHOR> Have been lurking here for a good wee while :)

That would be sweet. I'll PM you on LFGSS. And yes I should be at IM, meant to be taking some photos for the blog.

Cheers, J.

</comment></comment><comment><USER14> Amazing story! Love this.

</comment><comment><USER15> Great story and photos.

</comment><comment><USER16> great. long life to your venture!

</comment><comment><USER17> Why would he not ship the item via mail?

<comment><USER10> That's explained in the blog.

</comment></comment><comment><USER18> Wow.</comment>


Ask HN: How does something like MyGamerCard.net make money? - <AUTHOR>

I'm just curious how this site has been running for years with what appears to be only ads and donations as a source of income. How have they sustained this long offering a services for free. I would think that they'd have a pretty hefty bandwidth bill for delivering all the images. <comment><AUTHOR> Clickable: <http://www.mygamercard.net/></comment>


Ask HN: Would you fire this developer? - <AUTHOR>

A few months ago, our start-up hired a new developer. Unfortunately, he is not working out. He fits in poorly with the team for two basic reasons:
* He is a weak contributor. He is neither proactive nor especially attentive to detail. He is slow -- slow to understand existing code, slow to write new code, slow to solve problems, slow to get things done. The quality of his work, once complete, is sometimes good, but frequently mediocre.
* He is a poor cultural fit. He does not have a good attitude. He is often negative and complains.
We have tried to coach him on some of these things, and he has gotten a little better over time, but honestly, I think he simply lacks the talent and the right personality for this job. I do not think he would ever sufficiently change or improve.
(For what it is worth, we see this situation as a huge pile of fail on our part. We made a bad hire. We are changing our hiring processes to attempt to avoid making this mistake again.)
It is well known that our company is actively recruiting developers. Were we to terminate this person's employment, it would be clear to everyone that we sought to remove this person in particular.
Is it appropriate to fire a person like this? What is the kindest way to do so?
Note: I am in an at-will employment state. <comment><USER3> Yes, yes, a thousand times yes.

"Hire slowly, fire quickly" is an oft-repeated maxim for a good reason.

As for the most humane way to fire someone in a startup, I have a few thoughts (borne from several misfires earlier in life):

1\. Sit down with your employee and give them a formal warning. "You're not performing up to our expectations, and if things don't improve within 14 days, we're going to have to replace you." Give them a list of specific items to work on.

2\. On the day of the firing, _always_ have two people from your company present in the room. This mitigates a surprising number of "he-said/he-said" type disputes, and also (surprisingly) leads to a less contentious conversation. If it's just the two of you, the odds of someone saying something they'll regret increase substantially.

3\. Be generous with severance. I've never regretted giving an employee 4 full weeks of severance, no matter how junior.

4\. Be direct. Resist the urge to treat it like a high-school breakup (i.e. "It's not you, it's me.") I have always been advised by HR professionals to _never_ mention "cultural fit", as it's a gateway to wrongful termination suits. However, I have been ignoring this advice for about a decade. I believe an honest firing trumps a legally "safe" firing.

5\. Most importantly: don't plan on doing anything else for the rest of the day. Take your team out and order drinks. If your other team members want to go home after lunch, by all means let them. In a small team, terminations can be very emotional for everyone, and nobody feels good about working right after their coworker got canned.

<comment><USER4> I find your fire quickly maxim terrifying, but then again I live in a different culture with different labour laws.

Do you really think that OP's man management skills could be so infallible that he's already getting the absolute best from this guy? If he's not a cultural fit, then it's distinctly possible that the things that motivate the others don't motivate him. Surely it's better to make sure that the employee is as motivated as he can be, and is given an opportunity to improve before just throwing him out of the door.

I would never again work in the types of places that follows the maxim you describe. I've worked in those types of places before, they're horrible, hollow experiences where everyone chants about how awesome they all are and pulls all-nighters instead of being with their families, just to hide the deep seated job insecurities underneath.

<comment><USER3> Where are you from?

You're absolutely correct that hiring and firing, like all management, is highly dependent on culture.

In North America, the overwhelming majority of research has shown that organizations that "hire slow, fire fast" have _more positive_ work environments, with _happier_ employees and _lower_ job insecurity. You could literally fill a small library with the books and papers that have been written on this topic.

I would love to know more about your culture and the "hollow experiences" you're referencing.

<comment><USER4> I'm from the UK, and have worked for American companies before. My experience with working for American tech firms (and I'm not saying that they were like this because they were American, my sample is way too small to draw any conclusions) is that compared to the UK they tend to overwork people, focus heavily on building a culture with an overly (for UK culture at least) gung ho spirit a la 'yeah, go team foo!' - which in my experience (and again, not saying this is all American firms, just the ones I've worked for) means people working crazy unpaid hours, pressure to go out after work (if you're not out drinking after work you're not part of the team - I've seen two ex-colleagues' marriages break up because of this) and a corporate kick-off culture that seems to be more about a Ballmer-esque 'Ric Flair impressions contest'[1] than achieving real results. For me personally, this doesn't line up with my culture and as such feels forced rather than based on genuine bonds - <USER2> the hollow sensation you've quoted.

By contrast, British companies tend to focus more on getting the job done, going home and spending time with the family. Sometimes you pull late ones, but you're not expected to be in the office at 9am the next day. In some places there's beer after work, but you're not expected to go (at the risk of being denounced as a 'non-team player').

To provide a comparison, working in France is completely different. In France the work-life balance is shifted further towards the life end, in the Middle East (if you're a local) even more so.

[1] - <http://www.youtube.com/watch?v=wvsboPUjrGc> \- ok, that's an extreme example, but tone it down about 97%, crank the alcohol levels up by 40% and you're roughly where ISS was in 2001.

</comment></comment></comment></comment><comment><USER5> You sound exactly as I did 12 years ago, right down to the rationale and the description of the employee.

If you haven't fired this engineer yet, or started moving in that direction, feel free to contact me directly at firstname.lastname@example.com. I'm happy to talk through it with you. I am not an HR generalist or a lawyer; I am a seasoned manager with over 20 years of experience who takes his responsibility to team and company very seriously. I can tell from reading your post that you are clearly struggling with this.

While I do agree with portman's advice below as it clearly shows experience and thoughtfulness, I disagree with most comments in this thread on several principles:

1\. I hire quickly, trusting instinct. 2\. I fire very slowly, if at all.

One key trick to understanding humans and being successful with them is that despite marketing demographics we are all motivated differently and relate and filter things differently.

Each time you make a decision to let someone go, ask yourself whether the employee failed or whether you did as their manager and leader. There are clear cases where a person shouldn't be in your organization, but practice and experience has taught me time and again that an employee's failure is the direct result of bad leadership, laziness or a lack of character - in the manager.

Clearly the person was qualified enough to obtain the position. Everything after that is up to the managers and leaders in your organization. If the person just isn't fitting in, can't offer value for the cost, at least make sure after you've sacked them that you understand what about that person misled you in the hiring process.

Years ago I built several organizations and led each for over a year. One hire of the last company constantly irritated me, I mean really, constantly bounced up and down on my last nerve, cutting away with a hacksaw...

1\. I was not understanding what this employee needed from me to be successful in assignments, or even about what I expected in terms of work ethics and acceptable use of time at work.

2\. The employee understood that I was dissatisfied but I was giving him mixed messages by not being frank with him. I was trying to over manage his problem, which wasn't a technique that worked.

3\. I was not fair with this person because I treated him the same way as the rest of the team. A big mistake considering that two team members were total rock stars, upbeat, proactive, interested and fully aware of how lucky they were to have their position. I really, simply, didn't know him nor did I really make time to get to know what made him tick.

So I started to work on his separation process and as a part of it, I pulled a few members of the team aside and asked them what they thought. No one really had a problem with him, except that, shockingly enough, he didn't seem to understand my direction and wasn't able to make progress.

One of my .. hah .. junior developers said to me, "Hey, Robert is just the kind of guy that needs a list.". Since Robert was on a team of people that generally needed less input that the rest of my departments, I was kind of put off by such simple feedback.

So, I started shifting assignments to Robert that were moment to moment, short tasks and within weeks we had his productivity up, I had learned a valuable method of evaluation and had realized fundamental gaps in my own skills and abilities as a leader. Within a month, Robert had taken over as a team floater and input/output guy. The entire technology wing of the company came to rely on him five or six times a day; when you're building a tech and a market at the same time under pressure and on tight budgets, this was invaluable.

Basically Robert became the technology group's go to guy for anything from packing up deployments to testing functionality to scripting self-tests. You name it. The key was understanding that Robert needed short term accomplishments, measurable tasks and in a short period of time, he and I and his manager learned a very rewarding style of working together.

At the end of the day, properly utilized and managed, Robert became a star in his own right. If engaged, he would easily get jobs done faster than anyone else in the company, and while needing more maintenance and direction than other team members, he was a huge savings in time and distraction for so many others.

Don't fire your guy until you've had a chance to analyze why there is a breakdown. You're doing yourself, your initial impulse on hiring him, and the employee a disservice.

<comment><USER6> That - in a nutshell - is the difference between 'finding' and 'growing' staff, and I'm of the opinion that we should be shooting for growing unless there's a damned good reason to take the shortcut of just finding.

It's an easy productivity tweak for your whole operation to just switch how you look at things from the other opinions posted here to this way, IMHO.

<comment><USER5> Thanks for supporting the dissenting opinion. :)

I've had to grow a large staff in the dearth of available people in the 90's and we did just fine technically. Mentoring and leading isn't just managers. Picking people that are able to conceptually and effectually lead in their technical role, (while more challenging to find and often harder to manage), are great force multipliers.

Hiring is an art best practiced by the person on the hook for results, not an HR or hiring consultant or some other source. You really need to build a village of skills, personalities and often sense talent before the individual is even aware of it.

I love team building and I love helping individuals rise to excellence. Probably the single most rewarding aspect of my career.

</comment></comment></comment><comment><USER7> We had to do this recently as well. You have to get rid of him. A poor performer in your staff will drag down morale and destroy productivity. Keeping him on will send the message that you don't care about performance.

It is acceptable for you to fire an employee that is not performing at the expected level, in the same way it is acceptable for a new employee to leave after a short period of time if the job doesn't feel like a good fit.

Removing him will assure everyone else at the startup that you care about the quality of people you keep around; it's very hard to be dedicated if you know there are poor performers dragging things down.

</comment><comment><USER8> Been in this situation. Didn't let-go due to emotional reasons. Became much more messy later. Reduced entire team's performance.

Still regretting it after two years. We could have used the budget for a better performer!

It might help to think you're not 'firing' the person for non-performance. Rather you don't have a good fit with him.

There may be other organisations where he may well thrive with more structure and direction (perhaps in services).

</comment><comment><USER9> Don't think for one second you have any choice. You absolutely must fire him. Companies start to suck because of these people.

I highly recommend exchanging a generous severance (6-8 weeks) for a signed agreement waiving his right to sue for wrongful termination (and anything else).

Every day people sue companies because they know how easy it is to get them to settle. Get him to sign an agreement and pay him for it. Get a lawyer that specializes in labor law (in your state) to draft the template.

</comment><comment><USER10> Consider acute adjustment disorder if less than 6 mo, if greater, consider untreated depression. Ask him to assess external factors (gf dumped him, dog died, kid diagnosed with something awful (scale of ten, death is an 8), went in debt to move to you?)

If you are transitioning and need to start getting reproducible results from employees, consider getting a psychiatrist or psychologist to help you build profiles for successful and in-trouble employees.

<comment><USER11> eh, I have personally been diagnosed with ADD, and I don't perform all that well without medication. Psychiatrists and medication can help /a lot/ - but I still disagree with the advice. As a boss, you need to tell the employee what you need, and if he or she can't provide that, you need to let them go.

Telling someone "go see a psychiatrist- get medicated" /almost always/ leads to an even more negative reaction than just firing them outright. I mean, this is something that is /very difficult/ to tell someone who is a close friend without encountering a negative response.

on the other hand, if you /can/ provide health insurance that covers that sort of thing, by all means, do so. If you can encourage people to use the psychiatric portion of the company provided health insurance during the insurance orentation (not singling out one person) that's also great.

I'm just saying, you can't really say to a guy "hey you... you need to go get on some medication." I mean, it probably brings up all sorts of legal issues, too; I'm just saying on a social level, you are going to get a better reaction telling the guy to jump off a bridge, even if you have a good point.

<comment><USER10> >As a boss, you need to tell the employee what you need, and if he or she can't provide that, you need to let them go.

Really? I'm pretty sure "taking care of your people" is a huge part of a boss's job. I certainly take it as part of my job as a boss. Would you fire someone with a broken leg who refused to go to the doctor? What about a torn ACL? You can walk without an ACL, your abilities are just degraded.

> /almost always/ leads to an even more negative reaction than just firing > them outright

From a young, single man's perspective, maybe. But in the end you're just helping this person kick the can down the road.

> Hey you, you need to go get some medication

That is definitely not what I'm advocating. But a boss should definitely have the gumption to assess the situation coldly, understand all the options, and expect the employee to make a decision _before_ firing them outright.

>I'm just saying ... I'm just saying

You need to talk less and think more.

</comment></comment></comment><comment><USER12> Hire slowly, fire quickly.

I don't think it's a matter of if, but a matter of how.

</comment><comment><USER4> If you can easily replace him, in the cold heart of day then you should look at all the options. Firing him is one, but it's better to look at his skills and weaknesses and see if there's anywhere else he would fit to still provide value.

The kindest way to do so is this:

Before you fire him, try to measure what he's doing and the value he generates. Look for alternative employment for him in company as an option and bring him into a meeting room with two people, explain that he's underperforming and develop a performance improvement plan with him as well as offering the alternative employment if it's appropriate. Minute the meeting, give him the option to change the minutes and get him to accept them over email. Re-evaluate his performance again over the next couple of months and make a decision. Once that's made, bring him back into the meeting room, inform him of your decision, stick to it and act on it.

Having said that, you're in an at-will state so the type of thing I've described probably doesn't happen there. It's really down to you, but I've always sought to get the best out of my employees. Not everyone is a rockstar (to abuse the word horribly) but some people can be solid, dependable backup players.

You should also think about the effects of terminating this guy's employment on the morale of others. Unless it's obvious to everyone else that he's not doing his job, or that he's causing friction and problems in the office people may react badly. You need to manage this.

</comment><comment><USER13> Documenting their performance is probably key. I don't know about "kindest", but I think this is probably the most professional thing you could do. This way, they have a clear idea of what your expectations were (which you should have communicated at hiring and during reviews) and how they failed to meet those expectations.

I don't know what state you're in, but even in some at-will states, you could be on the hook for wrongful termination...documentation will go a long way in protecting you on this front as well.

<comment><USER14> This is a good approach.

At the very least, it helps to have been clearly communicating expectations so they're aware that they're not meeting those expectations.

Honestly, few are going to disagree based on your description. The way you presented it makes it seem obvious. I think you're more likely trying to overcome personal qualms or guilt about having to take this action, which is perfectly normal and shows you're still human, when you already have your decision made. It sucks, but it may be necessary.

You can present it as a choice: they have to want to work harder and longer or your organization may not have been what they were looking for---that it isn't their optimal fit.

</comment></comment><comment><USER15> If the sitution is as described then the obvious answer is yes. People don't change, so attitude issues are hard to rectify once the settle (certainly not in the timescale of a young startup).

That said, the big take-away shouldn't just be to change your hiring process but rather to (also) change your management process. I find that staff attitude is set by both sides during the first few months of employment. At that point it "locks in" and is much harder to change later.

</comment><comment><USER16> Dear anonymous, I don't have much experience in firing people but I have read and watched quite a number of startup books and videos to understand a reoccurring theme when hiring people, especially for a startup: Make sure they fit, and don't drag down your company. One huge red flag was how he does not fit the groups culture. His skills might suck but if he was a punching bag for other developers to throw ideas at him and in turn it helped them solve their issue, at least that's good. From what it sounds like this guy's personality within your company is uncanny to a dead moth. I remember this chapter from Rework from 37signals: <http://37signals.com/svn/posts/1430-hire-managers-of- one>

Good luck and tell us what happens.

</comment><comment><USER17> As zdean mentions, document. Take that seriously.

Many positions I've worked in the past had an explicit "probation period" of 3 months. However good your hiring process, sometimes you just get a bad fit. Try really hard to hire well, but be prepared for when it doesn't work. I'm guessing you didn't specify a probation period.

Something I've heard good things about is moving someone into another role rather than fire them. I understand if you don't have that option as a startup. Also, if this person is truly negative then you really don't want them in the company at all. But if the negativity comes from them recognizing their own poor performance then moving them into testing or something may get you a win. This seems tricky, and relies on excellent judgement on your part.

</comment><comment><USER18> "Nice guy I don't give a f _& k. Good father, f_&k you, go home and play with your kids. You want to work here close!"

<http://www.youtube.com/watch?v=y-AXTx4PcKI>

Probably not the best "formal warning", but fun all the same.

</comment><comment><USER19> The best time to fire someone is the first time you think about it.

<comment><USER20> Yes thats how important decisions are made.

</comment></comment><comment><USER21> Just do it. Keeping someone around who doesn't pull his weight AND has a bad attitude is poison. Cut the losses (yours and his) and get it over with.

Also, don't give advance warning and don't give reasons. Warning just creates risk for you and stress for him. Giving reasons is legally problematic, and he's not going to believe what you tell him anyway.

Just tell him that it's not working out, that you wish him the best, and hand him a final paycheck. Severance might be nice, if you can afford it.</comment>


Postgresql 9.6: Support parallel aggregation - <AUTHOR> http://email@example.comemail@example.com <comment><USER2> I am totally impressed by the work 2ndQuadrant is doing: many of the recent innovations to Postgres have been done by them and all of that without any obligation for them to be doing so. The BSD license would allow them to add all of these things to a proprietary fork that they could be selling.

Or they could just release their own fork under an open license and focus on just adding features.

But that's not how they work. All of their contributions are pushed upstream which is a very considerable effort with how conservative Postgres is at accepting new functionality.

Aside of that: there are 2ndQuadrant employees in the #postgres IRC chat room, helping people with daily support issues. This is their core business and yet they still help people for free (within reason). This is bloody impressive.

If I'm ever at a point when I need help with a Postgres issue, then they will be very first of the list of companies I would consider.

Thank you very much for all that you are doing.

<comment><USER3> I wish they would build a RDS alternative. I would use them in a heartbeat. There are all these companies/startups who are not in the target market for consulting... But who would gladly pay for hosted postgres.

<comment><USER2> Just a little heads-up: Postgres is very easy to run on your own and even in the default configuration runs well even for a considerable amount of users.

Over here, we only started to seriously thinking about what we're doing once we were handling in the order of 10K transactions per second.

Once you are at that level, you're probably going to need optimizations specific to your application and a generic database hoster might not be able to help you anyways.

I get that as a startup you don't have people for everything, but can you really afford to outsource the knowledge about the central piece of your application where all the value is stored at?

<comment><USER3> I have a fairly sophisticated docker VM with wal-e, replication and everything running. Yes - I am aware of what you say.

Hosting the dB has never been the knowledge about central piece of application. you may disagree (and I respect that), but for me it has been similar to building a RAID-10 dedicated server vs using AWS.

You can argue that maintaining data resiliently is a critical part of the organization - but at what stage? In the first 3 years of a startup, you are iterating the product. You are pretty much agonizing over drop rates, conversion rates for every single minute of your life. The fact that data will crash NEEDS to come a distant second.

Dropbox has only just moved out of AWS. Storage was probably the most critical part of Dropbox, but it chose (rightly) to focus on customers first.

What you are talking about will come - but it will come after some time. And till then I would love to pay some postgres devs to run a hosted dB for me...like RDS.

</comment></comment></comment></comment><comment><USER4> FWIW, a simple benchmark by David Rowley (one of the authors of the patch) are here:

[http://blog.2ndquadrant.com/parallel- aggregate/](http://blog.2ndquadrant.com/parallel-aggregate/)

<comment><USER5> The article claims a near linear speedup for a very large query. On a 64 core machine, the query takes:

1375s with 0 workers

131s with 10 workers

56s with 30 workers

</comment></comment><comment><USER6> It looks like in 9.4 PG went after the document databases and now they are after Oracle. I don't know why I get excited with point releases of postgres, but I do.

<comment><USER7> Because they are building an open source industry leading database. What's not exciting about that!

<comment><USER8> Is anyone still starting with MySQL anymore?

<comment><USER6> "mySql" is dead to me. Literally. Anything Oracle touches becomes a potential legal liability. Its Maria DB now and although I do maintain a legacy 100GB+ MARIA db, I will never use it again for new projects. The thing about postgres is that once you start using it you understand there is really very little competition in both the open or commercial worlds. My previous big project relied on mongoDB for statistical data. At the time there was no other compelling document database for our use case. Today, this decision is no longer relevant because if I can get the same functionality and performance out of Postgres I will choose postgres. The ability to combine the SQL with "NoSQL" is just too compelling.

</comment></comment></comment></comment><comment><USER9> There is going to come a point where Postgres passes Oracle in terms of features and performance.

There is also a point that Postgres will perform with enough features needed by most businesses that they'll choose it even though it doesn't match Oracle on a feature by feature basis.

We have hit peak Oracle. From this point forward it's going to be hard for Oracle to regain momentum. Expect a lot of FUD against Postgres - the more you see, the more worried you know Oracke execs are becoming.

<comment><USER10> First hand experience, I work for a bank which is a Fortune 100, and our department was heavily relying on Oracle Exadata, paying between 1-2 millions (don't know exact figure), we moved away to PostgreSQL and Casandra. Cost factor was not the only motive (1-2 millions was actually penny for this bank) but our Director was convinced that exadata was unnecessary.

<comment><USER9> Out of interest, what are the benefits of Exadata, or is it really a bit of emperorer's new clothes? Can you not get similar performance with similar good hardware?

<comment><USER11> Exadata:Hardware used to be competitively priced (at least in the x4 age), its the licensing for the software on top that makes it really expensive.

The other thing is that some oracle features only work on exadata or other engineered systems. The hybrid columnar compression for one and query offload as well as some forms of the in memory stuff. The problem is that these are very high end features and most of us live happily without these. Postgres is going after the bread in the oracle db market while exadata is the exclusive cheese shop. Much smaller market even if the margins are better.

</comment></comment></comment></comment><comment><USER12> Short of doing a deep dive into Postgresql, do any universities use Postgresql as a basis for their DB implementation courses? I wanted to dive into Postgres and was hoping for some training wheels. Thanks.

<comment><USER13> PG is, IMHO, probably one of the best code bases for this.

I'm far and away not a database hacker, but have read parts of the code at various times to better understand what I was seeing. The codebase is incredibly well written and organized, and the documentation (both developer and user) is top-notch.

The only problem I can think of with using it in a course would be choosing what to focus on with only a semester. Add in the long revision history and I think there are also multiple theses in there on the sociology of open source.

</comment></comment><comment><USER14> Blog post with some details and benchmarks by one of the authors of the patch:

[http://rhaas.blogspot.com/2015/11/parallel-sequential- scan-i...](http://rhaas.blogspot.com/2015/11/parallel-sequential-scan-is- committed.html)

<comment><USER4> That's not about parallel aggregate but about parallel scan.

Also, Robert is not the author of the patch, he did a review and committed it. The actual author are listed in the commit message: David Rowley and Haribabu Kommi.

</comment></comment><comment><USER15> I would love to see some sample benchmarks for the type of gains you might see from this. I always see these interesting new PostgreSQL features being posted, and they sound cool, but it's hard to know how much they help in practice. I understand it's often highly workload and data dependent, but something would be better than nothing.

<comment><USER16> It would help a lot for typical data warehouse queries that involves aggregating millions to billions of rows. SELECT EXPLAIN ANALYZE will tell if its relevant for you ;-)

<comment><USER15> > SELECT EXPLAIN ANALYZE will tell if its relevant for you

That assumes I run PostgreSQL already, which I don't. I _am_ interested in possibly switching at some point if it's worthwhile, but it's hard to muster the effort to do concerted testing of a representative sample of my data, including possibly changing how queries are done to take advantage of specific features, when I have little information to go on.

Not that I expect PostreSQL to do in-depth analysis of everything, but it would be great from both a promotional and technical standpoint if there was something like "we've seen something like X% speedup of queries utilizing Y, and up to Z% speedup in extreme cases." I mean, I assume they at least have rudimentary numbers for this, otherwise they would be making blind changes without knowing whether it improved or _degraded_ performance. Providing just enough to get people interested in doing their own benchmarking (and possibly publishing them) would be great for everyone.

Edit: One of top comment is actually what I'm talking about (but apparently for a different feature). So it does get done, which is really nice. :)

Edit2: Now there's the link to the blog post for this feature. :)

<comment><USER17> If you aren't using it now, and thus don't know how fast or slow it would be on your data and queries, why would you care about percentage speed ups?

It could be a 1% speed up from insanely fast to slightly more insanely fast, or a 100% speed up from unbearably slow to just extremely annoyingly slow.

I gather that people considering migrating who want some reassurance before investing time in testing should be more interested in such things things as benchmarks that show whether PostgreSQL can saturate your hardware for various query types, benchmarks that compare its query planner against that of competitors, and benchmarks that show how well it works under load.

<comment><USER15> >> I am interested in possibly switching at some point if it's worthwhile

> If you aren't using it now, and thus don't know how fast or slow it would be > on your data and queries, why would you care about percentage speed ups?

I'm working under the assumption that similar operations between PostgreSQL and MySQL for operations that aren't using an advanced feature that the other plainly doesn't support will be _roughly_ comparable in performance. I understand this isn't true, but it's useful in that it gives me a baseline to work with when reasoning without forcing me to migrate my application (or at least a significant portion of the data) to PostgreSQL just to test. If I'm then confronted with a feature that one supports and the other doesn't that has the capability to in some cases reduce the query time by an order of magnitude, then it's starts approaching the criteria needed for me to invest that time to see if it's worth migrating.

> I gather that people considering migrating who want some reassurance before > investing time in testing should be more interested in such things things as > benchmarks that show whether PostgreSQL can saturate your hardware for > various query types

Isn't that exactly what this is? Throwing CPU cores at aggregating data to reduce time? I asked for benchmarks regarding this specific feature, to see what type of gain we were talking about with this. I didn't ask for comparisons to other databases because those benchmarks are generally harder to perform fairly, so I would have been (and am) happy with comparative gain benchmarks.

</comment></comment></comment></comment></comment><comment><USER18> A slight tangent, but I am still shocked that many open source projects lack downloads via https (including PostgreSQL). Sure you can offer some layer of security by signing the distributions, but ultimately users are lazy.

<comment><USER6> Out of curiosity what does it matter if your postgres download is via http or https? Is there any benefit of hiding your download from prying eyes?

<comment><USER19> To put it another way it's less about prying eyes and more about MitM attacks.

<comment><USER20> I really do wonder whether there's a verified "path of trust" where I can get a copy of e.g. Debian (without knowing what the canonical website for Debian is), install it on a machine, connect it to the internet and update it, without being at all vulnerable to a MitM attack at any step.

I would be suspicious that it's the very first step that poses the most danger: there's little way to know whether minor-distro-X is "properly" hosted at minordistrox.com or distrox.org or even distrox.github.io, other than by blindly trusting the relative PageRanks of each.

\---

Something that would be very nice, I think, would be a way to rely on the package-signing infrastructure of the OS you've already got (and trust), to guarantee for you the copies of any new OS images—even for different OSes!—you download. Sort of the same way you download new versions of OSX through the Mac App Store, but going a bit further.

Now that I think about it, the browser-preloaded HSTS list might do the trick... _if_ it was coupled with a mapping of 'important well-known downloads' to a single (HSTS-preloaded) domain you should be allowed to get those downloads from. (Presumably with heuristic detection, so it could find "something looking mostly, from its metadata, like a Debian ISO image.") Then your browser would just tell you you're being phished if you're trying to get a Debian ISO from debianisamazing.info.

</comment></comment></comment></comment><comment><USER21> it's pretty interesting especially for those of us who are creating analytics tools on top of postgresql, the increase performance would certainly permit less denormalized work-around , like creating "manual" aggregate directly in the database (with all the problem of keeping them in sync with the rest)

and I'm still here waiting for 9.5 to arrive in RDS of amazon :(

</comment><comment><USER22> Does it have generic upserts yet?

<comment><USER23> What do you mean by generic ? Upserts were implemented in 9.5

<comment><USER22> As in you don't need to write a unique PL/pgSQL routine for each kind of upsert you want to do.

Oh, it does have upserts now. Awesome =]</comment></comment></comment>


VCS based on categorical theory of patches (2017) - <AUTHOR> https://jneem.github.io/merging/ <comment><USER2> Are there any endeavors to decouple VCS interface from the implementation? An analogy is LLVM, but for VCS, in terms of modularizing the architectural layers. It's difficult justifying learning a new VCS when popular open source projects and employers select for particular systems. Surely there are tradeoffs, but enabling developers to use a familiar interface such as Git would reduce the friction of adoption, while still providing the benefits associated with a particular implementation that's suited for the project.

<comment><USER3> Probably not what you mean, but there's an alternative patch theory implementation as a Haskell library: [http://liamoc.net/posts/2015-11-10-patch- theory.html](http://liamoc.net/posts/2015-11-10-patch-theory.html)

</comment></comment><comment><USER4> That's a lot of text not to mention Darcs, which I believe introduced the "unordered set of patches merged by mathematical theorem" [1] 15 years ago.

I was a heavy Darcs user for a while before switching to Git. The biggest flaw in the "set-of-patches" model IMHO is the inability to quickly compare the state of two repositories. With Git, this is trivial -- since commit hashes represent the entire history, just compare them. With a Darcs-style VCS, you're limited to only comparing patch sets that have been explicitly tagged, or comparing the repositories patch by patch. And the existence of rebasing (which is sometimes necessary even in Darcs-style repos) pretty much negates the main benefit of the set-of-patches model.

[1] [https://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theo...](https://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory)

<comment><USER3> Yes, I don't understand why Pijul didn't re-implement the guts under basically the Darcs interface rather than re-doing it all. It's not obvious that it wouldn't fit.

I don't understand the comparing repos requirement. if I'm comparing Darcs branches it's going to be for the presence or absence of certain patches; what else do you normally need? Also, how does Darcs' rebasing negate the benefits of the model?

<comment><USER4> > I don't understand the comparing repos requirement. if I'm comparing Darcs > branches it's going to be for the presence or absence of certain patches; > what else do you normally need?

It's a lot easier to tell someone "I have commit 94ba73df, check that out", than to send them a list of 10,000 patches they ought to have.

> Also, how does Darcs' rebasing negate the benefits of the model?

What I mean is, the fact that _Git_ (or Mercurial, or whatever) has rebasing mostly negates the benefits of the Darcs model (since it's nearly as easy to move patches around), and does so without adding any complexity, since it's not like you can do away with rebasing entirely in Darcs anyway.

</comment></comment></comment><comment><USER5> This is very nicely written. Isn't the principle essentially similar to vector clocks? It certainly _feels_ very similar.

<comment><USER6> What's a vector clock?

<comment><USER7> > What's a vector clock?

[https://en.wikipedia.org/wiki/Vector_clock](https://en.wikipedia.org/wiki/Vector_clock)

</comment></comment></comment><comment><USER8> That was weird: an hour ago I was reading "Version Control with Git" about merging and thinking "Hey, this is all just category theory", I then have a look at HN, and see this.</comment>


Continuous Deployment Immersion - <AUTHOR> http://www.threeriversinstitute.org/blog/?p=488 <comment><USER2> I really like the idea of devoting the entire team to improving the processes, helps avoid the inevitable annoyance by uninvolved devs to the changes. To use manager speak it gets "buy in".

</comment><comment><USER3> Deploy early and continuously, ideally in a single step - but that's a given.

Not sure what, if any new, point is being made here.

<comment><AUTHOR> Many organisations are not even at the stage of automating their deployment process. Yes, this process seems obvious for those of us who are constantly seeking a better way to do things, but many software development shops are still doing bespoke builds and manual deployments. What seems obvious and intuitive to you is new, scary and different to many people.

<comment><USER3> I would think not for the audience of HN.</comment></comment></comment>


Playing Pokémon Go before it's released in your country - <AUTHOR> https://medium.com/@gboxmuchacho/playing-pokemon-go-anywhere-162206fd0c91 <comment><USER2> nice</comment>