Yale Patt on Abstraction

Abstraction’s a good thing? Abstraction is a good thing if you don’t care about the performance of the underlying entities. You know, so many schools teach freshmen programming in Java. So what’s a data structure? Who cares? My hero is Donald Knuth, who teaches data structures showing how data is stored in memory. Knuth says that unless the programmer understands how the data structure is actually represented in memory, and how the algorithm actually processes that data structure, the programmer will write inefficient algorithms.

from IEEE Micro Nov/Dec 2007

Google's engineering culture

Article in the New Yorker on Google contains a fascinating description of a product design meeting:

Page and Brin had wanted an upgrade of an existing product, and they were unhappy with what they were hearing from the engineers. At first, they were stonily silent, slid down in their chairs, and occasionally leaned over to whisper to each other. Schmidt began with technical questions, but then he switched roles and tried to draw out Page and Brin, saying, “Larry, say what’s really bugging you.”

Page said that the engineers were not ambitious enough. Brin agreed, and said that the proposals were “muddled” and too cautious.

“We wanted something big” Page added. “Instead, you proposed something small. Why are you so resistant?”

The head of the engineering team said that the founders’ own proposed changes would be too costly in money, time, and engineering talent.

Schmidt, the only person at the meeting wearing a tie,  tried to summarize their differences. He noted that Brin and Page wanted to start by deciding the outcome, while the product team focused first on the process, and concluded that the engineering would prove too “disruptive” to achieve the goal.

In many organizations, “process” issues either internal to the engineering team or to the management teams are allowed to
gerbil dominate product development. Decisions on whether to provide some capability may be made, effectively, by an engineering team leader who is intent on protecting his/her authority over engineering resources, or a sales manager who has some dimwitted idea about market segmentation or internal power struggles or …..

The huge advantage companies like Google, or the Microsoft of 20 years ago, have is that the top management have technical and market understanding sufficient to overrule such concerns. It’s grimly hilarious to hear the standard stories about “customer centric” and “shareholder value” objectives from people working inside companies that are really dominated by internal politics and the career ladder plotting of management. Such companies running into a well financed monster like Google, have about as much chance as a gerbil in the piranha tank.

Boeing's clever idea

(Update – great link in John Regehr’s comment)

Apparently, passenger, admin, and air control computers are all connected. Here’s a reassuring comment (emphasis added)

Boeing spokeswoman Lori Gunter said the wording of the FAA document is misleading, and that the plane’s networks don’t completely connect.

The FAA is concerned.

The proposed architecture of the 787 is different from that of
existing production (and retrofitted) airplanes. It allows new kinds of
passenger connectivity to previously isolated data networks connected
to systems that perform functions required for the safe operation of
the airplane. Because of this new passenger connectivity, the proposed
data network design and integration may result in security
vulnerabilities from intentional or unintentional corruption of data
and systems critical to the safety and maintenance of the airplane. The
existing regulations and guidance material did not anticipate this type
of system architecture or electronic access to aircraft systems that
provide flight critical functions.

So we are closer to the first DRM induced fatality!

The forefront of Internet 2.0+ and stuff


Welcome to the world’s most dynamic eBusiness marketing, design and consulting agency. We provide distinct clients with groundbreaking business strategies and cutting-edge designs to aggressively and creatively compete in a changing economy.

From the stunning website of Huhcorp. The sister site is even better.

Does your PHP network have double back-end XHTML redundancy? Is your PDA hard drive triple access enabled for Wi-Fi management? If you don’t have end-point security in your adaptive architecture strategy, then you need us

what do we got to verify in an os?

From comments below.

Just one more comment: I think we should make a distinction between a tool that can verify threaded code and a tool that can verify the code that implements threading. The latter is what you are looking for here and it is much more difficult. Furthermore it is arguably unnecessary — a reasonable engineering solution is to get someone really good to write the dispatcher/scheduler and then focus verification effort on the mountains of code written by the rest of us that run on top of that core functionality.

I’m not so sure about that. The example below uses threading primitives – it does not implement them. We could even look at a more academic example and see the same problem.

threadA:
    while(1){
                  x = x+1;
                  sem_post(&z);
                  sem_wait(&t);
                  y = y+1;
   }
}
threadB:
   while(1){
       y = y+1;
       sem_post(&t);
       sem_wait(&z);
       x = x+1;
     }

My 20 second inspection tell me this ultra-simple example is right (which means it may have 100 errors). Prove it without having enough machinery to do the code below.