<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://dasilvacontin.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://dasilvacontin.github.io/" rel="alternate" type="text/html" /><updated>2026-06-06T12:43:07+00:00</updated><id>https://dasilvacontin.github.io/feed.xml</id><title type="html">David da Silva Contín — Staff Product Designer &amp;amp; Design Engineer</title><subtitle>Staff Product Designer and design engineer. Former software engineer and open source maintainer building AI-powered B2B products—prototyping in code and shipping LLM features since 2019.
</subtitle><entry><title type="html">How to Set Up Mixpanel in Unity Without Losing Your Soul</title><link href="https://dasilvacontin.github.io/blog/2024/06/10/mixpanel-unity-setup" rel="alternate" type="text/html" title="How to Set Up Mixpanel in Unity Without Losing Your Soul" /><published>2024-06-10T14:30:00+00:00</published><updated>2024-06-10T14:30:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/06/10/mixpanel-unity-setup</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/06/10/mixpanel-unity-setup"><![CDATA[<p>Setting up Mixpanel in Unity should be straightforward, but there are a few critical steps that most tutorials skip—steps that can leave you wondering why your analytics aren’t working when they actually are. Here’s how to do it right, without losing your sanity.</p>

<h2 id="step-1-install-mixpanel">Step 1: Install Mixpanel</h2>

<p>The first step is installing the Mixpanel SDK in your Unity project. You’ll need to add the Mixpanel package to your project through the Package Manager or by importing the SDK files directly.</p>

<p><em>[Note: I’ll refine this section later to include the detailed installation steps]</em></p>

<h2 id="step-2-initialize-mixpanel">Step 2: Initialize Mixpanel</h2>

<p>This is where things get interesting. You need to configure your project settings with the correct tokens:</p>

<ol>
  <li><strong>Add your project token</strong> in the project settings</li>
  <li><strong>Use the same token for both Runtime Token and Debug Token</strong> - this is crucial</li>
  <li><strong>Don’t forget to click “Show Debug”</strong> - this is the step that most people miss</li>
</ol>

<h3 id="the-show-debug-trap">The “Show Debug” Trap</h3>

<p>If you don’t click “Show Debug,” you won’t see the debug statements in your console. This can be incredibly misleading because Mixpanel is actually working—it’s just not showing you the debug output. You might spend hours troubleshooting what you think is a broken integration when it’s actually functioning perfectly.</p>

<h2 id="step-3-sending-data">Step 3: Sending Data</h2>

<p>Once initialized, sending data is straightforward:</p>

<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">using</span> <span class="nn">Mixpanel</span><span class="p">;</span>

<span class="c1">// Basic event tracking</span>
<span class="n">Mixpanel</span><span class="p">.</span><span class="nf">Track</span><span class="p">(</span><span class="s">"Player Level Up"</span><span class="p">);</span>

<span class="c1">// Event with properties</span>
<span class="n">Mixpanel</span><span class="p">.</span><span class="nf">Track</span><span class="p">(</span><span class="s">"Purchase Made"</span><span class="p">,</span> <span class="k">new</span> <span class="n">Dictionary</span><span class="p">&lt;</span><span class="kt">string</span><span class="p">,</span> <span class="kt">object</span><span class="p">&gt;</span>
<span class="p">{</span>
    <span class="p">{</span><span class="s">"item_name"</span><span class="p">,</span> <span class="s">"Golden Sword"</span><span class="p">},</span>
    <span class="p">{</span><span class="s">"price"</span><span class="p">,</span> <span class="m">9.99</span><span class="p">},</span>
    <span class="p">{</span><span class="s">"currency"</span><span class="p">,</span> <span class="s">"USD"</span><span class="p">}</span>
<span class="p">});</span>
</code></pre></div></div>

<p>You can pass a struct or dictionary with keys and values to add context to your events.</p>

<h2 id="step-4-attach-your-script-to-a-gameobject">Step 4: Attach Your Script to a GameObject</h2>

<p>This is a classic Unity beginner mistake that can leave you scratching your head: <strong>don’t forget to attach your script to a GameObject in the scene</strong>.</p>

<p>If your script isn’t attached to a GameObject, it simply won’t run. You might write perfect Mixpanel integration code, but if the script isn’t in the scene, none of your <code class="language-plaintext highlighter-rouge">Mixpanel.Track()</code> calls will execute.</p>

<h3 id="how-to-attach-your-script">How to Attach Your Script</h3>

<ol>
  <li>Create a new GameObject in your scene (right-click in Hierarchy → Create Empty)</li>
  <li>Select the GameObject</li>
  <li>In the Inspector, click “Add Component”</li>
  <li>Search for your script name and add it</li>
  <li>Make sure the GameObject is active in the scene</li>
</ol>

<h3 id="common-scenarios">Common Scenarios</h3>

<ul>
  <li><strong>Testing in Play Mode</strong>: Your script needs to be on an active GameObject</li>
  <li><strong>Scene Loading</strong>: If you’re loading scenes, ensure your Mixpanel script is on a persistent GameObject or in the new scene</li>
  <li><strong>Prefabs</strong>: If using prefabs, make sure the script is attached to the prefab instance</li>
</ul>

<p>This might seem obvious to experienced Unity developers, but it’s a surprisingly common oversight that can waste hours of debugging time.</p>

<h2 id="the-60-second-flush-rule">The 60-Second Flush Rule</h2>

<p>Here’s the most important thing to understand: <strong>events are only flushed to Mixpanel’s servers every 60 seconds by default</strong>.</p>

<p>This means:</p>
<ul>
  <li>If you’re testing in Unity and quickly stopping the game, your events won’t appear in Mixpanel immediately</li>
  <li>You need to either wait 60 seconds or manually trigger the flush</li>
</ul>

<h3 id="manual-flushing">Manual Flushing</h3>

<p>To instantly send events to Mixpanel, call:</p>

<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">Mixpanel</span><span class="p">.</span><span class="nf">Flush</span><span class="p">();</span>
</code></pre></div></div>

<p>This is especially important during development and testing when you want to see your events appear immediately.</p>

<h2 id="key-takeaways">Key Takeaways</h2>

<p>The three critical steps that most tutorials miss:</p>

<ol>
  <li><strong>Enable “Show Debug”</strong> - Otherwise you won’t see debug statements and might think it’s broken</li>
  <li><strong>Use the same token for both Runtime and Debug tokens</strong> - This ensures consistency</li>
  <li><strong>Remember the 60-second flush rule</strong> - Either call <code class="language-plaintext highlighter-rouge">Mixpanel.Flush()</code> manually or wait for the automatic flush</li>
</ol>

<h2 id="common-pitfalls">Common Pitfalls</h2>

<ul>
  <li><strong>Thinking it’s broken when it’s working</strong>: Check if “Show Debug” is enabled</li>
  <li><strong>Impatient testing</strong>: Remember that events take up to 60 seconds to appear</li>
  <li><strong>Different tokens</strong>: Using different tokens for runtime and debug can cause confusion</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Mixpanel in Unity is powerful but has these quirks that can trip you up. Once you understand the debug visibility and flush timing, it becomes much more reliable. The key is patience during testing and making sure you have all the debug options enabled.</p>

<p>Happy tracking!</p>]]></content><author><name></name></author><category term="tutorial" /><summary type="html"><![CDATA[A practical guide to integrating Mixpanel analytics in Unity, including the critical steps that most tutorials miss and how to avoid common pitfalls.]]></summary></entry><entry><title type="html">Joining Green Project: A New Chapter in Climate Tech</title><link href="https://dasilvacontin.github.io/blog/2024/05/15/joining-green-project" rel="alternate" type="text/html" title="Joining Green Project: A New Chapter in Climate Tech" /><published>2024-05-15T10:00:00+00:00</published><updated>2024-05-15T10:00:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/05/15/joining-green-project</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/05/15/joining-green-project"><![CDATA[<p>I’m thrilled to share some exciting news: I’m joining <strong>Green Project</strong> as they acquire Emitwise’s carbon management platform. This represents a significant milestone in the climate tech space and a new chapter in my journey working at the intersection of design, technology, and environmental impact.</p>

<h2 id="the-opportunity">The Opportunity</h2>

<p>Green Project’s acquisition of Emitwise’s product brings together two powerful forces in the carbon management space. Emitwise has been a leader in automated carbon accounting and reporting, while Green Project has been building innovative solutions for businesses to accelerate their journey toward carbon net zero.</p>

<h2 id="why-this-matters">Why This Matters</h2>

<p>The combination of these technologies creates a comprehensive platform that can help businesses:</p>
<ul>
  <li>Automatically track and measure their carbon footprint</li>
  <li>Identify reduction opportunities with AI-powered insights</li>
  <li>Accelerate their path to carbon neutrality</li>
  <li>Meet regulatory requirements and stakeholder expectations</li>
</ul>

<h2 id="my-role">My Role</h2>

<p>As a Product Designer with expertise in AI and climate tech, I’ll be focusing on creating intuitive, powerful interfaces that make complex carbon data accessible and actionable. The goal is to transform how businesses understand and act on their environmental impact.</p>

<h2 id="looking-forward">Looking Forward</h2>

<p>This is an incredibly exciting time to be working in climate technology. The urgency of climate action combined with rapid advances in AI and design creates unprecedented opportunities to build tools that can make a real difference.</p>

<p>I’m looking forward to sharing insights and learnings from this journey as we work to accelerate the world’s transition to a sustainable future.</p>

<hr />

<p><em>For more information about Green Project and their mission, visit <a href="https://www.greenprojecttech.com/">greenprojecttech.com</a></em></p>]]></content><author><name></name></author><category term="announcement" /><summary type="html"><![CDATA[I'm excited to announce that I'm joining Green Project as they acquire Emitwise's carbon management platform, marking a significant step forward in climate technology.]]></summary></entry><entry><title type="html">Sustainable Design Practices for Digital Products</title><link href="https://dasilvacontin.github.io/blog/2024/04/05/sustainable-design-practices" rel="alternate" type="text/html" title="Sustainable Design Practices for Digital Products" /><published>2024-04-05T16:20:00+00:00</published><updated>2024-04-05T16:20:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/04/05/sustainable-design-practices</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/04/05/sustainable-design-practices"><![CDATA[<p>Digital products have a significant environmental impact, from the energy consumed by data centers to the carbon footprint of user devices. As designers, we have a responsibility to create products that are both effective and sustainable.</p>

<h2 id="the-environmental-impact-of-digital-design">The Environmental Impact of Digital Design</h2>

<p>Every design decision we make has environmental consequences:</p>
<ul>
  <li>Image and video file sizes affect data transfer and energy consumption</li>
  <li>Color choices impact device battery life</li>
  <li>Interface complexity influences processing power requirements</li>
  <li>User behavior patterns affect overall system efficiency</li>
</ul>

<h2 id="sustainable-design-principles">Sustainable Design Principles</h2>

<h3 id="1-optimize-for-performance">1. Optimize for Performance</h3>
<p>Faster loading times mean less energy consumption. This includes:</p>
<ul>
  <li>Efficient image compression</li>
  <li>Minimal JavaScript usage</li>
  <li>Optimized animations and transitions</li>
</ul>

<h3 id="2-design-for-longevity">2. Design for Longevity</h3>
<p>Create interfaces that don’t require frequent updates or redesigns:</p>
<ul>
  <li>Timeless visual design</li>
  <li>Modular component systems</li>
  <li>Future-proof information architecture</li>
</ul>

<h3 id="3-encourage-sustainable-user-behavior">3. Encourage Sustainable User Behavior</h3>
<p>Design interfaces that promote environmentally conscious actions:</p>
<ul>
  <li>Energy-saving mode options</li>
  <li>Offline functionality</li>
  <li>Efficient workflows that reduce unnecessary interactions</li>
</ul>

<h2 id="practical-implementation">Practical Implementation</h2>

<p>Start with small changes that can have big impacts:</p>
<ul>
  <li>Use system fonts instead of custom web fonts</li>
  <li>Implement dark mode options</li>
  <li>Optimize for mobile-first design</li>
  <li>Reduce unnecessary animations and effects</li>
</ul>

<h2 id="measuring-impact">Measuring Impact</h2>

<p>Track the environmental impact of your design decisions:</p>
<ul>
  <li>Page load times</li>
  <li>Data transfer volumes</li>
  <li>User engagement patterns</li>
  <li>Device performance metrics</li>
</ul>

<h2 id="the-future-of-sustainable-design">The Future of Sustainable Design</h2>

<p>As awareness grows, sustainable design will become standard practice. The most successful products will be those that deliver excellent user experiences while minimizing their environmental footprint.</p>

<p>Sustainable design isn’t just about being environmentally conscious—it’s about creating better, more efficient products that serve users and the planet.</p>]]></content><author><name></name></author><category term="design" /><summary type="html"><![CDATA[How designers can create digital products that are not only user-friendly but also environmentally conscious and sustainable.]]></summary></entry><entry><title type="html">Emerging UX Patterns for AI Products</title><link href="https://dasilvacontin.github.io/blog/2024/03/10/ai-ux-patterns" rel="alternate" type="text/html" title="Emerging UX Patterns for AI Products" /><published>2024-03-10T09:45:00+00:00</published><updated>2024-03-10T09:45:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/03/10/ai-ux-patterns</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/03/10/ai-ux-patterns"><![CDATA[<p>As AI becomes more prevalent in our digital products, new UX patterns are emerging that challenge traditional design conventions and create opportunities for more intuitive, intelligent interfaces.</p>

<h2 id="the-shift-from-reactive-to-proactive">The Shift from Reactive to Proactive</h2>

<p>Traditional UX follows a reactive model: user does something, system responds. AI enables proactive patterns where the system anticipates needs and offers solutions before users even realize they need them.</p>

<h2 id="key-ai-ux-patterns">Key AI UX Patterns</h2>

<h3 id="1-intelligent-defaults">1. Intelligent Defaults</h3>
<p>AI can now predict user preferences and set intelligent defaults, reducing cognitive load and speeding up workflows.</p>

<h3 id="2-contextual-suggestions">2. Contextual Suggestions</h3>
<p>Instead of static menus, AI-powered interfaces provide contextual suggestions based on user behavior and current context.</p>

<h3 id="3-conversational-interfaces">3. Conversational Interfaces</h3>
<p>Natural language processing enables more conversational interactions, making complex tasks feel more human and approachable.</p>

<h3 id="4-adaptive-interfaces">4. Adaptive Interfaces</h3>
<p>Interfaces that learn and adapt to individual users, creating personalized experiences that improve over time.</p>

<h2 id="design-challenges">Design Challenges</h2>

<p>While these patterns offer exciting possibilities, they also present unique challenges:</p>
<ul>
  <li>Managing user expectations around AI capabilities</li>
  <li>Ensuring transparency in AI decision-making</li>
  <li>Balancing automation with user control</li>
  <li>Maintaining human connection in AI-driven experiences</li>
</ul>

<h2 id="the-future-of-ai-ux">The Future of AI UX</h2>

<p>The most successful AI products will be those that seamlessly integrate AI capabilities while maintaining the human touch that users expect and value.</p>

<p>AI isn’t replacing good UX design—it’s enhancing it with new possibilities for creating more intelligent, adaptive, and human-centered experiences.</p>]]></content><author><name></name></author><category term="AI" /><category term="design" /><summary type="html"><![CDATA[Exploring the new user experience patterns that are emerging as AI becomes more integrated into our daily digital interactions.]]></summary></entry><entry><title type="html">Product Design for Climate Tech</title><link href="https://dasilvacontin.github.io/blog/2024/02/20/climate-tech-product-design" rel="alternate" type="text/html" title="Product Design for Climate Tech" /><published>2024-02-20T14:15:00+00:00</published><updated>2024-02-20T14:15:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/02/20/climate-tech-product-design</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/02/20/climate-tech-product-design"><![CDATA[<p>Climate tech represents one of the most critical challenges of our time, and product design plays a pivotal role in making these solutions accessible, engaging, and effective.</p>

<h2 id="the-unique-challenges-of-climate-tech">The Unique Challenges of Climate Tech</h2>

<p>Designing for climate tech comes with its own set of challenges:</p>
<ul>
  <li>Complex data visualization</li>
  <li>Long-term behavior change</li>
  <li>Scientific accuracy vs. user engagement</li>
  <li>Regulatory compliance</li>
</ul>

<h2 id="user-centered-climate-solutions">User-Centered Climate Solutions</h2>

<p>The key to successful climate tech products is understanding that users need to see immediate value while contributing to long-term environmental goals. This requires careful balance between:</p>

<ul>
  <li>Immediate feedback and gratification</li>
  <li>Long-term impact visualization</li>
  <li>Educational components</li>
  <li>Actionable next steps</li>
</ul>

<h2 id="design-principles-for-climate-tech">Design Principles for Climate Tech</h2>

<ol>
  <li><strong>Transparency</strong>: Users need to understand the impact of their actions</li>
  <li><strong>Gamification</strong>: Make sustainable choices rewarding</li>
  <li><strong>Community</strong>: Build networks of like-minded individuals</li>
  <li><strong>Progress Tracking</strong>: Show measurable improvements over time</li>
</ol>

<h2 id="the-future-of-climate-tech-design">The Future of Climate Tech Design</h2>

<p>As we move forward, climate tech design will become more sophisticated, integrating AI to personalize experiences and predict user needs while maintaining the human connection that drives real change.</p>

<p>The intersection of design and climate tech is where we can make the biggest impact on our planet’s future.</p>]]></content><author><name></name></author><category term="design" /><summary type="html"><![CDATA[Designing products that not only solve climate challenges but also engage users in meaningful ways to drive real environmental impact.]]></summary></entry><entry><title type="html">Design Systems in the AI Era</title><link href="https://dasilvacontin.github.io/blog/2024/01/15/design-systems-in-ai-era" rel="alternate" type="text/html" title="Design Systems in the AI Era" /><published>2024-01-15T10:30:00+00:00</published><updated>2024-01-15T10:30:00+00:00</updated><id>https://dasilvacontin.github.io/blog/2024/01/15/design-systems-in-ai-era</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2024/01/15/design-systems-in-ai-era"><![CDATA[<p>The landscape of design systems is undergoing a fundamental transformation as AI becomes more integrated into our design workflows. What once was a manual, time-intensive process is now becoming more intelligent and adaptive.</p>

<h2 id="the-evolution-of-design-systems">The Evolution of Design Systems</h2>

<p>Traditional design systems were static, requiring manual updates and maintenance. With AI, we’re seeing the emergence of dynamic systems that can learn from user behavior and adapt accordingly.</p>

<h2 id="ai-powered-components">AI-Powered Components</h2>

<p>Modern design systems now include AI-powered components that can:</p>
<ul>
  <li>Automatically adjust based on user context</li>
  <li>Generate variations based on design principles</li>
  <li>Predict user needs and adapt interfaces</li>
</ul>

<h2 id="the-future-of-design-systems">The Future of Design Systems</h2>

<p>As AI continues to evolve, design systems will become more intelligent, predictive, and personalized. The key is finding the right balance between automation and human creativity.</p>

<p>The future belongs to design systems that can think, learn, and adapt while maintaining the human touch that makes great design possible.</p>]]></content><author><name></name></author><category term="AI" /><category term="design" /><summary type="html"><![CDATA[How artificial intelligence is reshaping the way we think about and implement design systems in modern product development.]]></summary></entry><entry><title type="html">When best is not best</title><link href="https://dasilvacontin.github.io/blog/2018/10/24/perfectionism-is-a-show-stopper" rel="alternate" type="text/html" title="When best is not best" /><published>2018-10-24T16:50:17+00:00</published><updated>2018-10-24T16:50:17+00:00</updated><id>https://dasilvacontin.github.io/blog/2018/10/24/perfectionism-is-a-show-stopper</id><content type="html" xml:base="https://dasilvacontin.github.io/blog/2018/10/24/perfectionism-is-a-show-stopper"><![CDATA[<p>Boo!</p>

<p>This is my first adult-hood blog post, and the first of many. I’ve actually been sorta blogging on Instagram, using the post descriptions, but not very regularly. But what I mean is, <em>this</em> is the start of a new blog – my blog. And I’m confident that this one will last because now I know what caused me to fail in previous attempts.</p>

<p>Perfectionism is a show-stopper. I have many drafts of blog posts, but I didn’t finish them because writing them became dreadful. Producing the best content one is able to output can take a long time, and even worse, it can make the task, the writing, so dreadful, that one is left without the will to continue. You just want to get back to creating, or doing something fun. The initial spark gets smashed by perfectionism.</p>

<p>But there’s hope for perfectionists. And it’s the realization that there’s no absolute perfect way of doing things. What is better: publishing a super-polished article a month (if it doesn’t become dreadful enough to end up sabotaging your attempt at starting a blog), or publishing many acceptable blog posts? What is the value of your posts? The perfect writing, or the takeaways, your unique point of view, and the fact that it’s actually published?</p>

<p>This is why I’m adopting a less formal writing style and process: I list the topics of the post, their takeaways, and then let my writing flow, very occasionally going back to rewrite some parts. I’m in the fourth paragraph and I feel it’s going great so far. I’ve called this “sharing almost as-is” to some friends to whom I’ve shared this feeling. It’s a bit like sharing a story to a friend.</p>

<p>Another side-effect of putting out more content, about making many not-as-perfect things v.s. making a single super-polished one, is that you iterate more, you try more, and therefore your learn more, you find out what it works better, what you like best, and as a consequence, you are slowly able to put out better content with less effort. Soon enough, you’ll be able to put out the same quality you were able to at the beginning of your journey, but with a fraction of the effort. And this applies to possibly anything in life.</p>

<p>I hope this encourages more people to be conscious about their goals, and to avoid doing their “best” when it’s actually not their best. Or you’ll be trapped into things like eternally polishing your blog’s css, or writing that post so perfectly that you go at the speed of 1 paragraph/h.</p>

<p>What’s the best use of your time? :) Do your thing!</p>

<p>Love y’all 💙</p>

<p>David</p>]]></content><author><name></name></author><category term="tutorial" /><summary type="html"><![CDATA[Perfectionism is a show-stopper. I have many drafts of blog posts, but I didn't finish them because writing them became dreadful. Producing the best content one is able to output can take a long time, and even worse, it can make the task, the writing, so dreadful, that one is left without the will to continue. You just want to get back to creating, or doing something fun. The initial spark gets smashed by perfectionism.]]></summary></entry></feed>