Ben Greear's Resume

Ben Greear
2614 Aldergrove RD
Ferndale, WA 98248
Cell: 360-961-6203
greearb@candelatech.com

Objective:
I am interested in developing client-server systems using Java or C++. I would also like to pursue my interest in networks of all kinds, including projects relating the architecture and design of Broadband Technologies like DSL and Cable Modems, and higher-speed Metro-Edge applications. I am an avid proponent of Linux, and would especially welcome a job that involved it or another version of UNIX.

Why you want me to work for you:
I have been programming in C/C++ since 1995 in a UNIX environment (Solaris and Linux). I have been programming Java since 1998, and have also picked up bash and perl shell scripting. I have started my own network-testing equipment company, and have written an 802.1Q VLAN stack for the Linux Kernel. I am able to provide project leadership, design and implementation.

Education:
University of Georgia, 1994-1997
Bachelor of Science in Computer Science.
GPA: 3.4   GRE: Verbal + Math: 1390

Work Experience
November 2001 - July 2003 Engineer/Consultant
C/C++ Programmer
Intransa
December 2000 - June 2001 Engineer
C++ Programmer
MAYAN Networks
July 1997 - December 2000 Lead Engineer
Java, C++ Programmer,Lab
Network Administrator
AG Communications Systems
June 1996 - Sept 1996 Whitewater Raft Guide
(Ocoee, Tenn)
Sunburst Adventures
1993 - 1997 Various: Lab Assistant,
Mason, Carpenter
University of Georgia,
Self Employed

Skills and Experience (Personal Ranking 1-10, 10 is best)
Operating Systems: Solaris(8), Linux(9), MS-Windows(5)
Programming Languages: C(8), C++(9), Java(8), HTML(6) perl(6)
Programming Tools: gcc(5), g++(6), javac(5), gdb(7), Xemacs(7), make(7)
Networking: TCP/IP(9), NFS(7), Samba(4), Ethernet/VLAN(9), SONET(4), Apache(6), DHCP(6), BIND(6), Routing(7), NAT(7), PPP(6), Oracle(3)


Details on Skills and Work History

Unix and IP programming:
I have been programming in a UNIX (Sun Solaris, Linux) environment for more than five years, counting college, and since 1997 professionally. I possess a good understanding of the TCP/IP model in UNIX, including the open, bind, accept, select, read, and write system calls and have implemented a large, multi-user server (ScryMUD) utilizing Non-Blocking I/O via the select system call. I have also dealt with catching and handling signals and forking processes.

Of course, not everything works right the first time, so I've also learned how to debug core files using gdb, as well as other arcane tricks like catching the signal that caused the fault and printing out as much useful debugging information as possible. When there is some system call I don't quite recall, I know how to get the needed information out of the man pages or books such as Advanced Programming in the Unix Environment by Stevens.

General Design and Programming:
The best example of my design capabilities is LANforge, the flagship product of my company, Candela Technologies Inc. This product is based on the client server model, with a Java based client talking to a C++ server. The C++ server in turn, manages many slave servers that reside on different machines. These slave servers control the local hardware, sending and receiving packets, and reporting the statistics back to the main server. The GUI can then query the server to get an up-to-date picture of the entire network. To aid scripting, the LANforge product also supports a telnet Command Line Interface. The CLI code is auto-generated from a .spec file with another program that I wrote. I'll be happy to give you a demo!

At AGCS (now part of Lucent) I was involved with designing the sub-systems that I was responsible for. For example, I implemented a two tiered caching mechanism on a DSL project so that management packets coming from the client were not dropped, and yet memory and CPU on the embedded device were not stressed beyond their ability. On a previous project, I wrote a message handling system that could tie service providers to service requesters, and wrote the client API in both Java and C++. This allowed the Java help system to talk to the rest of the legacy C/C++ programs.

The other large project I have worked on is my ScryMUD server. I started designing it in college, and have since rewritten much of it to be more Object Oriented and cleaner in general. ScryMUD listens on a well known port and accepts TCP/IP connections from the rest of the Internet. Clients have persistent data stored on the server and a huge number of options while logged onto the server. Due to the fact that the Internet never sleeps, I expect this server to be very stable, and it has had uptimes of over a week under moderate player load. I believe that the knowledge gained in writing this program of over 80,000 lines of C++ code could be easily transferred into other server architectures.

While writing ScryMUD I have often needed class libraries that are not readily supported in the standard C/C++ environment (at least not with the functionality I desire.) To that end, I have written several general classes, including a powerful String class and several different Templated container classes, like lists, hash-tables, and smart arrays. To cut down on repetitive coding, I have written a few tools to generate C++ code (and documentation) from text files. This minimizes the risk of careless mistakes and makes certain development efforts much easier and faster.

Though most of my professional experience is with C++, I also enjoy writing C code, especially Linux kernel code. I have written several Linux kernel modules and patches for Candela, Intransa, and for my own satisfaction.

Networking (Ethernet and Frame Relay):
I have been a Linux user since college and have learned a great deal of practical knowledge through my tinkering. My home network consists of a dual-NIC Linux machine, a test machine or three, my wife's dual-boot machine, and a few printers. The dual-nic machine acts as a router/NAT/firewall device, safely connecting the internal network to the cable modem. It is also my DNS, pop-mail, and NFS server. To share my zip drive with my wife, I set up Samba to share it over the network to her Win95 machine. The latest addition to my network is a Linux machine that boots off the network. It uses no Hard Drive, but runs entirely over bootp and NFS. The end result is a great development test bed and blazing Internet access for every computer on the network.

With this knowledge, I was able to create a complex lab environment at AGCS to test our DSL product. The network there consisted of DHCP/DNS servers, Cisco 2500 routers (Ethernet to Frame Relay), a backbone Ascend 8000 Frame Relay Switch, and many Win95, Win98, WinNT and Linux clients. I also set up NFS and HTTP (Apache) servers to feed information to the many clients on the network. This setup gave me confidence and experience in setting up complex IP based networks. Though I am most knowledgeable about Linux, I have also set up Windows NT and Solaris machines to be clients and servers in an IP over Ethernet network. For more information, see my web page: http://www.candelatech.com/~greear
References: Available upon Request.


Ben Greear
Last modified: Fri Jul 2 15:22:18 PDT 2021