SlideShare a Scribd company logo
1 of 11
Download to read offline
Enabling Powerful Software Insights by Visualizing Friction and Flow
A Creativity Support Tool (CST) designed to enhance team retrospectives for software developers
Arty Starr
PhD student, University of Victoria, artystarr@uvic.ca
In an Agile software development process, a software team will typically meet on a regular basis in a “retrospective
meeting” to reflect on the challenges faced by the team and opportunities for improvement. On the surface, this challenge
might seem straight-forward, but modern software projects are complex endeavors, and developers are human – identifying
what’s most important in a complex sociotechnical system is a task humans struggle to do well. What if developers had
tools that recorded and helped them explore their historical experiences with the code, and they could identify hotspots of
team friction, worthy of discussion, based on empirical data? This paper will explore the possibility and impact of such tools
through a design fiction and working prototype of an Augmented Reality (AR) Code Planetarium powered by FlowInsight [1].
1 INTRODUCTION
Imagine you are a software developer working from home, on a software team with eight people. You have a
retrospective meeting with your team today, to talk about, what are the biggest pain points experienced by the
team, and what are the best opportunities for improvement? To help ground the discussion in empirical data,
and provide insight into what those opportunities might be, you and your team members put on a pair of
Augmented Reality (AR) sunglasses and enter the AR Code Planetarium.
Surrounding you, in a half-dome shaped visualization that fills the room, is a virtual sky filled with star-like
constellations, each representing a constellation of related files in code. You see familiar names of a few key
code classes, scattered across the constellations, orienting you to the layout of code in the sky.
Figure 1: AR Code Planetarium showing code constellations like stars in the sky.
A tangible handheld controller allows you to explore the relationships in the code. Two data overlays with
heat maps indicate where in the code the team has experienced the most confusion, and where the team has
spent the most time in flow making changes. The intersection of these two characteristics, high confusion
areas with many hours of change, are a good strategic location to consider potential improvements [2]. As a
creativity support tool (CST), the AR Code Planetarium helps developers identify where the highest leverage
opportunities for improvement might be, and apply their creativity to solving the most high-impact problems.
User: Pro-C Software Developer
Creative Stage: Find the Problem
The AR Code Planetarium leverages the affordances of AR to create a room-size canvas for displaying
visual-spatial patterns of how developers interact with the code. The large canvas allows users to scan,
explore, and identify significant patterns, and provides an empirical foundation for productive team discussion
and actionable insight.
1
2 RELATED WORK
In a recent study by Stripe, developers were spending 42% of their time in an average week troubleshooting
bad code [3]. If we consider the economic expenditure of software projects, the impact of these problems is
huge. Companies in the US, for example, waste around $634 billion dollars per year on software projects
when developers get confused and stuck [4].
Several code analysis tools exist that support developers in managing software complexity by identifying
problems in the code. CodeScene, Sonarqube, Snyx, Veracode, and Codacy to name a few [5,6,7,8,9].
Code quality does matter, but despite all these tools, the problems largely remain –so let’s explore why that is.
2.1 The Metaphor of Technical Debt
Several research studies [10,11,12,13] have attempted to clarify, define, and validate the concept of “technical
debt” as a way to understand these costs and its impact on software development. Ward Cunningham shared
the concept with the software community in 1992 at an OOPSLA conference:
“Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid
back promptly with a rewrite. The danger occurs when the debt is not repaid.” [14]
Over the last 30 years, since this metaphor was introduced, the technical debt concept has become pervasive
as an explanation for software problems, even when the cause of the problems has nothing to do with
short-term tradeoff decisions to speed up delivery, as Cunningham described. Modern software projects have
also become increasingly complex with the popularity of microservice architectures, cloud-native platforms,
and the move away from single-executable monolith applications [15,16]. Developers still spend countless
hours confused and stuck troubleshooting, but the causes of these difficulties have shifted dramatically with
these architectural shifts, from being predominantly inside the code written by the developers, to the complex
integration space of different libraries, frameworks, and a network of microservices.
A more holistic view of the causes of software problems is necessary to account for the complex system of
potential causes that exist outside of the technical debt metaphor.
2.2 “Programming Flow” and measuring the “Friction” of Software Development
What we really want to understand is what’s causing the slowdowns that are affecting developer
experience in the here and now. How do we measure these slowdowns and build tools that help us identify
what to fix? First, let’s introduce some new terms to help us reframe the problem.
“Programming Flow” is the developer’s experience as they interact with the code – the thinking,
understanding, modifying, and testing of the code in order to make the behavior of the system match an
intention. “Friction” is everything that gets in the way of this flow. These are the slowdowns that we want to
understand and systematically reduce. One specific type of “Friction” is “Confusion”. “Confusion” occurs
when a developer first writes code, then observes unexpected behavior when running the code. When
developers are confused, they “Troubleshoot” to resolve the “Confusion”.
FlowInsight is a novel approach to measuring “Programming Flow” and the “Confusion” experienced by
developers while interacting with the code. For example, FlowInsight supports developers in the moment with
troubleshooting support tools, then measures the duration of troubleshooting sessions as a “Confusion”
metric, projected onto the code areas where developers happen to be in their IDEs while they are
troubleshooting.
The AR Code Planetarium leverages the rich datasets from FlowInsight to create an interactive
visualization that allows developers to explore the patterns of their coding experience as constellations.
3 DESIGN FICTION
To illustrate how developers might use an AR Code Planetarium to identify actionable insights, a fictional story
based on the Design Fiction research technique [17], will be used to demonstrate the design concept.
2
3.1 Jessica Recognizes a Familiar Hotspot
Jessica has been a developer on the backend data team for 3 years now, and is familiar with a good portion
of the codebase. Over the last couple weeks, she’s been working on a challenging task to integrate a new
data feed into the data transformation pipeline, which has involved troubleshooting some frustrating bugs.
Her team is holding a retrospective meeting today. Since everyone on the team is working remotely, the
AR Code Planetarium serves as a shared space to visualize and discuss the team’s recent experiences.
Jill (Team Lead): “Alright, let’s get started. First, let’s take a look at what the most recent two weeks look like,
and where our biggest pain points were.”
Jill enables the Confusion heat map, and changes the time scale to focus on the most recent two weeks.
Jessica notices her AR visualization update, and looks around at the different hot spots. Jessica notices a
hotspot near a code area where she’s been recently working, and examines the names of the surrounding
code files to confirm her assumption. She then points to the constellation with her AR controller, while
pressing a button on the controller indicating a shared action, which her team members can now all see.
Jessica: “This one, over here, with the CompanyDecorator class. I had a really hard time figuring out what
was going on here. Do you see this? There’s 15 different classes connected in this constellation. I was
trying to add a new data feed this week, and the values kept getting overwritten, and I couldn’t figure out why.
I bet my troubleshooting session is in here.. let me look.”
Jessica selects the hotspot node on the CompanyDecorator class with her AR controller, and then presses
the details button to drill into the details. The top troubleshooting sessions that intersect with the hotspot are
displayed in a scrollable list. She selects her recent troubleshooting session, and presses the shared action
button to share the troubleshooting session with her team. The troubleshooting session is displayed in a
scrollable window in everyone’s AR display with a line connecting the window to the related hotspot.
Jessica: “This one. This was a few days ago. See, I couldn’t figure out why the data feed changes I was
making weren’t showing up. I was trying to add log statements everywhere to figure out what was going on, it
was such a pain. There’s no way to really see what’s happening.”
Eric: “Yeah, that’s happened to me too. Every time we have to work in the data pipeline, it’s like this.”
Jill (Team Lead): “I’m curious if this is a common pattern.”
Jill changes the time scale to show the Confusion hotspots over the last year. Jessica notices her AR
visualization update, and sure enough, the same CompanyDecorator hotspot is still there in bright red.
Jessica: “I’ve got an idea. What we really need is a way to observe what’s going on in this part of the data
pipeline. Something that lets us run a single company through the pipeline, and then watch the data
transformations, step by step, as the different overlays are added. If we could capture this intermediate data
in a trace file, so that you could see what’s going on in the different phases of the decorators, that would make
things so much easier. We could probably build some tooling to do this sort of thing.”
Jill (Team Lead): “Yeah, that sounds like a great idea. I’ll create a ticket for that, and add it to our backlog.”
The developers continue to explore the hotspot patterns in the AR Code Planetarium, discuss their
experiences with the code in those areas, and create a list of actionable ideas for improvements.
3
4 PROTOTYPE DESIGN AND IMPLEMENTATION
In this section, we’ll discuss the design and implementation of an initial working prototype of the AR Code
Planetarium built on top of FlowInsight data and capabilities.
4.1 Inspiration and Design Concept
The initial idea of using a force-directed visualization was inspired by the FlowInsight data itself. We had two
years of data from developers navigating a codebase already sitting in the database. Creating a
force-directed physics simulation was a natural choice for revealing the patterns in the data. The idea of
using navigation patterns to reveal the implicit architecture of the codebase is similar to Janice Singer’s
research paper on NavTracks [18], which uses IDE navigation pathways to derive related filesets.
Figure 2: Initial sketch of the planetarium concept and early experiments with using force-directed layout in Unity.
As the force-directed graph started to self-organize into constellation-like star patterns, we started referring
to them as “code constellations” and using the metaphor of a “sky”. The inspiration for the planetarium came
from a Led Zeppelin laser light show experience at the OMSI planetarium in Portland, Oregon [19]. The
half-dome virtual display creates a large canvas to explore the data, and takes advantage of the affordances
of AR technology to create an experience that can’t exist on a flat screen.
Figure 3: Planetarium controller designed to hold with one hand
The goal of the tangible handheld controller was to minimize the amount of movement required in order to
interact with the virtual display. Since holding up your arm to point at objects can be tiring, the selection knob
offers a much more relaxed movement. The handle is designed to allow the user to hold the controller with
one hand. The capacitive buttons minimize the amount of force required to press the buttons which makes
pressing the buttons much easier when holding the controller with one hand.
4
4.2 Prototyping the Planetarium Controller
This section describes how the planetarium controller and electronic circuits were constructed.
Components Description Details
Controller Box:
● box (6 pieces) 20x14x5 cm
○ top piece with engravings and handle
○ right piece with room on top for handle
○ bottom piece
○ back and front pieces
○ left piece with circular cable holes
● handle (2 pieces) 14x7 cm
○ 2 pieces to reinforce handle
● button parts (14 pieces, we only used 2) 1.5 cm
SVG Laser Cut Templates can be found here
Electronics and Other Components:
● 1 Elegoo Board (including power cable to the PC)
● 1 Solderless Breadboard
● 2 1M Ohm Resistors for the capacitive buttons
● 1 Potentiometer Knob for the selection knob
● 1 Plastic knob cover for the selection knob
● Electrical Conductive Paint for the capacitive buttons
● Red, purple, and black acrylic paint for the buttons
● Jumper wires to connect the components
● Legos to prop up the buttons and selection knob
● A few strips of tape, ideally electrical tape
● Gorilla glue to glue the handle pieces together
5
To assemble the planetarium controller, follow the below instructions and circuit wiring diagram.
Figure 4: Circuit diagram for planetarium controller showing potentiometer and capacitive buttons
1. Assemble (not glue!) the top, right, bottom, back and front pieces of the controller box by pushing together
the finger joints. Leave off the left side of the controller to give access to the inside of the box while
assembling the electronics.
2. Glue the two handle pieces together to create a handle reinforcement piece, then glue the handle
reinforcement underneath the handle part of the top piece. The handle pieces should slide into place just
above the right box piece that is cut short to make room for the handle.
Figure 5: Handle pieces glued together and slid in place and the potentiometer knob propped up with legos.
3. Wire the potentiometer according to the circuit diagram with power, ground, and a signal wire in the center,
then prop up inside the controller box with a tower of legos, and add the plastic knob cover.
6
4. Paint two of the wooden button pieces with electric conductive paint on both the front and back sides and
leave to dry. This will create the capacitive touch capability.
Figure 6: Two wooden button pieces painted with electric conductive paint and left out to dry
5. Thread one side of a 1m Ohm resistor through the button holes so that one side of the button shows the
resistor, and the other side has just the wire poking through.
Figure 7: Conductive button threaded with 1M Ohm resistor through the buttonhole
6. Connect jumper wires to each side of the 1M Ohm resistor, and secure it with tape. Plug the other ends of
the jumper wires into the breadboard according to the circuit wiring diagram.
Figure 8: Conductive button threaded with 1M Ohm resistor then connected with jumper wires.
7
7. Place the conductive painted buttons in each of the friction/flow button slots, push through the slots and
secure temporarily with a piece of tape. Slide in legos underneath to prop up the capacitive buttons to hold
them in place in the slots, then remove the tape.
Figure 9: Capacitive buttons pushed through the holes and held up temporarily with tape
8. Wire the breadboard components to the Elegoo controller board following the circuit wiring diagram. Load
the circuit controller code onto the controller board using the Arduino IDE. You can find the code and detailed
instructions for installing the software at: https://github.com/accolasia/arduino/tree/main/ardome_control
9. Once the buttons are in place and the circuit is tested and working, optionally paint the friction button red,
and the flow button purple with acrylic paint, and use black paint to paint a border around the buttons.
4.3 Building the AR Visualization in Unity
The AR Visualization was built with Unity [20] to leverage the physics and 3D capabilities of the game engine,
and supports integration with the NReal Air AR Sunglasses [21] used for prototyping the design.
Figure 10: NReal Air AR Sunglasses used to prototype the design.
First, the network integration and API calls were created to retrieve the developer navigation traversal data,
and the file-level friction/flow data from FlowInsight. Once the datasets were loaded into Unity, each code file
was translated into a sphere node, and each traversal was translated into an edge, drawn as a line between
the spheres with a thickness based on the traversal count. Traversals with a navigation count of less than 4
were pruned from the dataset to reduce the noise in the graph.
The Unity physics engine was used to apply forces to the nodes using Eades force-directed graph
algorithm [22]. Connected nodes were pulled together using a spring force. Disconnected nodes were
pushed apart with a repulsion force. All nodes were pulled equally toward the center. To create a mostly flat
graph with a small amount of depth, a plane was placed above and below the nodes to limit the motion.
8
Once the forces resolved in equilibrium, the nodes were mapped to the planetarium half-dome using a
spherical coordinate projection [23]. The x, z coordinates of the graph were wrapped around the surface of
the dome. The y-coordinate was mapped to an increased depth in the radius to create a 2.5D quality.
Figure 11: Heatmap overlay showing developer friction and flow experienced across different areas of code.
The heatmap overlays were created with a linear color interpolation, for example, red-orange-yellow, to
make the colors resemble fire and pain. The hours of confusion spent in a file were translated to a material
color for the node. The edges between two nodes were then colored with a linear blend of the node colors to
create the look and feel of the overall heatmap.
Figure 12: Text labels and highlights on code constellations when nodes are selected
The text labels, line edges, and the glowing halos around the selected nodes, were all drawn using the
commercial Shapes library by Freya Holmer [24] to produce attractive anti-aliased renderings.
4.4 Connecting the Electronics to Unity on the AR Device
In order for the electronics to send messages to the NReal Air AR sunglasses, the messages needed to be
sent wirelessly. To facilitate this, the FlowInsight desktop app was modified to listen to the serial port
communication of the electronics, then relay the messages to the server to be sent to the Unity app via a
websocket connection. When the Unity app gets the event notifications, it updates the visualization.
4.5 Deploying to the NReal Air AR Sunglasses
The NReal Air AR Sunglasses were used to build the prototype. To deploy the Unity application to the device,
the NRSDK was added to the Unity app, and the build settings adjusted according to the documentation [25].
The Unity app was then packaged as an Android application, and deployed to a Samsung Galaxy S20 FE
mobile phone, and opened through NReal’s Nebula app in AR Space [26].
9
The Unity app was adjusted to make accommodations for the realities of the AR experience. The main
camera in Unity has a 60 degree field of view, whereas the AR camera has a 25 degree field of view making
all the objects very big. To compensate for this, the constellation objects were scaled down and compressed
to use a smaller area of the dome. To reduce the need to look up, the dome was tilted forward 45 degrees.
5 CRITIQUE
The first major strength of the design is the concept of code constellations derived from the code navigation
patterns. We were surprised by the degree of affinity of the files in the constellations. The way that code
functionality is encapsulated, naturally creates star-like graphs. A second major strength is the planetarium
dome idea that leverages the capabilities of AR to create a room-size canvas to explore the data, and an
experience not possible with a small flat screen. A third major strength of the design is the FlowInsight
hotspot overlays that create a direct mapping of developer’s experienced confusion to where in the code
these experiences are happening, with an easy to read color map projected onto the code. This leads to a
vastly improved feedback signal that helps developers identify what to fix.
One of the major weaknesses in the design is the interaction via the selection knob. It’s quite difficult to
select the node you want with the selection knob. A second weakness is having to look up towards the ceiling
to see the constellations. We addressed this problem by tilting the planetarium dome forward 45 degrees, but
the way the constellations are distributed in the room still needs improvement. A third weakness is the
inability to combine the data overlays to create an intersection map, where high confusion areas intersect with
areas of high change. These intersections would be an ideal target for improvement, and currently the only
way to see this intersection is to toggle back and forth between the overlays.
6 CONTRIBUTIONS
There are major contributions in this paper worth highlighting. First, as a major alternative to the technical
debt metaphor, FlowInsight provides a way to identify problems empirically based on measuring the friction in
developer experiences, then correlating these experiences with where they happen in the code. This is a
groundbreaking paradigm shift in strategy and tools that has the potential to dramatically reduce cost and risk
on software projects through better informed decisions. The AR Code Planetarium supports the software
team in leveraging this data during retrospective meetings, to identify top problem areas worthy of discussion,
and explore the data together in a shared space. This vision for the future of software development allows
teams to collaborate in both smart and fun ways through AR.
7 FUTURE WORK
The future work possibilities for this project are expansive, so we will focus on immediate opportunities.
Firstly, a game controller, such as an XBox wireless controller, could be adapted as a planetarium controller to
create a more familiar and capable input device. For example, selecting a node could be done via pushing
the joystick in the direction the user wants to go, and the node located closest to that vector direction could be
selected next, for a more intuitive navigation experience.
Second, the planetarium could be made rotatable as part of the navigation capabilities to reduce the user’s
need to look up and around. For example, when the joystick moves off the top, bottom, right or left edge of
the display, the planetarium dome could rotate in response. This would allow the entire planetarium dome to
be used as a display, and make navigation more physically comfortable.
Third, the data exploration capabilities could be expanded to support the team in understanding the
hotspots. For example, developers could drill-into the details of confusion hotspots by pressing a button, or
zoom out and see high-level code modules and select one to explore more of the codebase. The team
collaboration features could also be developed further to allow the “shared action” scenarios as imagined in
the design fiction.
10
REFERENCES
[1] “Home,” FlowInsight. https://www.flowinsight.com (accessed Apr. 02, 2023).
[2] YOW! September Online 2020 - Adam Tornhill - Prioritizing Technical Debt as if Time and Money Matter, (Jun. 20, 2021). Accessed:
Apr. 02, 2023. [Online Video]. Available: https://www.youtube.com/watch?v=73LGQut_JYk
[3] Stripe. 2018. The Developer Coefficient: Software engineering efficiency and its $3 trillion impact on global GDP. Technical Report.
https://stripe.com/files/reports/the-developer-coefficient.pdf
[4] “Cost of Poor Software Quality in the U.S.: A 2022 Report,” CISQ.
https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2022-report/ (accessed Feb. 12, 2023).
[5] “Software Engineering Intelligence - CodeScene.” https://codescene.com (accessed Apr. 02, 2023).
[6] “Self-managed | SonarQube | Sonar.” https://www.sonarsource.com/products/sonarqube/ (accessed Apr. 02, 2023).
[7] “Snyk | Developer security | Develop fast. Stay secure.,” Snyk. https://snyk.io/ (accessed Apr. 02, 2023).
[8] “Confidently secure apps you build and manage with Veracode,” Veracode. https://www.veracode.com/ (accessed Apr. 02, 2023).
[9] J. J. Judge, “Codacity | Smart, Lean Agile Strategic Tech Services,” Codacity, Apr. 03, 2014. https://www.codacity.com/.
[10]E. Tom, A. Aurum, and R. Vidgen, “An exploration of technical debt,” Journal of Systems and Software, vol. 86, no. 6, pp. 1498–1516,
Jun. 2013, doi: 10.1016/j.jss.2012.12.052.
[11]P. Kruchten, R. L. Nord, and I. Ozkaya, “Technical Debt: From Metaphor to Theory and Practice,” IEEE Software, vol. 29, no. 6, pp.
18–21, Nov. 2012, doi: 10.1109/MS.2012.167.
[12]Z. Li, P. Avgeriou, and P. Liang, “A systematic mapping study on technical debt and its management,” Journal of Systems and Software,
vol. 101, pp. 193–220, Mar. 2015, doi: 10.1016/j.jss.2014.12.027.
[13]P. Kruchten, R. L. Nord, I. Ozkaya, and D. Falessi, “Technical debt: towards a crisper definition report on the 4th international workshop
on managing technical debt,” SIGSOFT Softw. Eng. Notes, vol. 38, no. 5, pp. 51–54, Aug. 2013, doi: 10.1145/2507288.2507326.
[14]J.-L. Letouzey, D. Whelan, T. Coq, J.-P. Fayolle, T. Grant, and D. Sturtevant, “Introduction to the Technical Debt Concept”.
[15]N. Dragoni et al., “Microservices: yesterday, today, and tomorrow.” arXiv, Apr. 20, 2017. Accessed: Apr. 02, 2023. [Online]. Available:
http://arxiv.org/abs/1606.04036
[16]P. Jamshidi, C. Pahl, N. C. Mendonça, J. Lewis, and S. Tilkov, “Microservices: The Journey So Far and Challenges Ahead,” IEEE
Software, vol. 35, no. 3, pp. 24–35, May 2018, doi: 10.1109/MS.2018.2141039.
[17]M. Blythe, “Research through design fiction: narrative in real and imaginary abstracts,” in Proceedings of the SIGCHI Conference on
Human Factors in Computing Systems, New York, NY, USA, Apr. 2014, pp. 703–712. doi: 10.1145/2556288.2557098.
[18]J. Singer, R. Elves, and M.-A. Storey, “NavTracks: supporting navigation in software maintenance,” in 21st IEEE International
Conference on Software Maintenance (ICSM’05), Sep. 2005, pp. 325–334. doi: 10.1109/ICSM.2005.66.
[19]“Kendall Planetarium,” Oregon Museum of Science and Industry. https://live-omsi.pantheonsite.io/exhibits/planetarium/ (accessed Apr.
02, 2023).
[20]“Unity Real-Time Development Platform | 3D, 2D, VR & AR Engine,” Unity. https://unity.com (accessed Apr. 02, 2023).
[21]“Nreal Air.” https://www.nreal.ai/air/ (accessed Apr. 02, 2023).
[22]Force-Directed Drawings (1/3): Algorithmic Framework | Visualization of Graphs - Lecture 3, (Apr. 21, 2021). Accessed: Apr. 02, 2023.
[Online Video]. Available: https://www.youtube.com/watch?v=WWm-g2nLHds
[23]“Spherical coordinate system,” Wikipedia. Mar. 03, 2023. Accessed: Apr. 02, 2023. [Online]. Available:
https://en.wikipedia.org/w/index.php?title=Spherical_coordinate_system&oldid=1142703172
[24]F. Holmer, “Shapes.” https://acegikmo.com/shapes/ (accessed Apr. 02, 2023).
[25]“NRSDK Overview.” https://nreal.gitbook.io/nrsdk/nrsdk-fundamentals/core-features (accessed Apr. 02, 2023).
[26]“Nebula.” https://www.nreal.ai/nebula/ (accessed Apr. 02, 2023).
11

More Related Content

Similar to A3 - AR Code Planetarium CST.pdf

Abstract
AbstractAbstract
Abstractemaye
 
A knowledge-workbench-for-software-development
A knowledge-workbench-for-software-developmentA knowledge-workbench-for-software-development
A knowledge-workbench-for-software-developmentDimitris Panagiotou
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDave Malouf
 
Conway corollary
Conway corollaryConway corollary
Conway corollaryInam Soomro
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
Lecture 7 agile software development (2)
Lecture 7   agile software development (2)Lecture 7   agile software development (2)
Lecture 7 agile software development (2)IIUI
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
Introduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development MethodologyIntroduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development MethodologyNewton Day Uploads
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemGiovanni Asproni
 
CORE: Cognitive Organization for Requirements Elicitation
CORE: Cognitive Organization for Requirements ElicitationCORE: Cognitive Organization for Requirements Elicitation
CORE: Cognitive Organization for Requirements ElicitationScott M. Confer
 
Developing Projects & Research
Developing Projects & ResearchDeveloping Projects & Research
Developing Projects & ResearchThomas Mylonas
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringMuhammad Chaudhry
 
7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More Efficient7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More EfficientNarola Infotech
 
A laboratory for teaching object oriented thinking
A laboratory for teaching object oriented thinkingA laboratory for teaching object oriented thinking
A laboratory for teaching object oriented thinkingHome
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingNewton Day Uploads
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsMichael Heron
 
COMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxCOMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxwrite31
 

Similar to A3 - AR Code Planetarium CST.pdf (19)

Abstract
AbstractAbstract
Abstract
 
A knowledge-workbench-for-software-development
A knowledge-workbench-for-software-developmentA knowledge-workbench-for-software-development
A knowledge-workbench-for-software-development
 
Sdlc
SdlcSdlc
Sdlc
 
Sdlc
SdlcSdlc
Sdlc
 
Designing Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAsDesigning Powerful Web Applications Using AJAX and Other RIAs
Designing Powerful Web Applications Using AJAX and Other RIAs
 
Conway corollary
Conway corollaryConway corollary
Conway corollary
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Lecture 7 agile software development (2)
Lecture 7   agile software development (2)Lecture 7   agile software development (2)
Lecture 7 agile software development (2)
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
Introduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development MethodologyIntroduction to CAAD Codeless Applications Development Methodology
Introduction to CAAD Codeless Applications Development Methodology
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
CORE: Cognitive Organization for Requirements Elicitation
CORE: Cognitive Organization for Requirements ElicitationCORE: Cognitive Organization for Requirements Elicitation
CORE: Cognitive Organization for Requirements Elicitation
 
Developing Projects & Research
Developing Projects & ResearchDeveloping Projects & Research
Developing Projects & Research
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward Engineering
 
7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More Efficient7 Tools To Make React Development Faster and More Efficient
7 Tools To Make React Development Faster and More Efficient
 
A laboratory for teaching object oriented thinking
A laboratory for teaching object oriented thinkingA laboratory for teaching object oriented thinking
A laboratory for teaching object oriented thinking
 
Secrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without codingSecrets of going codeless - How to build enterprise apps without coding
Secrets of going codeless - How to build enterprise apps without coding
 
PATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design PatternsPATTERNS01 - An Introduction to Design Patterns
PATTERNS01 - An Introduction to Design Patterns
 
COMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxCOMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docx
 

More from James Anderson

GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...James Anderson
 
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...James Anderson
 
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for Kubernetes
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for KubernetesGDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for Kubernetes
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for KubernetesJames Anderson
 
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...James Anderson
 
GDG SLK - Why should devs care about container security.pdf
GDG SLK - Why should devs care about container security.pdfGDG SLK - Why should devs care about container security.pdf
GDG SLK - Why should devs care about container security.pdfJames Anderson
 
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdf
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdfGraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdf
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdfJames Anderson
 
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ... GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...James Anderson
 
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...James Anderson
 
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language Models
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language ModelsGDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language Models
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language ModelsJames Anderson
 
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...James Anderson
 
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...James Anderson
 
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...James Anderson
 
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...James Anderson
 
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...James Anderson
 
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for Everyone
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for EveryoneGDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for Everyone
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for EveryoneJames Anderson
 
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...James Anderson
 
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...James Anderson
 
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...James Anderson
 
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud Boundaries
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud BoundariesGDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud Boundaries
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud BoundariesJames Anderson
 
GDG Cloud Southlake #8 Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...
GDG Cloud Southlake #8  Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...GDG Cloud Southlake #8  Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...
GDG Cloud Southlake #8 Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...James Anderson
 

More from James Anderson (20)

GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
 
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...
GDG Cloud Southlake 30 Brian Demers Breeding 10x Developers with Developer Pr...
 
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for Kubernetes
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for KubernetesGDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for Kubernetes
GDG Cloud Southlake 29 Jimmy Mesta OWASP Top 10 for Kubernetes
 
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
 
GDG SLK - Why should devs care about container security.pdf
GDG SLK - Why should devs care about container security.pdfGDG SLK - Why should devs care about container security.pdf
GDG SLK - Why should devs care about container security.pdf
 
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdf
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdfGraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdf
GraphQL Insights Deck ( Sabre_GDG - Sept 2023).pdf
 
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ... GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
GDG Cloud Southlake #25: Jacek Ostrowski & David Browne: Sabre's Journey to ...
 
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...
GDG Cloud Southlake #24: Arty Starr: Enabling Powerful Software Insights by V...
 
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language Models
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language ModelsGDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language Models
GDG Cloud Southlake #23:Ralph Lloren: Social Engineering Large Language Models
 
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...
GDG Cloud Southlake no. 22 Gutta and Nayer GCP Terraform Modules Scaling Your...
 
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...
GDG Cloud Southlake #21:Alexander Snegovoy: Master Continuous Resiliency in C...
 
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...
GDG Cloud Southlake #20:Stefano Doni: Kubernetes performance tuning dilemma: ...
 
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...
GDG Cloud Southlake #19: Sullivan and Schuh: Design Thinking Primer: How to B...
 
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...
GDG Cloud Southlake #18 Yujun Liang Crawl, Walk, Run My Journey into Google C...
 
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for Everyone
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for EveryoneGDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for Everyone
GDG Cloud Southlake #17: Meg Dickey-Kurdziolek: Explainable AI is for Everyone
 
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
 
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...
GDG Cloud Southlake #15: Mihir Mistry: Cybersecurity and Data Privacy in an A...
 
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...
GDG Cloud Southlake #14: Jonathan Schneider: OpenRewrite: Making your source ...
 
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud Boundaries
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud BoundariesGDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud Boundaries
GDG Cloud Southlake #9 Secure Cloud Networking - Beyond Cloud Boundaries
 
GDG Cloud Southlake #8 Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...
GDG Cloud Southlake #8  Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...GDG Cloud Southlake #8  Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...
GDG Cloud Southlake #8 Steve Cravens: Infrastructure as-Code (IaC) in 2022: ...
 

Recently uploaded

Deliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceDeliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceOpsTree solutions
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Why Agile? - A handbook behind Agile Evolution
Why Agile? - A handbook behind Agile EvolutionWhy Agile? - A handbook behind Agile Evolution
Why Agile? - A handbook behind Agile EvolutionDEEPRAJ PATHAK
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Recently uploaded (20)

Deliver Latency Free Customer Experience
Deliver Latency Free Customer ExperienceDeliver Latency Free Customer Experience
Deliver Latency Free Customer Experience
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Why Agile? - A handbook behind Agile Evolution
Why Agile? - A handbook behind Agile EvolutionWhy Agile? - A handbook behind Agile Evolution
Why Agile? - A handbook behind Agile Evolution
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

A3 - AR Code Planetarium CST.pdf

  • 1. Enabling Powerful Software Insights by Visualizing Friction and Flow A Creativity Support Tool (CST) designed to enhance team retrospectives for software developers Arty Starr PhD student, University of Victoria, artystarr@uvic.ca In an Agile software development process, a software team will typically meet on a regular basis in a “retrospective meeting” to reflect on the challenges faced by the team and opportunities for improvement. On the surface, this challenge might seem straight-forward, but modern software projects are complex endeavors, and developers are human – identifying what’s most important in a complex sociotechnical system is a task humans struggle to do well. What if developers had tools that recorded and helped them explore their historical experiences with the code, and they could identify hotspots of team friction, worthy of discussion, based on empirical data? This paper will explore the possibility and impact of such tools through a design fiction and working prototype of an Augmented Reality (AR) Code Planetarium powered by FlowInsight [1]. 1 INTRODUCTION Imagine you are a software developer working from home, on a software team with eight people. You have a retrospective meeting with your team today, to talk about, what are the biggest pain points experienced by the team, and what are the best opportunities for improvement? To help ground the discussion in empirical data, and provide insight into what those opportunities might be, you and your team members put on a pair of Augmented Reality (AR) sunglasses and enter the AR Code Planetarium. Surrounding you, in a half-dome shaped visualization that fills the room, is a virtual sky filled with star-like constellations, each representing a constellation of related files in code. You see familiar names of a few key code classes, scattered across the constellations, orienting you to the layout of code in the sky. Figure 1: AR Code Planetarium showing code constellations like stars in the sky. A tangible handheld controller allows you to explore the relationships in the code. Two data overlays with heat maps indicate where in the code the team has experienced the most confusion, and where the team has spent the most time in flow making changes. The intersection of these two characteristics, high confusion areas with many hours of change, are a good strategic location to consider potential improvements [2]. As a creativity support tool (CST), the AR Code Planetarium helps developers identify where the highest leverage opportunities for improvement might be, and apply their creativity to solving the most high-impact problems. User: Pro-C Software Developer Creative Stage: Find the Problem The AR Code Planetarium leverages the affordances of AR to create a room-size canvas for displaying visual-spatial patterns of how developers interact with the code. The large canvas allows users to scan, explore, and identify significant patterns, and provides an empirical foundation for productive team discussion and actionable insight. 1
  • 2. 2 RELATED WORK In a recent study by Stripe, developers were spending 42% of their time in an average week troubleshooting bad code [3]. If we consider the economic expenditure of software projects, the impact of these problems is huge. Companies in the US, for example, waste around $634 billion dollars per year on software projects when developers get confused and stuck [4]. Several code analysis tools exist that support developers in managing software complexity by identifying problems in the code. CodeScene, Sonarqube, Snyx, Veracode, and Codacy to name a few [5,6,7,8,9]. Code quality does matter, but despite all these tools, the problems largely remain –so let’s explore why that is. 2.1 The Metaphor of Technical Debt Several research studies [10,11,12,13] have attempted to clarify, define, and validate the concept of “technical debt” as a way to understand these costs and its impact on software development. Ward Cunningham shared the concept with the software community in 1992 at an OOPSLA conference: “Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. The danger occurs when the debt is not repaid.” [14] Over the last 30 years, since this metaphor was introduced, the technical debt concept has become pervasive as an explanation for software problems, even when the cause of the problems has nothing to do with short-term tradeoff decisions to speed up delivery, as Cunningham described. Modern software projects have also become increasingly complex with the popularity of microservice architectures, cloud-native platforms, and the move away from single-executable monolith applications [15,16]. Developers still spend countless hours confused and stuck troubleshooting, but the causes of these difficulties have shifted dramatically with these architectural shifts, from being predominantly inside the code written by the developers, to the complex integration space of different libraries, frameworks, and a network of microservices. A more holistic view of the causes of software problems is necessary to account for the complex system of potential causes that exist outside of the technical debt metaphor. 2.2 “Programming Flow” and measuring the “Friction” of Software Development What we really want to understand is what’s causing the slowdowns that are affecting developer experience in the here and now. How do we measure these slowdowns and build tools that help us identify what to fix? First, let’s introduce some new terms to help us reframe the problem. “Programming Flow” is the developer’s experience as they interact with the code – the thinking, understanding, modifying, and testing of the code in order to make the behavior of the system match an intention. “Friction” is everything that gets in the way of this flow. These are the slowdowns that we want to understand and systematically reduce. One specific type of “Friction” is “Confusion”. “Confusion” occurs when a developer first writes code, then observes unexpected behavior when running the code. When developers are confused, they “Troubleshoot” to resolve the “Confusion”. FlowInsight is a novel approach to measuring “Programming Flow” and the “Confusion” experienced by developers while interacting with the code. For example, FlowInsight supports developers in the moment with troubleshooting support tools, then measures the duration of troubleshooting sessions as a “Confusion” metric, projected onto the code areas where developers happen to be in their IDEs while they are troubleshooting. The AR Code Planetarium leverages the rich datasets from FlowInsight to create an interactive visualization that allows developers to explore the patterns of their coding experience as constellations. 3 DESIGN FICTION To illustrate how developers might use an AR Code Planetarium to identify actionable insights, a fictional story based on the Design Fiction research technique [17], will be used to demonstrate the design concept. 2
  • 3. 3.1 Jessica Recognizes a Familiar Hotspot Jessica has been a developer on the backend data team for 3 years now, and is familiar with a good portion of the codebase. Over the last couple weeks, she’s been working on a challenging task to integrate a new data feed into the data transformation pipeline, which has involved troubleshooting some frustrating bugs. Her team is holding a retrospective meeting today. Since everyone on the team is working remotely, the AR Code Planetarium serves as a shared space to visualize and discuss the team’s recent experiences. Jill (Team Lead): “Alright, let’s get started. First, let’s take a look at what the most recent two weeks look like, and where our biggest pain points were.” Jill enables the Confusion heat map, and changes the time scale to focus on the most recent two weeks. Jessica notices her AR visualization update, and looks around at the different hot spots. Jessica notices a hotspot near a code area where she’s been recently working, and examines the names of the surrounding code files to confirm her assumption. She then points to the constellation with her AR controller, while pressing a button on the controller indicating a shared action, which her team members can now all see. Jessica: “This one, over here, with the CompanyDecorator class. I had a really hard time figuring out what was going on here. Do you see this? There’s 15 different classes connected in this constellation. I was trying to add a new data feed this week, and the values kept getting overwritten, and I couldn’t figure out why. I bet my troubleshooting session is in here.. let me look.” Jessica selects the hotspot node on the CompanyDecorator class with her AR controller, and then presses the details button to drill into the details. The top troubleshooting sessions that intersect with the hotspot are displayed in a scrollable list. She selects her recent troubleshooting session, and presses the shared action button to share the troubleshooting session with her team. The troubleshooting session is displayed in a scrollable window in everyone’s AR display with a line connecting the window to the related hotspot. Jessica: “This one. This was a few days ago. See, I couldn’t figure out why the data feed changes I was making weren’t showing up. I was trying to add log statements everywhere to figure out what was going on, it was such a pain. There’s no way to really see what’s happening.” Eric: “Yeah, that’s happened to me too. Every time we have to work in the data pipeline, it’s like this.” Jill (Team Lead): “I’m curious if this is a common pattern.” Jill changes the time scale to show the Confusion hotspots over the last year. Jessica notices her AR visualization update, and sure enough, the same CompanyDecorator hotspot is still there in bright red. Jessica: “I’ve got an idea. What we really need is a way to observe what’s going on in this part of the data pipeline. Something that lets us run a single company through the pipeline, and then watch the data transformations, step by step, as the different overlays are added. If we could capture this intermediate data in a trace file, so that you could see what’s going on in the different phases of the decorators, that would make things so much easier. We could probably build some tooling to do this sort of thing.” Jill (Team Lead): “Yeah, that sounds like a great idea. I’ll create a ticket for that, and add it to our backlog.” The developers continue to explore the hotspot patterns in the AR Code Planetarium, discuss their experiences with the code in those areas, and create a list of actionable ideas for improvements. 3
  • 4. 4 PROTOTYPE DESIGN AND IMPLEMENTATION In this section, we’ll discuss the design and implementation of an initial working prototype of the AR Code Planetarium built on top of FlowInsight data and capabilities. 4.1 Inspiration and Design Concept The initial idea of using a force-directed visualization was inspired by the FlowInsight data itself. We had two years of data from developers navigating a codebase already sitting in the database. Creating a force-directed physics simulation was a natural choice for revealing the patterns in the data. The idea of using navigation patterns to reveal the implicit architecture of the codebase is similar to Janice Singer’s research paper on NavTracks [18], which uses IDE navigation pathways to derive related filesets. Figure 2: Initial sketch of the planetarium concept and early experiments with using force-directed layout in Unity. As the force-directed graph started to self-organize into constellation-like star patterns, we started referring to them as “code constellations” and using the metaphor of a “sky”. The inspiration for the planetarium came from a Led Zeppelin laser light show experience at the OMSI planetarium in Portland, Oregon [19]. The half-dome virtual display creates a large canvas to explore the data, and takes advantage of the affordances of AR technology to create an experience that can’t exist on a flat screen. Figure 3: Planetarium controller designed to hold with one hand The goal of the tangible handheld controller was to minimize the amount of movement required in order to interact with the virtual display. Since holding up your arm to point at objects can be tiring, the selection knob offers a much more relaxed movement. The handle is designed to allow the user to hold the controller with one hand. The capacitive buttons minimize the amount of force required to press the buttons which makes pressing the buttons much easier when holding the controller with one hand. 4
  • 5. 4.2 Prototyping the Planetarium Controller This section describes how the planetarium controller and electronic circuits were constructed. Components Description Details Controller Box: ● box (6 pieces) 20x14x5 cm ○ top piece with engravings and handle ○ right piece with room on top for handle ○ bottom piece ○ back and front pieces ○ left piece with circular cable holes ● handle (2 pieces) 14x7 cm ○ 2 pieces to reinforce handle ● button parts (14 pieces, we only used 2) 1.5 cm SVG Laser Cut Templates can be found here Electronics and Other Components: ● 1 Elegoo Board (including power cable to the PC) ● 1 Solderless Breadboard ● 2 1M Ohm Resistors for the capacitive buttons ● 1 Potentiometer Knob for the selection knob ● 1 Plastic knob cover for the selection knob ● Electrical Conductive Paint for the capacitive buttons ● Red, purple, and black acrylic paint for the buttons ● Jumper wires to connect the components ● Legos to prop up the buttons and selection knob ● A few strips of tape, ideally electrical tape ● Gorilla glue to glue the handle pieces together 5
  • 6. To assemble the planetarium controller, follow the below instructions and circuit wiring diagram. Figure 4: Circuit diagram for planetarium controller showing potentiometer and capacitive buttons 1. Assemble (not glue!) the top, right, bottom, back and front pieces of the controller box by pushing together the finger joints. Leave off the left side of the controller to give access to the inside of the box while assembling the electronics. 2. Glue the two handle pieces together to create a handle reinforcement piece, then glue the handle reinforcement underneath the handle part of the top piece. The handle pieces should slide into place just above the right box piece that is cut short to make room for the handle. Figure 5: Handle pieces glued together and slid in place and the potentiometer knob propped up with legos. 3. Wire the potentiometer according to the circuit diagram with power, ground, and a signal wire in the center, then prop up inside the controller box with a tower of legos, and add the plastic knob cover. 6
  • 7. 4. Paint two of the wooden button pieces with electric conductive paint on both the front and back sides and leave to dry. This will create the capacitive touch capability. Figure 6: Two wooden button pieces painted with electric conductive paint and left out to dry 5. Thread one side of a 1m Ohm resistor through the button holes so that one side of the button shows the resistor, and the other side has just the wire poking through. Figure 7: Conductive button threaded with 1M Ohm resistor through the buttonhole 6. Connect jumper wires to each side of the 1M Ohm resistor, and secure it with tape. Plug the other ends of the jumper wires into the breadboard according to the circuit wiring diagram. Figure 8: Conductive button threaded with 1M Ohm resistor then connected with jumper wires. 7
  • 8. 7. Place the conductive painted buttons in each of the friction/flow button slots, push through the slots and secure temporarily with a piece of tape. Slide in legos underneath to prop up the capacitive buttons to hold them in place in the slots, then remove the tape. Figure 9: Capacitive buttons pushed through the holes and held up temporarily with tape 8. Wire the breadboard components to the Elegoo controller board following the circuit wiring diagram. Load the circuit controller code onto the controller board using the Arduino IDE. You can find the code and detailed instructions for installing the software at: https://github.com/accolasia/arduino/tree/main/ardome_control 9. Once the buttons are in place and the circuit is tested and working, optionally paint the friction button red, and the flow button purple with acrylic paint, and use black paint to paint a border around the buttons. 4.3 Building the AR Visualization in Unity The AR Visualization was built with Unity [20] to leverage the physics and 3D capabilities of the game engine, and supports integration with the NReal Air AR Sunglasses [21] used for prototyping the design. Figure 10: NReal Air AR Sunglasses used to prototype the design. First, the network integration and API calls were created to retrieve the developer navigation traversal data, and the file-level friction/flow data from FlowInsight. Once the datasets were loaded into Unity, each code file was translated into a sphere node, and each traversal was translated into an edge, drawn as a line between the spheres with a thickness based on the traversal count. Traversals with a navigation count of less than 4 were pruned from the dataset to reduce the noise in the graph. The Unity physics engine was used to apply forces to the nodes using Eades force-directed graph algorithm [22]. Connected nodes were pulled together using a spring force. Disconnected nodes were pushed apart with a repulsion force. All nodes were pulled equally toward the center. To create a mostly flat graph with a small amount of depth, a plane was placed above and below the nodes to limit the motion. 8
  • 9. Once the forces resolved in equilibrium, the nodes were mapped to the planetarium half-dome using a spherical coordinate projection [23]. The x, z coordinates of the graph were wrapped around the surface of the dome. The y-coordinate was mapped to an increased depth in the radius to create a 2.5D quality. Figure 11: Heatmap overlay showing developer friction and flow experienced across different areas of code. The heatmap overlays were created with a linear color interpolation, for example, red-orange-yellow, to make the colors resemble fire and pain. The hours of confusion spent in a file were translated to a material color for the node. The edges between two nodes were then colored with a linear blend of the node colors to create the look and feel of the overall heatmap. Figure 12: Text labels and highlights on code constellations when nodes are selected The text labels, line edges, and the glowing halos around the selected nodes, were all drawn using the commercial Shapes library by Freya Holmer [24] to produce attractive anti-aliased renderings. 4.4 Connecting the Electronics to Unity on the AR Device In order for the electronics to send messages to the NReal Air AR sunglasses, the messages needed to be sent wirelessly. To facilitate this, the FlowInsight desktop app was modified to listen to the serial port communication of the electronics, then relay the messages to the server to be sent to the Unity app via a websocket connection. When the Unity app gets the event notifications, it updates the visualization. 4.5 Deploying to the NReal Air AR Sunglasses The NReal Air AR Sunglasses were used to build the prototype. To deploy the Unity application to the device, the NRSDK was added to the Unity app, and the build settings adjusted according to the documentation [25]. The Unity app was then packaged as an Android application, and deployed to a Samsung Galaxy S20 FE mobile phone, and opened through NReal’s Nebula app in AR Space [26]. 9
  • 10. The Unity app was adjusted to make accommodations for the realities of the AR experience. The main camera in Unity has a 60 degree field of view, whereas the AR camera has a 25 degree field of view making all the objects very big. To compensate for this, the constellation objects were scaled down and compressed to use a smaller area of the dome. To reduce the need to look up, the dome was tilted forward 45 degrees. 5 CRITIQUE The first major strength of the design is the concept of code constellations derived from the code navigation patterns. We were surprised by the degree of affinity of the files in the constellations. The way that code functionality is encapsulated, naturally creates star-like graphs. A second major strength is the planetarium dome idea that leverages the capabilities of AR to create a room-size canvas to explore the data, and an experience not possible with a small flat screen. A third major strength of the design is the FlowInsight hotspot overlays that create a direct mapping of developer’s experienced confusion to where in the code these experiences are happening, with an easy to read color map projected onto the code. This leads to a vastly improved feedback signal that helps developers identify what to fix. One of the major weaknesses in the design is the interaction via the selection knob. It’s quite difficult to select the node you want with the selection knob. A second weakness is having to look up towards the ceiling to see the constellations. We addressed this problem by tilting the planetarium dome forward 45 degrees, but the way the constellations are distributed in the room still needs improvement. A third weakness is the inability to combine the data overlays to create an intersection map, where high confusion areas intersect with areas of high change. These intersections would be an ideal target for improvement, and currently the only way to see this intersection is to toggle back and forth between the overlays. 6 CONTRIBUTIONS There are major contributions in this paper worth highlighting. First, as a major alternative to the technical debt metaphor, FlowInsight provides a way to identify problems empirically based on measuring the friction in developer experiences, then correlating these experiences with where they happen in the code. This is a groundbreaking paradigm shift in strategy and tools that has the potential to dramatically reduce cost and risk on software projects through better informed decisions. The AR Code Planetarium supports the software team in leveraging this data during retrospective meetings, to identify top problem areas worthy of discussion, and explore the data together in a shared space. This vision for the future of software development allows teams to collaborate in both smart and fun ways through AR. 7 FUTURE WORK The future work possibilities for this project are expansive, so we will focus on immediate opportunities. Firstly, a game controller, such as an XBox wireless controller, could be adapted as a planetarium controller to create a more familiar and capable input device. For example, selecting a node could be done via pushing the joystick in the direction the user wants to go, and the node located closest to that vector direction could be selected next, for a more intuitive navigation experience. Second, the planetarium could be made rotatable as part of the navigation capabilities to reduce the user’s need to look up and around. For example, when the joystick moves off the top, bottom, right or left edge of the display, the planetarium dome could rotate in response. This would allow the entire planetarium dome to be used as a display, and make navigation more physically comfortable. Third, the data exploration capabilities could be expanded to support the team in understanding the hotspots. For example, developers could drill-into the details of confusion hotspots by pressing a button, or zoom out and see high-level code modules and select one to explore more of the codebase. The team collaboration features could also be developed further to allow the “shared action” scenarios as imagined in the design fiction. 10
  • 11. REFERENCES [1] “Home,” FlowInsight. https://www.flowinsight.com (accessed Apr. 02, 2023). [2] YOW! September Online 2020 - Adam Tornhill - Prioritizing Technical Debt as if Time and Money Matter, (Jun. 20, 2021). Accessed: Apr. 02, 2023. [Online Video]. Available: https://www.youtube.com/watch?v=73LGQut_JYk [3] Stripe. 2018. The Developer Coefficient: Software engineering efficiency and its $3 trillion impact on global GDP. Technical Report. https://stripe.com/files/reports/the-developer-coefficient.pdf [4] “Cost of Poor Software Quality in the U.S.: A 2022 Report,” CISQ. https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2022-report/ (accessed Feb. 12, 2023). [5] “Software Engineering Intelligence - CodeScene.” https://codescene.com (accessed Apr. 02, 2023). [6] “Self-managed | SonarQube | Sonar.” https://www.sonarsource.com/products/sonarqube/ (accessed Apr. 02, 2023). [7] “Snyk | Developer security | Develop fast. Stay secure.,” Snyk. https://snyk.io/ (accessed Apr. 02, 2023). [8] “Confidently secure apps you build and manage with Veracode,” Veracode. https://www.veracode.com/ (accessed Apr. 02, 2023). [9] J. J. Judge, “Codacity | Smart, Lean Agile Strategic Tech Services,” Codacity, Apr. 03, 2014. https://www.codacity.com/. [10]E. Tom, A. Aurum, and R. Vidgen, “An exploration of technical debt,” Journal of Systems and Software, vol. 86, no. 6, pp. 1498–1516, Jun. 2013, doi: 10.1016/j.jss.2012.12.052. [11]P. Kruchten, R. L. Nord, and I. Ozkaya, “Technical Debt: From Metaphor to Theory and Practice,” IEEE Software, vol. 29, no. 6, pp. 18–21, Nov. 2012, doi: 10.1109/MS.2012.167. [12]Z. Li, P. Avgeriou, and P. Liang, “A systematic mapping study on technical debt and its management,” Journal of Systems and Software, vol. 101, pp. 193–220, Mar. 2015, doi: 10.1016/j.jss.2014.12.027. [13]P. Kruchten, R. L. Nord, I. Ozkaya, and D. Falessi, “Technical debt: towards a crisper definition report on the 4th international workshop on managing technical debt,” SIGSOFT Softw. Eng. Notes, vol. 38, no. 5, pp. 51–54, Aug. 2013, doi: 10.1145/2507288.2507326. [14]J.-L. Letouzey, D. Whelan, T. Coq, J.-P. Fayolle, T. Grant, and D. Sturtevant, “Introduction to the Technical Debt Concept”. [15]N. Dragoni et al., “Microservices: yesterday, today, and tomorrow.” arXiv, Apr. 20, 2017. Accessed: Apr. 02, 2023. [Online]. Available: http://arxiv.org/abs/1606.04036 [16]P. Jamshidi, C. Pahl, N. C. Mendonça, J. Lewis, and S. Tilkov, “Microservices: The Journey So Far and Challenges Ahead,” IEEE Software, vol. 35, no. 3, pp. 24–35, May 2018, doi: 10.1109/MS.2018.2141039. [17]M. Blythe, “Research through design fiction: narrative in real and imaginary abstracts,” in Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, New York, NY, USA, Apr. 2014, pp. 703–712. doi: 10.1145/2556288.2557098. [18]J. Singer, R. Elves, and M.-A. Storey, “NavTracks: supporting navigation in software maintenance,” in 21st IEEE International Conference on Software Maintenance (ICSM’05), Sep. 2005, pp. 325–334. doi: 10.1109/ICSM.2005.66. [19]“Kendall Planetarium,” Oregon Museum of Science and Industry. https://live-omsi.pantheonsite.io/exhibits/planetarium/ (accessed Apr. 02, 2023). [20]“Unity Real-Time Development Platform | 3D, 2D, VR & AR Engine,” Unity. https://unity.com (accessed Apr. 02, 2023). [21]“Nreal Air.” https://www.nreal.ai/air/ (accessed Apr. 02, 2023). [22]Force-Directed Drawings (1/3): Algorithmic Framework | Visualization of Graphs - Lecture 3, (Apr. 21, 2021). Accessed: Apr. 02, 2023. [Online Video]. Available: https://www.youtube.com/watch?v=WWm-g2nLHds [23]“Spherical coordinate system,” Wikipedia. Mar. 03, 2023. Accessed: Apr. 02, 2023. [Online]. Available: https://en.wikipedia.org/w/index.php?title=Spherical_coordinate_system&oldid=1142703172 [24]F. Holmer, “Shapes.” https://acegikmo.com/shapes/ (accessed Apr. 02, 2023). [25]“NRSDK Overview.” https://nreal.gitbook.io/nrsdk/nrsdk-fundamentals/core-features (accessed Apr. 02, 2023). [26]“Nebula.” https://www.nreal.ai/nebula/ (accessed Apr. 02, 2023). 11