Software Engineer

Category: Development

Digital Printing Workflow

Built a web app for a client to manage a digital printing workflow. The web app helps keep the overview of print jobs and allows the user to follow the progress from planning, printing, to production and shipment. This web app significantly decreases the manual steps (which is error-prone) to be performed by a user and therefore reduces the potential for errors. It has successfully helped to manage large amounts of print jobs during peak times.

Django is used to define a general model (data structure) for all data which is coming from various sources (XML, CSV, PDF, HTML). Individual small services/components are used to process these different sources. I did consider a microservice architecture but for the type of application it is overkill and would have unnecessarily increased the complexity. The services/components were developed separately and packaged as Python packages. Some are containerized while others are dependencies of (i.e., part of) the Django web app.

A central part is the ability to print a job directly from the web app on the production printer. This is accomplishment by integrating the printer via the industry standard JDF/JMF. JMF stands for Job Messaging Format and is a communication protocol based on XML over HTTP. JDF stands for Job Definition Format which describes the print ticket in XML for the production printer.

In this project I wrote unit tests from the beginning and have to say that has helped to increase the quality of the application. It has lead to only a few bugs that made it into production. I also used drone as the continuous integration server and for deployment to the staging environment.

Skills/Technologies:

  • Frontend: CSS, HTML, JavaScript, jQuery, Bootstrap
  • Backend: Python, Django, PostgreSQL
  • Other: Docker, Unit Testing, CI/CD, Web/Document Scraping, Data Analysis (pandas), Git, Bash, XML, JSON, Network Printing via JDF/JMF

Concernification Study

To run a user study which allows to gather feedback in an interactive way, I built a web application using Angular on the client-side and Node.js on the server-side. The feedback is for the result of an algorithm I designed, which extracts a concern (feature model and the corresponding API for each feature) of a software framework. The framework I mainly used is the Android SDK (specifically the notifications part).

The diagram part is done using GoJS, a nice JavaScript Diagram framework. The remainder of the UI is done using Bootstrap and jQuery. The data is loaded from JSON files. Once a user submits the feedback, an API is called on a Node.js server which stores the data.

Skills/Technologies: Angular, TypeScript/JavaScript, jQuery, Bootstrap, Node.js, Express.js, GoJS, REST, JSON, HTML5, CSS3, Git

TouchCORE

I was part of a team (as the Lead Software Developer/Software Architect) working on TouchCORE, which is a multitouch-enabled tool for agile concern-oriented software design modeling aimed at developing scalable and reusable software design models.

Besides the main focus being on reuse, the tool also focuses on allowing to quickly and seamlessly build software design models. It provides a touch-based interface allowing to use multitouch gestures besides using the traditional keyboard and mouse. For example, I designed the sequence diagram editor that allows to define the behaviour for the given class diagram in a fast and intuitive way. At the end, the user can generate code for the design.

The backend is built with the Eclipse Modeling Framework (EMF) and the frontend with MT4j to provide the touch-based interface.

Skills/Technologies: Java, OOP, Eclipse Modeling Framework (EMF), XML, Code generation, JUnit, GUI, Git, Bitbucket (Issue Tracker, Pull Requests, Code Reviews, Wiki)

© 2024 Matthias Schoettle

Theme by Anders NorenUp ↑