Skip to content

Commit 5de260b

Browse files
authored
DMP '25 Week02 Update by Justin Charles (#219)
* Add Justin-Charles as author Signed-off-by: Justin Charles <[email protected]> * DMP'25 week02 update by Justin Charles Signed-off-by: Justin Charles <[email protected]> --------- Signed-off-by: Justin Charles <[email protected]>
1 parent 710ec70 commit 5de260b

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: "Justin Charles"
3+
slug: "justin-charles"
4+
title: "Member and DMP'25 Contributor"
5+
organization: "Sugar Labs"
6+
description: "Member and DMP'25 Contributor at Sugar Labs"
7+
avatar: https://avatars.githubusercontent.com/u/143245796?s=400&u=56426d9e56b5d8ee545ba6b753e300d90e994eaa&v=4
8+
---
9+
10+
<!--markdownlint-disable-->
11+
12+
# About Justin Charles
13+
14+
I'm Justin Charles, an enthusiastic Computer Science student passionate about open-source, creative coding, and building impactful developer tools.
15+
As a contributor at Sugar Labs and a participant in DMP 2025, I’m focused on improving the developer experience through intelligent tooling and user-centric design. I thrive on collaborative environments and believe in writing clean, maintainable code that scales.
16+
17+
## Experience
18+
19+
- **DMP 2025**: Enhancing Debugger Capabilities for Pippy using LLMs
20+
- **Sugar Labs Member**: Active contributor to Sugar's developer tooling and educational platforms
21+
- **Open Source Contributor**: Regular participant in Hacktoberfest and community-led initiatives
22+
23+
## Current Projects
24+
25+
- MusicBlocks-v4 Masonry Module
26+
- Music Blocks Developer
27+
28+
## Connect with Me
29+
30+
- GitHub: [@justin212407](https://github.com/justin212407)
31+
32+
- LinkedIn: [Justin Charles](https://www.linkedin.com/in/justin-c-663840297/)
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: "DMP’25 Week 02 Update by Justin Charles"
3+
excerpt: "Completed SVG path logic for all brick types and documented props and rendering states"
4+
category: "DEVELOPER NEWS"
5+
date: "2025-06-15"
6+
slug: "2025-06-15-dmp-25-justin212407-week02"
7+
author: "@/constants/MarkdownFiles/authors/justin-charles.md"
8+
tags: "dmp25,sugarlabs,week2,justin212407"
9+
image: "assets/Images/c4gt_DMP.png"
10+
---
11+
12+
<!-- markdownlint-disable -->
13+
14+
# Week 2 Progress Report by Safwan Sayeed
15+
16+
**Project:** Music Blocks 4 Program Engine
17+
**Mentors:** [Anindya Kundu](https://github.com/meganindya/), [Sumit Srivastava](https://github.com/sum2it)
18+
**Assisting Mentors:** [Devin Ullibari](https://github.com/pikurasa/), [Walter Bender](https://github.com/walterbender)
19+
**Reporting Period:** 2025-06-09 - 2025-06-15
20+
21+
---
22+
23+
24+
## Goals for This Week
25+
26+
- Finalize SVG path logic for all three types of bricks
27+
- Categorize and document all props passed into bricks
28+
- Identify all visual states a brick can be rendered in
29+
- Differentiate props and states across brick types
30+
- Write comprehensive tests to verify correctness
31+
32+
---
33+
34+
## This Week’s Highlights
35+
36+
### 1. Full SVG Path Generation Logic
37+
38+
- Completed `generatePath` support for all three brick types (Simple, Expression and Compound)
39+
- Rendering now properly reflects scaling, argument slots, top/bottom notches, and label widths
40+
- Edge cases such as bricks with long labels or stacked arguments handled correctly
41+
42+
### 2. Brick Input Prop Categorization
43+
44+
- Catalogued all props across types (`strokeWidth`, `scaleFactor`, `bBoxLabel`, `bBoxArgs`, etc.)
45+
- Documented their role in layout computation and how they influence final SVG shape
46+
47+
### 3. Brick State Documentation
48+
49+
- Mapped out all possible states a brick can be rendered in (e.g. with/without label, multiple args, missing notches)
50+
- This will help improve clarity for both debugging and future features
51+
52+
### 4. Type-wise Prop/State Differentiation
53+
54+
- Clearly separated the logic for how each brick type handles its props and rendering states
55+
- This abstraction allows brick-specific customizations without breaking general rendering flow
56+
57+
### 5. Unified Brick Test File
58+
59+
- Created a comprehensive Jest test file to validate path generation against expected output
60+
- Covers edge cases like empty arguments, multiple stacked args, and variable heights
61+
62+
📄 Reference: [Props & States Document – Tab 3](https://docs.google.com/document/d/1C0t4iSze2eDEv6lWbloK3MnvJgAa6HvmXmk2sQ0lCZs/edit?tab=t.99d6uc7vheda)
63+
64+
---
65+
66+
## Challenges & Solutions
67+
68+
**Challenge: Mismatched Bounding Box Heights in Some Brick Types**
69+
In initial tests, actual brick heights didn’t match the combined heights of `bBoxLabel` and `bBoxArgs`.
70+
**Solution:** Identified a calculation flaw in vertical layout stacking. Corrected it by properly summing scaled heights and applying consistent spacing logic in path computation.
71+
72+
**Challenge: Supporting All Brick Variants with Shared Logic**
73+
Bricks share many layout rules, but also diverge in rendering.
74+
**Solution:** Broke down `generatePath` into side-specific functions (`_generateLeft`, `_generateRight`, etc.) with override support depending on brick type and features like notches.
75+
76+
---
77+
78+
## Key Learnings
79+
80+
- Improved understanding of scalable vector graphics and path-based layout systems
81+
- Gained hands-on experience in building testable, modular rendering logic
82+
- Developed systematic thinking around UI state modeling and prop-driven rendering behavior
83+
84+
---
85+
86+
## Next Week’s Roadmap
87+
88+
- Create React Components(View) to render the bricks with all its properties.
89+
- Create the Model components for the different Brick Types.
90+
91+
---
92+
93+
## Resources & References
94+
95+
- [Props & States Document](https://docs.google.com/document/d/1C0t4iSze2eDEv6lWbloK3MnvJgAa6HvmXmk2sQ0lCZs/edit?tab=t.99d6uc7vheda)
96+
- [musicblocks-v4 Repository](https://github.com/sugarlabs/musicblocks-v4)
97+
98+
---
99+
100+
## Acknowledgments
101+
102+
Thanks to my mentors for helping review the rendering logic and for encouraging a structured approach to SVG layout systems. Their early feedback made the path code significantly more robust and maintainable.
103+
104+
---

0 commit comments

Comments
 (0)