Patents by Inventor John I. Montgomery

John I. Montgomery has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20160034261
    Abstract: Described is a technology by which metadata augments a programming language such as JavaScript. Software components such as application programming interfaces are associated with metadata. When a software component is selected for use, such as when putting together a computer program in a graphical programming environment, its corresponding metadata is accessed. The metadata may be used to validate the usage of the software component, such as to validate a constraint associated with a value, provide a default value, validate a value's type, and/or determine whether a value is required. Validation may also determine whether data output by one software component is of a type that is appropriate for input by another software component. In addition to validation via type metadata, the metadata may provide descriptive information about the selected software component, such as to assist the programmer and/or provide further information to the programming environment.
    Type: Application
    Filed: September 4, 2015
    Publication date: February 4, 2016
    Applicant: Microsoft Technology Licensing, LLC
    Inventors: Adam D. Nathan, Andrew R. Sterland, Timothy S. Rice, Michael J. Leonard, John I. Montgomery
  • Patent number: 9164737
    Abstract: Described is a technology by which metadata augments a programming language such as JavaScript. Software components such as application programming interfaces are associated with metadata. When a software component is selected for use, such as when putting together a computer program in a graphical programming environment, its corresponding metadata is accessed. The metadata may be used to validate the usage of the software component, such as to validate a constraint associated with a value, provide a default value, validate a value's type, and/or determine whether a value is required. Validation may also determine whether data output by one software component is of a type that is appropriate for input by another software component. In addition to validation via type metadata, the metadata may provide descriptive information about the selected software component, such as to assist the programmer and/or provide further information to the programming environment.
    Type: Grant
    Filed: May 16, 2008
    Date of Patent: October 20, 2015
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventors: Adam D. Nathan, Andrew R. Sterland, Timothy S. Rice, Michael J. Leonard, John I. Montgomery
  • Patent number: 8849753
    Abstract: Various technologies and techniques are disclosed for automating asynchronous programming in single threaded systems. A wrapper is automatically generated around an original function. When metadata indicates the wrapper should be utilized for asynchronous data retrieval, the wrapper calls a data retrieving function asynchronously. Asynchronous retrieval of data is initiated from the data retrieving function using a direct callback. A specially marked exception is thrown to cause control to leave and get caught by a special exception in the wrapper. When the direct callback function is called because the data has been retrieved, the data is saved. The wrapper is called again in a synchronous fashion, which causes the wrapper, original function, and data retrieving function to be called again. When the data retrieving function is called again, data that was saved by the direct callback function is retrieved, and then returned to the calling function through the callback function.
    Type: Grant
    Filed: May 20, 2008
    Date of Patent: September 30, 2014
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, Andrew Sterland, Michael J. Leonard, Timothy Rice, John I. Montgomery
  • Patent number: 8745580
    Abstract: Described is a technology in a programming (development and/or runtime) environment by which data type mismatches between the output and input of computer program software components (e.g., APIs) are detected, with the output transparently converted such that the converted input may be understood by the inputting component. When components are interconnected in a programming environment, metadata associated with those components is evaluated to determine a type mismatch, e.g., between objects and arrays. If mismatched, an output object is converted to a single-element array for input, or alternatively, an output array is converted to a series of objects, each object sent within a loop for input. The transparent conversion may be performed by the programming environment during runtime, or by inserting conversion code prior to compilation.
    Type: Grant
    Filed: May 16, 2008
    Date of Patent: June 3, 2014
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, Andrew R. Sterland, Timothy S. Rice, Michael J. Leonard, John I. Montgomery
  • Patent number: 8578334
    Abstract: Various technologies and techniques are disclosed for providing an integrated development environment using a dynamic language. Input is received from a user in the form of a code command. Introspection is used to generate a list of one or more possible code command completion suggestions that are suitable completions for the input received from the user. A list of the possible code command completion suggestions are displayed to the user. Upon receiving input from a user to interact with a particular function in the integrated development environment, introspection can be used to analyze a source code section containing the particular function to extract at least one code comment contained within the function. The code comment is displayed to the user as documentation for the particular function.
    Type: Grant
    Filed: December 4, 2006
    Date of Patent: November 5, 2013
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Patent number: 8543638
    Abstract: Various technologies and techniques are disclosed for enhancing security in a browser-based environment. A first browser application hosts one or more other applications. The first browser application is operable to load the one or more other applications on one or more separate domains than a host domain, using one or more cookies as a communication method between the first browser application and the one or more other applications. Input is received from a user to access a first browser application on a first domain. A selection is received from the user to run a second browser application from within the first browser application. A first cookie is created in a second domain, with the first cookie containing information to be used by the second browser application. The second browser application is loaded on the second domain. For example, the first browser application can be a browser-based software development application.
    Type: Grant
    Filed: September 24, 2007
    Date of Patent: September 24, 2013
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, Andrew Sterland, Michael J. Leonard, Timothy Rice, John I. Montgomery
  • Patent number: 8290152
    Abstract: Various technologies and techniques are disclosed for managing web service developer keys. A generic key identifier can be generated based on an original web service key. The generic key identifier is used within source code of an application being developed. Upon receiving a request to run the application, the generic key identifier is transformed back into the original web service key prior to calling an associated web service. Multiple users can securely share the same application that uses the web service. When one user who does not have his own original web service key accesses the application, that user can be prompted to obtain and enter the original web service key once the key has been obtained from a provider of the web service.
    Type: Grant
    Filed: August 30, 2007
    Date of Patent: October 16, 2012
    Assignee: Microsoft Corporation
    Inventors: John I. Montgomery, Adam D. Nathan, Timothy Rice, Andrew Sterland
  • Patent number: 8209662
    Abstract: Various technologies and techniques are disclosed for retargeting applications to different types. A development environment is provided for writing software. Input is received from a user to write application logic for a project. The user selects an option to save the project as a particular type of project. The application logic is wrapped with metadata appropriate for the particular type of project and at least one resulting file is created. The system determines if the resulting file needs compiled, and if so, compiles the resulting file into a compiled application. A second selection can be received from the user to save the project as a second type. In such a case, the application logic is wrapped with metadata appropriate for the second type of project and at least one resulting file is created.
    Type: Grant
    Filed: December 4, 2006
    Date of Patent: June 26, 2012
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Patent number: 8095910
    Abstract: Various technologies and techniques are disclosed for creating interruptible client-side scripts. Input is received from a developer to write original code for a web application in at least one client-side script. A code injection process is programmatically performed to modify the original code to make one or more parts of an execution of the code interruptible in the client-side script. The code injection process parses a code segment of a client-side script to retrieve a next code segment. If the next code segment has at least one conditional semantic construct, then code is injected in the form of one or more script functions that will transition execution flow from the original code segment into the one or more script functions that are operable to interrupt execution of the client-side script upon user request. The modified code resulting from the code injection process is saved for the web application.
    Type: Grant
    Filed: April 10, 2007
    Date of Patent: January 10, 2012
    Assignee: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Publication number: 20090293073
    Abstract: Various technologies and techniques are disclosed for automating asynchronous programming in single threaded systems. A wrapper is automatically generated around an original function. When metadata indicates the wrapper should be utilized for asynchronous data retrieval, the wrapper calls a data retrieving function asynchronously. Asynchronous retrieval of data is initiated from the data retrieving function using a direct callback. A specially marked exception is thrown to cause control to leave and get caught by a special exception in the wrapper. When the direct callback function is called because the data has been retrieved, the data is saved. The wrapper is called again in a synchronous fashion, which causes the wrapper, original function, and data retrieving function to be called again. When the data retrieving function is called again, data that was saved by the direct callback function is retrieved, and then returned to the calling function through the callback function.
    Type: Application
    Filed: May 20, 2008
    Publication date: November 26, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Adam D. Nathan, Andrew Sterland, Michael J. Leonard, Timothy Rice, John I. Montgomery
  • Publication number: 20090293059
    Abstract: A workflow design system receives a set of parameters that are to be used in a workflow, as well as an indication of a function that is to be performed in the workflow. The workflow design system uses a mapping component to map the parameters to inputs of the identified function. The workflow design system then outputs suggested mappings of the parameters to the function inputs, and optionally waits for user confirmation. Once user confirmation is received (if it is required), either the workflow design system or the mapping component automatically generates the connections between the parameters and the function inputs.
    Type: Application
    Filed: May 20, 2008
    Publication date: November 26, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Adam D. Nathan, Andrew Sterland, Michael J. Leonard, Timothy S. Rice, John I. Montgomery
  • Publication number: 20090288065
    Abstract: Described is a technology in a programming (development and/or runtime) environment by which data type mismatches between the output and input of computer program software components (e.g., APIs) are detected, with the output transparently converted such that the converted input may be understood by the inputting component. When components are interconnected in a programming environment, metadata associated with those components is evaluated to determine a type mismatch, e.g., between objects and arrays. If mismatched, an output object is converted to a single-element array for input, or alternatively, an output array is converted to a series of objects, each object sent within a loop for input. The transparent conversion may be performed by the programming environment during runtime, or by inserting conversion code prior to compilation.
    Type: Application
    Filed: May 16, 2008
    Publication date: November 19, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Adam D. Nathan, Andrew R. Sterland, Timothy S. Rice, Michael J. Leonard, John I. Montgomery
  • Publication number: 20090288067
    Abstract: Described is a technology by which metadata augments a programming language such as JavaScript. Software components such as application programming interfaces are associated with metadata. When a software component is selected for use, such as when putting together a computer program in a graphical programming environment, its corresponding metadata is accessed. The metadata may be used to validate the usage of the software component, such as to validate a constraint associated with a value, provide a default value, validate a value's type, and/or determine whether a value is required. Validation may also determine whether data output by one software component is of a type that is appropriate for input by another software component. In addition to validation via type metadata, the metadata may provide descriptive information about the selected software component, such as to assist the programmer and/or provide further information to the programming environment.
    Type: Application
    Filed: May 16, 2008
    Publication date: November 19, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Adam D. Nathan, Andrew R. Sterland, Timothy S. Rice, Michael J. Leonard, John I. Montgomery
  • Publication number: 20090083860
    Abstract: Various technologies and techniques are disclosed for enhancing security in a browser-based environment. A first browser application hosts one or more other applications. The first browser application is operable to load the one or more other applications on one or more separate domains than a host domain, using one or more cookies as a communication method between the first browser application and the one or more other applications. Input is received from a user to access a first browser application on a first domain. A selection is received from the user to run a second browser application from within the first browser application. A first cookie is created in a second domain, with the first cookie containing information to be used by the second browser application. The second browser application is loaded on the second domain. For example, the first browser application can be a browser-based software development application.
    Type: Application
    Filed: September 24, 2007
    Publication date: March 26, 2009
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, Andrew Sterland, Michael J. Leonard, Timothy Rice, John I. Montgomery
  • Publication number: 20090060178
    Abstract: Various technologies and techniques are disclosed for managing web service developer keys. A generic key identifier can be generated based on an original web service key. The generic key identifier is used within source code of an application being developed. Upon receiving a request to run the application, the generic key identifier is transformed back into the original web service key prior to calling an associated web service. Multiple users can securely share the same application that uses the web service. When one user who does not have his own original web service key accesses the application, that user can be prompted to obtain and enter the original web service key once the key has been obtained from a provider of the web service.
    Type: Application
    Filed: August 30, 2007
    Publication date: March 5, 2009
    Applicant: Microsoft Corporation
    Inventors: John I. Montgomery, Adam D. Nathan, Timothy Rice, Andrew Sterland
  • Publication number: 20080256513
    Abstract: Various technologies and techniques are disclosed for creating interruptible client-side scripts. Input is received from a developer to write original code for a web application in at least one client-side script. A code injection process is programmatically performed to modify the original code to make one or more parts of an execution of the code interruptible in the client-side script. The code injection process parses a code segment of a client-side script to retrieve a next code segment. If the next code segment has at least one conditional semantic construct, then code is injected in the form of one or more script functions that will transition execution flow from the original code segment into the one or more script functions that are operable to interrupt execution of the client-side script upon user request. The modified code resulting from the code injection process is saved for the web application.
    Type: Application
    Filed: April 10, 2007
    Publication date: October 16, 2008
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Publication number: 20080222572
    Abstract: Various technologies and techniques are disclosed for providing a visual mashup designer application. A design surface is provided that displays a graphical representation in a toolbox of components that can be used to create a mashup application, at least one of the components being a wrapper to an existing web service. The visual mashup designer displays operations that each component placed on the design surface has available. A graphical mapping utility allows a user to graphically map outputs of a selected operation from a first component to inputs of a selected operation from a second component. When placed on the design surface, each component is displayed in a respective container. The respective container displays one or more operations that the respective component supports. When the user selects a particular operation for a particular component, the system displays one or more input parameters and output parameters for a particular operation.
    Type: Application
    Filed: March 6, 2007
    Publication date: September 11, 2008
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Publication number: 20080222237
    Abstract: Various technologies and techniques are disclosed for creating wrappers for use in visual mashup designers. The user selects a web service for which to create a wrapper that will allow the web service to be used as a component in a visual mashup designer. The system programmatically generates communication source code for the wrapper that knows how to send a request to the web service from the wrapper and how to interpret a response from the web service. The system also programmatically generates interaction source code for the wrapper that specifies how the wrapper should interact with the visual mashup designer. The wrapper can be used in the visual mashup designer for creation of web site mashups. The wrapper is operable to respond to visual mashup designer events.
    Type: Application
    Filed: March 6, 2007
    Publication date: September 11, 2008
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Publication number: 20080222599
    Abstract: Various technologies and techniques are disclosed for creating mashups using a visual mashup designer application. The system can interact with a mashup component wrapper creation process to create a wrapper for a selected web service. A design surface displays a graphical representation of components that can be used to create a mashup application, including the wrapper created during the wrapper creation process. The system automatically generates source code in a dynamic language when a component is added to the design surface. The code created contains the logic for which operations can be called in a respective underlying web service and what parameters the operations take. The user can select operations to invoke in the first and second components, and can then map an output of an operation of the first component to an input of an operation of the second component. Additional components can also be mapped.
    Type: Application
    Filed: March 7, 2007
    Publication date: September 11, 2008
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery
  • Publication number: 20080134144
    Abstract: Various technologies and techniques are disclosed for retargeting applications to different types. A development environment is provided for writing software. Input is received from a user to write application logic for a project. The user selects an option to save the project as a particular type of project. The application logic is wrapped with metadata appropriate for the particular type of project and at least one resulting file is created. The system determines if the resulting file needs compiled, and if so, compiles the resulting file into a compiled application. A second selection can be received from the user to save the project as a second type. In such a case, the application logic is wrapped with metadata appropriate for the second type of project and at least one resulting file is created.
    Type: Application
    Filed: December 4, 2006
    Publication date: June 5, 2008
    Applicant: Microsoft Corporation
    Inventors: Adam D. Nathan, John I. Montgomery