Ben Greear 2614 Aldergrove RD Ferndale, WA 98248 |
Cell: 360-961-6203 greearb@candelatech.com |
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 |
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) |
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.
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.
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.