Saturday, August 30, 2008
Open Source Code Review - A choice to name a method "Inscrutable"?
C# 4.0: Meet the Design Team
Anders and crew meet in the room where C# was birthed and talk about the future.
Wednesday, May 07, 2008
Edward Tufte One Day Seminar
Yesterday I attended a one day seminar in Arlington, VA presented by Edward Tufte.
It was a great presentation and I picked up all four of his books.
quotes and general notes:
Great designs are transparent
Never segregate data by the mode of production.
Show all the data, it provides credibility.
We should be concerned with the quality of thought.
Don't use lowest common denominator design or you will have an intellectual disaster.
Tables out perform graphs for data less than 1000 points.
Screens should be 95% content and 5% administrative debris (scrollbars, toolbars, etc.). Measure it.
Design the surface first. Outside-In design. iPhone designed the hardware platform before the software. iPhone has one of the highest DPI of any consumer device.
Don't provide an application solution.
Leave the UI alone once it's done.
There is no relationship between the amount of information and the ability to process. The human eye can process 10mbit/sec.
Don't be an original. Steal a good design.
Consider a "super graph". It unifies and relates the audience to the data or theme.
Increase information throughput
Examine how newspapers report data and clone it. Examine "Nature" magazine.
Multivariant problems are the only interesting problems.
Progress in technology is measured in resolution
Don't use legends on graphs. Put the text on the line.
Maximize content reasoning and minimize decoding
"We want to be approximately right rather than absolutely wrong"
Use Gill Sans Font
Annotate everything
about presentations
- Show up early for your own presentation to meet people, to show a gracious gesture, and to hand out materials early.
- Use presentations as a review of the material distributed prior to the meeting. Maybe simply ask "Are there any questions?" and end the meeting.
- Use Power Point as a projector operating system
- Give out handouts before meeting - people can read 2x-4x times faster than you can talk.
- What is the problem?
- Who cares? the relevance
- The solution
- Have a summary
- Say you will answer questions when they are done reading
- Use sentences. No laundry lists of nouns. Sentences for you to think causally.
- Don't use bullet reveals.
- Practice in front of a friend or a video camera
- Turn off the video and listen to the audio
- Ask a trusted friend for criticisim
- Never begin with an all purpose joke
- Never apologize at the start of the presentation
- Stay out of the first person during the introduction
- Stay on content
- Finish early
Wednesday, April 16, 2008
Wednesday, March 26, 2008
Quote of the day
Good judgement is the result of experience ... Experience is the result of bad judgement.—
Wednesday, January 30, 2008
Playing with the .NET FCL symbols and source code
I’m playing with the debug symbols for the .NET framework and came across some interesting things in code.
Dropping back to memory manipulation for performance from the String class
// Returns the entire string as an array of characters.
unsafe public char[] ToCharArray() {
//
int length = Length;
char[] chars = new char[length];
if (length > 0)
{
fixed (char* src = &this.m_firstChar)
fixed (char* dest = chars)
wstrcpyPtrAligned(dest, src, length);
}
return chars;
}
AMD Specific code!
#if AMD64
// for AMD64 bit platform we unroll by 12 and
// check 3 qword at a time. This is less code
// than the 32 bit case and is shorter
// pathlength
while (length >= 12)
{
if (*(long*)a != *(long*)b) break;
if (*(long*)(a+4) != *(long*)(b+4)) break;
if (*(long*)(a+8) != *(long*)(b+8)) break;
a += 12; b += 12; length -= 12;
}
#else
while (length >= 10)
{
if (*(int*)a != *(int*)b) break;
if (*(int*)(a+2) != *(int*)(b+2)) break;
if (*(int*)(a+4) != *(int*)(b+4)) break;
if (*(int*)(a+6) != *(int*)(b+6)) break;
if (*(int*)(a+8) != *(int*)(b+8)) break;
a += 10; b += 10; length -= 10;
}
#endif