Ubiquitous Applications

I love to create apps. I worked on and distributed many apps, for Android and mostly iOS devices, and also academically focused myself on application development in my Computer Science studies. To me it not only matters that an app is well-designed to fit its use cases, but also that the user experience is top-notch. I achieve this by thinking structured and domain-oriented to include many possible solutions to a use case. I never stop learning about strategies such as engineering context-adaptive apps and driving offline + mobile first approaches. Likewise, I keep up-to-date with the current system-native improvements and am already experienced with frameworks such as SwiftUI, Metal, Core ML, Vision and many more.


Machine Learning

As the hot topics of Computer Science, Artificial Intelligence and especially Machine Learning solve problems that were not sufficiently solvable before. From data analysis through structuring or segmentation to the classification of sensor data and the generation of assistive, human-like voices, applying Artificial Intelligence correctly is a powerful tool to understand and interpret the context and environment of the user.

Featured Project

The 3Dify app uses multi-camera-array disparity computation on photos to generate depth maps and use them for a 3d parallax effect. The app is context-aware such that on devices without multi-camera-arrays, it creates the depth maps by monocular depth interpretation using the FCRN-DepthPrediction neural network and the new CoreML/Vision frameworks. In this way, even users without a device capable of disparity calculation can use the parallax effect.

Adaptivity through CoreML and Vision

On-Device Machine Learning brings new possibilities. For example, the 3Dify app uses an Artificial Intelligence to interpret depth information into photos. This is a very good example for how current AI research can be used in mobile applications to solve a specific use case.

Cloud Computing

Engineering ubiquitous systems, like mobile or IOT applications, requires solutions to make development, distribution and data flow more efficient, scalable and robust.

Blockchain and Consensus

Blockchain solves problems where it is of interest to share and synchronize a writable database across many untrustworthy hosts, not only in the field of cryptocurrency. For Example, we use a Blockchain for our experimental proof-of-concept Messenger Peerbridge to store and distribute messages.

Continuous Everything and DevOps

Cloud systems can be used to significantly reduce time to market while opening new possibilities for software validation and verification workflows. Jobs that would take time and effort to perform can be efficiently performed in the cloud. In Continuous Integration, the software is committed to a cloud system and automatically validated with tests and code analysis tools. Software that passes cross-feedback and quality gates can be continuously published, deployed and distributed. For example, Fastlane can be used on iOS to directly build, sign and distribute application archives to Apple App Store Connect and TestFlight. My blog ☕💻.ws uses a continuous publishing workflow to synchronize its blog entries with a content repository. This makes change management very straightforward, without any needs to manually deploy and update the blog.

Service Oriented Architecture

While monolithic systems are perfect to fit smaller applications with only a few contributors, systems with very high server loads and many development teams usually directly depend on their scalability, load-wise and development-wise. If applicable, it can be a good solution to split a monolithic system into smaller individual systems that each cover a unique set of capabilities. This requires new software development paradigms and patterns. Teams may then be able to significantly profit from their independent development cycles and the clear interfaces they have to offer in terms of interoperability. The application itself scales better under, for example, an elastic load balancer which distributes load to the individual services. As an even more radical approach, Microservices can be tailored to encapsulate only a tiny set of functionalitites. Our experimental app ordered.online uses such a principle together with Docker Swarm based containerization.

Distributed Systems

For many use cases it may be necessary to decentralize an application in the form of a distributed system. Distributed systems require a sufficient informedness about their basic principles, since many regular software patterns found in the classical client-server concept can no longer be used. Our Peerbridge Messenger is a distributed system and uses the concept of distributed hash tables to connect clients.

In a continuously evolving technological environment, not only portability and durability is increasingly important, but also (social) connectedness. The shown principles of Cloud Computing are important to maximize the product value while minimizing development and support expenses.


Fullstack

I never limit myself to a specific technology and always analyze, which technology is the best for a use case and leverage its advantages. This way I am very flexible to new challenges. Plus, its fun to learn new technologies and languages!

Do you have something in mind? I am always interested in new business opportunities or job inquiries. Contact me: contact@philippmatth.es