Impressions of my Software Engineering Internship at Numcom

August 31, 2010 - by Andreas Tschofen, Bachelor's degree student at the ETH
Computer Science students at ETH Zürich are required to do an internship as part of their degree. I've decided to complete this internship at Numcom, a software company based in Zürich. After 12 weeks of working there, I have now completed my internship. My task was to develop a web based visual editor that will be a part of the next release of Appway, Numcoms's Business Process Management platform. Specifically, I conceptualized, designed, and developed a graphical editor for designing dynamic parts of PDF documents and forms generated by Appway (Numcom calls these parts "Dynamic Documents").
The basis for my work was an existing XML specification language for Dynamic Documents and a PDF renderer that was able to interpret and render these XML files into a PDF file. My task was to build a web based cross-browser application using Java on the server side, and JavaScript, the JQuery library and Ajax (in particular a JavaScript remote procedure call protocol called JSON-RPC) on the client. These technologies allowed me to create a powerful, responsive and usable editor that feels like a desktop application, yet runs within any modern browser. It achieves this "feel" by allowing users to interact with it using mechanisms commonly used in desktop apps, like drag and drop, copy and paste, a fully capable Undo/Redo mechanism, custom context menus, and so on.

Architecturally, the model logic is completely handled on the server side, meaning that the server possesses the current version of the edited Dynamic Document at all times. Any action initiated by the user is sent to the server and acted out on that model. This, in turn, causes a partial re-render of its visual representation in the client's browser. As a result, most of the code I've written is Java code. The JavaScript part is limited to the View of the editor, if we think of the architecture in terms of a Model-View-Controller paradigm.

I faced challenges on both sides. In Java I implemented the tree representing the Dynamic Document and all the necessary algorithms manipulating it. Furthermore, I had to take care of its serialization and de-serialization which was a non-trivial thing since the XML language to generate and parse could not be changed by me (due to the existing PDF renderer, and due to backwards compatibility issues). Unfortunately, the existing XML language was not entirely consistent with the view of a Dynamic Document I wanted the editor to present. We finally solved this problem by using a so-called digester XML parser which follows a stack-based paradigm. Another interesting aspect of the editor was to apply the Command Pattern to implement Undo/Redo.

Since I was not that into JavaScript before I started my internship, I also learned a lot in that area. Implementing advanced Drag & Drop, handling the asynchronous nature of server calls in a robust way, and also using JavaScript in a larger than usual context were very interesting. I soon noticed that JavaScript has some cool things about it that you often don't find in other scripting languages, or in higher-level programming languages in general. For example, the notion of closures is a great connection of JavaScript's imperative and functional aspects.

Being at Numcom was a very cool experience. It's a nice company to work for since there is a great culture and a lot of vision, creativity and knowledge around. And I didn't just have an implementation job, but was also incorporated into conceptual work right from the very first day. All the guys from the R&D team greatly supported me and gave me guidance for key decisions, while still leaving enough room for my creativity and for applying my way of doing things - which were great conditions for me to learn a lot. (ATS)

Are you interested in an internship as an Appway Software Engineer?
Have a look at the job description and apply for the internship by sending us your complete resume including a cover letter to job2010c@appway.com.

Job descriptionInternship as a Software EngineerApply

To apply for an internship, send us your complete resume including a cover letter to job2010c@appway.com.

Questions?

Contact us or give us a ring on
+41 43 304 06 08 - we would be pleased to help you.

Follow us on
We did it again! Over 3 Million USD yearly savings for BNY Mellon with Appway Client Onboarding! #COB #BPM #News t.co/rTvdVbqr 1 day ago
Looking for an internship as a Business Consultant? We are looking for you! #internships #jobs #IT #Zurich 1 day ago
Appway saves over 3 Million yearly for BNY Mellon - Press Release:t.co/DnzWIoJp #PR # news 1 day ago