Team lessons §
- Working alone on the code is quite hard, a developer needs someone else to reflect on ideas.
- Within the team at this point there were quite some tensions. It is helpful to set very clearly expectations and define roles for future team changes.
- A lot of Christian organisations speak about working together but it is hard to have the foundations to work together.
- The team at this point did not have funds, the team did not have someone to raise funds, we were also missing someone to do business development.
Technical lessons §
- RDF is complex.
- Mapping RDF to JSON should be done with SHACL or JSON-LD and not a custom solution. I did do a custom mapping but this become painful and slow.
- Offline PWA’s are quite complex. How to test PWA mode? How to test offline mode? How to do this quickly? Tools such as Cypress can help.
- Apache Jena is heavy and we have not found an easy lightweight alternative. The java side takes a lot of memory.
- When having two mechanism to query data (online via backend and offline via IndexedDB) a drift can happen which is hard to solve so it is better if the systems are similar. I implemented Comunica in the front end in the version 2 prototype but then the bundle size grew and it was slow.
- Tight coupling of the view of an eBook is not helpful when you want to add flyers which have the same business logic but just a different label.
- Fetch waterfalls happen if you have dynamic pages with dynamic content blocks.
- Translation system that are key based are helpful. Ultimately my preference is to do what the Fluent Project does, have it key based but also provide a fallback in English. This allows for automatically building the English translation file.
- uHTML has bugs and something like React probably has better adoption.
- Hand crafting CSS comes with bugs and testing a complex app is hard.
- Displaying different kinds of media in one grid gives visual challenges.
- A Fluent interface that does fetching, selecting the right translation in asynchronous manner might be over engineering. I also used
Proxy first and later removed it for browser compatibility.
- LightNet might be best built as a monolith.
- Kubernetes can give a lot of pain if not fully understood.
- Docker in Docker in CI gives pain and seems to be almost impossible.
- TerraForm might be too verbose and the HCL language changed too often. Automating this did cost us a lot of time.
- It was hard to onboard juniors to the project. The implemented microservices architecture might have been too complex.
- RDF gave a difficult threshold for newcomers.
- User interface work is best done in small iterations, because you must feel how it works.