Links:
We now have LINKS!!
FreeBSD - My current preferred Operating System
TCSH - My UNIX shell of choice
OpenBSD - A paragon of Operating System Security
NetBSD - For when you're not sure what to do with your toaster!
OpenSSH - A great SSHv2 protocol implementation
Google - a great search engine, and sponsor of summer coding events.
BSDCan - The North American Technical BSD Conference
|
E-Mail me: adam [at-sign] fsl [period] cs [dot] sunysb [small-circle] edu [we really dislike spam!]
About me:
I am a graduating student at SUNY Stony Brook receiving a Dual Major in Computer Science, and Applied Mathematics. I transferred from my former major in Physics, to
Computer Science. I have been
involved in the File-Systems and Storage Laboratory, under the direction of Dr. Erez Zadok for quite some
time now. Currently I am working on porting an implementation of an Automounter Filesystem for FreeBSD-6.1 to FreeBSD-7 and FreeBSD-8-CURRENT, and debugging the automounter protocol for asynchronous
event handling. I presented at BSDCan 07 on my work on FreeBSD AutoFS. I also maintain a set of patches against FreeBSD 6 and 7 for extended partition maps, and extended process group lists. I am
also working on improving the FreeBSD boot loader to properly handle GUID partition tables in an x86-BIOS enabled platform.
While involved at the Physics department, I had an internship at the Health Sciences Centre, working with researchers in the Department of Radiation Oncology Physics (Whom have yet to setup a webpage it seems :-( .) In my time with "RadOnc", I was responsible for setting up a clustre of Linux machines, to perform computations regarding Radiation Physics.
I am currently interested in the FreeBSD kernel, in general. I became
involved in the Linux community a while ago; becoming actively involved after
getting obsessed with compiling all my systems from scratch. Because of this,
I became interested in Operating System Kernels, in general. Since that time,
I have become a dedicated Free, Net, and OpenBSD advocate, and hope to get
several patches accepted to FreeBSD over the coming years.
I have been using UNIX for many years, normally as a user. As such
I've developed a large set of biases and preferences for editors, shells and
environments. I use tcsh almost exclusively, and have contributed a patch or
two to the main development branch. My CSH
modifications and avocacy page. I also use the VI/VIM editors. I've been
using VI a long time, but I have grown to like the VIM extensions.
John Backus - He died a while ago. Read my mini-biography of the man. If you do not know who John Backus was, read to find out!
Current Classes
None
Past Classes (Interesting Classes, or Computer and Mathematics related, above 300 level)
AMS 301 - Finite Mathematical Structures
AMS 303 - Graph Theory
AMS 310 - Survey of Probability and Statistics
AMS 311 - Intro to Probability Theroy
AMS 351 - Applied Algebra
CSE 301 - History of Computers
CSE 303 - Theory of Computation
CSE 306 - Operating Systems
CSE 307 - Principles of Programming Languages
CSE 308 - Software Engineering
CSE 310 - Networking
CSE 320 - Computer Architecture
CSE 333 - User Interface Design
CSE 373 - Analysis of Algorithms
CSE 376 - Advanced System Programming in UNIX/C
CSE 409 - System Security
CSE 475 - Teaching Assistant (CSE 130 - Introduction to C programming and UNIX)
LIN 200 - Language in the United States
MUS 119 - Introduction to Music Theory
POL 320 - Constitutional Law
Transfer - Calculus IV/Differential Equations with Applications
Transfer - Calculus III
Transfer - Linear Algebra
Transfer - IA16 and IA32 Assembly language programming
Current Projects
AutoFS - An automounting filesystem implementation for FreeBSD6 and higher.
TemplateFS - The core filesystem abstraction layer of AutoFS, derived from FreeBSD6.1's pseudofs.
GUID MBR - An MBR code insert for GUID partition tables to properly boot on
BIOS IA32 machines on FreeBSD.
I am quite messy, as you can see....
I am also participatory in Stony Brook's very active, and growing LUG (Linux User Group) http://www.ic.sunysb.edu/Clubs/lugsb/index.php
(LUGSB).
Occasionally, I gove a brief talk for that group about the fun and quirky things one can do with X11's fantastic network protocol capabilities (Including VNC, as a sidebar.)
(Professor Zadok is also the advisor of the LUGSB!) Some advice to OpenSSH users (most of you SSH users out there), when doing
ssh X11 forwarding, if your client supports -Y AND -X, use -Y. (Darwin/MacOS X's implementation seems to make -X behave like -Y in most circumstances.) I have on many setups seen -X "work" where you
get a window frame, but not window contents, and no console error messages regarding protocol failures. -Y works, and does some odd magic that makes it work better. (I'll research this more, given some time.)
I also occasionally present a talk on the history of UNIX to this group.
I transferred to Stony Brook, in 2002, from Case Western Reserve University, in Cleveland, Ohio. The picture you see is from my last day in dorm there. You can also see my penguin collection :-)
Personal Projects:
I've got a few projects that I've been toying with since my days in High School,and CWRU. Links to sources and binaries of these are being added as I dig them up from my archives. They include:
- PAINT! - A programme for x86-pc systems running MS-DOS, or Windoze '9[58], that lets one manipulate BMP formatted images. The graphics library, file formatting, mouse drivers, and system call
routines are all re-implemented within the binary of the programme. It was a good learning exercise for me, to research how to interface with hardware on the lowest levels. The only remaining code
for this I found recently on a horribly damaged floppy disc. I'll see if I cannot get it to build on DOSBox. UPDATE 2008: I found a better copy. This one builds but fails on DOSBox. I'll try it on a
Win32 virtual machine.
- HexVex - A programme that is a poor hexadecimal dumping utility. Like PAINT!, it uses my re-implemented system libraries. Mostly a fun excercise to deal with the perils of mouse-cursors on a
text-mode screen. UPDATE 2006: I think the sources to this are long lost.
- AdamLibs - A series of headerfiles, and C/C++ code written for DOS/DJGPP to allow the user of these libraries to handle all sorts of jazzy cool things: Screen manipulation, mouse input, etc. I
have these. You probably don't want them. E-Mail me if you do. They're not really that useful.
- ADAMlib - The "base" adam library. Contained some core functionality common to the whole set.
- ADAMvga - A set of API's to easily access the PC's VGA memory mapped video. Three independant API's are presented, a raw-access method, which is detected, and used at runtime, and a
double-buffered method, which used a timer to flush the buffer. The third method presented a class, with a public double buffer, and a public "buffer_flush" method. I probably spent the most time on
this library.
- ADAMmouse - A set of API's to interface with mice. It used the int 0x33 services of DOS based mouse drivers. A structure was defined to contain all data retrieved.
- ADAMjoystick - A set of API's like the mouse library. It used direct access to the hardware ports for the joystick. The joystick presented itself as a class, and kept calibration data private to itself, the class automatically adjusted inputs to match the calibrations, and the timings of your system.
- ADAMbitmap - A set of API's and structures to facilitate access to BMP formatted images. Also supported my own "simplified" bitmap file format.
- RUN 1.1.0.0 - A simple little ditty in C/C++/FLTK to basically serve as a "Run" window. Whipped it up, because I never liked the features that were within the
"Run" windows of all the other window-managers and GUI's I've used. I still use it.
- BOFHconsole, a system administration console written in C/C++, using the FLTK graphical toolkit. One can manipulate users' accounts, read files, manage processes and more. (Although the programme does have a slight sadist spin on it... It's not intended for those who wish to be NICE to their users....) (Not yet working. It's been backburnered for years.)
- RUNCONSOLE 0.1.0.0 - An extension of the "RUN" ditty. This one contains tab-compleation of commands (Based upon config settings.), the ability to control children-generation, and launch with a companion programme (Called a "terminal"). Additionally, the RUNCONSOLE has facilities to let the user channel output and input streams of children into buffers, and link buffers to other children. It allows one to send signals to any children, and to monitor their status too. A future project may be to meld the functionality of RUNCONSOLE and BOFHCONSOLE into a grander user-interface application. Also back-burnered for a while.
- Virtual Machines -
- virtmach - A simple virtual machine implementation in C/BASH/Python. The core machine is in C, but the assembly utilities, and "run" functions are scripts, that call the main virtual machine. It is a word-size independant machine, with 16 instructions (12 are implemented, 1 is a "halt" instruction. The remaining four are NOP's, but could be made to trap, or to run your own code.) The instruction set is fairly simple, and loosely based upon the DEC-PDP 8. Which brings me to:
- dpd-8 - A virtual machine PDP-8 emulator. It's written in C/C++/FLTK. The core is in C. There is a cool-looking GUI front-end that reminds the user of the heady days when switch-panels were
king... and people only used octal. Never forget the days of 12-bit computing! :-) It's not done, but the core 7 major instructions are emulated properly, and the 8 auto-increment registers from
0010 to 0017 work properly too. (IOT instruction opcode 6 is a NOP now. The emulator will print some machine state periodically. I haven't worked on this in a while. I've just recently dusted it
off. I have to finish working on the GUI end of it, so the front panel hooks
up to the Accumulator, and to the PC.)
- dpd-11 - A virtual machine PDP11/45 emulator. Again in C/C++/FLTK. It's really a port of the code of dpd-8, with a new CPU core, and a modified UI. Expect a dpd-10, and a dpd-7 emulator soon.
UPDATE 2008: I was able to get dpd-11's core code to start the UNIX bootloader from version 6's tape image.
- xav-11 - A virtual machine VAX-11/780 emulator. Again in C/C++/FLTK. It has an extended dpd-11 console for a UI, and extensions to the dpd-11 core (It uses the dpd-11 core), to facilitate the Virtual Addres Extensions.
- GOLD - A project my roomate and I started at CWRU, to eventually supplant GNU. Now it aims to be a new Operating System paradigm experiment. The project uses a lot of code from FreeBSD (5.3 specifically, and more recently 6.1), and is aimed at being a next-generation system. A description of their goals should be coming soon. LSD is the kernel for this project.
- And finally: LSD - My
time-sponge. I started this project too long ago to remember. It is a
project to implement a unix-like kernel. These days, the project is to
implement a new kernel, but not based upon unix. It borrows ideas from
Mach, and ExoKernels, and includes a few of my own new ideas. I mostly
work on this in my spare time, so progress is slow. The sourceforge site is now unmaintained. LSD is developed within Gold's subversion repository.
This page is written in HTML 4.01-Transitional, using the VIM editor.
HTML-4.01 -- if it was good enough in 1997, then it's good enough today too!
Leave XML to the machines.
|