FOTW Episode 5: Tools for Fixing Circular Dependencies, JMeter, Microsoft Clarity, and ByteTrack
References, experiences, and new stuff come and go among fluxers as part of our daily routine. Fluxers on the Watch is how we share those references with you. Check out the fifth compilation from our community of watchers!
Tools for Fixing Circular Dependencies
In any type of software development (front end, web, back end, mobile, embedded, etc.), we use our own SDKs/libs as dependencies or the ones from third parties (to avoid reinventing the wheel) so as to modularize and reuse pieces of pre-existing software. However, as a project grows and needs more dependencies, circular interdependencies can arise, thus bringing problems along with them.
We share some tools for visualizing project dependencies which, among other features, make it possible to detect and correct these circular dependencies:
For Node/NPM-based apps:
With Madge, you can build a module dependency chart and also easily detect if there are any circular dependencies.
For example:
❯ madge — circular
Processed 19 files (7.5s) (3 warnings)
✖ Found 1 circular dependency!
1) Algebra.js > Calculus.js
And when you fix it…
Processed 19 files (8.5s) (1 warning)
✔ No circular dependency found!
Learn more:
https://github.com/pahen/madge
For native iOS mobile projects:
iOS Objective-C:
https://github.com/PaulTaykalo/objc-dependency-visualizer
Swift:
https://github.com/PrzemyslawCholewaDev/swift-dependency-visualizer
Also, Periphery:
https://github.com/peripheryapp/periphery
For Python development:
Pydeps:
https://github.com/thebjorn/pydeps
Poetry (comes with a dependency manager):
JMeter: An Ally for Ensuring Quality
JMeter is an open-source software testing tool that allows us to simulate scenarios of concurrent users, evaluate app performance and identify bottlenecks. It can be used to test a wide range of apps, such as web apps, APIs, mainframes, among others, without jeopardizing speed and efficiency.
It supports multiple protocols such as HTTP, HTTPS, FTP, JDBC, SOAP, REST, among others, and it also enables users to analyze test results with detailed reports (even with charts) and to identify areas for improvement.
Learn more: https://jmeter.apache.org/
Collaborator: Javier Marchesini
Microsoft Clarity for User Behavior Analysis
Microsoft Clarity is a tool that provides information about user interaction on websites and also on web apps. From heatmaps to session recordings, it allows us to better understand behavior and make decisions to improve usability and overall experience. It also possesses other features:
· Performance metrics.
· Real-time error detection and technical issue tracking.
· Advanced user journey analysis.
· Integration with other tools to optimize website experience and performance.
In our experience, integration is very simple and smooth thanks to clear documentation and tools provided by Microsoft. With just a few steps, we were able to incorporate Clarity’s script into the app we were working on and to start collecting data quickly and securely.
As a bonus track, if you are interested in integrating Microsoft Clarity into your project, we share with you what steps to follow:
1. Create a project at https://clarity.microsoft.com/projects.
2. Download JavaScript code to include it in your project (in index.html).
3. Done! Now browse to see behaviors and results.
ByteTrack for Object Tracking
Object tracking in computer vision has evolved significantly, thus making it possible not only to detect moving objects but also to track their trajectory over time. However, the main issue is the need to track an object as it moves through a scene while facing challenges such as occlusion, overlap, and transformation.
ByteTrack is a computer vision model that particularly uses an innovative approach because it considers both high-confidence and low-confidence detections, thus making it possible to track the object over time even when objects are partially hidden, or detection is uncertain.
ByteTrack’s operation is based on separating detections into high-confidence and low-confidence categories, followed by a trajectory association process for which the Kalman filter is used to predict the location of objects in each video frame. This approach has proven to be effective in practice, thus striking a balance between detection speed and tracking accuracy.
Regarding the state of the art, ByteTrack has been one of the leading algorithms for object tracking until early 2022, later surpassed by other techniques such as BoT-SORT and SMILETrack.
Watchers of this episode: Alejandro D’Ambrosio, Andrés Milla, Francisco Montaldo, Javier Marchesini, Omar Jeremías Palacios, Andrés Frigo, Darío Aguiar, Hugo Folonier.