I wasn't planning on writing about the disaster, since I figured that many people more eloquent than I had already covered it.
And then I got an email from Will Poole, the Senior VP in charge of the Windows division. Will was on Phuket at the time of the tsunami, Will was sea kayaking on Phuket at the time of the Tsunami. Fortunately, he and his family were safe (they were on the "unaffected" part of the island.
Will wrote up a Photostory3 photostory with his pictures of the event, and posted them on the Nikon digital photography site here (if you're running XP SP2, the content's mislabled so you need to allow the content to be downloaded). You'll need WM10 or Photostory3 to see it, since it's encoded with the Photostory codec (which dramatically reduces the size of the WMV file). Will ends with an ad for Photostory3, IMHO, that was unfortunate (since it detracts from his message), but...
Anyway, the video's absolutely worth watching.
And if you can somehow find the money, please, please give to one of the many charities helping out. While the news reports currently indicate that they currently have more cash than they know what to do with, the reality is that the reason for this is simply that too much infrastructure's been lost for them to begin spending the money - the need is still there.
This posting is provided "AS IS" with no warranties, and confers no rights.
In it, he points out that developers will no longer be able to count on the fact that CPUs are getting faster to cover their performance issues. In the past, it was ok to have slow algorithms or bloated code in your application because CPUs got exponentially faster - if you app was sluggish on a 2GHz PIII, you didn't have to worry, the 3GHz machines would be out soon, and they'd be able to run your code just fine.
Unfortunately, this is no longer the case - the CPU manufacturers have hit a wall, and are (for the foreseeable future) unable to make faster processors.
What does this mean? It means that (as Herb says) the free lunch is over. Intel (and AMD) isn't going to be able to fix your app's performance problems, you've got to fall back on solid engineering - smart and efficient design, extensive performance analysis and tuning.
It means that using STL or other large template libraries in your code may no longer be acceptable, because they hide complexity.
It means that you've got to understand what every line of code is doing in your application, at the assembly language level.
It means that you need to investigate to discover if there is inherent parallelism in your application that you can exploit. As Herb points out, CPU manufacturers are responding to the CPU performance wall by adding more CPU cores - this increases overall processor power, but if your application isn't designed to take advantage of it, it won't get any faster.
Much as the financial world enjoyed a 20 year bull market that recently ended (ok, it ended in 1999), the software engineering world enjoyed a 20 year long holiday that is about to end.
The good news is that some things are still improving - memory bandwidth continues to improve, hard disks are continuing to get larger (but not faster). CPU manufacturers are going to continue to add more L1 cache to their CPUs, and they're likely to continue to improve.
Compiler writers are also getting smarter - they're building better and better optimizers, which can do some really quite clever analysis of your code to detect parallelisms that you didn't realize were there. Extensions like OpenMP (in VS 2005) also help to improve this.
But the bottom line is that the bubble has popped and now it's time to pay the piper (I'm REALLY mixing metaphors today). CPU's aren't going to be getting any faster anytime soon, and we're all going to have to deal with it.
EDIT: Please note: This is a single post explaining the answer to a question posted earlier on this blog.
This site is NOT intended as a general purpose site in which to get help with your math homework.
If you're having problems with your math homework, then you should consider asking your parents for help, you're not likely to find it here, sorry about that.
Ok, he's back :) My last post was a math problem that the teacher in my wife's classroom gave to the students (mostly 11 and 12 year olds fwiw).
Here's the official answer to the problem, the kids needed to show ALL the calculations (sorry for the word-junk):
Pyramid L=W=2’ H2 = 22 – 12 so H = 1.73
V =1/3*l*w*h
= 1/3*2*2*1.73 = 2.31 cubic feet
SA =b2 + 2bh
= (2)2 + 2*(2)*1.73
= 4 + 6.92 = 10.92 square feet.
Triangles
V=B*h SA = front + back + 3 sides
= 2*(1/2*l*h) + 3* L*W
Triangle #1 : L=8’, W=2’ H2 = 82 – 42 H = 6.93
V = 1/2*8*6.93*2 = 55.44 cubic feet
SA = 2(1/2*8*6.93) + 3*8*2 = 103.44 square feet
Triangle #2 : L=9’, W=2’ H2 = 92 – 4.52 H = 7.79
V = 1/2*9*7.79*2 = 70.11 cubic feet
SA = 2(1/2*9*7.79) + 3*9*2 = 124.11 square feet
Triangle #3 : L=10’, W=2’ H2 = 102 – 52 H = 8.66
V = 1/2*10*8.66*2 = 86.6 cubic feet
SA = 2(1/2*10*8.66) + 3*10*2 = 146.6 square feet
Base of Tree: L=W=2’ H= 3’
V = L*W*H = 2*2*3 = 12 cubic feet
SA = 2(L*H) + 2(W*H) + 2(L*W)
= 2(2*3 + 2*3 + 2*2)
= 2(6 + 6 + 4)
= 32 square feet
6 cones with H=1’, R=.5’, S= 1.12’
V = 1/3*π*r2h = 1/3 * 3.14*.52 * 1 = .26 cubic feet
Total volume = 6*.26 = 1.56 cubic feet
Volume before cutouts:
Pyramid 2.31
Triangle #1 55.44
Triangle #2 70.11
Triangle #3 86.60
Base 12.00
Cones 1.56
TOTAL 228.02
Cubic feet
Surface Area before cutouts:
Pyramid 10.92
Triangle #1 103.44
Triangle #2 124.11
Triangle #3 146.60
Base 32.00
Cones 15.30
TOTAL 432.37
Square
All of the volume of the cutouts are subtracted from the total volume of the Christmas tree.
There are 6 cylinders total.
1 has r=1, h=2
4 have r=1.5, h=2
1 has r=2, h=2
V = πr2h SA = 2πr2 + 2πrh
V = π*(12 + 4(1.52) + 22)*2
= π*(1+9+4)*2
= 3.14*14*2 = 87.92 cubic feet
Small Triangular Prisms
There are three triangular prisms.
1 has L=B=1 and W = 2’
H2 = 12 - .52 so H= .87’
2 have L=B=1.5 and W = 2
H2 = 1.52 - .752 so H = 1.69’
V = Bw where B=1/2*l*h
V = (1/2*1*.87*2) + 2*(1/2*1.5*1.69*2)
= .87 + 5.07
= 5.94 cubic feet
Total volume to subtract:
87.92
+5.94
93.86 cubic feet
Christmas tree volume minus cutouts:
228.02
-93.86
134.16 Cubic Feet total
The front and back SA’s are subtracted from the total SA of the Christmas Tree but the side SA’s are added to the total.
Cylinders
Front and back SA = 2πr2
Side SA = 2πrh
Front and Back SA
= 2π(12 + 4*1.52 + 22)
=6.28 * (1+9+4)
= 87.92 Square feet
Side SA
= 2πrh
=2*π*(1+4*1.5+2)*2
= 12.56 * 9 = 113.04 Square feet
= 2*1/2*b*h
= b*h
= 1*.87 + 2(1.5*1.69)
= 5.91 Square Feet
= 3*b*w
= 3*(1+1.5+1.5)*2
= 24 square feet
Twice the SA of top of Base
=2(2*2)=8 Square Feet
SA to Add: 137.04
SA to Subtract: 101.83
Total SA to add: 35.21
Christmas Tree SA plus cutouts:
432.37
+35.21
467.58 Square Feet Total
Edit: Reduced Google juice of this post by changing the title from "Bobs Math Answers" to something more accurate - this post isn't intended to be a Q&A for students who are having trouble with their math homework :)