View my profile on Linked In
Read my Notes on Software Development.
For more information or if you reference any of this work, please
- 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.
- 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,
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.
- The RankGroup Join Algorithm: Top-k XML Query Processing in XML Datasets,
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
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.
- 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).
G-Zip target files and copy/move them to specified location.
Webmaster and SQL Server DBA management tool with VSSourceSafe
- Assembly Syncher
Keep local assemblies in-sync with
team server-deployed files.