It Takes 6 Days to Change 1 Line of Code - <AUTHOR> http://edweissman.com/it-takes-6-days-to-change-1-line-of-code <comment><USER3> Honestly, for code that controls millions of dollars worth of business and could seriously screw over a lot of people if a subtle flaw was introduced, I don't see a problem with doing it this way.

Might be overkill for one line of code, but where do you set the threshold? If you say any change longer than four lines is subject to this process, then people will work on trickling in new stuff in increments of four lines at a time.

Also, I can do a lot of damage in one line.

<comment><USER4> Reliability and quality are obviously important, but you have to question whether all these steps are actually helping you to achieve that.

All of these items in the story add overhead and reduce agility, but potentially do _very little_ to improve quality:

      - Mandatory paper trail via fields on the issue tracker
      - The need for documented internal sign offs
      - Standards and policies with no clear reason for the existence
      - 'Micro' Code reviews
      - Excessive permissions and security processes internally
      - No pragmatism with regards to testing the change

This kind of stuff is a constant and substantial overhead on getting anything done. You need to look at these processes very critically and be very sure of the benefits in terms of quality before introducing it.

<comment><USER5> Exactly. The point bengl3rt was making, I assume, is that cavalier avoidance of process is a bad thing because it allows mistakes to happen that would be caught. That much is true.

But the assumption that's wrong is that _all_ processes avoid mistakes. Clearly they don't.

And some of the examples here are just plain cargo cult misapplications of good ideas. The point behind code review is to catch design flaws in _new_ code. You never want to demand refactoring of existing code in order to patch features, that _hurts_ , it doesn't help.

<comment><USER6> This quote is appropriate here:

Skilled people without a process will always find a way to get things done. Skill begets process. But process doesn't beget skill. Following a recipe won't make you a great chef – it just means you can make a competent bolognese. Great chefs don't need cookery books. They know their medium and their ingredients so well that they can find excellent combinations as they go. The recipe becomes a natural by-product of their work.

From [http://the-pastry-box-project.net/cennydd- bowles/2012-march-...](http://the-pastry-box-project.net/cennydd- bowles/2012-march-28/)

<comment><USER7> Er... great chefs _do_ need cookery books. They may not refer to them as often, but you won't find many chefs out there without a collection of cookery books. They still use recipes for things they're not familiar with.

Besides, skill may beget _product_ , but it doesn't necessarily beget _process_.

<comment><USER6> >> Besides, skill may beget product, but it doesn't necessarily beget process.

Oh boy, talk about not seeing the forest for the trees. For skill to beget a successful product, you must follow a process to get from nothing to product. So in the course of creating a successful product you have automatically created a process -- the process to build the product. That process may be used one time, or multiple times -- but it's still a process.

<comment><USER7> Not seeing the forest for the trees? Hell, if we're going to use that loose a definition, _everything_ is a process, regardless of skill level. Even if you end up without a product, to get the steaming pile of crap you abandoned, you went through a process.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I seriously don't see the problem. The author seems to be assuming that taking 6 days to have a change made is objectively bad.

Does the company run? Does it make money? Do the systems work and stuff?

Well, if whatever you're doing now to keep the systems working and the company running and making money obviously works so I'd say it's objectively good.

The experience may feel bad subjectively but how you feel is of trivial importance when compared with the health of the company as a whole.

It's all about risk right? Like if the company wants to spend $50,000 to change 1 line of code, and it's not going under, then that's obviously the right decision. It's just the same as spending millions of dollars per year on insurance and then complaining when the place doesn't burn to the ground.

The "move fast and break things" attitude of Facebook works for Facebook - it's a different company.

Small startups can break whatever the hell they want because they're not making any money yet.

An established company with a functional system that makes money has to take measures to protect it, because that functional system is where _all_ the value is in the company.

<comment><USER9> I don't see the problem either.

The article is extremely self-centred, and doesn't deconstruct why this is bad for their business.

The programmer's job is to help the business achieve its ends. If she feels stymied by process she needs to discuss it with the business. If she's criticised for taking too long she needs to lay out where the time went.

Imagine if lawyers wrote articles about how it took months to convict someone that's obviously guilty?

<comment><USER10> The business wanted to s/3/4/ on a single line. The reality is that President, CEO, CIO, etc. don't really care about whether this parameter is configurable, if there are specific test plans, if the test team is happy with the variable name, etc. They don't want to do a layoff. So they asked the developer to perform the s/3/4/.

The developer did so, reasonably. Then it sounds like the self-righteous testing and security people stepped in and basically said "well, this might be delayed because it doesn't follow our standards and we don't have all the sign-offs. This might mean layoffs, lost profits and so on, but damn it we have to follow our policies!"

Sounds like the IT dept. is not enabling the business. They are, instead, hijacking it, substituting their own priorities for those of the whole enterprise.

<comment><USER11> IME process doesn't spring fully-formed from the head of Zeus.

You get test plans when somebody goes cowboy on live code and breaks tangentially related processes. You get security reviews when somebody goes cowboy on live code, everything looks great, and then a month down the line you lose days of work when someone changes a password. You get mandates to create parameter files when someone gets burned having to run through this entire process over and over again when business rule changes back and forth.

The reality is that once this change is done the proper way and the business parameter is moved to a file, the company will _never lose time over this issue again_. It will be configurable just as fast and responsive as we all feel it should be, without any concerns about breaking things down the line.

Is it frustrating? Sure. But that doesn't mean it's _wrong_.

Going cowboy on live code, even for something as trivial as changing a 3 to a 4, can and has created large problems.

<comment><USER10> Agreed. Process comes from a need. My point is that it sounded like the test and sec. people were not trying to speed it up. They seemed to offer little help or alternatives. Perhaps the communication process broke down. Did Ed know the importance of this change? Test and sec. certainly did not seem to.

<comment><USER11> In the enterprise, it's _always_ an emergency. If it isn't, it gets ignored, because the pipeline for getting 'non emergencies' done is constantly pre- empted for emergencies.

That said, every good process has the ability to handle exceptions. If it was truly the emergency it sounds like, he should have been able to make the change to get it up and running ASAP and then made the change _properly_ through the normal process.

But the question of whether an "emergency" truly is, is a complicated one.

</comment></comment></comment></comment></comment></comment><comment><USER12> If you want a change request processed quickly, you should get someone in upper management to help you herd it through the system. Literally, take your VIP with you, and walk up to the desk of each admin in turn. Say, "Don't wait for Tuesday's meeting--approve this right now." And then walk to the next admin and do it again. And then walk to the test guys and say, "Drop everything and test this now." And then gather up the six essential stakeholders for the CCB meeting and say, "Impromptu CCB meeting, right now in the hallway instead of next month. Approve this."

I've gotten software changes that usually take two months to trickle through the system through in a day. You have to spend all day doing it, though, and so does your VIP.

But if it's really _that_ important . . .

<comment><USER13> That works once. Then the next time you go to each desk, the person there has already checked with their boss, and says "my boss says you need to go through the correct channels and if you don't like it, you need to talk to him."

<comment><USER12> That's why you have a VIP with you. If he's not her boss's boss, the whole thing is a lot less likely to work.

</comment></comment></comment><comment><USER14> People don't realize processes, reviews, standards, and audits are there because of painful (costly) incidents and breakdowns in the past. Changing one line of code in the production app is fast and easy. Crashing the system or screwing up the app logic can cause huge disruption to the operation.

After every single crisis, managers got together and vowed to never let this happen again, and thus processes and reviews are born. After couple years, things will get so stifled to the point of what OP was experiencing.

<comment><USER4> I liked this post on the topic - [http://37signals.com/svn/archives2/dont_scar_on_the_first_cu...](http://37signals.com/svn/archives2/dont_scar_on_the_first_cut.php)

<comment><USER7> " _embed the learning in the organizational memory as a story instead of a policy_ "

That memory is hard to maintain with procedural changes in modern times, as employees move around quite frequently.

</comment></comment></comment><comment><USER12> That "legacy code must be brought up to current standards whenever it's touched" policy doesn't seem very wise. I'm all for practical refactoring, but it's a major decision to be treated with care when it comes to legacy code. You don't always want to invite it. I certainly wouldn't want to enforce it.

I mean, it's one thing when your oldest legacy code is two years old, and it's all one program. It's something else entirely when it's, for example, written in Fortran and running on hardware you can't buy anymore. Sometimes you don't want to rock the boat any more than you absolutely have to.

<comment><USER15> Yes, for an emergency change (change or there will be layoffs), this is a rather dangerous policy. The goal of any emergency fix should be "do as little as possible to solve problem".

I get the feeling that too many people in the chain did not treat this as an emergency. It seems very business as usual. When a company is talking layoffs, it is an emergency.

<comment><USER12> Yeah, I agree. The first time he told someone "Philip wants this done quickly" and they said, "Sorry, it's policy," the next move -- at least my next move -- would have been to walk to Philip's office and say, "Will you come tell this lady that this change is more important than that policy?"

I mean, they don't have a way to know it's _really_ an emergency. Every engineer thinks everything's an emergency. There's nothing like the guy in charge standing there while they work to communicate THIS IS ACTUALLY AN EMERGENCY.

</comment></comment></comment><comment><USER16> And that is how creativity dies. Not all at once with a swift, decisive blow. More like the bites of 10,000 mosquitoes coming 1 at a time, about every 5 minutes so you don't notice that they've stolen a significant amount of your blood until it's too late.

<comment><USER17> No, this is how creativity is shut out after one too many incidents where she wandered in, decided to be helpful and, due to imperfect understanding how things work, caused massive loss of productivity, money and reputations.

<comment><USER18> No, creativity is a process to be leveraged and managed like any other. This story is an account of life at a company where the process simply does not support the needs of the business. There are no excuses.

</comment></comment></comment><comment><USER19> Excess code review rules and company policies are, in effect, a defense against the stupid. They're in place to limit or slow down the damage potentially done by stupid employees.

However, they're also a defense against the smart.

If there's a barrier erected to weed out stupid changes the barrier works to weed out smart changes as well. The barrier can't distinguish smart changes from stupid changes, and the people operating the barrier can't easily do that either since their asses are on the line in case they miss a bad change. As you can see, even the word of a higher manager can't change that since the defenses are spread out so wide: there's always some additional policy that requires more and more authorization from more and more people.

Good systems always support skunkworks approaches where good programmers have an unofficial half-sanctioned way to subvert the policies when needed.

</comment><comment><USER20> Ironically, work to prevent layoffs neatly identified all the people who should be laid off immediately.

</comment><comment><USER21> This shit happens at my job and leaves me feeling depressed and at times questioning my own skills because _I_ know and my bosses know that on my part, I just had to make a tiny, tiny change. But when you have a dozen such experiences, I feel like something is wrong with me because when the dust settles, this was a one line code change that took me a week to push to production. It also makes my bosses question my estimates. Of course, when I goto the other extreme and give a ridiculous estimate, that also pisses them off and makes them feel like I don't really know what I am talking about. Saying "I cannot provide an estimate" also does not cut it for the boss.

In the longterm, I can feel this killing a part of me. I have always been a start-up guy working for myself. Since getting my first full-time job, stuff that I would expect the start-up me to take an hour to do ends up taking days and weeks, even. I am aware of the (mostly legitimate) excuses to not take too much self-blame but at the end, it still feels shitty because I _know_ , the start-up me knows, this should not have been a one week project.

Ah the perils of having a non-tech boss and coworkers and being the only tech guy. Reading stories like I experience at work is comforting in an odd way.

Here's how my typical story goes...

Boss: So can we make this little analytics thing your #1 priority for tomorrow?

Me: Yeah, as long as we don't have anything else for projectX(my #1 priority)

Boss: Well, do you?

Me: Not right now. But it can pop up any minute Jenny decides she needs something done.

\--NEXT DAY--

Jenny: Hey this isn't working in ProjectX. Could you look into it?

Me: Sure. _there goes an hour_

Boss: I know you're busy but this is very urgent. Can we grab you for few mins for this meeting?

Me: Sure _goes another 30 mins_

...

Jenny: That thing you fixed. Can we undo it and push to production because I realized blabla?

Me: _thinking wtf?_ Ok sure.

...

Amanda: Hey can you check if these 2 users signed up from same IP?

Me: You can check that in admin

Amanda: Where?

Me: The admin panel you emailed me info to when I joined the company..

Amanda: Oh right. Can you fwd me the email I sent, I can't find it. My gmail's not working right.

Me: Ok.

...

 _Before I know it, I have spent every day of my job troubleshooting shit to never really get in the flow of doing my own project assigned by my boss._

Boss(after a month): How's that project coming? I know you said it's a one day thing.

Me: Yeah but the next day we changed the specs in the meeting. Also, projectX is getting a huge rehaul.

Boss: But still...you said it's a week after that

Me: Yeah assuming I didn't have work for projectX

Boss: But you'll always have work for projectX

Me: Yeah that's exactly what I told you too

Boss: So where does this leave us? Can you finish it in next week? I don't think there is much work for projectX

Me: But...

Boss: You're the startup guy. We want you to push us to release stuff quick. When you give us deadlines and are so off, it makes us lose faith.

 _Leave work annoyed, put in a quiet weekend with no coworkers around and wrap up said project_

<comment><USER5> This doesn't sound like a process problem at all, actually. Really it's the reverse: your work environment is a mess, no one has the ability to do their own job except to bug you to do things they need.

And that's a disaster too, but it would be _helped_ by adding process, not hurt.

Also, dude: learn to say no. Learn to prioritize for yourself instead of expecting your slag pile of a management structure to do it for you. i.e. ask: "What things must I _get done_ to make sure I'm successful long term?" (which is entirely different from "What is the highest priority thing I have been asked to do?") and make sure you prioritize your work to get those things done (which is an entirely different thing from "work on those things"). And if your workplace environment really doesn't permit that, move on.

<comment><USER21> _And if your workplace environment really doesn't permit that, move on._

Doing just that :)

It's basically a startup with 10 of us where I am the only in house developer.

I've tried many things like asking folks to Skype me instead of walking over to my desk or calling my name. I've gone to great lengths to get em to understand why skyping to get my attention is different than other ways. None of these guidelines really lasted more than ana few hours.

<comment><USER22> On this subject: Whenever someone chats me in the following manner, I want to kill them. Straight up. Just fucking take an ice pick and jab it right through their skull:

        Other Dude: Hi.
        Me: Hello

_A minute elapses_

        Other Dude: I'm having a problem
        Me: How can I help

_A minute elapses_

        Other Dude: ACTUAL PROBLEM THAT THEY NEEDED HELP WITH
        Me: Oh, here is your resolution which took all of 15 seconds to give to you.

WHAT THE FUCK MAN?! WHAT THE FLYING FUCKITY FUCK?! YOU JUST BROKE MY FLOW AND STOLE 2 GOD DAMNED MINUTES! WHAT IS WRONG WITH YOU?! IT'S FUCKING IM, YOU'RE NOT GOD DAMNED STANDING NEXT TO ME! AND WHY THE HELL DOES IT TAKE YOU A MINUTE TO TYPE EACH THING ANYWAY?! DON'T YOU KNOW HOW TO TOUCH TYPE?!

I mean, CHRIST, if this happened once in a blue moon, fine, whatever, but it seems like EVERY motherfucker uses IM the same way. EAT DICKS.

...

I might have went a little overboard on this.

<comment><USER23> This is why I stopped using all chat clients.

<comment><USER24> That is why I _insist_ on communication via chat clients when I'm busy. I'm not immediately interrupted as I would be if someone walks up or shouts out as I can ignore the little flash of the chat window on the task tray for a few minutes, sometimes tens of minutes, while I bring my train of thought to a more orderly stop.

If people start with "Hi, I have a problem" and don't state what the problem is I just respond with "drop me the details and I'll have a quick think" and get back to my work. Even if they respond immediately to that it might take me ten or fifteen minutes to get look at their message again - that is their time wasted, not mine.

Some problems require a more urgent response so I'll accept a walk-up or a shout for those, and some problems are best illustrated by showing them than describing them, I just have to trust people to know what they are and what is less urgent. And of course a message will come in at a time when I am eminently interruptible, in which case people get an immediate response anyway.

I find it works except for people who insist on not following the process, but they soon learn I'm far more helpful if they don't irritate me!

<comment><USER25> > If people start with "Hi, I have a problem" and don't state what the problem > is I just respond with "drop me the details and I'll have a quick think" and > get back to my work.

If people start with "Hi, I have a problem" and don't state what the problem is _I close the chat window_.

My work IM's status clearly states "if you have a question, ask it, don't ask if you can ask", time wasters simply get ignored.

> Some problems require a more urgent response so I'll accept a walk-up or a > shout for those

Absolutely.

<comment><USER24> _> If people start with "Hi, I have a problem" and don't state what the problem is I close the chat window._

In the past I've found that leads to people reporting "I asked him several times over a few hours and got no response" which, if the person being complained to does not know the situation, could look bad for me.

If I feel like being more terse, I just give a one-word response: "Details?".

<comment><USER25> > In the past I've found that leads to people reporting "I asked him several > times over a few hours and got no response" which, if the person being > complained to does not know the situation, could look bad for me.

As I noted, my conditions are clearly spelled out as my IM status text, if they can't bother following simple instructions I can't bother with them.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> No, don't quit! Embrace! That's 14 hours (if I remember correctly) you could have spent working on your own projects instead of being pissed off on HN. The world is full of this, and it's well accepted and nobody questions it - <USER2> the most of it.

<comment><USER27> They wouldn't be his projects. They would be the company's.

</comment></comment><comment><USER28> I just went through the same thing. Except I was smart (or so I thought) and had what I needed changed in a config file.

PHB decided that it still counted as a "code" change because someone needed to log onto the box and change the config. Literally it was removing 3 characters from it. The only reason I even had it in the config was to avoid it being a code change to begin with. I argued back that in the time I would take to get through the whole process I could write a screen to do the same thing.

PHB said that would be fine as from that point on its a config not a code change. So off through the whole process, where I present the change to people who don't care, or understand the change and ask for them to approve it. I get that they need awareness, but seriously couldn't a short email saying X is going to happen at time Y suffice?

Im tempted to embed a Python/Ruby interpreter into my next project with a web interface to modify the code. Then I can do these minor changes without going through the 7 day process.

<comment><USER17> the difference between config and code is largely illusionary, so PHB is right: both can break things and need to be tested.

<comment><USER28> I would argue that in this case where it was designed like that from the beginning IE detailed as how the system works then there should be no issues.

I did forget to mention it did go though a round of testing, which took less then 5 minutes to be verified as correct. It literally was 6 days of process wrapped around 10 minutes work.

</comment></comment></comment><comment><USER29> 'Fuck that shit.'

maintenance programmer words to live by.

</comment><comment><USER27> Why is the author still working there?

</comment><comment><USER30> It's exactly this situation that made me leave a large company after only 5 weeks. I'd come from a smaller, more agile environment and having to go through multiple layers of process and bullshit just to get the simplest thing done was just too much for me. I know 100% that if I'd have stayed there I would have ended up hating my job and affecting my passion for writing code.

The main situation I remember is a code review of a few lines I'd written kept on being rejected by some of the more process-indoctrinated programmers purely because I didn't use the correct type of verb in the first sentence describing my change! I mean, when _that_ is the shit that matters and not solutions to problems, I'm out.

</comment><comment><USER31> "It Takes 6 Days to Change A Fundamental Business Practice" sounds a lot more reasonable.

 _Should_ you be able to extend the backlog of a factory by an entire month just by changing a variable, pushing a build and going for lunch? No.

<comment><USER32> The problem, imo, is not that it took 6 days of reviews to change a major variable. The problem is that the reviews were entirely immaterial to the actual change taking place. Whether variables are hardcoded, have an audit trail, and use proper naming conventions will have no impact on ACTUALLY mitigating the business risk of making a giant change.

</comment></comment><comment><USER33> (rewriting this a bit to make it clearer).

It's clear that a mission critical change needs oversight and risk mitigation. But think of the waste of this process from the Lean perspective: Waiting, Handoffs, Checking, Inspecting, Obtaining approvals, Reviewing, Filing, and Rework.

IT groups need shepherds to be able to guide these things through the system of checks and balances. If you look at this scenario, Ed, the programmer, was the orchestrator. The end-to-end process was ad hoc, and not designed purposely. There were actually several processes at play, designed by different departments (IT demand, support, delivery, QA, etc.), with different value systems, and the interaction between them isn't well defined towards the end value of "shipping software changes that work". The division of labour across review, testing, etc., without incentivizing end customer results, and minimizing waste, has devolved into a bunch of school marms that redline all documents or code given to them without actually working to help with the end goal.

The "this test plan isn't good enough" for example is a near and dear to me. Why can't QA dedicate a resource for a brief period to help make it better? Or at the very least, give guidance on the what they want to see for approval? Usually this (and ornery change management boards) wind up being the primary source of senior management overrides - the QA group doesn't improve quality, it just slows down change thus maintaining the current (functional) mediocrity.

IF the process was shepherded by a manager to actively involve QA, Code Review, Change Management, etc. earlier, Ed might be less frustrated, and it would have been done in 3 days. ;)

</comment><comment><USER34> This happens waaaaaaay more than anyone will admit.

<comment><USER35> Is it sad that I think 6 days is pretty fast?

<comment><USER15> I've worked places where 6 days would be a miracle. For me, the worst has always been when the database query plan suddenly switched to something with a full table scan (I'm looking at you Sybase) or the always fun full sort merge (nice going Ingres). It always seemed to come down to forcing indexes which tended to get deployed fairly quickly.

</comment></comment></comment><comment><USER18> Look on the bright side: if large companies weren't this screwed up, small businesses and startups wouldn't have a chance.

</comment><comment><USER15> I wonder if the place is covered by something like ISO 9000?

</comment><comment><USER36> The _real_ WTF is that at the end, all it takes is the president giving a direct order to put the code in production immediately. That is, all the policies and processes just add noise to the interface between strategic decisions and operational tasks. That's how big companies fail.

</comment><comment><USER37> This happens at my job too and I want to kill myself when it does. I get so frustrated. All these work protocols and slow useless software that prevents me from being effective at work.

I usually find a way to make things work by going outside the protocols and just fixing the problems. Its not the problem that is hard, its the stupid damn protocols and official ways of doing things that makes it very hard to get something done.

Decisions being made by idiots who have no clue how to allow people to work in a efficient manner, or how much money they lose by people sitting around doing nothing, waiting for some useless step in a useless process.

Seriously, I can feel the rage coming just thinking about it while writing this! What the fuck happened to this industry...

</comment><comment><USER38> Heh, not the same corporate snafu, but my most expensive work was done to change 1 char.

Spent about 3 weeks with a new codebase to find that one number had to be increased. Funny thing is, there was a comment there and somebody had increased it before when they had a similar problem.

<comment><USER39> Time to change the character: 10 seconds

Time to find out what charater to change: 3 weeks

<comment><USER40> I've found that bugs that are very hard to debug often have the smallest fixes. Once you've discovered what tidbit of information you were missing, the fix is trivial. I guess this is a needle/haystack problem.

</comment></comment></comment><comment><USER41> Better that than they push the line of code and everything stops working for a fortnight!

</comment><comment><USER42> What I identified with the most is the requirements creep that happens in QA/validation

</comment><comment><USER43> This is a case where programmers are overhead not production and the "system" is sized to handle peak loads.

Another way of looking at it, "It Takes 6 Days to Prevent Layoffs."

That's pretty damn efficient from a business standpoint.

And pretty damn important from a human one.

</comment><comment><USER44> While I can both relate and empathize with the story here- the initial "crisis" seems forced and arbitrary. Once a company becomes sufficiently large to mandate a promotion process like the one described in this story, the management would probably know that there is no "immediate" changes that can be made unless they want to bypass those processes. Further, if it took 6 days to change a line of code to meet everyone's standards and satisfy requirements, imagine how long it would take to push through a layoff. :)

</comment><comment><USER45> I understand the advice to quit because of the agonizing process involved, but worse than that for me is the idea that this parameter is hard coded, and even with this change in place that limitation still remains. NO WONDER the change process is so painful, the software design is clearly brain dead. I bet all kinds of unexpected shit happens when changes are rolled out. This is a code smell like a rotting corpse.

<comment><USER46> Moving parameters somewhere else doesn't change the problem at all, only moves it to a different file. Altering a parameter that effects a large chunk of the system still needs the exact same amount of testing to be done, all you save is a compile.

For what it's worth. I'd also say that anyone who thinks that hardcoded parameters are always bad, probably hasn't worked on anything large or complicated enough yet. There are plenty of cases where you've got parameters which could theoretically change, but the likelihood is small enough that it doesn't make much sense to move it out to somewhere else - not coincidently, these tend also to be parameters which effect large chunks of the system and should never be changed without a solid business reason and a full QA cycle.

</comment></comment><comment><USER47> As good a 'system' as you might have, it is still no match for having a middle manager with a clue (and some freedom to move within the system)...

Sure - this should have still been tested (and thoroughly!), but putting this 'on the queue' when it needs doing now? Making the programmer deal with other issues (rename the variable) while doing it? Not making sure that a testing machine was available? No....

</comment><comment><USER48> I have to opposite problem, almost no process at all.

I'm not sure which is worse, having to wait 6 days to do a change or having people request (often trivial) changes to be deployed the same day they specified them and having people going round editing .php files directly on the production server.

</comment><comment><USER49> THANK YOU.

This couldn't have come at a better time. Describes my current situation perfectly.

I changed 1 line of code today. It's going to require me to call into 2 review meetings to have it approved. These meetings happen once a week. 2 weeks to get this code to production. UNBELIEVABLE.

I think it's time for a new job.

</comment><comment><USER50> I can relate to that. Maybe 70% of the defect corrections I make in our highly complex and optimized code base are less than 10 lines worth of code.

It can take between between 24 hours and a week to figure out what those few lines should be, though. And that is extremely frustrating.

</comment><comment><USER51> > Pissed off hours spent on Hacker News: 14.

Seriously I've already mentioned this for your last post, but imo it's really time to leave your job for something else Ed. Unnecessary stress lessens the quality of your life, as well as lowering its total lifespan.

</comment><comment><USER52> Ditto for most of the IT services companies in Bangalore. Oh just add "Project Manager X chasing the required parties" between every line in that article and perhaps add another 3-4 day delay as most of the teams don't work in the same time zone.

</comment><comment><USER53> I thought the last line would read "Weeks of notice given: 2"

Why are you putting up with that crap Ed?

</comment><comment><USER54> This is the model which my Computing coursework bases around, you get something like 6 marks for code and 8 marks total for a "test plan"

The best thing? I think I've lost the majority of marks for using RSpec instead of 100 screenshots

</comment><comment><USER55> This happens at both big and small companies; I worked with a company of 30 people who had this 'in place' already because the CTO was had 'experience in leading very large projects'. It was kind of annoying.

</comment><comment><USER56> I'm very lucky to work in a place where they understand the limitations of this policy.

Most of the product we work on (not a CRUD app) is finished or at least at a fairly mature state. But the area I work on is not. For a while they harped on us about following the process. But due to their lack of interest on what we were doing and some managers protecting us, we ended up able to make rapid changes in response to test failures, often several times a day.

It was incredible. They would seek investigations through change requests on bugs found in testing. Immediately after they were entered - before the change request even went to the overseeing group of project engineers and subject matter experts - we would tell them what caused the problem and write that we had committed a fix to the mainline. This circumvented days of waiting for a response that would have blown our schedule apart.

It paid off big. Today for the first time our tests all started passing. They've been failures for years and no one expected anything close.

There's a time for process. When a lot can break or you have a finished/safety-critical product you want to lock it down. But in initial development of new features, you have to throw it out and do what's right.

For a while they were demanding change control with CRs over software that had never been written or run successfully. Why even bother writing the CR if it never worked in the first place? That means the software wasn't done in the first place, not in a state requiring change control!

It was unusually rapid iteration between the test and development teams, who should sit next to each other and immerse themselves in making the software work. Only by rapidly uncovering and overturning problems like this can you ever get something close enough to stable to lock it down this way.

Development and test respected each other, understood what had to be done, and by working together discussing behavior and the test environment were able to determine what the software should do and how best to test this functionality.

There were times where waiting for the process would have taken us 5 days to get approval to fix a bug. By talking with our project engineer and going ahead with the testers - who realized it was not the time to stick to formal process - we were able to succeed.

I'm very lucky. The testers were cool and understood the state of the software and were willing to shout across the cube and explain what was failing. We worked together and managed to succeed by knowing when a process was important and when the managers would be happier to go around it.

The problems encountered here are mainly about people. We had testers and others who trusted and worked with us. When you don't have that - like the author of the article - it takes some social engineers and lawyer like knowledge and parsing of company policy to get around the problems.

</comment><comment><USER57> I find it troubling that they had to make a change at the point of layoffs to create a solution to prevent it. Couldn't they have discovered this trend before it got to that point?

</comment><comment><USER58> This is how individuals working with open source software beat a large corporation where by all accounts they should not stand a chance. Bureaucracy is the Achilles Heel.

</comment><comment><USER59> Is this a story or a real thing that happened?

</comment><comment><USER60> This is an unfortunate reality. People really do not care about all the work you have just the things they want done.

</comment><comment><USER61> I smell opportunity. Companies that are as archaic and inflexible as this deserve to be outdone.

</comment><comment><USER62> This reads eerily like my job, just s/code change/system change request

Love the my job, hate the bureaucracy.

</comment><comment><USER63> "you are responsible for fixing preexisting errors that violate new company policy"

That's insane.

<comment><USER64> Seems like the "boy scout rule" got out of control.

</comment></comment><comment><USER65> Why aren't you appealing directly to Philip more often? Give him a list of what you need and he could have what he wants with 3 emails. Also I don't understand what "access" you need to Marge? You can't email her or something?

edit: d'oh

<comment><AUTHOR> Homer and Marge are most likely some kind of testing systems.

</comment></comment><comment><USER66> "Also, dude: learn to say no." This is horrifyingly bad advice, and in fact I doubt it even acknowledges the problem. It takes time to say "no". Are you telling us to learn "the path of least resistance" in saying "no"? Is this legitimate advice?

At a previous development gig, I would have to learn how to say "no" to at least 5 different types of people. And quite honestly, and candidly, I think this advice is absolute bullshit. I genuinely believe it wholesale ignores all the junk-news that's bubbled up around Zuckerberg's attire at meetings, the joke about Ohanian's suit on Bloomberg TV, etc., the culture of corporatism. If you say "no" enough, you end up like Zuckerberg: An Emperor with no Suit. (Or to put it less abstrusely: "This guy won't play ball.") And if you say it with the force and cavalier quality I think you're thinking: you get fired.

This advice prompts me as if a manager, if it's taken without the gusto of the frustration we're all feeling. And I don't want to be a manager.

Let me put it this way. Are you saying there's a verbal silverbullet that shoots down CEOs, Team Leads, Content Authors, Co-Developers, Designers, IAs, Managers, Testers, Team Members, etc.?

I suppose many others have already said this: _easier said than done_.

</comment><comment><USER67> This thread reminds me of two lessons that I'm thankful I've learned young:

1\. Processes exist for a reason. They're often annoying and sometimes overkill and unnecessary, but they're often there as a result of a past problem.

2\. The whole top thread about communicating and literally ignoring people reminds me of my roommate who bragged that he was a good leader, meanwhile telling me that he would simply ignore his teammates because they annoy him. This is why "geeks" get the stereotype that they can't interact with people and it's why programmers with business and communication skills are so valuable and sought after.

</comment><comment><USER68> 6 days you LUCKY LUCKY Bastard - i have user stories over 6 months old that haven't been actioned yet and had to wait 2 months to get a gwt verification file installed

</comment><comment><USER69> is it only me or there is a (just one) line of code gone wrong on ed's comment handling server?

{"post_id":131434793,"html":"\u003Cdiv class='p_response_container' style='display:none;'\u003E\n\u003Cheader class='clearfix'\u003E\n\u003Ca href=\"[http://edweissman.com/it-takes-6-days-to-change-1-line-of- co...](http://edweissman.com/it-takes-6-days-to-change-1-line-of-code\\) class=\"p_view_all_link\"\u003EView All 16\u003C/a\u003E\n\u003Ch1\u003EMost Recent Responses\u003C/h1\u003E\n\u003C/header\u003E\n\u003Cdiv class='p_responses_list clearfix' data-posterous-responses- container\u003E\n\u003Carticle class='p_comment p_response' style='display:none;'\u003E\n\u003Cdiv class='p_info'\u003E\n\u003Cspan class='p_icon'\u003E\u003C/span\u003E\n\u003Ctime pubdate='1337295601'\u003E14 minutes ago\u003C/time\u003E\n\u003Ca href=\"<http://tomakefast.com\\u003EPJ> Brunet\u003C/a\u003E responded:\n\u003C/div\u003E\n\u003Cdiv class='p_comment_body'\u003E\n\u003Cdiv class='p_profile_photo'\u003E\n\u003Cimg alt=\"\" src=\"/images/profile/missing-user-35.png?1337287723\" /\u003E\n\u003C/div\u003E\n\u003Cdiv class='p_comment_text'\u003E\nHilarious, I love it.\n\u003C/div\u003E\n\u003C/div\u003E\n\u003Cul class='p_action_links'\u003E\n\u003C/ul\u003E\n\n\u003C/article\u003E\n\n\u003Carticle class='p_comment p_response' style='display:none;'\u003E\n\u003Cdiv class='p_info'\u003E\n\u003Cspan class='p_icon'\u003E\u003C/span\u003E\n\u003Ctime pubdate='1337296138'\u003E5 minutes ago\u003C/time\u003E\nkkudi responded:\n\u003C/div\u003E\n\u003Cdiv class='p_comment_body'\u003E\n\u003Cdiv class='p_profile_photo'\u003E\n\u003Cimg alt=\"\" src=\"/images/profile/missing-user-35.png?1337287723\" /\u003E\n\u003C/div\u003E\n\u003Cdiv class='p_comment_text'\u003E\nI agree and disagree at the same time. It does take a ridiculous amount of time to put something in production, unfortunately, but the scenario you described above is probably an exceptional case.\n\u003C/div\u003E\n\u003C/div\u003E\n\u003Cul class='p_action_links'\u003E\n\u003C/ul\u003E\n\n\u003C/article\u003E\n\n\u003Carticle class='p_comment p_response' style='display:none;'\u003E\n\u003Cdiv class='p_info'\u003E\n\u003Cspan class='p_icon'\u003E\u003C/span\u003E\n\u003Ctime pubdate='1337296154'\u003E5 minutes ago\u003C/time\u003E\nbob responded:\n\u003C/div\u003E\n\u003Cdiv class='p_comment_body'\u003E\n\u003Cdiv class='p_profile_photo'\u003E\n\u003Cimg alt=\"\" src=\"/images/profile/missing-user-35.png?1337287723\" /\u003E\n\u003C/div\u003E\n\u003Cdiv class='p_comment_text'\u003E\nDoesn't inventory cost $ and space? Maybe CFO should be involved too.\n\u003C/div\u003E\n\u003C/div\u003E\n\u003Cul class='p_action_links'\u003E\n\u003C/ul\u003E\n\n\u003C/article\u003E\n\n\u003C/div\u003E\n\u003Cdiv class='p_comment_form p_logged_in'\u003E\n\u003Ch1\u003ELeave a Comment\u003C/h1\u003E\n\u003Cform action=\"/responses/create\" class=\"new_comment clearfix\" id=\"new_comment\" method=\"post\"\u003E\u003Cdiv style=\"margin:0;padding:0;display:inline\"\u003E\u003Cinput name=\"authenticity_token\" type=\"hidden\" value=\"F6F7vP+9I0xtnokVneiKN6klXpPRM8ziSWl/D/arZxI=\" /\u003E\u003C/div\u003E\n\u003Cdiv class='p_not_authorized p_comment_section'\u003E\n\u003Cdiv class='p_additional_fields'\u003E\n\u003Clabel for=\"comment_name\"\u003EName:\u003C/label\u003E\n\u003Cinput id=\"comment_name\" maxlength=\"80\" name=\"comment[name]\" size=\"40\" type=\"text\" /\u003E\n\u003Clabel class=\"p_comment_email\" for=\"comment_comment_email\"\u003ELeave this field blank to comment.\u003C/label\u003E\n\u003Cinput class=\"p_comment_email\" id=\"comment_comment_email\" maxlength=\"80\" name=\"comment[comment_email]\" size=\"40\" type=\"text\" /\u003E\n\u003Clabel for=\"comment_toast\"\u003EEmail:\u003C/label\u003E\n\u003Cinput id=\"comment_toast\" maxlength=\"80\" name=\"comment[toast]\" size=\"40\" type=\"text\" /\u003E\n\u003Clabel for=\"comment_url\"\u003EHomepage:\u003C/label\u003E\n\u003Cinput id=\"comment_url\" maxlength=\"80\" name=\"comment[url]\" size=\"40\" type=\"text\" /\u003E\n\u003C/div\u003E\n\u003Caside class='p_login_options'\u003E\n\u003Cdiv class='p_asterisk'\u003E\u003C/div\u003E\n\u003Ch1\u003EWant to skip this stuff?\u003C/h1\u003E\n\u003Cp\u003ELogin with any of the following:\u003C/p\u003E\n\u003Cdiv class='p_login_buttons'\u003E\n\u003Ca href=\"[http://posterous.com/login?flow=newcomment\u0026amp;jumpto=h...](http://posterous.com/login?flow=newcomment\\u0026amp;jumpto=http%3A%2F%2Fedweissman.com%2Fit- takes-6-days-to-change-1-line-of-code%23comment\\) class=\"p_posterous_login\"\u003ERegister or login to Posterous\u003C/a\u003E\n\u003Ca href=\"#\" class=\"p_twitter_login\" data- posterous-jumpto-url=\"[http://edweissman.com/it-takes-6-days-to- change-1-line-of-co...](http://edweissman.com/it-takes-6-days-to- change-1-line-of-code#comment\\) data-posterous-post-id=\"131434793\" data- posterous-redirect- url=\"[http://posterous.com/oauth/init_oauth_and_redirect/?ssod=edw...](http://posterous.com/oauth/init_oauth_and_redirect/?ssod=edweissman.com\\u0026amp;oauth_provider_type=\\) data-posterous-twitter-login-button=\"true\"\u003E\u003Cimg alt=\"Sign in with Twitter\" src=\"/images/site/sign_in_with_twitter.png?1337287723\" /\u003E\u003C/a\u003E\n\u003C/div\u003E\n\n\u003C/aside\u003E\n\u003C/div\u003E\n\u003Cdiv class='p_comment_section'\u003E\n\u003Clabel for=\"comment_body\"\u003EComment:\u003C/label\u003E\n\u003Cdiv class='p_comment_area'\u003E\n\u003Ctextarea cols=\"40\" id=\"comment_body\" name=\"comment[body]\" onChange=\"if (this.scrollHeight \u0026gt; this.clientHeight \u0026amp;\u0026amp; !window.opera){this.rows += 1;}\" onKeyPress=\"if (this.scrollHeight \u0026gt; this.clientHeight \u0026amp;\u0026amp; !window.opera){this.rows += 1;}\" rows=\"5\"\u003E\u003C/textarea\u003E\n\u003C/div\u003E\n\u003C/div\u003E\n\u003Cdiv class='p_comment_section'\u003E\n\u003Cinput id=\"comment_post_id\" name=\"comment[post_id]\" type=\"hidden\" value=\"131434793\" /\u003E\n\u003Cdiv class='p_submit'\u003E\u003Cbutton button=\"true\" class=\" action_button\"\u003E\u003Cspan class=\"\"\u003EPost this Comment\u003C/span\u003E\u003C/button\u003E\u003C/div\u003E\n\u003C/div\u003E\n\u003C/form\u003E\n\u003C/div\u003E\n\n\u003C/div\u003E\n","responses":[{"name":"PJ Brunet","body_html":"Hilarious, I love it.","created_at":"2012/05/17 16:00:01 -0700","body":"Hilarious, I love it.","post_id":131434793,"id":11028186,"display_name":"PJ Brunet","comment_type":"comment","display_url":"[http://tomakefast.com,allowed:true,display_photo:/images/pro...](http://tomakefast.com,allowed:true,display_photo:/images/profile/missing- user-35.png)},{"name":"kkudi","body_html":"I agree and disagree at the same time. It does take a ridiculous amount of time to put something in production, unfortunately, but the scenario you described above is probably an exceptional case.","created_at":"2012/05/17 16:08:58 -0700","body":"I agree and disagree at the same time. It does take a ridiculous amount of time to put something in production, unfortunately, but the scenario you described above is probably an exceptional case.","post_id":131434793,"id":11028197,"display_name":"kkudi","comment_type":"comment","display_url":null,"allowed":true,"display_photo":"/images/profile/missing- user-35.png"},{"name":"bob","body_html":"Doesn't inventory cost $ and space? Maybe CFO should be involved too.","created_at":"2012/05/17 16:09:14 -0700","body":"Doesn't inventory cost $ and space? Maybe CFO should be involved too.","post_id":131434793,"id":11028199,"display_name":"bob","comment_type":"comment","display_url":null,"allowed":true,"display_photo":"/images/profile/missing- user-35.png"}]}

<comment><USER70> Hey, thanks for wrecking page display for me! :)

<comment><USER69> it was just one line! :-)

</comment></comment></comment><comment><USER71> What year did this occur? Do you get a lot of paper cuts from feeding the punch card reader?

</comment><comment><USER72> Fuck. That. Shit. Seriously, I'm not exactly thrilled in my current startup role but stories like this give me a new appreciation for it.</comment>


Young Hollywood's Student Loan Crisis: "There Are People Struggling to Survive" - <AUTHOR> https://www.hollywoodreporter.com/news/hollywoods-student-loan-debt-problem-are-people-just-struggling-survive-1252338 <comment><USER2> "Student loan debt "becomes a question of access, and not everyone, especially minorities, have connections in the entertainment industries," says a Latinx production coordinator for a major animation studio."

What's a Latinx production coordinator?

<comment><AUTHOR> Latinx is a gender-neutral neologism, sometimes used instead of Latino or Latina to refer to people of Latin American cultural or racial identity in the United States.</comment></comment>


y combinator news bookmarklet - <AUTHOR> http://writewith.com/fun/bookmarklet <comment><USER2> There are danielha's and python_kiss's popping up all over- the "new" section is drowning! ;) [totally kidding btw- these two have killer submissions]

Seriously, though, there should be some kind of reward for wading through all the noise in the new section. (yah I know I'm as much to blame as the next person. I do try.) And you know, maybe it really is time to be able to "bury" posts- three votes you're out or something.

upd: just did a quick calculation- 4.5 submissions per hour and speeding up rapidly. Could just be that time of day though.

<comment><USER3> lol! Like you, we rss hoggers don't sleep either :p I think most posts on here are a result of users aggregating through rss feeds to post whatever's hot on the web.

Bury should work fine (perhaps it should only be accessible by top users to avoid abuse). Another possible solution is to survey the user's past behavior to create a collaborative filter. The filtered news could then be displayed in a "Recommended" tab. As yc.news grows to a certain critical level, this might just become a necessity.

<comment><USER4> "perhaps it should only be accessible by top users [...]"

Boy, I don't like that idea. I don't think content control will be a huge problem with YC News. We are all like-minded individuals here. The last thing we need is senseless aristocracy.

</comment></comment></comment><comment><USER5> Drag and Drop doesn't work in IE. Creat a new favorite with javascript:window.location=%22http://news.ycombinator.com/submitlink?u=%22+encodeURIComponent(document.location)+%22&t;=%22+encodeURIComponent(document.title)

</comment><comment><USER6> To PG: Please, when visiting already-submitted-stories via the bookmarklet, DON'T consider that an upvote. I'm just using it to find the comment thread.

</comment><comment><USER7> The code for the bookmarklet is refreshingly simple; glad to see that PG can design an interface that is minimal and functional, even in this age of wrapping everything in 12 layers of XML, JSON, SOAP, $ACRONYM.

Thanks for doing this, phil.

<comment><AUTHOR> No prob, now I just need to find time to use it myself!

</comment></comment><comment><USER8> Nice, looks like I can relegate my own YC news bookmarklet to the bin since yours works better :)

Coming next: A 'YC this!' button to add to your own blog posts! (kidding, unless there's actual demand?)

<comment><USER9> i don't know about you but when my local new zealand newspaper has a "reddit- this" button it heralded a large decline in quality. i think a smaller, focused community is more use.

</comment></comment><comment><USER4> I had another bookmarklet whipped up to do the same but this one works a little better. Thanks. :)

</comment><comment><USER10> Denver IDEA Cafe startup support group, every Friday, 2 p.m. at Panera Bread, 13th & Grant near the State Capitol. More info and RSVP at <http://ideacafe.meetup.com/1>

</comment><comment><USER11> i have had a class c corporation for the past six years what can i do with it to gain wealth?</comment>


Amazon considers opening augmented reality furniture stores - <AUTHOR> https://www.engadget.com/2017/03/26/amazon-furniture-and-electronics-stores/ <comment><USER2> I'm really curious on how realistic the look will be. Of course they want their products to look good, but the biggest issue will be customers trusting what they see enough.</comment>


Linux-insides: System calls in the Linux kernel, Part 3 - <AUTHOR> https://github.com/0xAX/linux-insides/blob/master/SysCall/syscall-3.md

<comment><USER2> Oh very interesting indeed, when using strace, or sysdig I notice many daemonized threaded programs calling gettimeofday() frequently, it's good to know in Linux it doesn't incur a context switch with the vdso architecture.</comment>


Get your own cloud server instance running in 15 minutes - <AUTHOR> http://www.webdigi.co.uk/blog/2009/get_your_own_cloud_server_running_in_15_minutes/

<comment><USER2> Basic guide to starting an EC2 instance. Missing some details from the official "getting started" guide (but I guess that's the point).

[http://docs.amazonwebservices.com/AWSEC2/2008-12-01/GettingS...](http://docs.amazonwebservices.com/AWSEC2/2008-12-01/GettingStartedGuide/)</comment>


BNSF Railyway Co. helped lead fight to delay train safety technology - <AUTHOR> http://www.reuters.com/article/2015/11/04/railways-safety-lobby-idUSL1N12Y3P720151104 <comment><USER2> Positive Train Control is the train safety technology at issue here. It isn't ready. The "attempt at crippling the economy" is to shut down instead of operating in violation of the regulation.

The railroad companies claim to have spent billions on implementation but it's not available yet. As the article says, they're not allowed to collaborate or share implementation costs because of trust regulations. Also keep in mind the scale of the deployment. There's hundreds of thousands of cars on the track today, and putting something on each car isn't something that takes an afternoon.

The government can't make it happen by creating a regulation and a deadline.

edit: Fixed definition of PTC.

<comment><USER3> I don't think they have to put something on every (railroad) car. I think they have to put something on every engine, and on every switch. What they put on every switch has to talk to a network. There's a _lot_ of switches, and some of those switches are in pretty remote places.

> Positive Track Control is the train safety technology at issue here.

I believe it's Positive _Train_ Control.

> The government can't make it happen by creating a regulation and a deadline.

Very much true, and a big surprise to too many regulators.

<comment><USER4> You are correct, not every car needs to be modified. Generally engines are the primary modification, as is the CAD systems that must accept extra data and pass it to the trains. Things like hotbox detectors that can count trains axels, determine direction plus the switches and track occupation signals need to also be sent from the CAD (which already receives them in controlled territory) to the locomotive itself.

As a point, PTC works in both dark territory and controlled territory, because it focuses on the train itself (but it isn't as reliable in dark territory). Yes in controlled territory it has greater information but it doesn't require every switch to be modified. Even back in the late 90's every controlled switch reported back its status to CAD extremely quickly and CAD could control the switches remotely. Yes, dark territory is different, but PTC had some benefits even in dark territory. It was the long term goal to have near zero dark territory where a switch, siding or other similar factor would be able to cause a collision.

And just as a point, even when a train leaves one CAD controlled territory (say Union Pacific territory) and enters another (say ran by BNSF) the CAD operators hand off control, much like air traffic control. So the issue of interoperability is minimal as it already is in place in at least a fairly common form. Not saying it isn't without fault or couldn't be better, but the world doesn't have to change overnight, just keep making progress on each part making it better and better.

<comment><USER5> I assume by CAD you mean Computer Assisted Driving? What exactly is a dark area?

What are the differences between the US PTC systems and the systems used in Europe?

<comment><USER4> Computer aided dispatch. Essentially all trains are monitored via control centers owned by a few of the larger railroads. Passenger traffic is even handed off through these centers when crossing the territories.

And yes dark territory is what they call the areas that are unmonitored. Usually these are way out in the middle of no where on single track. Most monitoring believe it or not is hard wired and not wireless. For example, hot box detectors which are basically buried on the inside of the tracks monitor a trains bearing/axel temperatures and can report if one is over heating. This is critical because it is a source of derailments. Those boxes though usually are wired directly to lines running along the track and back to a common point. In many cases a number of lines terminate at one location and are fed to radio towers that beam that data back. In other cases it follows the fiber all the way to a rail yard or dispatch center.

I can't say now what the differences are with PTC in Europe, but I know when I was at GE we looked a lot at what they were doing because in most cases they are far more serious about their railroads.

</comment></comment></comment></comment></comment><comment><USER6> This sounds callous, but 245 deaths in 45 years isn't that bad.

Yes, of course I would like safer trains. I would like safer lots of things, especially cars, because so many more people have car accidents and die each year.

Ideally, our government would calculate lives per year saved versus cost for all kinds of proposed laws and regulations. And then we could more fairly decide which things to implement first, based on which would save the most lives.

This requires us to place a specific dollar figure on a human life, which everyone seems reluctant to do.

<comment><USER7> The government puts a specific dollar figure on human life all the time. It's not afraid to do that.

But positive train control isn't just about improving safety. It's part of a larger overhaul of the rail system that will allow increased efficiency. E.g. the Acela is much heavier than European passenger trains because of FRA crash standards. If PTC succeeds in reducing the likelihood of crashes and derailments, those regulations could be loosened, allowing lighter and faster trains.

<comment><USER8> That's something I don't get about US technologist. Everyone says they want progress, but then there's always so many reasons why it shouldn't happen.

A related example would be which of these two road that are better suited for self-driving cars or similar technologies:

[https://en.wikipedia.org/wiki/File:US33SEOH.JPG](https://en.wikipedia.org/wiki/File:US33SEOH.JPG)

[https://commons.wikimedia.org/wiki/File:MMLNorr1.JPG](https://commons.wikimedia.org/wiki/File:MMLNorr1.JPG)

<comment><USER9> You need to keep in mind that US highways, as opposed to interstate highways, tend to be roads of secondary importance these days. In the Los Angeles area, for example, a lot of the formerly federal highways became state highways after they were built up to freeway standards, due to various complicated political reasons. Additionally, there are plenty of stretches of US33 which are full divided highways, looking a lot like [https://goo.gl/maps/6vc73fZ9nTz](https://goo.gl/maps/6vc73fZ9nTz). In comparison, Swedish route 34 looks like [https://goo.gl/maps/Ur45ukH7Yop](https://goo.gl/maps/Ur45ukH7Yop) outside of town. So both roads are pretty much the same, all things considered, gaining and losing features as the local traffic conditions call for them.

</comment></comment></comment></comment><comment><USER10> I'm no anti-government activist (far from it), and in general, I think safety regulations are a good idea. But I'm having a hard time getting worked up over this. Are the sort of train accidents that this technology would prevent really so frequent or devastating that we should stop everything and fix it? Especially compared to, say, guns, nutrition, pollution, etc? I mean, I'm all for tackling low hanging fruit and making things safer, but I'm not sure how much effort should go into this compared to other safety issues.

<comment><USER11> > So far, railroads have spent more than $2.7 billion on a system estimated to > cost $10 billion to $14 billion — plus perhaps $1 billion in annual > maintenance. PTC has not been installed, partly because it is not > sufficiently developed. CSX Corp., which includes railroads among its > assets, says the railroad industry is the nation's most capital-intensive — > and the $11 billion combined capital investments of all U.S. railroads in > 2010 were approximately equal to the cost of PTC.

> The Federal Railroad Administration estimates that were PTC to be installed > on thousands of locomotives and tens of thousands of miles of track, it > would prevent perhaps 2 percent of the approximately 2,000 collisions and > derailments, preventing seven deaths and 22 injuries annually.

[https://www.washingtonpost.com/opinions/george-will- positive...](https://www.washingtonpost.com/opinions/george-will-positive- train-control-a-mandate-that-is-off-the- rails/2013/05/31/a1f470ba-c981-11e2-9245-773c0123c027_story.html)

(That quote is the first I could easily find, and it comes from a George Will article. If anyone suspects ideological distortion, I think they could find more objective sources that will say basically the same thing.)

For comparison, the FDA, EPA, and Department of Transportation use ~$9 million for the statistical value of a human life. If it costs more than that to save, it's considered unreasonable and the funds could be better spent elsewhere.

[https://en.wikipedia.org/wiki/Value_of_life#Life_Value_in_th...](https://en.wikipedia.org/wiki/Value_of_life#Life_Value_in_the_US)

</comment></comment><comment><USER12> The article quotes AAR spokesman Ed Greenburg as "We have been warning for years that the deadline was unworkable because the technology had to be developed from scratch."

Why does such technology need to be developed from scratch? Positive Train Control sounds very similar to the in-cab signalling schemes (European Train Control System) in use in Europe on the Eurostar and other high-speed lines, and is continuing to roll out on other lines, would adapting that technology not make a good start?

<comment><USER13> All that European stuff uses metric.

<comment><USER14> There isn't that much difference between 1435 mm and 4 ft 8½

</comment></comment></comment><comment><USER15> In the Chicago area, the Metra commuter rail system was saying they would have to discontinue service at the end of the year if the PTC requirement wasn't delayed due to their delays in getting it implemented. It isn't just freight lobbying.

<comment><USER16> >> In the Chicago area, the Metra commuter rail system was saying they would have to discontinue service at the end of the year if the PTC requirement wasn't delayed due to their delays in getting it implemented. It isn't just freight lobbying.

Does that mean they'd go bankrupt? Could someone then buy them for cheap and implement PTC and take over the business? Sometimes it's nice to entertain the idea of "let them fail".

<comment><USER17> Nope. Commuter service in Chicago is contracted out to big players like BNSF and Union Pacific. If they were to lose the contract to run Metra trains, they would be fine.

And it's not like there's some other company or agency waiting to make PTC happen for millions instead of billions.

<comment><USER18> Not all of it, BNSF & UP only operate the services with their names in the lines, Metra operates the remainder of the services.

<comment><USER19> The trackage is owned by the railroads. They're the ones responsible for implementing the fixed-position part of PTC.

</comment></comment></comment></comment></comment><comment><USER20> Hmm how about nationalizing the infrastructure, mandate safety technologies and allow private companies to compete on common grounds to prevent a race to the bottom?

<comment><USER21> So if I understand you correctly the railroads would basically be the same as the Interstate highway system?

I don't know enough about how the railroads work to comment on how feasible such an arrangement would be.

Does the government currently subsidize railroad maintenance and/or construction?

Edit: Is there a precedent anywhere else in the world for nationalized railways?

<comment><USER22> Nationalized railways are the norm rather than the exception in much of the world. Interestingly enough, the US has a much higher fraction of freight traffic move by rail than most of those with nationalized railways.

<comment><USER23> I think this is largely due to the greater shipping distances (rail gets cheaper relative to trucking as the distances gets greater), and maybe a bit the lack of interference from passenger rail.

Btw, in Europe many networks are state owned, some are privately owned. By open-access regulation forces every track-owner to open their tracks for a fee to other operators. There's also a distinction between track-owners and track- operators, even if a single company may be both.

</comment></comment></comment></comment><comment><USER24> Buffett is also the reason Obama won't let the Keystone pipeline happen. The crude is shipped by rail.

<comment><USER25> Buffett is on record supporting the pipeline.

<comment><USER24> I think his closeness and donations to Obama and friends carries more weight than an interview answer...

<comment><USER26> I think you are placing far too much faith in the power of one actor vs. The fact this has been a Democratic base purity test for a few years. Plus crude- over-rail is barely 10% of all oil movement (vs. Pipelines).

</comment></comment></comment></comment><comment><USER27> We should nationalize the railways, then invest in the infrastructure to make it safe to carry freight and passengers. Then allow for competition in the "railway marketplace".</comment>


HTML Command Line Utilities - <AUTHOR> http://www.w3.org/Tools/HTML-XML-utils/README <comment><AUTHOR> I found these the other day and I wonder how these have largely slipped under the radar. Of particular interest is hxpipe and hxunpipe which makes "scraping" tasks absurdly easy, by converting html to a form easily manipulatable by sed, grep and other fun unix utilities.

 _update:_ tracking the score of this post on the front page using this:

        curl -s https://news.ycombinator.com/news | hxnormalize | hxpipe | grep -C 20 "TheZenPsycho" | grep points
        -9\n                    points

<comment><USER2> > how these have largely slipped under the radar

Your single example sells this more effectively than the entire OP. cf. [http://bost.ocks.org/mike/example/](http://bost.ocks.org/mike/example/)

<comment><USER3> That site is inspiring. How many wonderful things can be built with the right mix of technology and passion.

Thanks for sharing.

</comment></comment></comment><comment><AUTHOR> You know what makes me sad now? That there doesn't seem to be anything like these for css files- in particular for extracting references to external files and images, and moving a css file from one directory to another while maintaining relative links.

</comment><comment><USER4> In Debian and Ubuntu those are in the official repositories. You can install them with

        sudo apt-get install html-xml-utils

<comment><USER5> For Arch Linux, they are available in the AUR.

[https://aur.archlinux.org/packages/html-xml- utils/](https://aur.archlinux.org/packages/html-xml-utils/)

</comment></comment><comment><USER6> From the README page:

      hxpipe (1) - convert XML to a format easier to parse with Perl or AWK

Being unfamiliar with either Perl or AWK, could anyone point me to an explanation/ example of why it is easier to parse/ what format it generates. Would it be easy to write a similar utility to say convert it to a Lua table?

<comment><USER7> The idea is that those utilities work in the UNIX way, which means that they are line-oriented.

The following two xml documents are equivalent:

        <c /><d>foo</d>

and

           <c />
          <d>foo</d>

But to understand that using classical UNIX tools which are line-oriented is quite difficult, so you'll have a hard time doing operations such as "replace 'foo' by 'bar' if it appears as the textNode of a 'd' tag".

So the idea of hxpipe is that it is supposed to give you a line-oriented and similar representation of those two documents to work with.

But it actually fails to do that properly (at least for my taste). I largely prefer the output of xml2. Compare:

        # first doc, output of hxpipe
        (a
        (b
        |c
        )b
        (d
        -foo
        )d
        )a
        -\n

        # second doc, output of hxpipe
        (a
        -\n
        (b
        -
        |c
        -
        )b
        -\n
        (d
        -foo
        )d
        -\n
        )a
        -\n

        # output of xml2, for both documents
        /a/b/c
        /a/d=foo

<comment><USER6> Many thanks for the detailed reply. That makes a lot of sense.

</comment></comment></comment><comment><USER8> Lots of other fun little utilities from the author, Bert Bos:

[http://www.w3.org/People/Bos/#htmlutils](http://www.w3.org/People/Bos/#htmlutils)

</comment><comment> ezequiel-garzon There's also tidy-html5, developed by W3C: [https://github.com/w3c/tidy- html5](https://github.com/w3c/tidy-html5)

<comment><USER9> I tried to use this recently, but failed to make this. Probably my bad.

</comment></comment><comment><USER10> This builds with gcc 4.8.2 (and earlier), since gcc stdlib has definition for min/max functions. But for clang you need to include MIN function/macro based on your system type (hxindex.c does not link without it).

Specifically on Mac OS X you need to modify the hxindex.c like this:

        --- hxindex.c	2013-07-25 17:22:53.000000000 -0400
        +++ hxindex.c.patched	2014-03-11 10:05:55.000000000 -0400
        @@ -43,6 +43,7 @@
          * Version: $Id: hxindex.c,v 1.20 2013-07-25 21:04:05 bbos Exp $
          *
          **/
        +#include <sys/param.h>
         #include "config.h"
         #include <assert.h>
         #include <locale.h>
        @@ -439,7 +440,7 @@

           /* Count how many subterms are equal to the previous entry */
           i = 0;
        -  while (i < min(term->nrkeys, globalprevious->nrkeys) &&
        +  while (i < MIN(term->nrkeys, globalprevious->nrkeys) &&
    	     !folding_cmp(term->sortkeys + i, 1, globalprevious->sortkeys + i, 1))
    	 i++;

Basically, you need the sys/param.h include and change the min function calls to MIN.

<comment><USER11> Hmmm weird, I can't compile on Mac OS (clang,) complains about undefined iofuncs in openurl. Can't figure out what it is exactly missing: seems to be a library, but where and why? I could install the Homebrew version, but it seems to have a bug that makes hxselect not work correctly :/

<comment><USER12> $ brew install -g html-xml-utils

seems to work on OS X 10.9.2

<comment><USER11> That's version 6.4, whereas the most recent is 6.6

</comment></comment></comment></comment><comment><USER13> brew install html-xml-utils

<comment><USER14> sudo port install html-xml-utils

</comment></comment><comment><USER7> Mh, interesting, I need to check this out. Currently I'm using xml2 and 2xml and classic unix tools (sed, grep, cut…) to deal with HTML in Bash scripts and Makefiles (this is how my personnal website is regenerated automatically when I commit or push modifications, by calling `make` in the corresponding git hooks).

<comment><AUTHOR> OH! I think I like the line format of those even better.

<comment><USER7> Indeed, I just tried hxpipe and its output is quite a mess. Almost impossible to work with compared to xml2!

<comment><AUTHOR> nevertheless there are other gems such as hxselect and hxwls

</comment></comment></comment></comment><comment><USER15> To find out what's for lunch:

wget -qO- [http://fazer.se/fleminggatan](http://fazer.se/fleminggatan) -q | hxselect 'div.OrangeHeader tr' | lynx -dump -stdin

</comment><comment><USER16> These look pretty useful for some scripts. Thanks for linking, I've never heard of them before.</comment>


PSA: You cannot use %.*s to print strings with NUL bytes - gray_-_wolf Following does not do what most people would expect:

    +$ cat main.c
    #include <stdio.h>

    int main(void) {
     char str[] = { 0, 'a' };
     printf("`%.*s'\n", sizeof(str), str);
     return 0;
    }
    +$ gcc -o main main.c
    +$ ./main
    `'

 This post was triggered by seeing comment suggesting just this (and I can't reply since it is too old). But people should be warned. <comment><AUTHOR> You shouldn't be too surprised: C strings are null terminated.</comment>


Securing your zone with DNSSEC and DANE - <AUTHOR> https://mforney.org/blog/2020-05-21-securing-your-zone-with-dnssec-and-dane.html <comment> ietf-dane One thing that needs to be stressed is the importance of _monitoring_ your deployment [unmonitored security should be an oxymoron].

The author's diligence is impressive, and I am sure he learned a lot doing it (kudos), but of course for most users DYI toolchains are not the most cost- effective investment of resources. Just go with e.g. BIND 9.16 which has quite decent built-in key management.</comment>


Tesla - we may not see the forest for the trees - <AUTHOR>

It is interesting to see that everybody analysing or commenting on Tesla seems to focus on the car (=tree). Looking at Musk's track record we may not see the forest. Should he be able to create the nationwide blanket of charging stations and - on top - deliver 5-minute-charging cycles to refill, every other manufacturer in this space will have to adopt Tesla's standards in order to allow his customers to use Tesla's charging stations - for a fee of course. Tesla would then dominate this market for years to come - just as Apple did early on. Musk/Tesla would have single handedly not only created but also control the electric car market. <comment><USER2> FYI, this might have gotten more eyes as a comment on one of the (fairly numerous) Tesla-related submissions here. A submission needs several upvotes within a half hour or so of submission to make the front page, or it sinks without a trace. And text submissions, IIRC, take more --- the front-page ranking algorithm isn't fully disclosed, in part to make things harder for the people who keep trying to game it, but I believe text submissions do get a penalty compared to those that are just a plain URL.

</comment><comment><USER3> I think the car is the primary point of discussion, because it is currently the only thing that can be questioned on technical merits. I already share your observation, as with most people I have actually spoken to, about the future prospects of Tesla, and I am patiently waiting for charing stations near me before I buy one. But, most Tesla supporters don't need to comment on a forum, because they have already shown their support by actually investing in the company, either through purchasing a car, buying stock, or both. But, for the rest of the world, being pedantic is an easy way to be heard, and everyone wants to be heard.

Also, they did not create the electric car market, they only revived it. (See previous point.)

</comment><comment><USER4> This is a wildly optimistic prediction. Listing some risks off the top of my head: 1) Viability of stations - cost to build/maintain stations, technical challenges for battery swap, customer acceptance of swap 2) Widespread adoption of EVs - so far they are only economical for luxury cars and with tax credits 3) Probability of competitive charging stations 4) Actual need for charging stations - really, only needed to do long trips. 5) Whether adoption of Tesla standards actually cedes any advantage.

I think control of the EV market is unlikely.

</comment><comment><USER5> And I would guess he would avoid the interstates and start on Route 66. Interstates are boring, and have chains of gas stations. You might be able to piggy back the deliveries onto chain-gas-stations more easily but you lose control.

Smaller towns along a world famous route, harkening back to American self- mythology, plus Independant stores who will be glad of the extra income and attention.

There you could own the industry.</comment>


Repair edb file - <AUTHOR> EDB to PST Converter repairs corrupt or damaged Exchange EDB files and restores the mailboxes into Outlook PST file.
You can easily view Mailbox data from the PST files using MS Outlook application.EDB to PST EDB to PST Converter tool
helps you to recover mails, images, attachments, drafts, calendar, journals, appointments, tasks, notes, etc.
from the damaged EDB files.
Its ease of use GUI enables you to preview recovered mail items.It is such simple software that a user
with less technology awareness can easily operate it without any difficulty.
With this product client can undoubtedly and just as split your recover PST file to little PST file from 1 GB to 5 GB. EDB to PST Converter software is the great solution to repair crashed EDB file in order to convert EDB file to PST file. It helps you to extract Exchange database to MS Outlook. EDB converter software perfectly convert data from EDB file into PST file.
EDB to PST Converter is designed to convert EDB files of MS Exchange into existing or new PST files and to transform several
 mailboxes from selected files at once. Key Features:-
- Instantly Convert EDB to PST File
- Repair corrupt or inaccessible Exchange Server Data or EDB file
- Conversion of Single or Multiple EDB files into PSTs with just one click.
- Conversion of EDB files of all sizes to existing or newly created PST files
- Efficient exporting to all mailbox items into PST.
Download link :-http://www.filesrepairtool.com/edb-repair-tool.html <comment><USER2> This Software is a unique and appropriate solution for repairing and restoring exchange mailboxes to Outlook PST files, convert EDB to Outlook Data file format without any trouble. Download link :- [http://www.edbtopst- converter.com/](http://www.edbtopst-converter.com/)</comment>


The Sibling Effect - <AUTHOR> http://www.nytimes.com/2011/09/25/books/review/the-sibling-effect-by-jeffrey-kluger-book-review.html?_r=1&smid=tw-nytimes&seid=auto <comment><USER2> It's amazing how much effort has gone into phoney-baloney correlations between personality and signs of the zodiac, when there's so much _real_ correlation between your personality and your birth order.

Also: how old you are compared to the rest of your class at school. The older ones tend to wind up more dominant, the younger ones less so.

<comment><USER3> People _want_ the Zodiac, because the Zodiac is friendly and harmless. There's no "bad" sign to be born under.

Birth order, on the other hand, is something wholly out of your control with substantial rammifications. They aren't always pretty rammifications. People don't really like to hear about that sort of thing.

<comment><USER4> I would imagine people should _want_ to know that birth order can have profound effects on their personality and disposition: then they can try to actively counteract or encourage those tendencies. What you're not aware of, you can't change.

<comment><USER5> What you aren't aware of can't be used to describe your victim status.

</comment></comment></comment></comment><comment><USER6> Is this getting blown a bit out of proportion? The correlation with birth order is 3 points on an IQ test - for reference, texting has been shown to drop your IQ by as much as 10 points [1].

Much like a MBTI, this is probably useful in the broad sense, but should not be depended upon objectively.

[1][http://www.timesonline.co.uk/tol/life_and_style/education/st...](http://www.timesonline.co.uk/tol/life_and_style/education/student/news/article384086.ece)

<comment><USER7> I think the social impact of siblings is probably more significant that the intellectual one..... whatever that may be. I don't actually have any personal experience to draw from here. I grew up an only child and am raising an only child.</comment></comment>


Clear for beer: Biometrics provider now enables alcohol purchases at events - <AUTHOR> https://techcrunch.com/2018/08/06/clear-for-beer-biometrics-provider-now-enables-alcohol-purchases-at-seahawks-and-mariners-games/ <comment><USER2> Uhh...no thanks. I don't need, or want, any company tracking my alcoholic purchases via finger print.

<comment><AUTHOR> Right? I can see the appeal of convenience by being able to purchase drinks at a pool bar or something so you don't need to carry ID/cards on you but at what cost? Payment by fingerprint (even though we do that through our phones currently) but at a physical device controlled by someone else feels dystopian.</comment></comment>


Snorelax Alarm Clock Wakes You Up Earlier When There Is Traffic on Your Route - <AUTHOR> https://itunes.apple.com/us/app/snorelax-alarm-clock/id1016903479?l=nl&ls=1&mt=8 <comment><USER2> The idea sounds awesome, the execution looks bad.

<comment><AUTHOR> Can you tell me why the execution looks bad?</comment></comment>


Zotonic - the Movie (Erlang Web Framework) - <AUTHOR> http://zotonic.com/themovie

<comment><USER2> Nice little promotion video for an interesting project.

But one thing looks a bit odd to me, it's that she sits there alone behind the guys ;)

It would probably look better if they used a bigger sofa where she could sit next to them.

</comment><comment><USER3> The guys were sitting there minding their own business and she started talking to them. Then they really got going and all this got captured on tape.</comment>


Airbnb hidden camera: Family finds camera livestreaming from their rental - <AUTHOR> https://edition.cnn.com/2019/04/05/europe/ireland-airbnb-hidden-camera-scli-intl/index.html <comment><USER2> Oh, yet another example of "We'll do zlich unless the media gets a whiff of it, in which case we'll apologize for getting caught and do our best to pretend it's an isolated incident and not at all our fault" incident handling by a disruptive tech company.

How surprising indeed.

</comment><comment><USER3> There should really be legal penalties for that kind of bullshit where they ignore problems & fob the customer off until it goes public.

Airbnb should be held liable as an accomplice of the creepy landlord in whatever crime he's going to be charged for. I can guarantee that will put an end to these incidents overnight.

<comment><USER4> The host should be liable.

<comment><USER3> The host should definitely be liable, but Airbnb too. When a burglar has an accomplice to drive him around and they get caught, the accomplice is also liable. Airbnb in this case is the accomplice that helped direct victims to the creep's place.

While there is an argument to be made that they couldn't have known, I feel like it should be their responsibility to solve this problem (or close up shop if they can't), but in this particular case they basically admitted guilt and proven their dishonesty by saying everything is OK but then suddenly banning the creep when the story has gone public.

<comment><USER5> Just because one guy wants to break the law doesn't mean anyone who ever interacted with him is an accomplice. There is a difference between participating in a crime and selling something or facilitating in a transactions. Dalstrong selling kitchen knives without a background check is not wrong. Amazon and Discover facilitating buying kitchen knives without a background check is not wrong. Buying a kitchen knife set so your pal can rob somebody is wrong.

We're not just supposed to stop selling kitchen knives because some guy did something illegal with one.

</comment></comment></comment></comment><comment><USER6> _In a statement, Airbnb told CNN: "The safety and privacy of our community -- both online and offline -- is our priority. Airbnb policies strictly prohibit hidden cameras in listings and we take reports of any violations extremely seriously. We have permanently removed this bad actor from our platform."_

It's shit like this, which really makes my blood boil and guarantees that I will never again do business with this bunch of despicable assholes. let me translate that:

 _In a statement, which Airbnb was forced to provide CNN, because of really bad publicity they meant to say: We give exactly zero fucks about the safety and security of our "community". Unless of course it becomes bad publicity, in which case we pretend to actually give a shit. What we mean is that if you want a fighting chance for a reasonable resolution then you should go public and and hope that it goes viral. Then we may actually do something about it_

How can those PR assholes actually sleep at night?

</comment><comment><USER7> > "We've become much more cautious now," she said, advising other travelers to > learn how to scan networks for hidden cameras.

Hosts: Guest Wifi, Home Wifi.

Camera livestreams from home wifi and won't be detected from guest network.</comment>


Ask HN: OOP vs FP? - <AUTHOR> Why is OOP bad than FP? What are the specific advantages with FP? Can OOP be implemented by FP and vice versa? <comment> codemonkey-zeta I think there's a false dichotomy which pervades discussion of programming "paradigms". They're all tools with specific jobs, and a good programmer will be a master of many.

OOP is a tool designed for a certain class of problems - problems which are adequately modeled by message-passing entities. A desktop environment is the perfect example.

FP is a tool well-suited to other problems. If I wanted a system to manage facts about some domain, and change those facts based on outside stimuli, I would be inclined towards a purely functional system operating on immutable data structures. Think about the proliferation of redux in web development and you'll see this is exactly the model of user interaction with a single-page web application.

If I wanted a system that closely interacted with a number of chips/hardware components with extremely fine-grained control, I would use an imperative approach.

All these paradigms have their purpose. It's when programmers get dogmatic about a certain paradigm where insane levels of complexity arise. Know your tools, and use them appropriately.

<comment><USER2> Also a bit of a false dichotomy with a strict mapping of programming languages and paradigms. OOP can happen in C, though the language's affordances aren't great for it. Same with functional programming in Java... Some languages have OK affordances for all of the above, but not great for any one.

</comment></comment><comment><USER3> OOP is for structuring application code, FP is for structuring flow and make reasoning easy. They are different paradigms but can be used hand in hand. To be stateless and single responsibility is as desirable in Java as well as in Haskell, the way you achieve it depends on the tooling.

</comment><comment><USER4> Take a look at Common Lisp. That's about as close as I think one can get to a seamless melding of FP with OOP (using Common Lisp Object System, CLOS). Mind you, it doesn't look very much like OOP in Java, but it covers the same territory.

</comment><comment><AUTHOR> Thanks a lot for all of your insightful comments. This is really interesting.</comment>


Apple built Keynote because Steve Jobs hates PowerPoint - <AUTHOR> http://sachin.posterous.com/apple-built-keynote-because-steve-jobs-hates <comment><USER2> As noted in the comments of the article, Jobs was a big fan of Concurrence which was developed on the NeXT platform by Lighthouse Design.

<http://en.wikipedia.org/wiki/Lighthouse_Design>

Wikipedia also says that's what he used: _Prior to using Keynote, Jobs had used Concurrence, from Lighthouse Design, a similar product which ran on the NeXTSTEP and OpenStep platforms_

Jobs spoke highly of Lighthouse design during the 1997 WWDC video that was circulating around recently. Keynote was inspired by Concurrence. People noticed the similarities right away: [http://forums.macrumors.com/showpost.php?p=218463&postco...](http://forums.macrumors.com/showpost.php?p=218463&postcount=33)

<comment><USER3> In fact at one point Apple threatened a patent lawsuit against Sun, and Sun responded by pointing out that they could easily sue over how similar Keynote was to Concurrence. Neither lawsuit ever got filed. See [http://www.geek.com/articles/apple/former-sun-ceo- schwartz-d...](http://www.geek.com/articles/apple/former-sun-ceo-schwartz- discusses-apple-lawsuits-and-microsoft-royalty-demands-20100310/) for verification.

<comment><USER4> Sigh... Imagine if McNeally decided to base his Office-killer on Lighthouse's codebase instead of StarOffice...

It could have actually killed Office.

<comment><USER5> Sadly no it couldn't.

Office's dominance or otherwise isn't down to functionality, it's down to corporate habit, compatibility, user familiarity and a big ol' dose of FUD about using something different.

Until you find a way to deal with those for major corporate clients you could produce the best productivity suite in the whole world and you still wouldn't shift Office.

<comment><USER6> Strongly disagree here. Functionality wise, Office (read Excel and Word) murdered everything else in the early-mid 90s.

There are certainly other reasons that contributed greatly to Office's monopoly but I don't see FUD as one of any consequence.

<comment><USER5> I'm not saying that's how it got where it is, I'm saying that's one of the things that's keeping it there.

</comment></comment></comment></comment></comment></comment><comment><USER7> Everybody hates PowerPoint, and every version is worse than the previous one. For example, n PPT 97 you could adjust shapes but in '2000 and later versions they line up "automatically", meaning that when you move one it gets off the grid and it's subsequently impossible to realign it by hand.

But there is a good competitor to PowerPoint in MS Office: Visio. Visio is a great, powerful, professional piece of software, feature-rich and not that hard to learn.

According to <http://en.wikipedia.org/wiki/Microsoft_Visio> Visio first shipped in 1992; but it doesn't say if there ever was a Mac version. Was there?

<comment><USER8> OS X already has a better visio: <http://www.omnigroup.com/products/omnigraffle/>

<comment><USER9> No, no it doesn't. Visio is a much better product with decent templates, preferences that stick, and shape arranging and editing that lets you get a lot done. Scaling also works well in Visio and not so well in OmniGraffle.

I have used both a lot (Visio when it came on the sample disc before it was a Microsoft product, OmniGraffle Pro since 1.0), and have finally given up on the idea that OmniGraffle will be as good as Visio. I really wish Microsoft would port it or someone else really look at the fundamentals of what Visio is capable of.

</comment></comment></comment><comment><USER10> Keynote would be absolutely amazing if it allowed for one thing: graphic/pdf objects to be anchored inline with text. With this, latex rendered formula could be included in a far easier manner.

Most CS academics use macs at this point, and I'm sure engineers would find it invaluable as well. Apple has been ignoring its more technical users and focussing on the the masses for a while now. It's rather disappointing.

<comment><USER11> I disagree. Most slides benefit from having less content on them. A better way to jam different kinds of content together on one slide really doesn't help your viewers.

And you can be disappointed in Apple focusing on consumers, but you can't say it's not working for them.

<comment><USER12> You obviously have no frame of reference to this conversation. This isn't Hawking writing to the masses, he's talking about technical presentations.

<comment><USER11> My frame of reference is that most academic technical presentations are bad, just like most software produced during university research is bad to the point of being impossible to run anywhere else.

You may feel that the information in a single slide with three formulas and a few bullets of prose makes it worth the effort to put up with a bad slide, but that doesn't make it a good slide by any means.

</comment></comment></comment></comment><comment><USER13> Forget Keynote, the video reminded me of how influential the PowerBook G4 has been. "Sex" is right - the MB Pro on my desk still shares the same basic design as its predecessor from 10 years ago. It has become timeless, like the original ThinkPad design.

<comment><USER14> ish. The MB is based on the aluminium PBG4 which was bigger and rather less good-looking than the TiBook. But the TiBook's painted kept flaking off, and that wasn't sexy in the slighest

</comment></comment><comment><USER15> "Apple built Keynote because _everyone_ hates PowerPoint."

</comment><comment><USER16> From what I know Steve used to do his NeXT presentations in Lighthouse Design's Concurrence, and he continued to use an OpenStep machine well into his return to Apple.

</comment><comment><USER17> "PowerPoint is by far the worst app in the Microsoft Office suite"

Really? I nominate MS Word for that title. Maybe we should hold a poll :)

<comment><USER18> I'd be going for Publisher. Even the Office addicts at work hate Publisher.

I think PowerPoint is bad just because People think that Other People will be impressed by superfluous animation and other shinies. They don't think back to the time someone last presented them with a crappy PP preso with far too much animation. (Oh and I'm sick of helping kids at work re-encode to WMV so they can embed movies in it :/)

<comment><USER19> +1 googolplex. I hate Publisher with the fiery passion of a thousand burning suns.

</comment></comment></comment><comment><USER20> This is a good example of what happens when a driven person finds a problem that, in his opinion, needs fixing. In this case Steve Jobs, who's famous for his keynotes, speeches etc., found that existing solutions do not suit his needs and, what's more important from the business perspective, there's a bunch of people who feel the same. So, as a brilliant entrepreneur, he made the Keynote happen.

</comment><comment><USER21> I don't think powerpoint is all that bad.

It's people who don't know how to present is what makes it look bad. Especially when they fill the screen with every single word they say.

<comment><USER5> It's a fair point but ideally a presentation application should do everything it can to make you look good.

PowerPoint's issue is that it doesn't look great to start with which is one of the reasons people try to "sex up" their presentations which is where all the crap starts appearing.

If PowerPoint produced better looking presentations as standard (essentially had better templates which still, even in the latest versions it doesn't), people might have less reason to give free reign to their stupidity.

<comment><USER22> I disagree. The problem with PowerPoint templates is that everyone has them. When you see a PowerPoint presentation your first thought is, "this is a PowerPoint presentation -- I know that template".

With that said, I think PowerPoint is actually really good. And most presentations surprisingly good. In fact, I tend to think people tend to do a better job with their PowerPoint presentations than they do the actual paper that goes with it. The spend more effort distilling their thoughts down to what really matters, rather than endless exposition.

I just think its become trendy to hate on PowerPoint.

<comment><USER5> I disagree.

I've got Office 2011 for the Mac and Office 2010 for Windows. One of the first things I did was go and look to see if they'd improved the templates and they simply aren't very good.

I agree that people get bored of seeing the same ones over and over but that's part of the same problem - with so few good choices people all migrate around the small number of least bad options.

As for it being trendy to hate on PowerPoint, I don't know who you hang out with but talking about any presentation software in any terms isn't trendy among people I see... I get that certain views become fashionable but I don't think PowerPoint is the sort of thing that people round on in that way, it's a bit to "meh" to generate a bandwagon.

<comment><USER22> _I agree that people get bored of seeing the same ones over and over but that's part of the same problem - with so few good choices people all migrate around the small number of least bad options._

I don't think that's the issue. Most people use the themes availabe in the design tab. That's it. I've shown people how there are more than a thousand templates available from the file menu and almost everybody says, "Oh, I didn't know about those!".

<comment><USER5> Maybe it's just me but I've reviewed a couple of hundred and saw nothing I'd want to use in preference to the ones people always use.

In any case, even if it's true that they're hidden away so people find them whose fault is that?

The whole reason MS changed the UI to include the ribbon was that every time they asked people about new features they should include they were given ideas for things Office already did so the idea was to make things easier to find. Maybe it's time they did something for templates.

</comment></comment></comment></comment></comment></comment><comment><USER23> Keynote's one minor-but-annoying limitation is that you can't change default parameters globally for animations.

</comment><comment><USER24> "Good artists copy, great artists steal." <http://www.youtube.com/watch?v=CW0DUg63lqU>

The second video in the original posters link, the Titanium Powerbook unveiling, Jobs had a lot of spunk compared to the most recent unveilings.

</comment><comment><USER25> Ok, Concurrence, but the name "Keynote" certainly is suggestive.

</comment><comment><USER26> Is that Comic Sans?

<comment><USER27> One Stroke Script.

<http://www.fonts.com/findfonts/detail.htm?productid=173302></comment></comment>