logging in or signing up Comparing NET and Java The View from 2006 Chappell Davidson Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 618 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 28, 2007 This Presentation is Public Favorites: 2 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Comparing .NET and Java:The View From 2006: Comparing .NET and Java: The View From 2006 David Chappell Chappell & Associates www.davidchappell.com Copyright © 2006 David ChappellApplication Platforms Today: Application Platforms Today Data Access .NET Framework 2.0: .NET Framework 2.0 Defining Logic Containing and Connecting Logic Accessing Data Using Logic ADO.NET J2EE 1.4: J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data JDBC Using LogicHow We Got HereThe Last Ten Years: How We Got Here The Last Ten Years Java Microsoft 1996 Java, Java VM Windows DNA - ASP, ADO, MTS KeyWhat’s Next: What’s Next .NET Framework 2.0Application Platforms in 2008: Application Platforms in 2008 Defining Logic Containing and Connecting Logic Logic to Web Browser Accessing Data Data Access Using Logic Web Browser Standalone Client Remote Logic.NET Framework 3.0: .NET Framework 3.0 Defining Logic Containing and Connecting Logic ASP.NET Accessing Data Using Logic Browser/AJAX/ XBAPs Windows Presentation Foundation (WPF) Remote Logic ADO.NET Java EE 5: Java EE 5 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/Java Server Pages (JSP) Browser/AJAX Standalone Client Open SOA: Open SOA Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Service Data Objects (SDO) Servlets/ Java Server Pages (JSP) Browser/AJAX Standalone Client What Will Succeed J2EE 1.4?Some Observations: What Will Succeed J2EE 1.4? Some Observations “We’re moving away from slavish devotion to J2EE to a blended source model.” – Bill Roth, Vice President, BEA “Organizations should look elsewhere when considering new enterprise development and should plan for the eventual sunset of Java EE as an enterprise solution.” – Burton Group, July 2006What Will Succeed J2EE 1.4?Divining the Future: What Will Succeed J2EE 1.4? Divining the Future Major J2EE vendors have announced plans to support both Java EE 5 and Open SOA But they’re unhappy with Sun’s stewardship of Java Sun’s decision to open source Java should help Going forward, a combination of Java EE 5 and Open SOA is likely to dominateA Plausible Successor to J2EE 1.4: A Plausible Successor to J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/ Java Server Pages (JSP) Browser/AJAX Swing/Eclipse ClientDefining Logic: A Closer Look: Defining Logic: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Using Logic Objects Workflows If … Then … Rules If … Then … If … Then …Defining Logic: Objects: Defining Logic: Objects The main .NET languages (C#/VB) and Java are advancing along similar paths, e.g., Both now have generics Java has added annotations (analogous to .NET’s attributes) Both worlds are adding support for dynamic languages .NET: CLR-based IronPython Java: JVM-based Jython, Groovy, etc.Defining Logic: Workflows: Defining Logic: Workflows Workflow EngineCreating Workflow LogicTwo Approaches: Creating Workflow Logic Two Approaches A workflow language: Business Process Execution Language (BPEL) An XML-based language for defining process logic Originally created by Microsoft and IBM Now owned by OASIS Generalized activities: Windows Workflow Foundation (WF) Each activity is defined as a class Can also support BPEL with appropriate activitiesBPELExample Activities: BPEL Example Activities sequence: executes one or more activities sequentially flow: executes one or more activities in parallel switch: executes one of several paths based on the value of a condition while: executes a specified activity as long as a condition is true invoke: calls a web service receive: receives an incoming web service call compensationHandler: defines a compensation handlerBPELA Simplified Example (1): BPEL A Simplified Example (1) <process> ... <partnerLink name=“customer” ... /> ... <variables> <variable name = incomingRequest … /> <variable name = customerInfo … /> </variables> <sequence> <receive partnerLink="customer" variable=“incomingRequest“ />BPELA Simplified Example (2): BPEL A Simplified Example (2) <assign> <copy> <from variable=“incomingRequest" property="props:customerNumber"/> <to variable=“customerInfo" property="props:customerID"/> </copy> </assign> ... </sequence> </process> Defining a Graphical Process NotationAn Aside: Defining a Graphical Process Notation An Aside The Business Process Modeling Notation (BPMN) aims at defining a standard graphical notation for defining process logic It’s owned by the Object Management Group (OMG) BPELIllustrating a Typical Implementation: BPEL Illustrating a Typical Implementation BPEL Execution Engine Workflow Graphical Process Design ToolWFIllustrating Its Components: WF Illustrating Its Components WorkflowWFExample BAL Activities: WF Example BAL Activities Sequence: executes one or more activities sequentially Parallel: executes one or more activities in parallel IfElse: executes one of several paths based on the value of a condition While: executes a specified activity as long as a condition is true InvokeWebService: calls a web service Compensate: defines a compensation handlerPerspectiveBPEL and WF: Perspective BPEL and WF BPEL The standard allows some portability Although vendors typically add proprietary extensions to the language, e.g., for human workflow But it’s a rigid approach And most developers don’t like XML-based languages WF It’s a more general, extensible approach Allowing creation of reusable activities But it’s a Windows-only technology And learning to write effective WF workflows takes timeDefining Logic: Rules: Defining Logic: Rules A business rules engine (BRE) lets developers express rules in a standard way, then have them executed by a common engine A business rules management system (BRMS) typically includes: A BRE Developer tools Business analyst tools Rules management toolsRules in the .NET Framework 3.0: Rules in the .NET Framework 3.0 WF includes a basic rules engine The engine can be used with a WF workflow or separately The WF rules engine targets developers It’s not a full BRMS The goal is to help developers more easily create rule-based applicationsRules in Java EE/Open SOA: Rules in Java EE/Open SOA Vendors use a range of diverse rules engines Including integration with third parties such as ILOG The Object Management Group is working on some standards for rules PerspectiveRules: Perspective Rules Rules are becoming part of the standard development platform Although business rules engines aren’t yet a mainstream technology for developers Expect changes here Even Microsoft’s plans aren’t completely clearContaining Logic: A Closer Look: Containing Logic: A Closer Look Defining Logic Containing and Connecting Logic Logic to Logic Logic to Web Browser Accessing Data Using LogicContaining and Connecting LogicLogic to Web Browsers: Containing and Connecting Logic Logic to Web Browsers .NET Framework 3.0 ASP.NET 2.0 Java EE 5 and Open SOA: Both use Servlets/JSPs Java EE 5 also includes Java Server Faces (JSF) A JSP tag library implementing a model/view/controller (MVC) architecture for HTML interfaces Various open source options are also used, e.g., StrutsContaining and Connecting LogicLogic to Logic: Containing and Connecting Logic Logic to Logic Java EE 5 tries to improve the existing containers and communication mechanisms With JAX-WS and EJB 3.0 .NET Framework 3.0 and Open SOA instead provide a new unified foundation .NET Framework: WCF Open SOA: SCAMicrosoft vs. EJBThe Last Ten Years: Microsoft vs. EJB The Last Ten Years Java Microsoft Unifying CommunicationWCF: Unifying Communication WCFUnifying CommunicationSCA: Unifying Communication SCAAn Example ServiceWCF: An Example Service WCF using System.ServiceModel; [ServiceContract] interface IAdder { [OperationContract] int Add(int a, int b); } class Adder : IAdder { public int Add(int a, int b) { return a + b; } } An Example ServiceSCA (Java): An Example Service SCA (Java) import org.osoa.sca.annotations.* @Remotable public interface IAdder { int Add(int a, int b); } public class Adder implements IAdder { public int Add(int a, int b) { return a + b; } } Describing an Exposed Service WCF: Describing an Exposed Service WCF ... <service type=“Adder,CalcApp"> <endpoint contract=“IAdder,CalcApp" binding=”basicHttpBinding” address= "http://www.qwickbank.com/calc/adder.svc"/> </service> ...Describing an Exposed ServiceSCA: Describing an Exposed Service SCA ... <service name=“IAdder"> <interface.java interface=“services.calc.IAdder” /> <binding.ws port= “http://www.qwickbank.com/calc# wsdl.endpoint(IAdder/IAdderSOAP)” /> </service> ...More WCF/SCA Similarities: More WCF/SCA Similarities Both allow a service to maintain state between calls: WCF: [ServiceContract(Session=true)] SCA (Java): @Scope(“session”) Both allow one-way methods: WCF: [OperationContract(IsOneWay=true)] SCA (Java): @OneWay Both allow bidirectional communication via callbacksIllustrating Assembly: A CompositeSCA: Illustrating Assembly: A Composite SCADescribing a CompositeSCA: Describing a Composite SCA A <composite> XML element can specify: The components in a composite The services each component exposes The references each component makes to other services The wires that connect references to services Any properties that can be set on this composite Some things this allows: Dependency injection, where SCA locates the matching service for a component’s reference Although how this is done isn’t specified Graphical tools for assembling an application’s componentsPerspectiveWCF and SCA: Perspective WCF and SCA Problems addressed: WCF: Implementing services and remote clients SCA: Implementing services and remote/local clients; defining composite assembly Language support: WCF: Any .NET language SCA: Java, BPEL, C++, others Availability: WCF: Implementation available now SCA: Specs in progress Various implementations, e.g., open source Tuscany, are also in progressAccessing Data: A Closer Look: Accessing Data: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Data Access Using LogicData Access TechnologyThe Last Ten Years: Data Access Technology The Last Ten Years Java EE Open SOA Microsoft KeyIllustrating ADO.NET: Illustrating ADO.NET .NET Framework Data Provider .NET Framework Data Provider Application DBMSIllustrating SDO: Illustrating SDO .NET Framework Data Provider XML Document XML Document Application DBMS Data Access Service Data Access Service XML Document Other Data Source Data Access Service JDBCPerspectiveData Access: Perspective Data Access Data access is a hard problem Both camps have gone through many iterations The Java world has placed more emphasis on O/R mapping technology Microsoft’s forthcoming Language Integrated Query (LINQ) introduces a new perspective LINQ for SQL addresses O/R mapping LINQ for XML allows access to XML documents More . . . A Projection for 2008A Mainstream .NET Framework Application: WCF Service A Projection for 2008 A Mainstream .NET Framework Application WF Workflow ASP.NET AJAX WCF Service LINQ ADO.NETA Projection for 2008A Mainstream Java EE/Open SOA Application: Java SCA Component A Projection for 2008 A Mainstream Java EE/Open SOA Application JSP/ AJAX Java SCA Component BPEL SCA Component SDO JPASummary: Summary Both camps tend to move in similar directions The platforms will remain functionally similar The approaches sometimes differ in significant ways, however There are pros and cons Competition benefits everybodyAbout the Speaker: About the Speaker David Chappell is Principal of Chappell & Associates in San Francisco, California. Through his speaking, writing, and consulting, he helps IT professionals understand, use, and make better decisions about enterprise software. David has been the keynote speaker for dozens of conferences and events in the U.S., Europe, Asia, and Latin America. His popular seminars have been attended by tens of thousands of developers, architects, and decision makers in forty countries. David’s books have been published in ten languages and used in courses at MIT, ETH Zurich, and many other universities. He is Series Editor for Addison-Wesley’s award-winning Independent Technology Guides, and he has been a regular columnist for several publications. In his consulting practice, David has helped clients such as Hewlett-Packard, IBM, Microsoft, Stanford University, and Target Corporation adopt new technologies, market new products, train their sales staffs, and create business plans. David’s comments have appeared in The New York Times, CNN.com, and various other publications. Earlier in his career, he wrote software for supercomputers, chaired a U.S. national standardization working group, and played keyboards with the Peabody-award-winning Children’s Radio Theater. David holds a B.S. in Economics and an M.S. in Computer Science, both from the University of Wisconsin-Madison. You do not have the permission to view this presentation. In order to view it, please contact the author of the presentation.
Comparing NET and Java The View from 2006 Chappell Davidson Download Post to : URL : Related Presentations : Share Add to Flag Embed Email Send to Blogs and Networks Add to Channel Uploaded from authorPOINTLite Insert YouTube videos in PowerPont slides with aS Desktop Copy embed code: (To copy code, click on the text box) Embed: URL: Thumbnail: WordPress Embed Customize Embed The presentation is successfully added In Your Favorites. Views: 618 Category: Entertainment License: All Rights Reserved Like it (0) Dislike it (0) Added: November 28, 2007 This Presentation is Public Favorites: 2 Presentation Description No description available. Comments Posting comment... Premium member Presentation Transcript Comparing .NET and Java:The View From 2006: Comparing .NET and Java: The View From 2006 David Chappell Chappell & Associates www.davidchappell.com Copyright © 2006 David ChappellApplication Platforms Today: Application Platforms Today Data Access .NET Framework 2.0: .NET Framework 2.0 Defining Logic Containing and Connecting Logic Accessing Data Using Logic ADO.NET J2EE 1.4: J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data JDBC Using LogicHow We Got HereThe Last Ten Years: How We Got Here The Last Ten Years Java Microsoft 1996 Java, Java VM Windows DNA - ASP, ADO, MTS KeyWhat’s Next: What’s Next .NET Framework 2.0Application Platforms in 2008: Application Platforms in 2008 Defining Logic Containing and Connecting Logic Logic to Web Browser Accessing Data Data Access Using Logic Web Browser Standalone Client Remote Logic.NET Framework 3.0: .NET Framework 3.0 Defining Logic Containing and Connecting Logic ASP.NET Accessing Data Using Logic Browser/AJAX/ XBAPs Windows Presentation Foundation (WPF) Remote Logic ADO.NET Java EE 5: Java EE 5 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/Java Server Pages (JSP) Browser/AJAX Standalone Client Open SOA: Open SOA Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Service Data Objects (SDO) Servlets/ Java Server Pages (JSP) Browser/AJAX Standalone Client What Will Succeed J2EE 1.4?Some Observations: What Will Succeed J2EE 1.4? Some Observations “We’re moving away from slavish devotion to J2EE to a blended source model.” – Bill Roth, Vice President, BEA “Organizations should look elsewhere when considering new enterprise development and should plan for the eventual sunset of Java EE as an enterprise solution.” – Burton Group, July 2006What Will Succeed J2EE 1.4?Divining the Future: What Will Succeed J2EE 1.4? Divining the Future Major J2EE vendors have announced plans to support both Java EE 5 and Open SOA But they’re unhappy with Sun’s stewardship of Java Sun’s decision to open source Java should help Going forward, a combination of Java EE 5 and Open SOA is likely to dominateA Plausible Successor to J2EE 1.4: A Plausible Successor to J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/ Java Server Pages (JSP) Browser/AJAX Swing/Eclipse ClientDefining Logic: A Closer Look: Defining Logic: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Using Logic Objects Workflows If … Then … Rules If … Then … If … Then …Defining Logic: Objects: Defining Logic: Objects The main .NET languages (C#/VB) and Java are advancing along similar paths, e.g., Both now have generics Java has added annotations (analogous to .NET’s attributes) Both worlds are adding support for dynamic languages .NET: CLR-based IronPython Java: JVM-based Jython, Groovy, etc.Defining Logic: Workflows: Defining Logic: Workflows Workflow EngineCreating Workflow LogicTwo Approaches: Creating Workflow Logic Two Approaches A workflow language: Business Process Execution Language (BPEL) An XML-based language for defining process logic Originally created by Microsoft and IBM Now owned by OASIS Generalized activities: Windows Workflow Foundation (WF) Each activity is defined as a class Can also support BPEL with appropriate activitiesBPELExample Activities: BPEL Example Activities sequence: executes one or more activities sequentially flow: executes one or more activities in parallel switch: executes one of several paths based on the value of a condition while: executes a specified activity as long as a condition is true invoke: calls a web service receive: receives an incoming web service call compensationHandler: defines a compensation handlerBPELA Simplified Example (1): BPEL A Simplified Example (1) <process> ... <partnerLink name=“customer” ... /> ... <variables> <variable name = incomingRequest … /> <variable name = customerInfo … /> </variables> <sequence> <receive partnerLink="customer" variable=“incomingRequest“ />BPELA Simplified Example (2): BPEL A Simplified Example (2) <assign> <copy> <from variable=“incomingRequest" property="props:customerNumber"/> <to variable=“customerInfo" property="props:customerID"/> </copy> </assign> ... </sequence> </process> Defining a Graphical Process NotationAn Aside: Defining a Graphical Process Notation An Aside The Business Process Modeling Notation (BPMN) aims at defining a standard graphical notation for defining process logic It’s owned by the Object Management Group (OMG) BPELIllustrating a Typical Implementation: BPEL Illustrating a Typical Implementation BPEL Execution Engine Workflow Graphical Process Design ToolWFIllustrating Its Components: WF Illustrating Its Components WorkflowWFExample BAL Activities: WF Example BAL Activities Sequence: executes one or more activities sequentially Parallel: executes one or more activities in parallel IfElse: executes one of several paths based on the value of a condition While: executes a specified activity as long as a condition is true InvokeWebService: calls a web service Compensate: defines a compensation handlerPerspectiveBPEL and WF: Perspective BPEL and WF BPEL The standard allows some portability Although vendors typically add proprietary extensions to the language, e.g., for human workflow But it’s a rigid approach And most developers don’t like XML-based languages WF It’s a more general, extensible approach Allowing creation of reusable activities But it’s a Windows-only technology And learning to write effective WF workflows takes timeDefining Logic: Rules: Defining Logic: Rules A business rules engine (BRE) lets developers express rules in a standard way, then have them executed by a common engine A business rules management system (BRMS) typically includes: A BRE Developer tools Business analyst tools Rules management toolsRules in the .NET Framework 3.0: Rules in the .NET Framework 3.0 WF includes a basic rules engine The engine can be used with a WF workflow or separately The WF rules engine targets developers It’s not a full BRMS The goal is to help developers more easily create rule-based applicationsRules in Java EE/Open SOA: Rules in Java EE/Open SOA Vendors use a range of diverse rules engines Including integration with third parties such as ILOG The Object Management Group is working on some standards for rules PerspectiveRules: Perspective Rules Rules are becoming part of the standard development platform Although business rules engines aren’t yet a mainstream technology for developers Expect changes here Even Microsoft’s plans aren’t completely clearContaining Logic: A Closer Look: Containing Logic: A Closer Look Defining Logic Containing and Connecting Logic Logic to Logic Logic to Web Browser Accessing Data Using LogicContaining and Connecting LogicLogic to Web Browsers: Containing and Connecting Logic Logic to Web Browsers .NET Framework 3.0 ASP.NET 2.0 Java EE 5 and Open SOA: Both use Servlets/JSPs Java EE 5 also includes Java Server Faces (JSF) A JSP tag library implementing a model/view/controller (MVC) architecture for HTML interfaces Various open source options are also used, e.g., StrutsContaining and Connecting LogicLogic to Logic: Containing and Connecting Logic Logic to Logic Java EE 5 tries to improve the existing containers and communication mechanisms With JAX-WS and EJB 3.0 .NET Framework 3.0 and Open SOA instead provide a new unified foundation .NET Framework: WCF Open SOA: SCAMicrosoft vs. EJBThe Last Ten Years: Microsoft vs. EJB The Last Ten Years Java Microsoft Unifying CommunicationWCF: Unifying Communication WCFUnifying CommunicationSCA: Unifying Communication SCAAn Example ServiceWCF: An Example Service WCF using System.ServiceModel; [ServiceContract] interface IAdder { [OperationContract] int Add(int a, int b); } class Adder : IAdder { public int Add(int a, int b) { return a + b; } } An Example ServiceSCA (Java): An Example Service SCA (Java) import org.osoa.sca.annotations.* @Remotable public interface IAdder { int Add(int a, int b); } public class Adder implements IAdder { public int Add(int a, int b) { return a + b; } } Describing an Exposed Service WCF: Describing an Exposed Service WCF ... <service type=“Adder,CalcApp"> <endpoint contract=“IAdder,CalcApp" binding=”basicHttpBinding” address= "http://www.qwickbank.com/calc/adder.svc"/> </service> ...Describing an Exposed ServiceSCA: Describing an Exposed Service SCA ... <service name=“IAdder"> <interface.java interface=“services.calc.IAdder” /> <binding.ws port= “http://www.qwickbank.com/calc# wsdl.endpoint(IAdder/IAdderSOAP)” /> </service> ...More WCF/SCA Similarities: More WCF/SCA Similarities Both allow a service to maintain state between calls: WCF: [ServiceContract(Session=true)] SCA (Java): @Scope(“session”) Both allow one-way methods: WCF: [OperationContract(IsOneWay=true)] SCA (Java): @OneWay Both allow bidirectional communication via callbacksIllustrating Assembly: A CompositeSCA: Illustrating Assembly: A Composite SCADescribing a CompositeSCA: Describing a Composite SCA A <composite> XML element can specify: The components in a composite The services each component exposes The references each component makes to other services The wires that connect references to services Any properties that can be set on this composite Some things this allows: Dependency injection, where SCA locates the matching service for a component’s reference Although how this is done isn’t specified Graphical tools for assembling an application’s componentsPerspectiveWCF and SCA: Perspective WCF and SCA Problems addressed: WCF: Implementing services and remote clients SCA: Implementing services and remote/local clients; defining composite assembly Language support: WCF: Any .NET language SCA: Java, BPEL, C++, others Availability: WCF: Implementation available now SCA: Specs in progress Various implementations, e.g., open source Tuscany, are also in progressAccessing Data: A Closer Look: Accessing Data: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Data Access Using LogicData Access TechnologyThe Last Ten Years: Data Access Technology The Last Ten Years Java EE Open SOA Microsoft KeyIllustrating ADO.NET: Illustrating ADO.NET .NET Framework Data Provider .NET Framework Data Provider Application DBMSIllustrating SDO: Illustrating SDO .NET Framework Data Provider XML Document XML Document Application DBMS Data Access Service Data Access Service XML Document Other Data Source Data Access Service JDBCPerspectiveData Access: Perspective Data Access Data access is a hard problem Both camps have gone through many iterations The Java world has placed more emphasis on O/R mapping technology Microsoft’s forthcoming Language Integrated Query (LINQ) introduces a new perspective LINQ for SQL addresses O/R mapping LINQ for XML allows access to XML documents More . . . A Projection for 2008A Mainstream .NET Framework Application: WCF Service A Projection for 2008 A Mainstream .NET Framework Application WF Workflow ASP.NET AJAX WCF Service LINQ ADO.NETA Projection for 2008A Mainstream Java EE/Open SOA Application: Java SCA Component A Projection for 2008 A Mainstream Java EE/Open SOA Application JSP/ AJAX Java SCA Component BPEL SCA Component SDO JPASummary: Summary Both camps tend to move in similar directions The platforms will remain functionally similar The approaches sometimes differ in significant ways, however There are pros and cons Competition benefits everybodyAbout the Speaker: About the Speaker David Chappell is Principal of Chappell & Associates in San Francisco, California. Through his speaking, writing, and consulting, he helps IT professionals understand, use, and make better decisions about enterprise software. David has been the keynote speaker for dozens of conferences and events in the U.S., Europe, Asia, and Latin America. His popular seminars have been attended by tens of thousands of developers, architects, and decision makers in forty countries. David’s books have been published in ten languages and used in courses at MIT, ETH Zurich, and many other universities. He is Series Editor for Addison-Wesley’s award-winning Independent Technology Guides, and he has been a regular columnist for several publications. In his consulting practice, David has helped clients such as Hewlett-Packard, IBM, Microsoft, Stanford University, and Target Corporation adopt new technologies, market new products, train their sales staffs, and create business plans. David’s comments have appeared in The New York Times, CNN.com, and various other publications. Earlier in his career, he wrote software for supercomputers, chaired a U.S. national standardization working group, and played keyboards with the Peabody-award-winning Children’s Radio Theater. David holds a B.S. in Economics and an M.S. in Computer Science, both from the University of Wisconsin-Madison.