# 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