A bunch of different programs that I've worked on. NOTE The programs in this directory is only compatible with the Linux platform as it uses some of the MACROS, etc... that are only defined in the Linux system.
A command line program that is able to apply a .diff file to a given file and producing an edited, target version.
Debugged a legacy 1985 patch program written by Larry Wall in K&R C with the assist of gdb and valgrind.
Created a custom memory allocator with the idea of segregated free lists and quicklists that allows for "cached" block sizes. In addition with a few unit testing. The memory allocator uses the following policies
- Free lists segregated by size class, using first-fit policy within each size class, augmented with a set of "quick lists" holding small blocks segregated by size.
- Immediate coalescing of large blocks on free with adjacent free blocks; delayed coalescing on free of small blocks.
- Boundary tags to support efficient coalescing, with footer optimization that allows footers to be omitted from allocated blocks.
- Block splitting without creating splinters.
- Allocated blocks aligned to "single memory row" (8-byte) boundaries. Free lists maintained using last in first out (LIFO) discipline.
- Use of a prologue and epilogue to achieve required alignment and avoid edge cases at the end of the heap.
Built a multi-process command line interface program that enables users to speculate multiple ongoing trades while processing and storing relevant information. Backboned with the following concepts
- Process execution such as forking, executing, and reaping
- Signal handling
- I/O redirectoin
Designed and engineered a multi-threaded Tic-Tac-Toe game server that supports up to 65 users simultaneously with the use of network sockets.