<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Marco's Thoughts]]></title><description><![CDATA[Let's figure stuff out]]></description><link>https://marcog.xyz/</link><image><url>https://marcog.xyz/favicon.png</url><title>Marco&apos;s Thoughts</title><link>https://marcog.xyz/</link></image><generator>Ghost 5.28</generator><lastBuildDate>Tue, 05 May 2026 06:28:54 GMT</lastBuildDate><atom:link href="https://marcog.xyz/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Getting Unstuck On Algorithms]]></title><description><![CDATA[<blockquote>&#x201C;Everyone has a plan: until they get punched in the face&#x201D; &#x2013; Mike Tyson</blockquote><p>Interviews can be hard. To prep, ample time must be dedicated to studying different data structures, algorithms, and related questions. This serves you well until you inevitably get a question you have no idea</p>]]></description><link>https://marcog.xyz/getting-unstuck-on-algorithms/</link><guid isPermaLink="false">657e370616fc3cb98bbfe371</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Mon, 18 Dec 2023 17:37:16 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2023/12/scramble.jpeg" medium="image"/><content:encoded><![CDATA[<blockquote>&#x201C;Everyone has a plan: until they get punched in the face&#x201D; &#x2013; Mike Tyson</blockquote><img src="https://marcog.xyz/content/images/2023/12/scramble.jpeg" alt="Getting Unstuck On Algorithms"><p>Interviews can be hard. To prep, ample time must be dedicated to studying different data structures, algorithms, and related questions. This serves you well until you inevitably get a question you have no idea how to solve. At that moment, you need a plan to get unstuck and solve the problem. Here is my algorithm to unstuck yourself.<br></p><p>First, take a deep breath. Your immediate goal is not the optimal solution. Your goal is to just make some progress. Like a quarterback whose pocket has collapsed - focus on the first down, not the touchdown.<strong> </strong>Often all you need is to make some progress to see a little bit further on the horizon - then the solution becomes clear.<br></p><p><strong>TLDR;</strong></p><ol><li>Clarify the question</li><li>Brute-force</li><li>Simplify the problem</li><li>Spot inefficiencies</li><li>Write out an example and walk through it</li><li>Seek a base case</li><li>Listen<br></li></ol><p><strong>Step 1: Clarify the question</strong></p><p>Make sure you&#x2019;re defining the problem and solving the question being asked. Before you freak out, understand exactly what is being asked. Some small tweaks in the question will take you down completely different paths. <br></p><p>Most problem-solving is happening at the subconscious level. Asking questions buys you some more time to really digest the problem and let your brain think.<br></p><p><strong>Step 2: Brute-force</strong></p><p>Now, you understand the problem but you still don&#x2019;t see the optimal solution. Your best step here is to get an inefficient/brute-force solution. This will do a few things: 1. Give you confidence because you got something down 2. allow you to reason about the problem better 3. Give you a base for you and the interviewer to work from. Our brain is much better at thinking in iterations.<br></p><p>Note: sometimes it&#x2019;s worth coding it out, other times not.<br></p><p><strong>Step 3: Simplify the problem</strong></p><p>Some of the examples you&#x2019;re given may have edge cases and many input values to deal with. Let&#x2019;s not reason about more data than we need. If there&#x2019;s an array &#xA0;- just use a few values. <br></p><p>Also, let&#x2019;s not focus on edge cases &apos;til we have a solution that makes sense. When we simplify, we can see the beginnings of a solution and that&#x2019;s often all we need. <br></p><p>More often than not, solutions are &lt;30 lines of code. <a href="https://en.wikipedia.org/wiki/KISS_principle">KISS</a>.<br></p><p><strong>Step 4: Spot inefficiencies</strong></p><p>Are you storing extra data? Are you repeating work? This line of questioning will allow you to focus on a simpler problem that&#x2019;s easier to reason about when you&#x2019;re stuck. You may find that the essence of the problem you&#x2019;re facing rhymes with a problem you have solved in the past. <br></p><p>Look at where the inefficiency is. This is often a good time to think about 1-2 different data structures or common algorithms that are known tools for these types of problems. Is it an issue of time, space, or both? Can data be stored in a hashmap for easy lookup later? Is this work going to be redone and can be memoized? You get the deal.<br></p><p>This also might be a good time to go back to the question and reread it. Are there certain hints in the question? If the array of numbers is sorted, maybe it&#x2019;s worth thinking about binary search, etc.<br></p><p><strong>Step 5: Write out an example and walk through it</strong></p><p>Write out a simplified example like mentioned above. Then step through iteration by iteration and talk through what is happening. This is great for the interviewer to see your thought process and will also help get your mind &#x201C;running the program&#x201D;. I&#x2019;ve found this can often lead to a deeper understanding of the problem and my intuition can start helping out.<br></p><p><strong>Step 6: Seek a base case</strong></p><p>Many times problems are recursive. Take a step back and look at the problem - is this just the same problem being solved over and over again? If so, your brain will realize it may be a good case to use some recursive algorithm.<br></p><p><strong>Step 7: Listen</strong></p><p>Interviewers want you to succeed. If there is a roadblock they may give you some hints. When one is given, take a moment to think about the hint. Fully digest what was suggested, understand where they&#x2019;re trying to take you, and why they would give that specific hint.<br></p><p><strong>Summary:</strong></p><p>To be a good engineer (and a good interviewee) you&#x2019;re going to need to be a good problem solver. Many times you can&#x2019;t or won&#x2019;t solve problems off the bat, and that&#x2019;s when you need to have a playbook. I encourage you to practice and seek out challenges that leave you in the land of the unknown. Take it one step at a time and you&#x2019;ll often surprise yourself!<br></p><p>Note: You do need to have a great foundation in data structures and algorithms. I like <a href="https://neetcode.io/practice">Neetcode</a> for dividing problems into topics. Problems become easier when you think in 2 steps: 1. Which kind of problem is this? 2. How do I use this solution to solve this specific problem?<br></p><p>Good luck and happy problem-solving!</p>]]></content:encoded></item><item><title><![CDATA[Bringing A US Company To India]]></title><description><![CDATA[<p>At work, I&apos;ve been working on expanding Etsy into India. There have been various challenges but it&apos;s been a rewarding project. I got to write about one of the prominent problems on our company&apos;s technical blog!</p><p>Check it out <a href="https://www.etsy.com/codeascraft/indian-rupee-users-database">here</a>!</p>]]></description><link>https://marcog.xyz/bringing-a-us-company-to-india/</link><guid isPermaLink="false">6349d3c24382b50c471d7848</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Fri, 14 Oct 2022 21:37:30 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/10/Screen-Shot-2022-10-14-at-5.34.39-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/10/Screen-Shot-2022-10-14-at-5.34.39-PM.png" alt="Bringing A US Company To India"><p>At work, I&apos;ve been working on expanding Etsy into India. There have been various challenges but it&apos;s been a rewarding project. I got to write about one of the prominent problems on our company&apos;s technical blog!</p><p>Check it out <a href="https://www.etsy.com/codeascraft/indian-rupee-users-database">here</a>!</p>]]></content:encoded></item><item><title><![CDATA[drAwIng]]></title><description><![CDATA[<p>Image-generating AI&#x2019;s are some of the most interesting projects coming out of AI labs. These include OpenAI&#x2019;s <a href="https://openai.com/dall-e-2/">Dall-e-2</a>, Google&#x2019;s <a href="https://imagen.research.google/">Imagen</a>, and Stability AI&#x2019;s <a href="https://stability.ai/blog/stable-diffusion-public-release">Stable Fusion</a>. I&#x2019;ll be covering what they are, how they work, and how you can get access</p>]]></description><link>https://marcog.xyz/ai-drawing/</link><guid isPermaLink="false">6314e11d4382b50c471d778f</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sun, 04 Sep 2022 17:52:46 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.50.40-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.50.40-PM.png" alt="drAwIng"><p>Image-generating AI&#x2019;s are some of the most interesting projects coming out of AI labs. These include OpenAI&#x2019;s <a href="https://openai.com/dall-e-2/">Dall-e-2</a>, Google&#x2019;s <a href="https://imagen.research.google/">Imagen</a>, and Stability AI&#x2019;s <a href="https://stability.ai/blog/stable-diffusion-public-release">Stable Fusion</a>. I&#x2019;ll be covering what they are, how they work, and how you can get access to using them!</p><h2 id="background">Background</h2><h3 id="what-are-these-models">What are these models?</h3><p>These models take in text and produce a completely computer-generated image. There are <a href="https://twitter.com/Dalle2Pics">plenty of examples</a> but here is an example below. I typed in &#x201C;<strong>A fish standing on a roof eating cereal</strong>&#x201D; and this came up:</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/09/IMG_0573-1.jpg" class="kg-image" alt="drAwIng" loading="lazy" width="400" height="395"></figure><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/09/IMG_0572.jpg" class="kg-image" alt="drAwIng" loading="lazy" width="400" height="390"></figure><p>Here is another example from last night &quot;<strong>cubist style of grandma being pushed in a wheelchair</strong>&quot;:</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/09/DALL-E-2022-09-04-13.43.33---Cubist-style-of-grandma-being-pushed-in-a-wheelchair-1.png" width="400" height="400" loading="lazy" alt="drAwIng"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/09/DALL-E-2022-09-04-13.45.27---Cubist-style-of-grandma-being-pushed-in-a-wheelchair.png" width="400" height="400" loading="lazy" alt="drAwIng"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/09/DALL-E-2022-09-04-13.45.33---Cubist-style-of-grandma-being-pushed-in-a-wheelchair.png" width="400" height="400" loading="lazy" alt="drAwIng"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/09/DALL-E-2022-09-04-13.45.38---Cubist-style-of-grandma-being-pushed-in-a-wheelchair.png" width="400" height="400" loading="lazy" alt="drAwIng"></div></div></div><figcaption>Generated by Dall-E-2</figcaption></figure><p>It&#x2019;s mind-blowing the capabilities of this technology. Companies like <a href="https://www.jasper.ai/?jredirect=true">jenkins.ai </a>are using this technology to change how creatives work. Images for various sites and products can be generated. There are also products like <a href="https://this-person-does-not-exist.com/en">This Person Doesn&#x2019;t Exist.</a> They use a similar model to generate random human faces that don&#x2019;t exist. Many people will use this for generating models for ads and they don&#x2019;t have to pay for rights to the image. </p><p>People are already taking credit for what these models can do. One person <a href="https://www.nytimes.com/2022/09/02/technology/ai-artificial-intelligence-artists.html">won an art competition using a generated image</a>. I also imagine there are fronting artists on Fivver profiting from this model. </p><p>The reaches of this are wide and many are scared this will replace humans. In my opinion, it will just change the nature of many creatives&#x2019; jobs. It&#x2019;s been mentioned that there could be a future where this is someone&#x2019;s job. To be an expert at &#x201C;image generation prompt writing&#x201D;. Knowing how to communicate well with the AI to get a quality image is definitely a skill. It&#x2019;s similar to being a good &#x201C;googler&#x201D; or even a good data miner.</p><h3 id="how-do-they-work">How do they work?</h3><p>I&#x2019;ll keep things very high level for this. The model consists of two parts. The first is the part that maps text to images. That is called CLIP. CLIP stands for Contrastive Language-Image Pre-training. The model is given a list of captions and it is trained to pick the right one. This gives the model a richer understanding of an image even if there aren&#x2019;t many examples to be trained on. This rich vector graph becomes very useful when combined with the second part below.</p><p>The second part is the diffusion model. This works by taking an image and scrambling a few pixels. Then the model is trained to reassemble the pixels so it gets back to the old image. The model learns how to take a grid of pixels and go from some randomness to little to no randomness. Then it&#x2019;s trained on a grid of random pixels and is trained to generate some viable image. The model now knows how to generate an image from randomness.</p><p>The last part is to fuse these two together. CLIP maps the text to what an image should look like. The model is given a random grid of pixels. Then the model is trained to build an image that the CLIP model &quot;approves of&quot;. More can be read <a href="https://towardsdatascience.com/dall-e-2-0-explained-7b928f3adce7">here</a>.</p><h2 id="how-to-get-access">How To Get Access?</h2><p>The best open access model is Dall-E-2. The issue is that you need to <a href="https://labs.openai.com/waitlist">join the waitlist</a>. For me, this took a few months to get access (though I believe wait times are shorter now). The other bad part is that you&#x2019;re limited to 15 images a month. Not great if you want to build a project/product around it. I assume this will change soon but the limitation is quite annoying.</p><p>Luckily there is an open source model we can use. This is Stability AI&#x2019;s <a href="https://stability.ai/blog/stable-diffusion-public-release">Stable Fusion</a> mentioned above. It&#x2019;s an organization that is funded to do AI research for the general public. This model can be run on your very own computer. The code and how to run it can be found on their <a href="https://github.com/CompVis/stable-diffusion">GitHub</a>. I was going to write a whole post about how to set this up, but being the lazy person I am, I found a better way.</p><p>The founder of <a href="https://replit.com/">rep.it</a> created a repl that allows you to use the open source model for free! This requires no time or creds to use (not sure if there is rate limiting). That can be found <a href="https://replit.com/@amasad/AI-Image-Generate-Stable-Diffusion?v=1">here</a>. </p><p>Note: I&#x2019;ve found the results of Stable Diffusion are not as high quality as Dall-E-2. <br>Here are some examples of what I was able to produce with it.</p><p>&#x201C;<strong>picasso version of a cat playing violin</strong>&#x201D;</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.12.56-PM.png" class="kg-image" alt="drAwIng" loading="lazy" width="1048" height="1058" srcset="https://marcog.xyz/content/images/size/w600/2022/09/Screen-Shot-2022-09-04-at-1.12.56-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/09/Screen-Shot-2022-09-04-at-1.12.56-PM.png 1000w, https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.12.56-PM.png 1048w" sizes="(min-width: 720px) 720px"></figure><p><br>&#x201C;<strong>3d model of a castle on a mountain with waterfalls</strong>&#x201D;</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.14.00-PM.png" class="kg-image" alt="drAwIng" loading="lazy" width="1050" height="1046" srcset="https://marcog.xyz/content/images/size/w600/2022/09/Screen-Shot-2022-09-04-at-1.14.00-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/09/Screen-Shot-2022-09-04-at-1.14.00-PM.png 1000w, https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.14.00-PM.png 1050w" sizes="(min-width: 720px) 720px"></figure><p><br>&#x201C;<strong>pencil sketch of barack obama</strong>&#x201D;</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.17.24-PM.png" class="kg-image" alt="drAwIng" loading="lazy" width="1042" height="1052" srcset="https://marcog.xyz/content/images/size/w600/2022/09/Screen-Shot-2022-09-04-at-1.17.24-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/09/Screen-Shot-2022-09-04-at-1.17.24-PM.png 1000w, https://marcog.xyz/content/images/2022/09/Screen-Shot-2022-09-04-at-1.17.24-PM.png 1042w" sizes="(min-width: 720px) 720px"></figure><p></p><p>Happy creating! Let me know if you make anything!</p>]]></content:encoded></item><item><title><![CDATA[Fixing Posture: / -> |]]></title><description><![CDATA[<p>I&#x2019;m not an expert on the body but I&#x2019;ve done some homework on how to fix posture. For me, it was slouching and &#x201C;tech neck&#x201D; (forward neck) from working on a screen all day. This often leads to discomfort, looking less confident, and appearing</p>]]></description><link>https://marcog.xyz/fixing-posture/</link><guid isPermaLink="false">62f8254a4382b50c471d7609</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sat, 13 Aug 2022 23:02:48 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/08/FixingPosture.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/08/FixingPosture.png" alt="Fixing Posture: / -&gt; |"><p>I&#x2019;m not an expert on the body but I&#x2019;ve done some homework on how to fix posture. For me, it was slouching and &#x201C;tech neck&#x201D; (forward neck) from working on a screen all day. This often leads to discomfort, looking less confident, and appearing shorter. It&#x2019;s good to nip it early as it just gets worse and compounds as we age.</p><h3 id="basics">Basics</h3><p>Our bodies are pretty weird. Most animals are made to be on all fours and we&#x2019;re no exception. But, clearly, that&#x2019;s not how we use our bodies. Our bodies are quite long and don&#x2019;t work great with gravity (ask most older people). To keep our body upright requires a lot of strength and the main muscles responsible for that are in our core. These include but aren&#x2019;t limited to our abs and lower back. With a strong core, all else becomes a lot easier. Doing ab workouts and lower back workouts like <a href="https://youtu.be/JCXUYuzwNrM">romanian deadlifts</a> can help a ton.</p><p>We also want to strengthen some more local muscles near our upper body. This includes our traps, upper back, and neck. Some great workouts here are <a href="https://youtu.be/cJRVVxmytaM">weighted shrugs</a> and <a href="https://youtu.be/qEwKCR5JCog">shoulder presses</a> for traps. Pullups and pull-downs for the upper back. For the neck, doing <a href="https://youtu.be/GdlWXf_RT54">weighted neck movements</a>, using <a href="https://www.iron-neck.com/collections/iron-neck-bundles/products/iron-neck-starter-bundle">Iron Neck</a>, or a <a href="https://a.co/d/hxy427P">weighted head harness</a>.</p><p>In addition to a strong body, you want to make sure your muscles and joints are flexible and healthy. Weights alone will not get you this. I knew how important this aspect was so I went to an expert. I went to my local physical therapy (PT) office and got professional help. They were able to really spend the time on my body and give it the regiment it needs to get in top shape. Here are some workouts they gave me:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/ezgif.com-gif-maker--1-.gif" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="400" height="400"><figcaption>Face Pulls</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/ezgif.com-gif-maker.gif" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="400" height="400"><figcaption>Scapular Squeeze (hold for 10 seconds)</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/neck_glide.jpeg" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="360" height="216"><figcaption>Neck Glide</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/door_stretch.gif" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="500" height="281"><figcaption>Door Stretch (hold for 10 seconds)</figcaption></figure><p>The last part is maintenance. For me, a partial reason for having bad posture is partially due to having a longer neck and being tall. But the main reason is bad habits. I&#x2019;d regularly work from a couch or bed where my neck is naturally facing down and my body isn&#x2019;t supported. It was comfy at the time, but like all things, it had a long-term price to pay.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/08/head_weight.png" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="359" height="140"></figure><p>So a few things had to get fixed, my habits are key. I only work from a desk at home or work. I got a good office chair that supports my body well. I elevated my monitors so all screens are at eye level, And I also bought <a href="https://a.co/d/8YlSPFS">this device</a>. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/upright_go2.jpeg" class="kg-image" alt="Fixing Posture: / -&gt; |" loading="lazy" width="1452" height="1442" srcset="https://marcog.xyz/content/images/size/w600/2022/08/upright_go2.jpeg 600w, https://marcog.xyz/content/images/size/w1000/2022/08/upright_go2.jpeg 1000w, https://marcog.xyz/content/images/2022/08/upright_go2.jpeg 1452w" sizes="(min-width: 720px) 720px"><figcaption>Upright Go</figcaption></figure><p>It&#x2019;s a device that sticks to your back (can also get a necklace attachment) and corrects one posture. If I ever slouch for more than 15 seconds, it buzzes and reminds me to sit up. It&#x2019;s kinda weird but it works extremely well and is pretty cheap.</p><h3 id="conclusion">Conclusion</h3><p>Taking care of one&#x2019;s body is huge. Posture seems unimportant but it will ensure your body ages well, you look more confident, and are taller. The earlier you start, the easier the future will be. I hope these tips help!</p>]]></content:encoded></item><item><title><![CDATA[Means To A Backend]]></title><description><![CDATA[<p>A friend and I were working remotely for a month and wanted to build a product. As software engineers, we could hire ourselves as free employees (self-funded seed round?). </p><p>In my last post, I talked at length about how we brainstormed and collaborated to find the perfect idea. When we</p>]]></description><link>https://marcog.xyz/means-to-a-backend/</link><guid isPermaLink="false">62e73acc4382b50c471d755c</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Mon, 01 Aug 2022 03:07:45 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/08/Means-To-a-backend.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/08/Means-To-a-backend.png" alt="Means To A Backend"><p>A friend and I were working remotely for a month and wanted to build a product. As software engineers, we could hire ourselves as free employees (self-funded seed round?). </p><p>In my last post, I talked at length about how we brainstormed and collaborated to find the perfect idea. When we finally picked one, it was time to decide what our tech stack would be.</p><p>For the frontend, it was a no-brainer - we&#x2019;d use React and Typescript. We&#x2019;re both experienced in it and it&#x2019;s a good solution for most problems. </p><p>But then it came to the backend. There are so many good options, each with tradeoffs depending on what&#x2019;s being built. So let&#x2019;s start by defining what requirements are for our backend.</p><h3 id="requirements">Requirements</h3><p>The most important factor for us was that the ramp-up time was as minimal as possible. Most products fail because they can&apos;t find product-market-fit. We wanted to minimize the time it took us to get assumptions tested. Another similar requirement is that we needed to use a tool that would allow us to pivot. We figured no matter how good our idea is, we&#x2019;re likely gonna need to change directions at some point.</p><p>We also needed a language that was easy to hire for. If we build this out and see it grow, eventually we&#x2019;ll need to bring people on. If this is the case, we need to pick a language that has a large talent pool.</p><p>We also needed a language that was performant. It needed to work now but also needed to work in the future if/when things got larger. Our app is largely read-heavy and not terribly complicated but that could change.</p><p>There were a few more requirements but these were our main concerns and what we tried to optimize for.</p><h3 id="our-choice">Our Choice</h3><p>Our first thought was maybe to go with Node as we&#x2019;re both versed in JavaScript. It would simplify our stack, be easy to get going, and has plenty of potential people to hire. The issue is that Node is a backend runtime environment for JavaScript (a frontend language). </p><p>It&#x2019;s not natively built to be a backend language and there are a few wonky issues. One example is it doesn&#x2019;t have great support for large numbers (you need a library). Also, the number of large projects built with Node isn&apos;t as large. It&apos;s still not used for many production-level projects. The application could definitely be built with it but we decided to pick a better option.</p><p>We wanted a backend first language. Given our constraints and what skills we had, a clear winner quickly popped out. We&#x2019;d use Python due to its wide use, an abundance of packages, and proven production capabilities. It&#x2019;s used to power Instagram, Spotify, and Box. Our app is simple, it would work great. Next was to pick a library/framework.</p><h3 id="libraryframework">Library/Framework</h3><p>When it comes to Python backends there are two dominant players: <a href="https://www.djangoproject.com/">Django</a> and <a href="https://flask.palletsprojects.com/en/2.1.x/">Flask</a>. Django is the largest with the most projects and being around for longer. It&#x2019;s like Spring, Rails, Laravel, etc. It&#x2019;s all about the MVT/MVC (Model View Controller). It&apos;s built for your typical templated CRUD (Create Read Update Delete) app. It can also be modified to be optimized for a REST API. Django has so much built into it and a pattern of how things are done. It&apos;s heavy, and relatively speaking, doesn&apos;t have that much flexibility. But it works extremely well.</p><p>Flask is the opposite, it&apos;s a super lightweight framework. It&#x2019;s up to the developer to make design decisions and is super flexible. It&#x2019;s a pretty great option for small projects. As projects grow, Flask apps start to look more and more like Django apps (but with a lot more work).</p><p>The last player on the scene is quickly growing and it&apos;s <a href="https://fastapi.tiangolo.com/">FastAPI</a>.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/08/fast_api_growth.jpeg" class="kg-image" alt="Means To A Backend" loading="lazy" width="1200" height="590" srcset="https://marcog.xyz/content/images/size/w600/2022/08/fast_api_growth.jpeg 600w, https://marcog.xyz/content/images/size/w1000/2022/08/fast_api_growth.jpeg 1000w, https://marcog.xyz/content/images/2022/08/fast_api_growth.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><p>As you can see above this is the fastest-growing Python framework. It&#x2019;s ultra performant, with speeds close to Golang. Part of this is due to having an async request flow like Node but with the performance of a true backend language.</p><blockquote>Fun fact: <a href="https://www.geeksforgeeks.org/python-compiled-or-interpreted/">Python is a compiled and interpreted language</a></blockquote><p>We dug in some more and it seems like FastAPI was super easy to use and had a ton of support. Given that it was lightweight, fast, and optimized for creating APIs it made a ton of sense to use it. No matter how we pivoted it seemed like a great pick.</p><p>We paired FastAPI with Postgres and the ORM (Object-relational Mapping) <a href="https://www.sqlalchemy.org/">SQLAlchamy</a>. Like anything new, there is a learning curve but so far we&#x2019;ve found it to be great. <a href="openapis.org">OpenAPI</a> is built in which makes for dynamically generated docs. It makes integrating with the frontend that much easier.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://marcog.xyz/content/images/2022/08/fast_api_openapi_example.jpeg" class="kg-image" alt="Means To A Backend" loading="lazy" width="694" height="366" srcset="https://marcog.xyz/content/images/size/w600/2022/08/fast_api_openapi_example.jpeg 600w, https://marcog.xyz/content/images/2022/08/fast_api_openapi_example.jpeg 694w"><figcaption>OpenAPI example</figcaption></figure><p>Here is a <a href="https://replit.com/@MarcoGaspari1/fastapi">Replit</a> with a basic model using SQLAlchamy. <a href="https://github.com/skb1129/fastapi-boilerplate">Here</a> is a great boilerplate which sets up your FastAPI repo properly.</p><h3 id="conclusion">Conclusion</h3><p>I don&#x2019;t think there is a &#x201C;best&#x201D; choice for a backend language and framework. It&#x2019;s all about using the right tool for the job. Python and FastAPI are great so far and I&#x2019;m excited to ship a product using these new tools learned.</p><p>More to come on the project!</p>]]></content:encoded></item><item><title><![CDATA[deas - Getting Rid of The "I" when Brainstorming]]></title><description><![CDATA[<p>My friend and I were talking about what makes humans so great. We came to the conclusion that the major factors are specialization and the ability to collaborate. Together these make humans a force. Humans are at their best when they&apos;re acting as an individual in an integrated</p>]]></description><link>https://marcog.xyz/deas-getting-rid-of-the-i-when-brainstorming/</link><guid isPermaLink="false">62c083664382b50c471d74d8</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sat, 02 Jul 2022 18:16:13 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/07/Add-a-heading--1-.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/07/Add-a-heading--1-.png" alt="deas - Getting Rid of The &quot;I&quot; when Brainstorming"><p>My friend and I were talking about what makes humans so great. We came to the conclusion that the major factors are specialization and the ability to collaborate. Together these make humans a force. Humans are at their best when they&apos;re acting as an individual in an integrated group. We experienced this at play when we were brainstorming a project to work on.</p><p>This was one of the best brainstorming sessions we&#x2019;ve ever had. We both felt like it resulted in great ideas and we both felt like we contributed a lot.</p><p>What are the components of a great brainstorming session?</p><h3 id="you-vs-problemnot-you-vs-each-other">You vs Problem - Not You vs Each Other</h3><p>This is the most essential part of a great brainstorming session. Everything else is downstream of this. When brainstorming, the people involved are on a team against the problem and not against each other. Ray Dalio talks about this in his book <a href="https://www.amazon.com/Principles-Life-Work-Ray-Dalio-ebook/dp/B071CTK28D/ref=tmm_kin_swatch_0?_encoding=UTF8&amp;qid=1656784012&amp;sr=8-1">Principles</a>. We must focus on getting the right answer, not being right. Who is right or comes up with the idea is irrelevant. This leads to the next most important part.</p><h3 id="listening-to-understand">Listening To Understand</h3><p>Now that everyone is working as a team against the problem, let&#x2019;s be aware of an essential part of communication. Everyone needs to listen to understand. This isn&#x2019;t something that&#x2019;s done consciously but needs to be a mental priority of everyone in the group. When you have competent, smart, creative people in a group they&#x2019;re going to release nuggets of gold. It&#x2019;s everyone&#x2019;s responsibility to catch those nuggets. What to do with those nuggets?</p><h3 id="iterate-and-multiply">Iterate and Multiply</h3><p>Let&#x2019;s multiply the force of the group. An essential part here is to let all ideas come out, no matter how &#x201C;dumb&#x201D; they are. This is where the magic of human ingenuity comes in. We all hear &#x201C;we stand on the shoulders of giants&#x201D; what if we apply that on a micro-level? Any idea that comes up, keep iterating on it. The group ends up at some amazing solutions that no one would have thought of from the start. Use &#x201C;yes and&#x201D; to build upon ideas and the flywheel of ideas starts spinning. Most human innovation comes from iterating - leverage it.</p><h3 id="respect">Respect</h3><p>This is a tiny piece but very important. Everyone in the group must have mutual respect for the other members. If a member isn&apos;t taken seriously, it will lead to a weakening of the whole team. The person being ignored grows resentful and then can try to talk more. Or worse, not contribute at all.</p><p><em>Bonus:</em></p><h3 id="an-altered-mind">An Altered Mind</h3><p>Our minds are sharp and great but are often limited by the brain&apos;s physical structure. An amazing way to get around this is to alter our consciousness a bit. This can be as simple as some coffee or even a beer or cigar. Creativity comes when we think differently, a little chemical help can make all the difference.</p><p>More to come on the project. Until then, happy brainstorming!</p>]]></content:encoded></item><item><title><![CDATA[Questioning One's Routines]]></title><description><![CDATA[<p>Our routines make up most of our life. We remember the big moments and trips, but most of our time is spent on routine things. From work and relationships to diet and chores. These become the invisible but main parts of our life. We must remember to zoom out and</p>]]></description><link>https://marcog.xyz/untitled-3/</link><guid isPermaLink="false">62b1407f4382b50c471d743b</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Tue, 21 Jun 2022 12:12:00 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/06/Add-a-heading.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/06/Add-a-heading.png" alt="Questioning One&apos;s Routines"><p>Our routines make up most of our life. We remember the big moments and trips, but most of our time is spent on routine things. From work and relationships to diet and chores. These become the invisible but main parts of our life. We must remember to zoom out and question these aspects of our life.</p><p>For me, I was looking at something I do often but hate - laundry. Yes, this is an odd post but I&#x2019;ll explain at the end.</p><p>It&#x2019;s rare to have laundry in-unit in NYC. So I go weeks between trips to the laundromat and then do 50 pounds of laundry at once. This takes hours and requires me to do multiple ten-minute round trips to the laundromat. In NYC, to do wash-and-fold would come to be a few hundred dollars a month. It&#x2019;s a decent way to buy back time but it still takes a while and your clothes aren&#x2019;t well handled.</p><p>My thought was that this could definitely be improved. What if I applied the dishwashing technique to laundry. We wash dishes every day or two, what if I wash my clothes every day or two?</p><p>So I set out to try and solve this problem. Would I buy a mini washer for my apartment? Not enough space, it&apos;s pricey, and likely not allowed. What about a handheld electric washer? The motor breaks easily and it doesn&#x2019;t clean clothes well.</p><p>Then it hit me. What if I could parallelize the clothes cleaning process with what I already do. Bingo.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/06/IMG_9647.jpg" class="kg-image" alt="Questioning One&apos;s Routines" loading="lazy" width="2000" height="1500" srcset="https://marcog.xyz/content/images/size/w600/2022/06/IMG_9647.jpg 600w, https://marcog.xyz/content/images/size/w1000/2022/06/IMG_9647.jpg 1000w, https://marcog.xyz/content/images/size/w1600/2022/06/IMG_9647.jpg 1600w, https://marcog.xyz/content/images/size/w2400/2022/06/IMG_9647.jpg 2400w" sizes="(min-width: 720px) 720px"></figure><p>I found a self-contained washboard that&#x2019;s used for camping. You put in a few pieces of clothes, some soap, a little hot water, and scrub. My idea was I&#x2019;d do this while I shower. Every day or two I&#x2019;d take that day&#x2019;s clothes and wash them with this method. </p><p>I was already using hot water. I could scrub with my feet while I shower. Then once I&#x2019;m done, rinse out that day&apos;s clothes and leave them to hang. Even drying is parallelized. I&apos;d hang most of my clothes so once air dried they&apos;re ready to use. I wouldn&apos;t have to waste time folding.</p><p>This would save time, money, and be better for the environment. Let&#x2019;s see what happened:</p><h3 id="my-experiment">My Experiment</h3><p>I went to REI and picked up the scrubber from above. They have a great return policy so I knew if this failed, there was no downside.</p><p>Here are some pics of the process.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/06/IMG_9648-1.jpg" width="2000" height="2667" loading="lazy" alt="Questioning One&apos;s Routines" srcset="https://marcog.xyz/content/images/size/w600/2022/06/IMG_9648-1.jpg 600w, https://marcog.xyz/content/images/size/w1000/2022/06/IMG_9648-1.jpg 1000w, https://marcog.xyz/content/images/size/w1600/2022/06/IMG_9648-1.jpg 1600w, https://marcog.xyz/content/images/size/w2400/2022/06/IMG_9648-1.jpg 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/06/IMG_9649-2.jpg" width="2000" height="2667" loading="lazy" alt="Questioning One&apos;s Routines" srcset="https://marcog.xyz/content/images/size/w600/2022/06/IMG_9649-2.jpg 600w, https://marcog.xyz/content/images/size/w1000/2022/06/IMG_9649-2.jpg 1000w, https://marcog.xyz/content/images/size/w1600/2022/06/IMG_9649-2.jpg 1600w, https://marcog.xyz/content/images/size/w2400/2022/06/IMG_9649-2.jpg 2400w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Long story short, it was a <em>huge</em> fail. First is that any time I went to take a shower, I had no desire to do laundry. When I finally did do it, it took a while to get everything ready to wash. Then while showering it was quite annoying to spend the time scrubbing. The clothes are also not washed that well. Also, in no way is this made for washing sheets or anything large. </p><p>Then the worst part: drying. Ringing out the clothes takes way too long when you have a few pieces. And once that&#x2019;s done you have to always have clothes hanging around the apartment.</p><p>Across the board, it was a huge huge fail. But, it was actually a huge success.</p><h3 id="lessons">Lessons</h3><p>Why was it a success?</p><p>I took time to take a step back. Question a routine I had. Then come up with a novel method to make the routine &#x201C;better&#x201D;. Followed by running a free experiment to try it. </p><p>The act of questioning one&#x2019;s routines and looking to optimize them is huge. Even if this only succeeds 20% of the time the impact can be huge. A routine can add up to months or years over a lifetime. Minor improvement compound.</p><p>Looking at one&apos;s life and saying &#x201C;can this be done better&#x201D; is what human ingenuity is all about. And the best part? If we all do this once in a while we all win. Great ideas now spread virally. The effort multiplies across your whole life and maybe across many others.</p><p>&#x201C;Smart-stupid&#x201D; experiments don&#x2019;t always land. But when they do the impact can be huge. It&#x2019;s essential we relentlessly question our ways and run experiments to make upgrades.</p>]]></content:encoded></item><item><title><![CDATA[Math You'll Love]]></title><description><![CDATA[<p>Reading math notation sucks.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png" class="kg-image" alt loading="lazy" width="1116" height="308" srcset="https://marcog.xyz/content/images/size/w600/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 1000w, https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 1116w" sizes="(min-width: 720px) 720px"></figure><p>A big focus when learning math is remembering all the different symbols. It distracts from focusing on what the equation is actually communicating. Many people miss the beauty of math because we don&#x2019;t teach it in an intuitive way.</p><p>The author of <a href="https://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/1541675126/ref=asc_df_1541675126/?tag=hyprod-20&amp;linkCode=df0&amp;hvadid=509494905560&amp;hvpos=&amp;hvnetw=g&amp;hvrand=5215797345422905451&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=9067609&amp;hvtargid=pla-917985559093&amp;psc=1">Mindstorms</a> writes</p>]]></description><link>https://marcog.xyz/math-as-code/</link><guid isPermaLink="false">629bd7194382b50c471d73de</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sat, 04 Jun 2022 22:52:32 GMT</pubDate><content:encoded><![CDATA[<p>Reading math notation sucks.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png" class="kg-image" alt loading="lazy" width="1116" height="308" srcset="https://marcog.xyz/content/images/size/w600/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 1000w, https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.09.47-PM.png 1116w" sizes="(min-width: 720px) 720px"></figure><p>A big focus when learning math is remembering all the different symbols. It distracts from focusing on what the equation is actually communicating. Many people miss the beauty of math because we don&#x2019;t teach it in an intuitive way.</p><p>The author of <a href="https://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/1541675126/ref=asc_df_1541675126/?tag=hyprod-20&amp;linkCode=df0&amp;hvadid=509494905560&amp;hvpos=&amp;hvnetw=g&amp;hvrand=5215797345422905451&amp;hvpone=&amp;hvptwo=&amp;hvqmt=&amp;hvdev=c&amp;hvdvcmdl=&amp;hvlocint=&amp;hvlocphy=9067609&amp;hvtargid=pla-917985559093&amp;psc=1">Mindstorms</a> writes that schools, unfortunately, teach kids math through rote memory. We give kids no intuitive sense of what the equations are doing and many come to hate the subject. His suggestion is that we should teach these subjects through code instead. The subject becomes much more interactive and kids truly understand how things work.</p><p>This spoke to me. I love math and statistics but hated learning the subjects in school. I always thought it would be fantastic if there were a textbook that taught math equations through code. It would be much more fun to learn and also much more effective. The only thing I saw that was close was <a href="https://github.com/mgaspari/math_as_code">this</a> which mapped basic operations to JavaScript code.</p><p>I figured if this doesn&#x2019;t exist I should solve it. I may not be able to easily convert a calculus or statistics textbook. But, I could start a GitHub repo. So that&#x2019;s what I did!</p><p><a href="https://github.com/mgaspari/math_as_code">GitHub repo</a></p><p>I started with statistics. I looked up some of the most common equations and converted them to JavaScript. I optimized for readable code that would easily explain how the equations work. My plan is through time to add more equations and other branches of math. I hope other members of the community will also help!</p><h3 id="chi-squared">Chi-Squared:</h3><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.48.49-PM.png" class="kg-image" alt loading="lazy" width="972" height="798" srcset="https://marcog.xyz/content/images/size/w600/2022/06/Screen-Shot-2022-06-04-at-6.48.49-PM.png 600w, https://marcog.xyz/content/images/2022/06/Screen-Shot-2022-06-04-at-6.48.49-PM.png 972w" sizes="(min-width: 720px) 720px"></figure><p>I&#x2019;m a big believer in &#x201C;being the change you want to see&#x201D; and building what you think should exist. If you feel the same way and find this interesting I hope you&#x2019;ll submit some PRs to add new equations!</p>]]></content:encoded></item><item><title><![CDATA[Stop Thinking Like an Engineer and Start Thinking Like a Problem Solver]]></title><description><![CDATA[<p>I recently sent my friend <a href="https://youtu.be/3_Ue0tweDkE">this</a> link. The TLDR; <u>the best engineers don&apos;t write the most code</u>. They solve problems that help the business succeed. Sometimes solving the problem and helping the business involves writing code. Many times is doesn&apos;t.</p><blockquote>The best code is no code</blockquote>]]></description><link>https://marcog.xyz/untitled-2/</link><guid isPermaLink="false">6289083c4382b50c471d7366</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sat, 21 May 2022 16:06:08 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/05/Stop-Thinking-Like-an-Engineer.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/05/Stop-Thinking-Like-an-Engineer.png" alt="Stop Thinking Like an Engineer and Start Thinking Like a Problem Solver"><p>I recently sent my friend <a href="https://youtu.be/3_Ue0tweDkE">this</a> link. The TLDR; <u>the best engineers don&apos;t write the most code</u>. They solve problems that help the business succeed. Sometimes solving the problem and helping the business involves writing code. Many times is doesn&apos;t.</p><blockquote>The best code is no code</blockquote><p>This couldn&apos;t be more relevant with the problem I faced today. I was looking to use this new <a href="https://www.amazon.com/dp/B06W54L7B5?ref_=cm_sw_r_cp_ud_dp_36VK4T8SC7YWT9PW6GHZ">Raspberry Pi kit</a> to build a project this week. My other friend gifted it to me and I was hyped to think of some creative builds. I wanted it to be practical and realized I had a first world problem to solve.</p><p>Most of my apartment is controlled by some app. The one thing I couldn&apos;t control was the temperature of my AC (yes they build AC&apos;s with something like this built in but I&apos;m working with what I got). I could turn it on and off from my phone through a smart plug. But, I couldn&apos;t interact with the functionalities of the unit. </p><p>Then it hit me! </p><p>I&apos;ll record the signal of my (infrared) IR remote. Use an IR LED to replay the signals. Then I&apos;d have an internet controlled AC! I&apos;d build a small webapp and be able to control the RaspberryPi/AC from anywhere in the world.</p><p>I bought some <a href="https://www.amazon.com/dp/B07TLBJR5J?ref_=cm_sw_r_cp_ud_dp_M5NQ843CCD0CH0VNXR5X">extra parts</a> for my Rapsberry Pi and started watching <a href="https://youtu.be/JL821Ng-6vA">videos</a>. It&apos;s all quite simple. When a button is pressed on a remote, a IR signal transmits digits. It tells the receiver what to do. With the recor....wait wait wait.</p><p>Wtf is the title of this post?</p><p>This is such a simple straightforward problem. There must be a simpler solution than to build this functionality from scratch. I took a step back and picked my brain.</p><p>Interact through the smart plug? Nope. A button presser for the remote? Too complicated with up and down temp. Google home speaker? Nada. But then it hit me! </p><p>In <a href="https://marcog.xyz/nyc-apartment-hack/">my post</a> I spoke about how I have a tiny &quot;robot&quot; to buzz people into my building. The issue is the robot only relied on Bluetooth. I bought an extra piece to fix that. It connects the robot to the internet and is a game changer.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/05/Image-from-iOS-1.jpg" class="kg-image" alt="Stop Thinking Like an Engineer and Start Thinking Like a Problem Solver" loading="lazy" width="400" height="533"></figure><p>I was poking around their site for an add on that could fire off an IR signal and.....I already had it! The &quot;hub&quot; (above) that connected my robot to the internet also had IR functionality! I opened my app, hit a few buttons and before I knew it I could control my AC tempt through my phone. I even connected my TV, cause why not :).</p><p>Taking a step back saved me hours of building time. I also ended up with a more polished solution!</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/05/Image-from-iOS--1-.jpg" class="kg-image" alt="Stop Thinking Like an Engineer and Start Thinking Like a Problem Solver" loading="lazy" width="1284" height="359" srcset="https://marcog.xyz/content/images/size/w600/2022/05/Image-from-iOS--1-.jpg 600w, https://marcog.xyz/content/images/size/w1000/2022/05/Image-from-iOS--1-.jpg 1000w, https://marcog.xyz/content/images/2022/05/Image-from-iOS--1-.jpg 1284w" sizes="(min-width: 720px) 720px"></figure><h3 id="problem-solved-code">Problem Solved &gt; Code</h3><blockquote>If all you have is a hammer, everything looks like a nail</blockquote><p>At work and life we&apos;re quick to jump to our usual toolbox to solve a problem. More often than not we need to question: Does this need to be solved? Is this going to provide value? Does this approach make the most sense? There is nothing worse than solving a problem that doesn&apos;t need to be solved. (Digitally controlled ACs are fair game).</p><p>This type of questioning and problem solving is invaluable and moves the needle. Writing code is fairly easy. Solving the right problem in the most efficient way is much more difficult and valuable. It&apos;s the leverage that decides how other forms of leverage are used.</p><p>Don&apos;t be so quick to put up a PR. Don&apos;t be so quick to add more people. Think before solving*.</p><p>P.S. I&apos;ll be building with the Raspberry Pi kit soon!</p><p>*Not always the solution. But healthy questioning can be quick and save an incredible amount of time.</p>]]></content:encoded></item><item><title><![CDATA[On Decision Making]]></title><description><![CDATA[<p>In the last few weeks, I&apos;ve had to make some big decisions in my personal and professional life. There was quite a bit of stress and now on the other side of things I&apos;ve reflected quite a bit. </p><p>How does one make good decisions? How does</p>]]></description><link>https://marcog.xyz/on-decision-making/</link><guid isPermaLink="false">6279dfe24382b50c471d72c3</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Tue, 10 May 2022 13:45:47 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/05/On-Decision-Making--1-.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/05/On-Decision-Making--1-.png" alt="On Decision Making"><p>In the last few weeks, I&apos;ve had to make some big decisions in my personal and professional life. There was quite a bit of stress and now on the other side of things I&apos;ve reflected quite a bit. </p><p>How does one make good decisions? How does one balance constraints with time, external parties, and incomplete information? I can&apos;t say I have any right to speak on this, but I&apos;ll be sharing my thoughts from this learning experience.</p><h3 id="backstory">Backstory</h3><p>In my personal life, I&apos;ve had to make choices that would have large downstream effects. At the same time, professionally I had to lead a project. The buck stopped at me. I had to decide and sign off on decisions that would affect other teams and how the system worked.</p><p>I won&apos;t go into the details of the problem because they&apos;re not all that relevant. But in both cases, I was making the final call.</p><p>Now that time has passed I&apos;m satisfied with making the best decision with the information I had. It may turn out that the choices I made were wrong. But, I can say the process to get to the decisions was useful, replicable, and most importantly tweakable.</p><h2 id="frameworks-and-tools">Frameworks and Tools<br></h2><h3 id="clarity">Clarity</h3><p>The single most important thing for making good decisions is a clear mind. Let me write that again. The single most important thing for making good decisions is a clear mind. </p><p>This is sharpening the ax before cutting the tree. It&#x2019;s calibrating your scope before a hunt. Skip this step and the odds of making a good decision plummet.</p><p>Two things were the most helpful for me:</p><p><strong>Quiet Time</strong></p><p>I would only think deeply about the decisions in the morning before my mental energy was spent. For you, this may be late at night when the world has gone to sleep. Regardless, it&apos;s essential to think when the mind has energy and cortisol levels are low.</p><p>Our brain is only at its sharpest a few hours a day, we get a tiny window to make the most of our mind. Jeff Bezos says he only makes three important decisions a day and makes them all in the morning.</p><blockquote>&#x201C;I do my high-IQ meetings before lunch. Anything that&apos;s going to be really mentally challenging--that&apos;s a 10 o&apos;clock meeting. Because by 5 p.m., I&apos;m like, &apos;I can&apos;t think about that today&apos;&#x201D; - Jeff Bezos</blockquote><p><strong>Meditating</strong></p><p>The other helpful thing for this was meditating. Usually, 5-10 minutes was all I needed. Then, no distractions like phones, social media, or work for 30 minutes to an hour. Block out time to let your mind ponder and not get injected with stimulus and external ideas. There will be time for that later but you need to let your mind be free. Give your subconscious time to connect and present you with high-quality thoughts.</p><h3 id="speed-vs-accuracy">Speed vs Accuracy</h3><p>Before you start thinking about your decision it&#x2019;s key to know what you&#x2019;re optimizing for. </p><p>Oftentimes, the optimal solution is not the &#x201C;optimal&#x201D; decision. It&apos;s the best decision you can make in the least amount of time. The 80/20 rule applies here. </p><p>Make a quick decision and you can always fix it in the future. By taking too long you actually can get a suboptimal solution, the iron cools.</p><p>Other times you need to make a bigger decision that&apos;s tough to change once made. These require a lot more time and mental power. But, these are often very rare and most decisions actually fall into bucket one.</p><h3 id="questions">Questions</h3><p>Reality has all the answers, we just need to ask it the right questions.</p><p>With the right question, solutions seem to magically appear. The issue is the mind has trouble reframing problems to unlock answers.</p><p>Frameworks are helpful to overcome this problem. There are so many useful frameworks but I&#x2019;m only going to share three that I love. One for life, one for work, and one for general use.</p><p>For life, ask yourself the question: &#x201C;<em>If my child were to make this decision, what would I hope they&#x2019;d do</em>&#x201D;. I covered this a bit in <a href="https://marcog.xyz/learning-chinese/">my last post</a> but it&#x2019;s a great question to separate yourself from the problem. It allows you to approach the problem from a place of care, love, and desire to be happy long term. Something we can often forget to do even though it&#x2019;s what we&#x2019;re after.</p><p>For work, ask yourself the question: &#x201C;<em>In 10 years, what decision would someone in my position wish I made</em>&#x201D;. The question allows you to zoom out and view the problem on a larger time horizon. You prioritize longer-term solutions and &#x201C;helping&#x201D; a future teammate. Sometimes the right solution must prioritize the short term to ensure there is a long term. This question helps you think like an owner.</p><p>A hard part of decisions is that there are often a ton of variables. The good part is there are only a few that matter. Finding which matter is essential. The question I love for this is: &#x201C;<em>What variables would have to change for me to change my mind</em>&#x201D;. This separates signal from noise. With fewer variables, your decision becomes a lot easier to make.</p><h3 id="board-of-directors">Board of Directors</h3><p>Public companies have a board of directors to look after the best interests of the owners. Having your own board of directors is invaluable. One walk, call, or exchange can help you get your bearings and allow you to see reality much clearer. Ensure they&#x2019;re <u>people you respect</u>, <u>have good judgment</u>, and <u>have your best interests in mind</u>.</p><p>Go for quality over quantity. If they don&#x2019;t pass any of the three checks above, don&#x2019;t allow them in. Less quality advice is better than a lot of meh advice. No advice is better than bad advice. A quick rule of thumb is to get advice from someone who&#x2019;s done what you want or someone you&#x2019;d change places with.</p><h3 id="moving-on-and-getting-over">Moving On and Getting Over</h3><p>When the decision gets made, put it on a shelf and let it be. Then turn your attention to the next decision and keep moving forward.</p><h3 id="conclusion">Conclusion</h3><p>I could write so much more about this topic but these are the methods I&#x2019;ve been using as of late. <strong>It all comes down to a clear mind and a clear way of looking at reality</strong>. When that&#x2019;s the case, it&#x2019;s easier to be decisive and up the odds of making a high-quality decision.</p>]]></content:encoded></item><item><title><![CDATA[Xuéxí Zhōngwén]]></title><description><![CDATA[<p>I asked myself a question: if I had to raise a child today, what are the few useful skills that I&apos;d impart to them to learn.</p><p>I thought for a bit and three skills seemed like clear winners. <a href="https://marcog.xyz/on-reading/">Habitual reading</a>,<a href="https://marcog.xyz/cheat-codes-for-landing-a-job/"> coding</a>, and speaking Mandarin. The first two I</p>]]></description><link>https://marcog.xyz/learning-chinese/</link><guid isPermaLink="false">626f561c4382b50c471d722e</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Mon, 02 May 2022 12:00:00 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.02.04-AM.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.02.04-AM.png" alt="Xu&#xE9;x&#xED; Zh&#x14D;ngw&#xE9;n"><p>I asked myself a question: if I had to raise a child today, what are the few useful skills that I&apos;d impart to them to learn.</p><p>I thought for a bit and three skills seemed like clear winners. <a href="https://marcog.xyz/on-reading/">Habitual reading</a>,<a href="https://marcog.xyz/cheat-codes-for-landing-a-job/"> coding</a>, and speaking Mandarin. The first two I have learned and spoken about, but the third?</p><p>China is on the rise. Their GDP and influence on the world stage are impossible to ignore. Their economy, technology, and manufacturing capabilities are vital to modern life. With over a billion people speaking Mandarin, it unlocks a new world.</p><p>If these skills are valuable for my hypothetical child, they would be valuable for me. &quot;Practice what you preach&quot;.</p><h3 id="how-i-started">How I Started</h3><p>I figured this year is as good a time as any to start. The years are gonna pass, might as well start now. It became even more of a reality when my girlfriend got me lessons with a teacher in Beijing. Lina is awesome and I love doing classes with her.</p><p><strong>Class examples</strong></p><p>Our lessons consist of a PowerPoint and practicing pronunciation and new words. Right now I&#x2019;m learning Pinyin, which is the romanized version of Chinese. This simplifies things. One can learn pronunciation and reading before going to characters.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.03.26-AM.png" class="kg-image" alt="Xu&#xE9;x&#xED; Zh&#x14D;ngw&#xE9;n" loading="lazy" width="1558" height="1010" srcset="https://marcog.xyz/content/images/size/w600/2022/05/Screen-Shot-2022-05-02-at-12.03.26-AM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/05/Screen-Shot-2022-05-02-at-12.03.26-AM.png 1000w, https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.03.26-AM.png 1558w" sizes="(min-width: 720px) 720px"></figure><p>Chinese is very dependent on pronunciation. Monotone is not a thing. In our first lesson, I learned the basic building blocks of the language. I&#x2019;m unskilled, but with time I know I&#x2019;ll improve.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.03.03-AM-1.png" class="kg-image" alt="Xu&#xE9;x&#xED; Zh&#x14D;ngw&#xE9;n" loading="lazy" width="1556" height="1056" srcset="https://marcog.xyz/content/images/size/w600/2022/05/Screen-Shot-2022-05-02-at-12.03.03-AM-1.png 600w, https://marcog.xyz/content/images/size/w1000/2022/05/Screen-Shot-2022-05-02-at-12.03.03-AM-1.png 1000w, https://marcog.xyz/content/images/2022/05/Screen-Shot-2022-05-02-at-12.03.03-AM-1.png 1556w" sizes="(min-width: 720px) 720px"></figure><p><strong>I&apos;m so bad and this is embarrassing</strong> &#x1F602; but here is what part of a lesson looks like:</p><figure class="kg-card kg-embed-card"><iframe src="https://player.vimeo.com/video/705245174?h=f620555798&amp;app_id=122963" width="426" height="226" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="Learning Chinese"></iframe></figure><p>In our last lesson, we finished learning Finals and Initials. These are essential to read and pronounce Pinyin/Chinese. Though reading is helpful, my top priority is to be able to speak with a stranger.</p><p>Going forward I&#x2019;ll continue to do lessons and then do some hacking. Tim Ferriss&apos;<a href="https://tim.blog/2009/01/20/learning-language/"> efficient way of learning a language</a> seems worth giving a try. I&#x2019;ll post some updates when I hit another milestone.</p><h3 id="takeaways">Takeaways</h3><p>I was always <em>terrible</em> at learning languages. This feels different. The lightness of not worrying about grades has completely changed my experience. It&#x2019;s so freeing to learn out of enjoyment. I&#x2019;m optimizing discovery and not an outcome. So many times in the lesson I feel like an idiot. But knowing that I&#x2019;ll get better and don&apos;t have a hard deadline feels great. I smile almost the whole lesson, laugh at myself, and enjoy the process that is learning.</p><p>Another language is also a semi-superpower. One of the biggest benefits of learning a new language? <a href="https://irl.umsl.edu/cgi/viewcontent.cgi?article=1016&amp;context=oer">A new way to think</a>. Language plays a large role in people&#x2019;s personalities and how they think about life. It&#x2019;s a &#x201C;<a href="https://www.youtube.com/watch?v=8CrOL-ydFMI">this is water</a>&#x201D; situation that people who only speak one language can&#x2019;t see. I&#x2019;m nowhere near this point but excited to get there.</p><p>Sure machine learning may make learning languages irrelevant. I&#x2019;m not sure how far off that is and how native it will feel. The world is also becoming more global. English or another language can become the &quot;reserve language&quot; (if it&apos;s not already). Until then, I&#x2019;ll spend time enjoying this Human journey of learning a language.</p><p>Z&#xE0;iji&#xE0;n!<br></p>]]></content:encoded></item><item><title><![CDATA[How To Start a Blog]]></title><description><![CDATA[<p>A few friends of mine want to start a blog. I figured this is a good guide to share with everyone on how to start a blog.</p><p>There are two routes: use a service or self-host. </p><p>Services for a blog are SquareSpace, WordPress, Ghost, Substack, etc. They&#x2019;re great</p>]]></description><link>https://marcog.xyz/how-to-start-a-blog/</link><guid isPermaLink="false">625f48304382b50c471d7178</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sat, 23 Apr 2022 01:32:12 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/04/Minimal-Photocentric-Productivity-Blog-Banner.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/04/Minimal-Photocentric-Productivity-Blog-Banner.png" alt="How To Start a Blog"><p>A few friends of mine want to start a blog. I figured this is a good guide to share with everyone on how to start a blog.</p><p>There are two routes: use a service or self-host. </p><p>Services for a blog are SquareSpace, WordPress, Ghost, Substack, etc. They&#x2019;re great options because they have everything set up. Databases, emails, forms, decent designs and are fairly cheap. The downsides are that you&#x2019;re: <br><br>1. tied to one platform<br>2. Less customization<br>3. It&#x2019;s pricier than self-hosting<br>4. I&#x2019;ll cover the biggest issue later</p><p>Self-hosting options are: build from scratch, WordPress, Drupal, Ghost, etc. You also need to host your site on some cloud provider like AWS, Google Cloud, Digital Ocean, Bluehost, or even your own server. </p><p>The upside is more customization, cheaper, and the big point that I&#x2019;ll get to in a minute. The downsides are more work, less support, and some technical ability.<br><br><strong>For most people, I&#x2019;d say your best bet is to use a service and not think twice.<br></strong><br>If you&#x2019;re technical or care a lot, I&#x2019;d highly recommend self-hosting. Why? This is the big point: it&#x2019;s all about root access. When you self host it&#x2019;s a little bit of a pain, but no one can cancel you. There are no community guidelines, your blog can&apos;t be shut down by a site. <br><br>Note, that a cloud provider COULD shut you down. But, when you make a backup you can always move to another provider. </p><p>Another very solid option is <a href="https://mirror.xyz/">Mirror.</a> It stores your posts on the Ethereum blockchain. But, at the moment it&apos;s only for writing.</p><h3 id="how-to-setup-your-blog">How to Setup Your Blog<br></h3><p>I use <a href="https://github.com/TryGhost/Ghost">Ghost</a>, which is a headless CMS and handles all your blog needs. It&#x2019;s slick, open-source, and will fit all your needs! To host the blog I use Digital Ocean, it&#x2019;s cheap, easy to set up with Ghost, and works how you&#x2019;d expect.<br><br>Let&#x2019;s get started!<br><br>Go to Digital Ocean and use <a href="https://m.do.co/c/1cdd99e270fe">this link</a> to get a free $100 in credit (after you spend $25 I&#x2019;ll get $25). Once you&#x2019;re all set up, go to <a href="https://marketplace.digitalocean.com/apps/ghost">this link</a> on Digital Ocean and set up a Ghost Droplet. This does all the work for you of getting the server provisioned and everything set up. It&#x2019;s $6 a month and will handle all the traffic you can drive to it.<br><br>Once that&#x2019;s done it&#x2019;s time to get a domain name. You can use CheapDomains, GoDaddy, or use a domain name you have. I like <a href="https://domains.google/">Google Domains</a>, it&#x2019;s super easy to use and I like having things all in one place. <br><br>Once that&#x2019;s set up, go back to DigitalOcean and select your droplet. Click on <u>Add A Domain:</u></p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-19-at-6.35.06-PM.png" class="kg-image" alt="How To Start a Blog" loading="lazy" width="496" height="532"></figure><p>Type your domain name and everything should fill in!<br><br>Next, go to <a href="https://docs.digitalocean.com/tutorials/dns-registrars/#registrar-google-domains">this</a> link to see how to set up your domain on Google Domains. It will point your domain to your Digital Ocean Droplet.<br><br>Once that&#x2019;s all set up you should go to your domain &lt;blahblah&gt;.&lt;blah&gt; (sometimes it takes a few hours) and see this:</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-19-at-6.57.24-PM.png" class="kg-image" alt="How To Start a Blog" loading="lazy" width="2000" height="834" srcset="https://marcog.xyz/content/images/size/w600/2022/04/Screen-Shot-2022-04-19-at-6.57.24-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/Screen-Shot-2022-04-19-at-6.57.24-PM.png 1000w, https://marcog.xyz/content/images/size/w1600/2022/04/Screen-Shot-2022-04-19-at-6.57.24-PM.png 1600w, https://marcog.xyz/content/images/size/w2400/2022/04/Screen-Shot-2022-04-19-at-6.57.24-PM.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Nice! So the last main thing to do is to set up Ghost. Go back to Digital Ocean, and access the console (don&#x2019;t worry you got this). Click here:</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-19-at-6.35.06-PM-copy.png" class="kg-image" alt="How To Start a Blog" loading="lazy" width="496" height="532"></figure><p>Once you click that the command line will open up and it&#x2019;ll start installing Ghost.</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-19-at-6.47.25-PM.png" class="kg-image" alt="How To Start a Blog" loading="lazy" width="2000" height="706" srcset="https://marcog.xyz/content/images/size/w600/2022/04/Screen-Shot-2022-04-19-at-6.47.25-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/Screen-Shot-2022-04-19-at-6.47.25-PM.png 1000w, https://marcog.xyz/content/images/size/w1600/2022/04/Screen-Shot-2022-04-19-at-6.47.25-PM.png 1600w, https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-19-at-6.47.25-PM.png 2380w" sizes="(min-width: 720px) 720px"></figure><p>Then you&#x2019;ll need to enter an email. It&#x2019;s for SSL so any will do. Then you need to enter your domain. Make sure it&#x2019;s your real domain name like &lt;blahblah&gt;.&lt;blah&gt;, not your server&#x2019;s IP address.<br><br>It should be complete and you should be all good to go!<br><br>Go to &lt;blahblah&gt;.&lt;blah&gt;/ghost. It&#x2019;ll ask you to create an account. Keep this secure somewhere, you&#x2019;ll need it to access the portal.<br><br>Time to write!</p><p>P.s. if you got stuck, there&apos;s another good guide <a href="https://blog.stephsmith.io/setting-up-blog-with-ghost-and-digital-ocean-droplet/">here</a>.</p><h2 id="take-your-blog-to-the-next-level">Take your blog to the next level <br></h2><p></p><p><strong>Mailgun</strong></p><p><a href="https://www.mailgun.com/">Mailgun</a> is an <u>essential addition</u>. This will allow people to subscribe to your blog and for you to email them. It is a little confusing and this could be a whole blog post in itself. Instead, I&#x2019;ll point you to this helpful video:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/aljYjRylkyM?start=1179&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>Your mailing should all be set up!</p><p><strong>Google Analytics</strong></p><p><a href="https://analytics.google.com/">Google Analytics</a> gives you all the data you need to understand how your site is doing. The best guide is from Ghost itself <a href="https://ghost.org/integrations/google/">here</a>. This shouldn&#x2019;t take very long and you&#x2019;ll be really happy when you see that people are checking out your site!</p><p><strong>Disqus</strong></p><p><a href="https://disqus.com/">Disqus</a> isn&#x2019;t essential but is a nice touch. It allows you to have comments on your blog and is free. Ghost has their own guide <a href="https://ghost.org/integrations/disqus/">here </a>which is great. This is a little more technical and you can get away without it.<br><br>I know I know, it takes a bit to get everything up and running. The nice thing is, from here it&#x2019;s pretty hands-off.<br><br>Happy creating!<br><br>If you want some more upgrades I wrote about them <a href="https://marcog.xyz/blog-upgrade/">here</a>!</p>]]></content:encoded></item><item><title><![CDATA[The Self-Writing Resume]]></title><description><![CDATA[<p>I was reviewing a friend&#x2019;s resume and it was very clear. The same language is used to describe work experience. Most of the time it&apos;s vague and not eyebrow lifting. So why should someone spend time writing this. Let&#x2019;s let AI/computers handle this.</p>]]></description><link>https://marcog.xyz/automate-a-resume/</link><guid isPermaLink="false">62523c444382b50c471d70ec</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sun, 10 Apr 2022 12:39:29 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-09-at-10.13.57-PM.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-09-at-10.13.57-PM.png" alt="The Self-Writing Resume"><p>I was reviewing a friend&#x2019;s resume and it was very clear. The same language is used to describe work experience. Most of the time it&apos;s vague and not eyebrow lifting. So why should someone spend time writing this. Let&#x2019;s let AI/computers handle this.</p><p>The tool for the job? <a href="https://openai.com/api/">OpenAI&#x2019;s GPT-3 Model</a>. <a href="https://en.wikipedia.org/wiki/GPT-3">The model</a> is a beast. It was trained on 45TB of data and has the capacity for 175 billion parameters. It can generate anything text based, copywriting, guitar tabs, and even code. It powers products like <a href="https://copilot.github.com/">GitHub Copilot</a> and <a href="https://www.copy.ai/">Copy.ai</a>.</p><p>OpenAI makes the model accessible through their <a href="https://beta.openai.com/docs/introduction">API</a>. I created an account and was able to use ~$20 of free credit (I only used a few cents). I got coding and once again used <a href="https://codesandbox.io/">codesandbox</a> to host my project.</p><p>My first goal was simple: write a tiny description of what you did at work. Then the model generates the full &#x201C;resume worthy&#x201D; description. I had to mess around a little bit but before long:</p><figure class="kg-card kg-embed-card"><iframe src="https://player.vimeo.com/video/697874053?h=73cdac6955&amp;app_id=122963" width="474" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="AI Resume Builder"></iframe></figure><p>Check out the code and try it out <a href="https://codesandbox.io/s/thirsty-shape-wjmkg9?file=/src/gp3.js">here</a> (you will need your own API key which can be created <a href="https://beta.openai.com/signup">here</a>)</p><p>This was so cool, the model is so powerful! Also, linking up with the API is straightforward! I loved what I had but writing a description!? Way too much work for your average lazy engineer.</p><h3 id="enter-v2">Enter V2</h3><p>Most of our work as engineers lives on GitHub. The best part? We write good descriptions of the work we do in commit messages (in theory &#x1F642;).</p><p>So here&apos;s the idea: </p><p>1. Take someone&#x2019;s commits in their main repo<br>2. Gather all the commit messages<br>3. Use the OpenAI model to summarize the commits</p><p>Sweet, game-plan down, now time to build. I poked around the <a href="https://docs.github.com/en/rest">GitHub API</a> and found what I needed. Next I forked my project ^ and made some tweaks. A little code here, a little duct tape there, and V2 was done! Here were the results:</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-12-at-8.52.34-PM.png" class="kg-image" alt="The Self-Writing Resume" loading="lazy" width="2000" height="937" srcset="https://marcog.xyz/content/images/size/w600/2022/04/Screen-Shot-2022-04-12-at-8.52.34-PM.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/Screen-Shot-2022-04-12-at-8.52.34-PM.png 1000w, https://marcog.xyz/content/images/size/w1600/2022/04/Screen-Shot-2022-04-12-at-8.52.34-PM.png 1600w, https://marcog.xyz/content/images/2022/04/Screen-Shot-2022-04-12-at-8.52.34-PM.png 2330w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-embed-card"><iframe src="https://player.vimeo.com/video/697873758?h=ae5f3f98e3&amp;app_id=122963" width="504" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="GitHub Resume Builder"></iframe></figure><p>Check out the code and try it out <a href="https://codesandbox.io/s/ecstatic-night-1fp0q6">here</a> (you will need your own API key which can be created <a href="https://beta.openai.com/signup">here</a>)</p><p>I was super happy with the results! Going forward I&#x2019;d love to improve the stop sequence so only full sentences are returned. I&apos;d also probably use a loop to call out to GitHub to get all commits, not just the last ten.</p><p>I&#x2019;m blown away by GPT-3 and am already on the waiting list to mess around with their image generating model DALL-E 2.</p><p>Bonus: Here are some more screen shots!</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/club_gpt3.png" width="1378" height="568" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/club_gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/club_gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/club_gpt3.png 1378w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/horse_gpt3.png" width="1404" height="652" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/horse_gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/horse_gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/horse_gpt3.png 1404w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/trainer__gpt3.png" width="1108" height="820" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/trainer__gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/trainer__gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/trainer__gpt3.png 1108w" sizes="(min-width: 720px) 720px"></div></div><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/data_analysis_gpt3.png" width="1400" height="668" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/data_analysis_gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/data_analysis_gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/data_analysis_gpt3.png 1400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/tech_blog_gpt3.png" width="1090" height="768" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/tech_blog_gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/tech_blog_gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/tech_blog_gpt3.png 1090w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://marcog.xyz/content/images/2022/04/cra_gpt3.png" width="1108" height="800" loading="lazy" alt="The Self-Writing Resume" srcset="https://marcog.xyz/content/images/size/w600/2022/04/cra_gpt3.png 600w, https://marcog.xyz/content/images/size/w1000/2022/04/cra_gpt3.png 1000w, https://marcog.xyz/content/images/2022/04/cra_gpt3.png 1108w" sizes="(min-width: 720px) 720px"></div></div></div></figure>]]></content:encoded></item><item><title><![CDATA[The Art of Not Building]]></title><description><![CDATA[<p>We all love the story of the person who pushes through everything to bring an idea to life. In many respects, it comes from the contrast with our day-to-day experience of how hard it is to do that. When things get tough it&apos;s so easy to give in</p>]]></description><link>https://marcog.xyz/the-art-of-not-building/</link><guid isPermaLink="false">61f2271b68336f0d34752081</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Mon, 04 Apr 2022 10:29:46 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/03/The-Art-of-Not-Building.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/03/The-Art-of-Not-Building.png" alt="The Art of Not Building"><p>We all love the story of the person who pushes through everything to bring an idea to life. In many respects, it comes from the contrast with our day-to-day experience of how hard it is to do that. When things get tough it&apos;s so easy to give in - and often we do. Through trying to turn an idea into a company I realized it doesn&apos;t always have to be a bad thing.</p><p>I hate writing this post because I&apos;ve been so focused on building and creating. Not letting any roadblock get in my way. After this journey, I have a slightly healthier relationship with perseverance.</p><p>My idea is kinda cool (by my account). It&apos;s basically <a href="https://www.m1finance.com/">M1 Finance</a> but for donating.</p><h3 id="idea">Idea<br></h3><p> Here is how it would work:</p><figure class="kg-card kg-image-card"><img src="https://marcog.xyz/content/images/2022/01/Self-Care-Pie-Chart-Infographic.png" class="kg-image" alt="The Art of Not Building" loading="lazy" width="1080" height="1080" srcset="https://marcog.xyz/content/images/size/w600/2022/01/Self-Care-Pie-Chart-Infographic.png 600w, https://marcog.xyz/content/images/size/w1000/2022/01/Self-Care-Pie-Chart-Infographic.png 1000w, https://marcog.xyz/content/images/2022/01/Self-Care-Pie-Chart-Infographic.png 1080w" sizes="(min-width: 720px) 720px"></figure><p>This would allow for seamless giving to causes you care about. So in this case for every dollar that means:</p><p>$0.30 to The Ocean Agency<br>$0.20 to Make A Wish<br>$0.20 to Habitat for Humanity<br>$0.30 to NAACP. </p><p>These percentages could be customized to whatever you&apos;d like. Just as automated passive investing is arguably the best way to invest. Automated passive donating is the best way to give.</p><p>Stripe -&gt; money to us -&gt; disburse to accounts</p><p>We&apos;d take the amount that they&apos;re giving and take out the payment processing fee. Now it&apos;s in our system we break it out by charities. We can have a ledger for each charity where we keep track of donations. Once a week we go through all charities with a balance and pay them out using an API.</p><p>All was good and well! I&apos;d start working on it and before I know it I&apos;d have a launched app! Not so fast.</p><h3 id="issues">Issues<br></h3><p>I spoke with some people about the idea and there was no excitement. One of those people being a CFO of a NGO. What... How could someone not love the idea, aren&apos;t they passionate about giving? Turns out not so much. It also turns out most people prefer to give to one cause they care about. American Cancer Society if they&apos;ve been affected by cancer. The Ocean Agency if they care about the environment, etc. </p><p>An even bigger issue: laws. I spoke with a payments expert at work and I&apos;d likely need a Money Transmitter Licence:</p><p>Money Transmitter - <strong>you must be transmitting money either in the US or abroad on behalf of another person or persons.</strong></p><p>This was spot on. You need to have a $500k surety bond, a lot of documents, and there&apos;s generally a lot of <a href="https://www.jwsuretybonds.com/states/new-york/money-transmitter-license#:~:text=Applicants%20for%20a%20New%20York,NY%20Department%20of%20Financial%20Services.">red tape</a>. This didn&apos;t sound like it could be a fun little side project.</p><h3 id="learnings">Learnings<br></h3><blockquote><strong>&#x201C;People think focus means saying yes to the thing you&apos;ve got to focus on. But that&apos;s not what it means at all. It means saying no to the hundred other good ideas that there are.&#x201D; - Steve Jobs</strong></blockquote><p>Knowing when to kill an idea/project is as important as knowing what to work on. &#xA0;Just because you&apos;re passionate about an idea doesn&apos;t mean you should work on it. I hate giving up. In this case, it was the right move to do. No one wanted the idea and red tape was everywhere.</p><p>Thank you, next.</p>]]></content:encoded></item><item><title><![CDATA[Revolutionizing Milk Frothing At Home]]></title><description><![CDATA[<p>This post is gonna be pretty short. The video I made towards the end is basically a blog-build in video format.</p><p>In the video, I go through various new ways of frothing milk. This seems like an odd thing to work on but let me explain. There is a guy</p>]]></description><link>https://marcog.xyz/reinventing-frothed-milk/</link><guid isPermaLink="false">6240bad74382b50c471d7022</guid><dc:creator><![CDATA[Marco G]]></dc:creator><pubDate>Sun, 27 Mar 2022 19:54:14 GMT</pubDate><media:content url="https://marcog.xyz/content/images/2022/03/RevolutionizingMilk-frothing-at-home--1-.png" medium="image"/><content:encoded><![CDATA[<img src="https://marcog.xyz/content/images/2022/03/RevolutionizingMilk-frothing-at-home--1-.png" alt="Revolutionizing Milk Frothing At Home"><p>This post is gonna be pretty short. The video I made towards the end is basically a blog-build in video format.</p><p>In the video, I go through various new ways of frothing milk. This seems like an odd thing to work on but let me explain. There is a guy on YouTube named <a href="https://www.youtube.com/channel/UCMb0O2CdPBNi-QqPk5T3gsQ">James Hoffman</a> who covers all things coffee. He makes the tiny nuances of coffee both interesting and beautiful. </p><p>In a few episodes, he covers foaming milk. He notes that using a French Press is the best way to get foamed milk at home. The thing is it&#x2019;s such a pain to do, so I had an idea:</p><figure class="kg-card kg-embed-card"><iframe src="https://player.vimeo.com/video/692856299?h=446da76668&amp;app_id=122963" width="640" height="360" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="Revolutionizing Milk Frothing At Home"></iframe></figure><p><strong>TLDW; I use a pump to push milk through the metal mesh of a French Press!</strong></p><p>This is the end of my <a href="https://marcog.xyz/making-videos-p1/">storytelling/video class.</a> I learned so much about what goes into telling a good story. I also learned a ton about what goes into making a higher-quality video. It&apos;s all about keeping attention with great shots, constant cuts, and engaging music. Keep a good pace and have fun - you can tell a story about anything.</p><p>I highly recommend the class. It&apos;s a lot of fun and changed the way I look at storytelling and making videos. There&apos;s no better way to learn than getting your hands dirty!</p>]]></content:encoded></item></channel></rss>