# Challenges in coding for modmesh ###### tags: `modmesh` - Pybind11 and the hybrid system between Python and C++ are profound. It is not easy to make it right. - It could be more intuitive to train novice to use pybind11 by making a tiny project to wrap from scratch. - The design of the wrapper layer in modmesh is not clear. - It takes a lot of time to understand how pybind11 dealing with numpy. - It will take more time to understand numpy itself, like how it implements slice view. - Pybind11 is just like a framework. To learn how it works is more interesting. maybe you can teach students how to do a "toy" pybind11? - Template - Don't put template in cpp. - Designing template like `std::vector<T>`, where `T` can be any class, is hard. - Debug using debugger - Debugging code takes real-world experience which is not available in classroom. - Piece-by-piece knowledge - small_vector - Modern constructs like `move` with `forward` - I also learned some C++ knowledge every time when you say something to me, like dynamic_cast costs more, std::function is heavy. - Good things - modmesh is about a right size to learn how to write C++. - It is not too big to make tracing code hard. - Ideas for topics: - Elements of modmesh. - Naming rules and coding style in modmesh. - What's the major/minor functionality of modmesh? Who are the potential users of modmesh? - Programming tools that are involved in modmesh. # Improvement plan