Senior Software Engineer
1 Infinite Loop
Apple Inc.: Jan 2006 to Present
May 2013 to Present: Working on iWork (Numbers).
Jan 2006 to May 2013: Worked on Aperture and iPhoto.
- Search, performing queries, applying search filters.
- Low-level database infrastructure.
- Library physical layout and schema design.
FileMaker Inc.: May 1998 to Jan 2006
I worked on the data-engine layer underlying all of the 7.0 thru 8.5 products.
Specific areas I worked on include [for all items listed, I worked on internals only - not the graphics]:
FileMaker 8.5 (released July 2006)
- GetLayoutObjectAttribute and List functions.
- Parsing URL calculations for the Web Viewer Setup to split them up into their components.
FileMaker 8.0 (released August 2005)
- Date/Time/Timestamp search patterns - allows searches that leave components of a date or time wild.
- Day-of-Week searches - allow for Mon..Fri searches.
- Value Lists - added support for subsets, to support new type-ahead feature.
- Variables - made the necessary changes to the calculation engine to support setting and retrieving the new
script local and global variables.
- Performance enhancements to low-level disk access code to increase the amount of parallelism obtained.
FileMaker 7.0 (released March 2004)
- Execution of queries for Find Mode: local finds as well as distributed finds across multiple hosts.
- Execution of Joins
- Multi-Predicate Joins
- Assisted in the design and implementation of the new graph-based relational model.
- SQL Parser: For a subset of SQL-92, including nested subqueries and left outer joins (for testing only - not in the product).
- SQL Executor: Built on top of the standard FM data-access layer (used by the xDBC interface).
- Calculation Engine: Initial redesign, implemented local variables and short-circuiting operations.
- Custom Functions: Supporting recursion and optimizing tail-recursion.
- Field Dependencies: Initial redesign using semi-naive evaluation.
- Arbitrary-precision Fixed-Point Math: Gives 10^400 down to 10^-400 range, with adjustable precision.
- Value Lists
- Summaries (ported)
- Sparse bitmap implementation for efficient storage of lists of rowids.
- Lock Manager
- Notifications: Machine-to-machine messaging
- Security: Involved with the design and implementation of several new security features.
- Disk Access Method and a Disk Cache: Implemented a hierarchical store.
- File-Mirroring: used for the Live Backup feature
- High-level platform-neutral threading support classes and thread-to-thread messaging.
SecureSoft: October 1997 to April 1998
SecureSoft is a startup in silicon valley doing some security-related software. My work there was to design
and implement a deductive database, basically a simplified (and therefore
more efficient) version of Coral.
Informix: January 1997 to October 1997
Worked on the XPS query optimizer. I implemented an algorithm to efficiently divide the system's available memory
between the various iterator nodes in a query.
I graduated from UW-Madison in January 1997, where I obtained my Master's
degree in Computer Science while working full-time as a research assistant in the database group.
The projects I participated in during that time:
- The DEVise project,
a package for examining large quantities of data in a visual fashion.
I wrote a new schema parser and data reader for it, called UniData.
The Coral project,
which I maintained. Coral is a deductive (logic-based) database
system similar to Prolog.
I cleaned-up/rewrote sections of
Minibase is a simple database
intended for instructional use in mid-level database classes. The
release includes homework assignments which have the students rewriting
a component of it at a time. I also added Microbase to the release,
a stripped down version of Minibase that interested students can examine
to gain insight into the big picture. As a learning tool, it is
best combined with a quality book on database theory and practice, such as
Database Management Systems by Raghu Ramakrishnan.
Mail me at: flisakow at spf-15.com