|
Warren Scott Dillman
Objective
|
I am very passionate about writing elegant and efficient
code that solves business problems by abstracting the solution in a way that does not suffer from
over engineering. I enjoy finding the balance between abstraction and application efficiency, while
strictly adhering to the requirements in the problem domain. Producing code that easily
conveys the solution to other developers and is maintainable and self documenting.
This is the challenge that I enjoy. What I am looking for is a team of like-minded people
striving for the same objective, to create an industry leading product by utilizing these principles;
and who enjoy the challenges this provides.
|
Education
Experience
| IBM Software Lotus Division |
| Advisory Engineer Tools Developer |
| Release Engineering, December 2003 - Present |
|
I joined the release engineering team to help maintain and extend the existing in-house code management
and build tool set. I have spent my time at Lotus, extending old tools to comply with new requirements,
as well as implementing new feature requests.
Most of the tool set is written in pure C. Since applications written in C are harder to maintain and extend,
I decided to survey the tools and pick a few out for re-engineering. The idea is to make the tools easier to
maintain and extend without altering any of the interfaces. This allows the tools chain to continue un-effected,
but makes each tool more robust. Part of the re-engineering process is also to document existing tools, since
most of the applications that grew up around the build process are very organic. Since this is done during downtime
between bug fixes and enhancements requests, I have only found time to re-work a single tool. I chose this particular
tool because of it's widespread use and the fact that process changes in the future were going to make extending the
tool necessary. I moved the tool away from proprietary and homegrown libraries to standards like the STL and open
source solutions like the WTL. I reworked many application features using class templates in order to facilitate
application extension when the time comes.
|
| Rational Software / IBM Software Rational Division |
| Staff Software Engineer |
| Web Services, January 2000 - December 2003 |
|
I joined Rational Software as the second engineer on the Rational web team.
I was quite familiar with Java as far as client side programming is concerned, but had
little to no J2EE experience. Rational immediately sent me to the advanced OOAD class at
Rational University, and it had a huge impact on the way I designed my future applications. I
also attended several Java seminars and was quickly brought up to speed.
I was then quickly thrown into the world of J2EE as we migrated the Rational.com site
from a proprietary app server built on JRun to Weblogic. It was a difficult and challenging
experience, but one of the most rewarding projects I have ever worked on. This was the largest
team project I have worked on to date and my first experience with the RUP process. Even
the last 2 week crunch period of 14 hour days was a very good learning experience and
was a testament to the communication and cohesion of the team.
Since that initial re-architecture, most of my work has been in the J2EE space supporting
the web site, as well as adding new features, and re-factoring old systems with new
designs.
Some of my contributions to Rational.com include: Geo coding the events system to allow
customers to search within a zip code radius for company events and classes. Single sign on,
to allow Rational Developer Network and Rational.com to share user information. Porting
of the Rational licensing application to Websphere to generate customer evaluation licenses.
In completing these projects I leveraged many Java libraries and constructs, including; EJBs, JSPs,
custom tag libraries and other technologies in the J2EE and Java toolbox, as well as making use
of commonly understood and reusable patterns.
Most of my contributions have been targeted at improving the customer experience and to help
the field accomplish it's sales goals.
Rational exposed me to many design and development philosophies and allowed me to
work along side many people who have helped me grow as a developer. There has also been
time for many courses in OOAD , Rational Rose, Clear Case, and now WebSphere and WSAD.
|
| Sybase, Inc. |
| Sr. Web Application Specialist |
| Web Services, July 1997 - December 1999 |
|
My responsibilities at Sybase were mostly centered around supporting the content developers and
maintaining the back end systems for Sybase.com. These areas involved mostly lead capture and
development of the Sybase Developers Network.
I shared the technical lead position on SDN with one other
engineer. Together we architected and delivered the site/application built on Sybase's own
proprietary web development language called Power Dynamo. It was an important step to show
the development community the power of the language. The site was delivered on time and was
a success. Membership steadily increased during my time there, and proved to be a very valuable
lead generation tool which helped the sales force to find new customers.
There were many smaller projects that gave me a chance to continue my C++ and Java development.
I was able to write a Windows screensaver for the World Cup sponsorship. I successfully designed
and implemented a Windows CD-ROM autorun UI system that was used on a CD distributed at a Sybase
user conference. I also developed many in-house tools to automate many of the daily tasks that the web
content team was responsible for.
My time at Sybase gave me invaluable experience working in the web space, giving me the
experience of being a technical lead on a high profile project, ands improving my communication
skills by allowing me to work with a large team of people.
|
| Polaroid Corporation ( Independant Consultant ) |
| In-house Application Developer |
| Computational Modeling / Film Imaging Development, September 1993 - July 1997 |
|
Polaroid gave me the opprotunity to develop my programming skills by bringing me into the computational modeling group
as an in-house developer to support the mechanical engineers. This gave me the opportunity
to develop my understanding of UNIX as well as start to learn the skills needed to
gather requirements and work with internal clients. Most of my work was command line
in UNIX and C and focused on writing text file translators for moving data between
finite element analysis applications and reporting on that data. The job gave me
a lot of freedom and allowed me to experience a wide range of operating systems and
engineering problems. It also gave the engineers a way to share information and data
between platforms and applications which greatly helped in their support of the film
development team.
I eventually left the modeling group and moved over to a development group responsible
for several of Polaroid's film products. My job in this organization was to develop
applications to allow people to analyze data collected from experiments done on the
film system to test changes made in the reagent. The data initially was being assigned
arbitrary numbers visually by different people. I worked with a team to develop a Windows based
application to identify and quantify the severity of defects in the film system by processing
film density information. At the time I used the Borland C++ compiler and the OWL windowing system.
The project was a success. by allowing engineers to quickly correlate chemistry changes with
defects on a proven scale, it helped to reduce the #2 reported customer defect in film.
This was an important project for me, as it was my first real team development project.
We had two developers and one business analyst. To insure proper use with as little training
as possible, interface design was a high priority.
The project taught me a lot about design, user experience and effective communication in a
team; as well as broadened my knowledge of C++ and common programing constructs and
algorithms.
My final and most successful project at Polaroid was a bit smaller in scale, but was
much more scientifically intensive. The object of the project was to save the company
money by phasing out a dying array of machines used to report film density with less
expensive machines that worked on the principle of sensitometry. The data generated by
the new machines was equivalent but was not on the same scale ( almost like the difference
between Fahrenheit and Celsius). The new machines also provided extra information as
well that could be leveraged. It was decided a Windows application would be written to
read in the new data format for each film run, process the data, and save it to a database
for archiving and reporting. The application had to be very simple to use, reliable, and
allow for a high level of configuration.
The team put together for this project was quite small. I was the only developer; and was
teamed up with one of the chemical engineers who would be responsible for describing the
calculations the application would be required to make and to validate the data generated.
Most of the configuration that was needed was handled in the GUI and then stored in config
files. The config files could also be modified to support extended features.
We also added a simple reporting system that printed a color chart of the film's sensitometry
data, giving the engineers a quick way to evaluate the quality of the
current film run.
The project was completed in 1997 and was a complete success. The application is still in production today. It
is used to validate the quality of Polaroid's black and white film as it comes off the production line.
This saved the company hundreds of thousands of dollars and gave them a valuable reporting and archiving
system for historical data analysis.
This project gave me a better understanding of the value of C++ and the encapsulation
of data as well as the benefits of the OO paradigm. I had no UML experience, but actors and objects and
interfaces emerged just the same and became part of my design.
|
Staying Current
| | ** In this section I list some of the ways I keep myself current on developments in the industry, and some of the resources
I frequently turn to, to help me with my projects. I also list many of the books I have read in the last year or so; some still in
the process of being read and digested.
|
| |
Publications
Books
Personal Projects
- Gameweave game engine
This is a game engine I work on when I have spare time. I has gone through several iterations as well as re-writes. At the moment it consists or OGRE as the rendering engine, ODE for physics, LUA for scripting, SDL Mixer for music playback and my own serialization layer. I also utilized Scott Bilas' FuBi implementation. The project continues to be a furtile place for me to test ideas.
- Talkback Trillian plugin
This plugin for Trillian was designed to help me communicate with people faster and still keep my eyes on my work. It continues to be an important project to help me learn to balance feature requests with stability and testing.
- Interactive fiction text to speech
This has been one of my most challenging projects because of the inability of the users to actually see the application controls. It really has forced me to rethink the concept of user experience. In the end, I solved many problems by extending standard windows controls and attaching speech ques to events, to allow the visually impaired user to navigate the program.
|
About Me
| |
Hobbies
In my spare time I have become involved with some open source
development projects on-line and have become very interested in game development.
It allows me to combine my musical abilities and my artistic interests. It also provides me with
a set of unique problems that help hone and further my C++ skills and at the same time
gives me immediate feedback on my progress. I would have to say I have learned more about
good OOAD in C++ from the game development community than almost anywhere else. I am
very dedicated to my advancement as a C++ developer. Even though over the last few years
my 'on the job' time has been spent in the web/J2EE arena it has helped me progress
in other areas I might not have had the time to pursue. My photoshop/graphics and UI
skills have definitely benefited from the client side of web work and Java's strict OO
design has influenced how I design and implement my code, regardless of language.
Freeware development is something I like to do to give back to the helpful community
that has helped me along with all my personal projects as well as my career as a
developer. I don't like doing things more than twice; for instance this resume is
generated by an XSL translation of XML data so I can use the same data for print, e-mail, and
on the web; it also makes it much easier to keep current. Therefore I end up with a lot of personal little tools to help me get things done.
I have packaged some of those tools and put them on-line for download.
One application did get me a nice mention in a web developers book that
can be found here:
Webheads Guide to Netscape
Some of my very simple freeware, some very old, can be found on my web site.
Music has always been part of my life since I was a very young and I have been playing the guitar
for over 17 years. I also do some composition and have licensed some music pieces to companies
for corporate and commercial presentations, including Rational Software. You can find more info
here.
|
Technology Matrix
** Here is a list of technologies I have worked with or learned over the years and my level
of experience with each. I find this an easier way to look at this information instead of
diplaying a list of words in a paragraph. I used 'NA' to indicate where the time/training
was nominal or an entry did not make sense.
| Languages |
| Name | Exp. | Time | Trained? |
| C\C++ |
very experienced |
10+ years |
yes |
| Fortran |
familiar |
NA |
NA |
| Java |
experienced |
5 years |
NA |
| Pascal |
familiar |
NA |
NA |
| Scripting |
| Name | Exp. | Time | Trained? |
| ASP |
familiar |
NA |
NA |
| Javascript |
very experienced |
5 years |
NA |
| Lua |
experienced |
NA |
NA |
| Perl |
very experienced |
5 years |
NA |
| PHP |
familiar |
NA |
NA |
| Unix Shell scripting |
experienced |
5 years |
NA |
| VB Script |
experienced |
4 years |
NA |
| API/Libraries/Frameworks |
| Name | Exp. | Time | Trained? |
| ATL |
experienced |
3 years |
NA |
| Boost |
NA |
NA |
NA |
| CGI |
experienced |
6 years |
NA |
| COM |
familiar |
NA |
NA |
| DirectX |
experienced |
3 years |
NA |
| EJB |
experienced |
3 years |
NA |
| J2EE |
experienced |
3 years |
NA |
| JDBC |
experienced |
3 years |
NA |
| JSP |
experienced |
3 years |
NA |
| MFC |
familiar |
NA |
NA |
| ODBC |
experienced |
6 years |
NA |
| OpenGL |
familiar |
NA |
NA |
| OWL |
experienced |
3 years |
NA |
| SQL |
experienced |
6 years |
NA |
| STL |
experienced |
2 years |
NA |
| UML |
familiar |
NA |
yes |
| Win32 |
very experienced |
6 years |
NA |
| Winsock |
familiar |
NA |
NA |
| WTL |
experienced |
3 years |
NA |
| Operating Systems |
| Name | Exp. | Time | Trained? |
| *nix |
experienced |
6 years |
NA |
| SGI |
experienced |
4 years |
NA |
| Solaris |
experienced |
3 years |
NA |
| Windows (95/98/me/NT/2000/XP) |
very experienced |
10 years |
NA |
| Web Based |
| Name | Exp. | Time | Trained? |
| HTML |
expert |
6 years |
NA |
| XML |
experienced |
2 years |
NA |
| XSL XSLT |
experienced |
1 year |
NA |
| Applications |
| Name | Exp. | Time | Trained? |
| Ant |
experienced |
1 year |
NA |
| Apache |
experienced |
3 years |
NA |
| Eclipse |
familiar |
NA |
NA |
| PCLint |
experienced |
3 years |
NA |
| Photoshop |
experienced |
7 years |
NA |
| Rational Rose |
familiar |
NA |
yes |
| Tomcat |
experienced |
2 years |
NA |
| Visual C++ |
very experienced |
6 years |
NA |
| Weblogic 5.1 |
experienced |
3 years |
yes |
| WebSphere |
familiar |
NA |
yes |
| WSAD |
familiar |
NA |
yes |
| XDE |
familiar |
NA |
NA |
|