AppLand Community Profiles: Arnon Moscona
Community is a fundamental part of AppLand. Our community members and contributors span the globe, and play a key role in helping us make life better for developers. This blog series profiles members of the growing AppLand community and shares how they use AppMap in their daily work. Enjoy getting to know everyone! For more information on the AppLand community or to join us, check out our community site.
On Getting Into Software Development
I first encountered software development in the early ‘80s when I was working with electronics and industrial control applications. I had no formal training at the time, but computers and their infinite possibilities really intrigued me. So when I went to university to study mathematics, I also spent time learning about computer science, robotics and scientific computing. From that point on, I was addicted. I decided my future was software, not math – and it was the best career decision I ever made.
On Developing Software Professionally
I work at Syapse, a real-world evidence company dedicated to extinguishing the fear and burden of serious disease. We use medical data, knowledge management, analytics, clinical informatics and epidemiology to apply data insights to improve patient outcomes. My team is responsible for knowledge management systems and applying the knowledge to the raw data (normalization, inference etc.).
Syapse is primarily a Python shop. Personally, I’ve developed in lots of languages over the years, but my main experience is in Java and dynamic languages such as Groovy, Ruby and Python.
On Personal Preferences and Hobbies
I love dynamic languages. Not only is software development faster, but testing is generally easier and using metaprogramming along the way is a lot of fun. In the end though, I always prefer the best language for the job.
In terms of other highly personal questions 😉, spaces not tabs! And I’m on team dark theme.
When I’m not building software, I love to draw and paint, and I dabble in photography. I’m also into woodworking (both building furniture and some light construction) and flight simulation!
On Developer Productivity and Software Quality Challenges
In the last decade, complexity has skyrocketed for developers. And with ever-increasing complexity, coordination and communication has become much harder.
In my job, I have to contend with two major kinds of complexity:
- Working in a medical/biological field, there’s an inherent complexity of interdisciplinary work. I work with multiple experts in multiple fields and we need to build clear, practical solutions – but no one person can possibly understand everything that’s going on.
- With multiple layers of virtualization and management, hundreds of repositories, multiple services, multiple data sources, deep supply chains with deep dependencies, security, and multiple developers in multiple groups, today’s systems environments are incredibly complex. Gone are the days of just having one simple piece of monolithic code to deal with! There are SO many moving parts and SO many inconsistencies.
On Finding AppMap
Because of today’s complexities, I’m always on the lookout for tools that can help me understand what’s going on – particularly when I’m dealing with code written by other people or a distributed situation where not all of the code runs locally.
I remember seeing someone use AppMap in an online seminar, and I immediately searched for it as the seminar was taking place. I was thrilled to find that AppMap works with my favorite IDE (Intellij IDEA). I tried it out on some tests that were failing that involved a lot of someone else’s code, and really liked what I saw.
On Using AppMap
Lately, I’ve been using AppMap to:
- Understand existing code and its runtime behavior
- Analyze dependencies, which is harder in dynamic languages since static code analysis is pretty limited. It’s so important to continuously maintain a clean dependency structure both at a module level and on a package level (Python has fairly strong protections on a module level, but none on a package level).
- Do visual profiling (I find Python’s tools for this aren’t very easy to use).
- Quickly illustrate what I’m talking about to other developers
My favorite AppMap use case is analyzing code flow based on runtime behavior. In fact, I can see how it’d be incredibly valuable when crossing service boundaries – something I’ll likely have to contend with soon.
On Future AppMap Capabilities
I’m excited to see more dependency analysis features in AppMap: detection of circular dependencies of various kinds (e.g. package dependencies), fan out and fan in analysis, dependency tree depth, and ideally a dependency structure matrix (DSM) tool. IntelliJ has a decent DSM tool that works with Java, but it’s based on static analysis and doesn’t work with Python. Also it doesn’t focus you on the parts that get used a lot, whereas a runtime trace analysis tool like AppMap would be better positioned to highlight highly used areas that also have dependency structure problems. This would be invaluable for increasing overall software quality and maintainability!