News for hackers. Stuff that matters.
Re:Lead Bullets (2011) by TheBiv on Wednesday May 29, 2013 @09:54PM (#5790431)
This was a lessons-learned post, but I would LOVE to read a "How we made those lead bullets" post.

Because his post goes like "guy says lets use lead bullets." -> "We hunker down and use lead bullets" -> magic -> "Boom. $1.6 billion company"

Re:Lead Bullets (2011) by marcosdumay on Wednesday May 29, 2013 @10:49PM (#5790581)
> "How we made those lead bullets"

Optimize something, reduce the running time by a few ms, optimize something else, reduce by some more ms, repeat 8 hours a day, with several people in paralel for a few months.

The concept of a "lead bullet" implies that the history won't be interesting to read, just some repetitive boring hard work.

Re:Lead Bullets (2011) by TheBiv on Wednesday May 29, 2013 @11:13PM (#5790677)
> "Optimize something"

I may be the only one, but knowing what the 'something' was is incredibly valuable bc we all, as people, pick 'something' and not everything in any sort of bullet is created equal.

Re:Lead Bullets (2011) by dredmorbius on Thursday May 30, 2013 @02:49AM (#5791286)
In performance tuning, this is actually pretty straightforward:

- Processes which run many times.

- Processes which run long time (and block other processing).

- If at all possible: both.

The more subtle approach is to identify things you don't need to do (needless initializations, "settle" delays, doing (or allowing to be done) the _wrong_ thing requiring both unwinding that operation _and_ doing the right one, and anything you don't have to wait for (if it's an ancillary process, spin it off and handle it out-of-sequence). Redesigning a process to avoid sorting data. Eliminating global locks. Spinning off tasks to parallelized processing (especially if you have multiple cores/systems available. Pipelining data to avoid writing/reading from disk multiple times. Handling data in memory rather than on disk. Realizing you _can_ handle data in-memory, and that disk-seeks will kill you, so sorting or bucketing output. Swapping spinning rust for SSD. Specific tools such as COW, snapshots, or the like can be very useful in such cases.

Algorithms (or methods invoking algorithms) can be another big win.

I've seen processes fall in time requirements by 90% following such an optimization process.

Re:Lead Bullets (2011) by stephencanon on Thursday May 30, 2013 @06:23AM (#5791700)

  1. Use a sampling profiler on the important execution scenarios.
  2. Identify the operation that is taking the most time.
  3. Ensure it is using appropriate algorithms and data structures.
  4. Profile again; if it is still taking the most time, hand-optimize it.
  5. Goto 1
Re:Lead Bullets (2011) by stephengillie on Thursday May 30, 2013 @12:38AM (#5790962)
Pick one of the "somethings" which is having the biggest impact to your product or service. Repeat.
Re:Lead Bullets (2011) by leftnode on Wednesday May 29, 2013 @10:56PM (#5790611)
I agree completely. The geek in me wants to know what they executed on. If I'm an entrepreneur facing the same situation, I'd like to read exactly what others did. Even if it can't help me directly, it gives me some motivation that if others did it, I can do it as well.

Even if it was boring or rote work, I'd love to know what it was.

Re:Lead Bullets (2011) by TheBiv on Wednesday May 29, 2013 @11:10PM (#5790662)
I feel the exact same way! The geek in me would like to know what they optimized and what they brute forced!
Re:Lead Bullets (2011) by hobs on Thursday May 30, 2013 @01:53AM (#5791142)
Knowing exactly how they did it probably wouldn't even work for someone else. And that is not the point, instead of facing their problems head on they were avoiding them, and that almost destroyed them. It's almost a parable.