Frederick P. Stluka

Bristle Software, Inc.
1011 West King Road
Malvern, Pennsylvania 19355-2004
http://bristle.com
fred@bristle.com
http://bristle.com/~fred

SKILLS

Personal: The Fred Factor
Cloud: Amazon Web Services (AWS)
OS: Mac, Linux, Unix, Windows, Android
Language: Python, JavaScript, Java, Groovy, Visual Basic, C++, Perl, Unix shells
Web: Ajax, JavaScript, jQuery, HTML, DHTML, CSS, REST, SPA, JSON, XML, XSL, XSLT, XPath, CGI, RSS, Atom, SMTP, FTP, HTTPS, DNS
Framework: Django, Grails, GSP, JavaServer Pages (JSP), Java servlets, JavaServer Faces (JSF), Struts
Server: Apache, Tomcat, GlassFish, WebLogic
Data: MySQL, MongoDB, Oracle, ElasticSearch, JDBC, MS SQL Server, ADO, RDO, DAO, ODBC, Perl DBI
Tool: PyCharm, Eclipse, STS, IntelliJ, NetBeans, Firebug, Jenkins/Hudson, JUnit, log4j, JIRA, Git, GitHub, BitBucket, MediaWiki, Confluence, Dreamweaver, Ant, PuTTY, WinSCP
Unix: emacs, vi, perl, ant, make, awk, sed, csh, sh, tcsh, bash, cron, yum, puppet, sendmail, bind, mail, telnet, ssh, rsync, ftp, tripwire, fail2ban, iptables, sudo, yacc, lex
Java: Web Apps, Web Services, Jersey JAX-RS, JDBC, JSP, Servlets, J2EE, EJB, JMS, JSF, Groovy/Grails
VCS: Git, CVS, PVCS, VSS, rcs, sccs, VAX CMS

STRENGTHS

Teamwork, initiative, ability to learn and teach, customer and quality focus, effectiveness, broad range of experience.  My greatest thrill is to learn a new technology, teach it to others, and use it to quickly develop reliable software that makes users more productive. While performing assigned tasks, I also make significant unsolicited contributions to the team. On my own initiative, I have developed many tools that have gained company-wide acceptance: automated regression test tools, text editors, network file transfers, configuration management tools, e-mail programs, XSL debuggers, and reusable software parts.  Finally, I have received numerous awards for teamwork, consistently "ironing out the rough spots" to keep the team working smoothly.

EXPERIENCE

1996-Present   Bristle Software, Malvern, Pennsylvania


For major clients (HelpHOPELive, Visibiz, InfraTrac, Barclaycard, Simplica, GSK, ECRI, Vanguard), see engagements below.

For minor clients:

  • Wrote Android apps, Java REST Web Services, Ajax-driven SPA web apps
  • Created MySQL databases
  • Installed, secured, and configured AWS cloud servers with Linux, Tomcat, MySQL, Apache, etc.

For Bristle Software:

  • Webmaster and Linux sysadmin for http://bristle.com
  • Developing and supporting open source Java and JavaScript libraries
  • Speaker at IEEE, User Groups, and universities

2012-Present:  HelpHOPELive
Creating a web app for internal and external use by HelpHOPELive, a non-profit that does fundraising for medical patients:

  • Recruit and mentor a team of developers
  • Lay out architecture and select languages, tools, and technologies
  • Set up and administer Amazon servers (AWS, Linux, Apache, MySQL, Python/Django, ElasticSearch, tripwire, fail2ban, ssh, sendmail, sudo, etc.)
  • Set up and administer other cloud-based services (JIRA, Confluence wiki, BitBucket Git repo, etc.)
  • Train users on JIRA to gather requirements and maintain an Agile backlog
  • Conduct Agile stakeholder meetings to set priorities for each sprint
  • Design and code (Python/Django, MySQL, jQuery, JavaScript, Ajax, ElasticSearch) portions of the HelpHOPELive web app to support:
    - Patients creating and managing web pages to solicit donations from their communities to help pay their medical expenses
    - Donors donating to patients via credit card or direct bank transfer
    - Staff managing the content of the main Web pages via a custom CMS (content management system)
    - Staff performing internal business operations -- approving new patients, editing patient pages, reviewing guestbook entries, approving disbursements, etc.
  • Reuse and extend my underlying components -- logging subsystem, RWD (Responsive Web Design) framework, Ajax/REST framework, etc.
  • Reuse and extend my existing sys admin tools -- automated backups, security and performance monitors, etc.
  • Create automated regression test suite
  • Document everything in the wiki

2010-2011:  Visibiz
Developed a social CRM Web application (contacts, interests, relationships, etc.) integrated with LinkedIn, Gmail, etc:

  • Recruited and mentored a team of architect and developers
  • Worked with the architect to lay out an architecture and select languages, tools, and technologies
  • Installed, configured, and managed the servers (AWS, Linux, Tomcat, Apache, MySQL, MongoDB, Groovy/Grails, Hudson/Jenkins, JIRA, Git, JUnit, MediaWiki, tripwire, fail2ban, ssh, sendmail, sudo, etc.)
  • Wrote custom backup software to do automated daily incremental and full backups of laptops to the cloud servers, servers to each other, and finally to the local NAS drive in the office
  • Designed and coded portions of all tiers of the application:
    • JavaScript, jQuery, DHTML, CSS, JSON and Ajax in the Web front end
    • REST Web services written in Groovy/Grails wrapped by Jersey JAX-RS
    • MongoDB NoSQL database
  • Wrote logging package to enhance log4j, producing multi-level hierarchical logging of all user actions and internal operations with automatic begin/end matching, durations, indented layout for visual scan by a person, as well as timestamps, memory size, thread id, IP address, username, browser name, etc. for use by log analysis tools
  • Wrote JUnit test cases for unit, integration, and functional tests, run automatically by Hudson/Jenkins in the builds triggered by each push to Git

2007-2010:  InfraTrac
Designed and wrote a Web application for sale to large regulated corporations (pharmaceutical, cosmetics, auto parts, medical devices, fertilizers, etc.) to taglessly track products for detection of counterfeits and distribution chain violations:

  • Architected (see diagram), designed, implemented, tested, documented, and demoed the SPA-style Web app, using MySQL, Tomcat, Java, JDBC, JavaScript, Ajax, DHTML, CSS, and XML
  • Installed, configured and hosted the Tomcat app servers and MySQL DB servers on physical servers (Linux, Mac, Windows), and Amazon AWS virtual servers (Linux)
  • Features:
    • SPA -- Single Page Application
    • "Filthy rich" client interface:  liquid interface with draggable self-calibrating dynamically constrained sliders, screen updates via JavaScript at each keystroke and mouse move, etc. but requiring no client install
    • Multi-window master-detail drill-down user interface, running in any browser
    • Data validation and access control performed at all levels (UI, App server, DB), but only specified once
    • Portable across all operating systems, DB servers, App servers, and browsers
    • Ajax transactions used for global validations, keep-alives, etc.
    • Full audit trail in a parallel set of DB tables
    • Fine-grained, attribute-based, hierarchical, cached access control allows owner users to grant and deny other users the rights to view, update, delete, and own objects
    • Comprehensive multi-level hierarchical logging of all user actions and internal operations with automatic begin/end matching, durations, indented layout for visual scan by a person.   Also, timestamps, memory size, thread id, IP address, username, browser name, etc. for use by log analysis tools.
    • Entirely data-driven: constraints, rules, units, access rights, etc.
    • Robust file upload and download w/access control, configurable limits on file type and size, dynamic image scaling, etc.
    • Custom connection pooling, monitoring, managing, and self-healing
    • Admin tools for adding users, specifying initial access control rights, etc.
    • Self-reloading XML config file specifies all limits, delays, timeouts, levels, scale factors, connection info, locations, etc., so no server restart is ever needed
  • Comment posted by client to my LinkedIn page:
    "Fred has done amazing work, far beyond merely turning our ideas into software.  He thinks about the whole problem, its context, its implications, and its future, and builds for the long term.  He meticulously documents the options overruled, and why, as well as the path taken, so nobody wastes time revisiting settled issues.  It's a pleasure working with him.  When I first hired Fred, his references were highly enthusiastic, and now I understand why:  his work is so polished, it's as if we got 2.0 instead of 1.0."

2005-2006:  Barclaycard (was Juniper Bank)
Enhanced on-line banking Web applications, Web services, and underlying architectural components, using Oracle 9i, WebLogic, Apache HTTP Server, JSP, Struts, EJB, JMS, log4j, JUnit:

  • Enhanced login to use "Multi-Factor Authentication" images and phrases obtained via SOAP calls to the Passmark Web Service
  • Converted Web site from HTTP to HTTPS
  • Implemented various new features and bug fixes
  • Created MediaWiki pages for use by developers containing:
    • Comprehensive installation/setup/configuration guide for development environment.
    • How-to guide for implementing new features, debugging problems, searching logs, etc.

2004-2005:  Simplica
Helped develop a JavaServer Faces (JSF) engine and set of components:

  • JSF Engine Development
    • Developed several pieces of the JSF engine, including bean discovery, value bindings, method bindings, component bindings, and event generation
    • Re-wrote several pieces to make them compliant with the emerging JSF standard
    • Re-factored the Java class tree for improved code sharing and manageable modules
  • JSF Component Development
    • Developed Integer and Date JSF components to support user entry of integer and date (month/day/year) values with internationalization.  Wrote the Java classes for the components, tags, and renderers.  Also wrote the JavaScript code to do client-side validation in all major browsers (IE, Netscape, Mozilla Firefox, Opera, etc.) 
  • Demos, Documentation, Training
    • Developed demos and user/programmer guides for use at the product Web site
    • Taught team members advanced Java topics, like thread synchronization
    • Taught team members how to use JetBrains IntelliJ IDEA, MS Script Debugger, CVS, and other development tools
  • Configuration Management
    • Introduced the team and the company owner to the concept of version control
    • Installed and administered CVS
    • Used Ant to automate builds, regression tests, and releases as JAR, WAR, and EAR files
  • Unix System Admin
    • Configured Unix firewall to safely support remote access by off-shore developers
    • Automated backups via cron and tar.  Debugged and resolved network hardware issues

1999-2004:  GlaxoSmithKline
Developed pharmaceutical software:

  • Developed a 3-tier Web application architecture (see diagram) for clinical trial management software.  The client estimates savings of 15 million dollars per year
    • Presentation Tier
      The presentation tier consists of DHTML, XSL, CSS, JavaScript, and Ajax.  All files are downloaded from the Tomcat web server, and displayed and executed by the IE Web browser.  They use the MSXML component to implement Ajax-style loading, sorting and filtering of XML, and generation of HTML via XSLT transformations.  This technique has recently come to be known as SPA -- Single Page Application.
    • Business Tier
      The business tier consists of Java components.  Access from the presentation tier is via Java servlets implementing REST Web Services.  Access to the data tier is via JDBC using a shared pool of connections.  The Xerces XML parser and Xalan XSLT/XPath processor format XML to send to the presentation tier.
    • Data Tier
      The data tier consists of an Oracle database.  All data is retrieved via database views and updated via PL/SQL stored procedures.  Foreign keys provide referential integrity, with triggers maintaining audit tables and additional referential integrity.  Packages add structure to the stored procedures.
  • Enhanced a VB, RDO, and Oracle application to track the inventory and distribution of drugs
  • Developed a Web-based reporting system using Perl, DBI, and Oracle database
  • Developed a generalized database front end using VB to access Oracle databases.  It presents the user with a list of available "plugins" (stored procedures and SQL*Plus scripts), executes the selected plugin with the specified parameters, and displays the results to the user.  It is structured as 3 layers of cooperating components:  Oracle packages in the database, COM business components, and ActiveX Controls (OCXs) for the user interface.

1996-Present:  Webmaster and Linux System Admin for the Bristle Software Web site (http://bristle.com).

  • Installed and administer Linux servers running Apache Web server, Tomcat, MySQL, SMTP, DNS, etc.
  • Migrated corporate Linux servers from physical servers to Amazon AWS virtual servers
  • Author the Web pages to house my collection of thousands of tips and techniques on topics including Web Programming, Cloud Computing, Java, JavaScript, XML, SQL, Unix, Mac, Windows, VB, ASP, C++, Perl, HTML, Lotus Notes, and VAX/VMS
  • Maintain a mailing list for each topic and mail the tips to subscribers as I add them to the Web pages
  • Wrote my own mailer to do the list mailings, most recently in Java using javamail classes, previously in VB using the SMTP protocol directly
  • Currently, re-writing tips pages in XHTML and processing them with XSLT transforms to generate RSS and Atom feeds

1996-Present:  Developing and supporting the Bristle Software open source Java  and JavaScript libraries, including:

  • Applications:  Image scaler, URL downloader
  • Web Applications:  Slideshow, MemoryMeter, ConnectionMeter, Clock, ServletDebugger
  • Packages/Subsystems:  Logging, Database connection pooling, Attributed-based access control, File and directory operations, Command line parsing, JPEG manipulation, JSP helpers, Data dictionary, Multi-tier metadata and validation, etc.
  • Classes:  FTP, HTTP, HTML, SQL, XML, XSL, JDBC, Encryption, Enhanced Java data types (strings, exceptions, maps, arrays, lists), etc.

Docs:  http://bristle.com/opensource/javalib/docs/api/public/
Source code:  http://bristle.com/opensource/


1998-1999:  ECRI Institute
Developed a database-driven Web site about medical technology, using SQL Server and IIS.  Wrote a VB maintenance program that allows the user to edit Web page fragments in a WYSIWYG HTML editor similar to Microsoft Front Page or Word.  It stores the fragments in the database.  The complete Web pages are assembled from the fragments via ASP and ADO(See details)


1996-1998:  The Vanguard Group
Joined the Technical Architecture and Core Infrastructure team that defined the software architecture for corporate applications on Windows NT, and produced reusable software parts.  (See details)

  • User Interface Framework (UIF)
    Designed and developed (in VB) the UIF (a 1998 predecessor to the RCP -- Rich Client Platform -- concept that gained popularity in 2007).  It supports runtime "snap in" of binary components. Application developers produce screen fragments as ActiveX controls (OCXs).  The UIF assembles the fragments, reading config files to dynamically build notebook tabs, menus, toolbars, etc.  This allows dynamic snap-in of new or modified fragments, dynamic security-driven configuration, crash protection between fragments, and faster startup.  Using a RAD (Rapid Application Development) approach, I created a working prototype in 2 weeks, and evolved it for 2 years as it was adopted for use in all in-house client/server applications on Windows NT.

1991-1996 Shared Medical Systems (SMS), Malvern, Pennsylvania


Computer programmer and tech lead.  Developed distributed PC/LAN platform for hospital applications, using VB and C++ on Windows and OS/2(See details)

  • Implemented a User Interface Builder similar to VB (before VB existed), in C++ under OS/2
  • Led the company's move from OS/2 to Windows
  • Enhanced VB 3.0 to support "data-awareness" and drag/drop application customization.  Microsoft requested that I visit their corporate headquarters in Redmond to demonstrate this.  Much of the same functionality has since appeared in VB 4.0, 5.0, and 6.0.
  • Wrote VB custom controls (16-bit VBXs and 32-bit OCXs)
  • Chaired C++ Coding Standards Committee, and wrote the standards document
  • Award for saving 6 man-months by conceiving a template-driven approach to code generation

1987-1991 Software Productivity Consortium (SPC), Herndon, Virginia

Computer programmer and tech lead.  Wrote CASE tools in Ada, C and Pascal using the X Window System on Unix.  Tools include interactive graphical editors for OOD diagrams stored in a relational database, a generic "autolayout" package for node-arc graphs, a yacc-based parser for Ada code, and internal reuse libraries.  (See details)

1982-1987 Raytheon Company, Sudbury, Massachusetts


Computer programmer.  Wrote multi-tasking real-time operating system emulator in Ada, CASE tools in C using Unix yacc and lex, and graphics device drivers in Pascal and assembler(See details)


EDUCATION

1982

 

 

University of Pennsylvania, Moore School of Electrical Engineering
BSE, Computer Science and Engineering, GPA: 3.6/4.0 (Magna cum laude)
Thesis Design and Implementation of a 3D interactive computer graphics package. Design was published in ACM "Computer Graphics" journal, and implementation used for instruction and graphics research at the university.