View my profile on Linked In

Read my Notes on Software Development.

For more information or if you reference any of this work, please contact russellgreenspan[at]gmail[dot]com


White Papers

  • The Tutor.com Website Content Management System: Concepts, Introduction, and Implementation, 2009 (by Gabe Hollombe)
    The Tutor.com Website Content Management System (CMS) is a custom-built system designed to power the Tutor.com website (http://www.tutor.com) and allow users outside the development team to manage the site’s content without the need for development tools like Microsoft Visual Studio. Ultimately, we decided to create our own CMS because the big, commercial CMSes were too heavy (we would only use an extremely small subset of the features they offered) and too expensive.

  • The Tutor.com Classroom: Architecture and techniques using Silverlight, WPF, and the Microsoft .NET Framework, 2008
    Tutor.com's online learning system, the Tutor.com Classroom, utilizes many of the advanced capabilities of the Microsoft .NET 3.5 platform, including TCP/IP sockets and WPF, in addition to making full use of the Silverlight browser plug-in. This white paper explores some of the architecture and implementation details in the Tutor.com Classroom and how the potential of .NET was employed.


Research Papers

  • A CHOICES Hypervisor on the ARM Architecture, 2006
    We describe our experiments building a hypervisor using Choices, an object-oriented operating system, on the ARM architecture. Our approach uses VMX-style hardware support to ensure that execution of any sensitive instruction transfers control to the hypervisor. We provide such an architecture by making modifications to QEMU, an open source ARM emulator. Thus our work is divided into three parts. We first surveyed the ARM7 architecture and identified the sensitive instructions. Next we altered QEMU so that it traps to our hypervisor whenever a sensitive instruction is executed in a low privileged user mode. Finally we added a hyper call handler to Choices to validate and emulate the sensitive instructions QEMU traps on, providing a virtual machine environment to guest operating systems. We hope that our work will influence future directions of virtualization research by showing the baseline requirements for a system that virtualizes ARM via a hypervisor.

  • A Multi-objective Genetic Algorithm for Employee Scheduling, 2005
    A Genetic Algorithm (GA) is applied to an employee scheduling optimization problem with varied, competing objectives and thousands of employees. An indirect chromosome encoding is used with genetic operators based on general GAs and Evolutionary Strategies. Population fitness is determined via a weighted-objective function, featuring a Balance Factor that encourages or disregards equality among the objectives. Initial results are promising.

    GA Code

  • The RankGroup Join Algorithm: Top-k XML Query Processing in XML Datasets, 2004
    Top-k queries in XML datasets are investigated. We propose a syntactical addition to XQuery to accommodate top-k XML queries, and a 3-step process to realize these top-k XML queries using a relational database and a new join operator, RankGroup. Our preliminary implementation shows promise in dramatically reducing the running time and number of tuples accessed during such query processing.

    Rank-Group Join Code

  • Data Coordinator Architectural Pattern, 2004
    Often times it is necessary for multiple components of an application to send and receive data, either from one peer to another on a peer-to-peer network, or from a client to a server in a client-server network. The traditional way to approach this situation is to have each component manage its own channel to and from the data source, and to have the component interact directly with this data channel. However, this potentially poses many problems that can be allievated by abstracting the data interaction from each component and having the components register themselves with a central DataCoordinator.

  • Architecture and Design Patterns in RINSE, a Real-time Immersive Network Simulation Environment, 2004
    This paper presents an overview of RINSE, a highly extensible real-time network simulation system. The Architectural Business Cycle is examined, architectural views and the quality attributes of performance and extensibility are analyzed, and several new design patterns are presented.

  • Adaptive Query Processing: Techniques of Dynamic Runtime Optimization, 2003
    This paper outlines the growing research field of adaptive query processing, starting with a brief explanation of the mechanisms in existing, traditional query processing common today. I then describe the problems with traditional query processing that adaptive query processing seeks to overcome, and finally outline various experimental solutions that show great promise.

Teaching Guides

 

Personal Apps

  • MetroNorth Schedules for iPhone
    MetroNorth Schedules provides locally stored train times to and from Grand Central for all MetroNorth stations. This means when you can still see train times when you're without an internet connection.

  • CraigsList Browser
    Shows each item's pictures in one view so you don't have to click back and forth.


Productivity and Data Structures

  • Generic OrderedDictionary
    Generic access to items maintained in the order they were added AND with a hashtable-like key.
  • Property Configurator
    Uses reflection to set the properties of an object based on input System.Configuration.SettingsBase configuration data.
  • Sequential Queue
    Generic queue that keeps items sorted sequentially (useful when items are processed/received in some unknown order).
  • LogZipperShipper
    G-Zip target files and copy/move them to specified location.
  • NinjaSafeNET
    Webmaster and SQL Server DBA management tool with VSSourceSafe integration.
  • Assembly Syncher
    Keep local assemblies in-sync with team server-deployed files.


music | travel and photography | software

russell greenspan (russellgreenspan[at]gmail[dot]com)