Codecamp 2015 in Denmark

In fact, to Heine Bartsch's impressive estate in Sallinge. Small teams worked on defined projects in a great atmosphere between all sorts of spectacular art exhibits.
Our favorite chefs Firat and Marcel, who traveled with us, took care of our food. Thank you guys, it was just brilliant to be cooked for by you!
After 2 ½ days of intensive code production, the results were then presented to the entire team.
The teams:
Kalle and Marian - Simple IoT
At the beginning of September, I brought the IoT TechCamp to Kiel with the support of Cap3 and Starterkitchen.
I personally find the topic of “Internet of Things” very exciting. I was also able to get Marian excited about the topic. For Codecamp, we have set ourselves the goal of implementing the simplest possible interface for managing IoT devices.
We have set up a server where the devices can register with their sensors and actuators. The server was developed with a C# backend as a Windows 10 universal app on the Raspberry Pi 2. For the frontend, we used HTML5 with React.
With a website as a user interface, the user can easily and quickly create rules and thus define how to react to specific sensor values. A CC3200 from RedbearLab was used as a controller for the sensors and actuators. Programming was done here with C++.

As a showcase, the micro-controller was connected to a soil moisture sensor and a pumping unit. The sensor was located in a glass, which was connected to a second glass via the pump tubes. With just a few clicks, the server could now set a rule that whenever there is too little water in the sensor glass, the pump should turn on and raise the water level again.

My summary: We were able to achieve our goal for the 2.5 days of CodeCamp. Basically, programming without the support of the usual high-level languages and frameworks was a challenge. It's great that CodeCamp offers the opportunity to simply try out such things.
Marc and Ole - Laborheftapp
The lab notebook app is the idea of one of our customers, which we picked up for CodeCamp. Ole and I worked together on the lab notebook app, which we wanted to implement as a cross-platform solution for iOS and Android. To do this, we tried our new React Native framework.
What is it about? Experiments should be able to be documented using an app. An experiment manager sets up the experiments and evaluates them after completion.
In the course of CodeCamp, a REST-based backend should be developed, which is able to deliver various experiments and record the first data types of the documentation. The backend should at least be able to receive, process and deliver text and images. It should also be possible to create experiment documentation using the application. In this regard, the input of text and the recording and creation of images should first be realized. All other forms of documentation, such as audio input, video documentation and the creation of drawings, should optionally be implemented in CodeCamp. Special functions for test managers to create and evaluate experiments were deliberately omitted.

During CodeCamp, we developed a prototype that supports all basic functions. The app can load a task list from the backend and display it. From there, the user is taken to the respective task detail view, in which a task description and previous notes can be viewed. Within the detailed view, new text or image notes can then be created; further note types (audio, video, drawing and file attachment) are sketched. The native camera module of the smartphone or tablet is already used for the picture notes. This achieved the important goal of using a hardware component natively via JavaScript. The design concept was also largely implemented.

As a result, it can be said that programming with the React Native framework and the combination with the well-known JavaScript and HTML technologies was really exciting. The approach of largely adopting existing CSS properties but transferring them to the view via JavaScript objects, i.e. with full code support, was also interesting. In the end, we would have liked to have had one more day to fully implement the design and round off the last corners and edges of the prototype. On a technical level, it should be mentioned that, despite the new ES6 features, JavaScript is not yet the language of choice as long as there are other languages with powerful type systems.
Felix and Julien - Native app for the Apple Watch with watchOS 2
After the watchOS 2 release in mid-September, we couldn't wait to try out the new features. Since watchOS 2, it has been possible to develop native apps on the Apple Watch.
These apps do not require a permanent connection to the iPhone, so they run independently and with significantly greater performance. In addition, the Apple Watch sensors (heart rate, microphone, accelerometer) can now be accessed. Together with my colleague Felix, I was the “Apple Watch App” team at Code Camp.
While looking for a project for the Apple Watch, I came up with the idea to develop a golf app. Since I often go on the golf course myself, I know the advantage of using technical aids during a round. With the help of the golf app, it should be possible to count your own shots and those of another player per hole and save them for a tournament.

As a special feature, we had the idea of using the accelerometer to count our own beats. However, this functionality was discarded due to lack of practicality. Thanks to our fellow designer Roland, we quickly had a very attractive app concept ready and were able to start programming under Xcode 7.

To make programming with the new WatchKit really interesting, I used CodeCamp to get my first experiences with Apple's new Swift 2 programming language. Within three days, we managed to complete all important functions of the golf app on the new platform. At the final presentation on Saturday evening, we were finally able to demonstrate our app on the company's own Apple Watch. Publishing in the App Store now requires only a little work for final adjustments. From our point of view, CodeCamp was a great success!
Nicolas and Sören - Incoming goods registration with a mobile scan device
In our project, Nico and I dedicated ourselves to an app for mobile devices that scans bar codes to record incoming goods. A lean server works in the background and forms, among other things, the central data and communication interface between the customer's inventory management system and the mobile scan devices.
The idea is based on considerations relating to a specific request for process optimization from a customer. I don't even want to go into the exact specifications at this stage.
What we expected from the development of this project as part of CodeCamp is much more important: On the one hand, the targeted comprehensive implementation of this interesting use case with all its components and technical challenges as a proof of concept in the short time available was exciting. On the other hand, in addition to modern scan devices with ASP.NET 5 and MongoDB, we were able to successfully try out two technologies that we had not worked with before.
GLOBOS Logistik- und Informationssysteme GmbH — a specialist in barcode systems — thankfully provided us with the latest FZ-X1 device from Panasonic for CodeCamp.

Components of our development:
- Android app on Panasonic FZ-X1 demo device
- .NET server backend with MongoDB to persist the data
- Small web view to display the current delivery note and entry data on the server
- Offline operation and auto sync on connection
- Automatic reports (e.g. via email) when there is a deviation from target or actual delivery quantities
Technologies used, including:
- Android SDK (version 4.2 Jelly Bean)
- Panasonic Toughpad SDK
- ASP.NET 5 beta 7
- MongoDB

Conclusion: This exciting project was a lot of fun while working on it and met all expectations even after completion.
In particular, the illustration of this classic, seemingly simple process, which is composed of a complex construct through the various, distributed components that communicate via the network largely asynchronously (offline operation requirement), was the particular appeal of this project.
In addition to the scan devices including apps, the item data management with assignment to bar codes, the server backend for synchronization between inventory management system and mobile devices, and a web view to view the data and thus, in principle, all modules involved in the process were implemented.
Oliver and Bettual - Edge backend in Go
Bettual and I were a project team at CodeCamp. Our goals were to create important parts of the backend software for EDGE system to redevelop in a “modern” programming language.
In doing so, we wanted to break down the currently used “monolith”, which emerged from the original EDGE prototype, into two parts. Development of the EDGE backend started in mid-2013, when we decided to develop with C++ and OpenFrameworks — now we wanted to see how the Go programming language in direct comparison to C++ for our backend.
Development took place in parallel on Linux and OS X. Within two days, a significant part of the backend could be reimplemented! In addition, the new code surpassed the old code both in terms of brevity and readability.

The most important finding from this experiment: Go is a simple yet powerful language that is definitely suitable for our purposes. We will definitely continue the project we started at CodeCamp.

All teams were supported by our Web and graphic designer Roland Langmaack, who felt the most busy. Huge thanks to you Roland, at this point!

We agree that Codecamp 2015 was a great success! Working on self-defined projects in a relaxed atmosphere while using new technologies or expanding your own skills is simply great and cries out for repetition.
Thanks to everyone who was there! Thanks to such a great team!