/home/dkramer

David Kramer’s high-entropy blog

Portfolio


My resume as a Word document or as a PDF document. I’m also on LinkedIn and Stack Overflow.

I am a software group Manager, Architect, and a Principal Software Engineer.  I am experienced in software design, analysis, and development, as well as hands-on team leadership. My strengths are my diversity and depth of experience, perseverance, ability to learn new technologies quickly, and organizational skills. I have secret security clearance. I enjoy applying that experience to making better, more scalable, more adaptable software.

I am looking for a full-time hands-on Team Lead/Manager, Architect, or Principal Software Engineer position in the Greater Boston area with opportunities to apply that experience making better, more scalable, more adaptable software. I prefer to work in Java and other cross-platform technologies, but I’m fluent in many others, as you’ll see below. I would also prefer an Agile/Scrum environment, but that’s not a requirement.

In the right environment, I bring the best of both worlds. I have extensive experience in software development, architecting, and problem-solving. But I also bring a knowledge of the current technologies, and a thirst to learn more and expand my capabilities. I’m comfortable working on the top presentation tiers as well as the lower business rule and infrastructure tiers of applications.

Fields of expertise: computer languages, web technologies, semantic web, metadata, natural language processing, Agile/Scrum/testing, database, ETL, and data mining, Linux and UNIX, knowledge management, training and assessment, toolsmithing and automation, and team leadership. Note that many of the projects mentioned here are not public-facing (in fact many were parts of defense contracts) or were for companies that no longer exist, so I cannot show them here.

Presentations: PHP, Home Automation, several issues of Agile Attitudes, embedded Linux, users/groups/privileges.

Current projects: Wootoscope: A Java/Swing/XML cross-platform application to monitor woot.com, Lists Of Links: A Java/J2EE/Spring/Hibernate/AJAX application to manage hierarchical lists of bookmarks, with security and statistics.


( Back to top)

Computer Languages

Most of my recent software development was based on Java, and most of that has been web-based applications based on J2EE, JSP, HTML, CSS, JavaScript, AJAX/Flex with a database tier behind them.  Other applications were developed in PHP, Perl, Python, C, C++, and bash.

  • Litle is a credit card transaction processing service (third-party processor).  They interfaced with merchants using a SaaS (Software as a Service) or ETL interface.  The core product runs as Java/J2EE inside JBoss and Tomcat with data persisted in a DB2 database.
  • TeamBuilder is a system to match candidates to missions based on a semantic analysis of documents describing the mission and documents describing the candidates, forms potential teams, and ranks those teams based on measures appropriate for the mission.  It is based on Java/J2EE, JSP, HTML, CSS, AJAX, and MS SQL Server.  Graphs and other data visualizations are renderded using Chart Director and various JavaScript libraries.
  • Polaroid‘s Instant Digital Prints division developed a picture printing kiosk.  I worked on the UI of the prototype version in Python.  On the production version, I worked on the interface to the hardware drivers in Java and JNI and C++.
  • M-PORTAL (described below) has a PHP back end web service supporting an HTML and Adobe Flash front end.

( Back to top)

Web Technologies

I’ve been doing web development for over a dozen years, from straight HTML to complex J2EE systems.

  • Aptima’s website was originally developed by a graphic artist, with all common content was duplicated in each file, and no way to maintain it other than FTP. I moved all of the common content to template PHP files, moved much of the look and feel to CSS, and made much of the site database-driven, so content can be maintained through the database. I also set up a separate development copy of the website, using Subversion source control to manage changes between the two.
  • STAR is an Aptima project that breaks news articles from multiple sources into semantic topic profiles (a group of topics and their probability), allowing analysts to look for patterns of those topics, with an emphasis on identifying leading indicator topics for other topics. The point is to be able to predict when a particular topic will be prevalent in the next few days by looking at those topic patterns. A collaboration mechanism lets analysts share their thoughts on the program’s predictions, and see how the predictions would change if the analysts predictions were factored in. STAR is based on several tiers separate components. The heart of the application is Java/J2EE with JSP pages for the view layer.  Adobe Flex is used for the many graphs produced by the system (created by a co-worker).  However, most of the application resides on one page which relies heavily on JavaScript, AJAX, DOM manipulation, and event handling to visualize and hide content as the user enters inquiries.
  • I implemented and maintain Agile Rules‘ website, which is implemented in PHP and MySQL.  I worked with a graphic designer on the look and feel and stock photography.

( Back to top)

Semantic Web, Metadata, and Natural Language Processing

The group I lead at Aptima was called Presentation, Web, and Language Engineering. Most of the projects I worked on have some aspect of natural language processing, metadata extraction, ontology alignment, or semantic web enabling technologies.

  • I mentioned STAR above. That project relies on a semantic analysis of news articles using PLSA(Probabilistic latent semantic analysis) to identify the key concepts (as opposed to words or phrases) the articles are about, and looks for patterns of those concepts (topics).
  • Likewise, TeamBuilder uses PLSA to correlate documents describing a mission with documents describing team candidates to determine which ones have skills and experiences that are relevant to the mission the team is being formed for.
  • MetaCORE is another Aptima project with similar technologies as STAR.  MetaCORE imports documents, extracts metadata from them, and present the document and metadata in a faceted browser interface, graphically showing taxonomies like location, biomedical information, time periods, end other application specific taxonomies.  It also allows the user to export the document and metadata in a different schema, like RDF/XML, or DDMS.

( Back to top)

Agile/Scrum/Testing

I started a company with two others called Agile Rules, which focused on Agile/Scrum training, coaching, and readiness assesment.  We also presented papers at conferences and user group meetings.  I was also an officer in Agile Bazaar, the local chapter of the ACM.

  • At Litle & Co, I worked in a full Scrum environment, with pair programming, TDD, continuous integration, monthly iterations, and retrospectives.  One unique facet of their practices is that developers are regularly rotated around from one project to another.  While this may negatively affect team cohesiveness and the ability to predict velocity, it increases  knowledge transfer.  The upside of that is less knowledge lost, and increased likelihood a developer will be available to solve a problem.
  • For Agile Rules, I developed a unique Test Driven Development system for embedded programing called CATSRunner that lets the user control unit tests and test data from a host computer, feeding the results back to host computer.  This greatly reduces the amount of on-board memory needed for testing, allows for different sets of test data, and easy publication of test results, which is a requirement for Agile andd Scrum. Catsrunner is developed in completely cross-platform GNU C,and can control most ARM processors.
  • At Aptima, I created a distributed, cross-platform, web-based build and unit testing system called DEBUT (Distributed Environment for Building and Unit Testing).  During the nightly build process, the source is extracted fresh from version control and built from scratch.  Upon successful build, any unit tests are run, and the results of all operations are emailed to the addresses associated with that project.  Building and testing can have any number of steps and execute any process that can be controlled via the command line.  DEBUT is built using PHP and MySQL.
  • M-PORTAL has a PHP back end web service supporting an HTML and Adobe Flash front end. In order to coordinate development of the two halves, we used executable requirements.  A PHP web page contained several example calls to each web service, both correct and incorrect.  Each one was a unit test of the back end web services (showing red or green depending on if the results were as expected), but also served as documentation for the front end developers on how to call (and not call) the back end web services.  They’re called executable requirements because they test the interface, so it’s impossible for the documentation to be wrong, since the tests would fail if they no longer match the back end.

( Back to top)

Database, ETL, and Data Mining

I have experience in ETL, TPS, reporting, web services, and user applications backed by MySQL, SQL Server, PostgreSQL, and Oracle.

  • For Compete, I worked on software that imports anonymized click data (with demographics) from ISPs, and mines the data to find out what products the users are shopping for, with what options, where, and what products they looked at before and after looking at those products.  I worked on the ETL and parsing components implemented in Python, and the analysis components implemented in C++, running distributed in a Beowulf cluster, connected to a 4TB SAN.
  • Tradeloop offers a B2B office equiment buy/sell environment. I worked on their email-based transaction processing system, implemented in Perl and Oracle.

( Back to top)

Linux and UNIX

I first learned about UNIX in 1989, and started using Linux on a regular basis around 1997 (Red Hat 4.2).  I’ve had a Linux server at home for about a decade, and use it about 98% of the time on my dual-boot laptop

  • I’m Assistant Director of the Boston Linux and UNIX group, and have been a member for 10 years. I have also presented at meetings, including talks on PHP and home automation.
  • I’ve ported applications to Linux and UNIX at Anacomp, PegaSystems, and Aptima.
  • As part of a home automation project, I bought a computer-controlled infrared transceiver device. Only Windows software was available for the device, so, working with the manufacturer, I created cross-platform software in Perl to control the device, as well as a web interface and email interface. I released the software with a GPL license, available here.
  • In addition to my other functions at Agile Rules, I was the Chief Technical Officer.  I built the computer network (and many of the computers) and administered it all.
  • At Tele-Publishing, I assisted the Systems Administrator in many hardware, software, and planning tasks, including maintaining the mail server and the backup server, and configuring the web servers.
  • At Inergy Online, I functioned as the Systems Administrator after the full-time Systems Administrator left, until the company disbanded.

( Back to top)

Knowledge Management, Training and Assessment

Many of my projects at Aptima relate to training and assessment.  I was also on the committee to improve Aptima’s own knowledge management.  I help maintain their internal Wiki, and as their Webmaster, I help maintain the metadata on employees, projects, and products.

  • M-PORTAL is an Aptima project to help train Air Force leaders on Mission Essential Competencies and Lessons Learned.  The initial focus was on training JFACCs on Course of Action development.  The web-based front end was developed using Adobe Flash (created by a co worker), HTML, CSS, and JavaScript.  The back end web services were developed using PHP and MySQL.
  • Wisdom is an Aptima project to asses the “dimensions of wisdom” for the Army Research Institute.  It presents several scenarios to the user, and asks them how they would respond to the situation to reflect the different dimensions of wisdom they just received training on.  Their answers were compared using a Natural Language Processing algorithm called PLSA to the answers of experts to assess them.  Wisdom was built with the same technologies as M-PORTAL, except we used PostgreSQL instead of MySQL.
  • ADL Co-Lab is an Aptima project for DoD’s Joint ADL (Advanced Distributed Learning) to train soldiers on MOUT (Military Operations in Urban Terrain).  The system is unique, because it combins SCORM-base didactic training with simulation-based experiential training.  The MMORPG simulation software feeds location and interaction data into a system that interprets it to determine if certain objectives were met, and feeds that data back into the SCORM environment.  This project relied heavily on Java/J2EE web services, HTML, and JavaScript.

( Back to top)

Toolsmithing and Automation

I believe strongly in process automation to increase repeatability efficiency, and the need for special knowledge to perform everyday tasks. Automation also leads to greater testability, as many of the tests themselves can be automated once the build is automated.  I have worked closely with QA and Release Engineering groups to accomplish these goals.  At Aptima, I created a distributed, cross-platform, web-based build and unit testing system called DEBUT (Distributed Environment for Building and Unit Testing).  At Metatomix, I developed an installer for their platform based on InstallAnywhere, and developed a build environment for their Discovery product.
( Back to top)

Team Leadership

At Aptima, I was a Manager of the Presentation, Web, and Language Engineering group.  I managed three developers, as well as contributing to projects directly as a Consulting Software Engineer, and Technical Lead on up to six projects at any one time.  I have lead other groups in the past, though.  At Tele-Publishing, I lead a team of seven developers and Graphic Artists.  At Inergy Online, I lead a team of four developers.  In all of these positions, I resolved conflicts through open communications and managed expectations.  My degree is a dual major of Management and Business Computer Information Systems, which means I “speak both languages”.  I understand business process, needs and goals as well as I understand software process, needs and goals.
( Back to top)


View David Kramer's profile on LinkedIn

Share

Site info