<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael </title>
    <description>The latest articles on DEV Community by Michael  (@msmfa).</description>
    <link>https://dev.to/msmfa</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F363669%2F6a2e2ddb-87bc-4eec-acc9-6f28a1402afc.jpg</url>
      <title>DEV Community: Michael </title>
      <link>https://dev.to/msmfa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/msmfa"/>
    <language>en</language>
    <item>
      <title>I built a macOS app to make JavaScript live-coding interviews less anxiety-inducing</title>
      <dc:creator>Michael </dc:creator>
      <pubDate>Sun, 23 Aug 2026 21:15:57 +0000</pubDate>
      <link>https://dev.to/msmfa/i-built-a-macos-app-to-make-javascript-live-coding-interviews-less-anxiety-inducing-2klh</link>
      <guid>https://dev.to/msmfa/i-built-a-macos-app-to-make-javascript-live-coding-interviews-less-anxiety-inducing-2klh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Live coding interviews have always made me anxious. Really anxious.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a long time, I assumed that was the main reason I struggled with them.&lt;/p&gt;

&lt;p&gt;But recently, I’ve come to the realisation that anxiety is an excuse. I am an anxious person. I always have been, for as long as I can remember. But I was using that as an excuse to hide something I was perhaps less willing to accept: I can be very lazy.&lt;/p&gt;

&lt;p&gt;If I’m honest, it was an excuse to avoid learning things I simply didn’t want to learn because they’re hard, and I don’t like feeling stupid. I’d tell myself these questions weren’t representative of the work I actually do, that memorising low-level implementations wouldn’t make me a better engineer, and that I already knew I was good at my job.&lt;/p&gt;

&lt;p&gt;So, finally, I decided to actually learn the things I'd avoided learning. I'm starting with some JavaScript fundamentals and then will move on to DSA and System Designs.&lt;/p&gt;

&lt;p&gt;Naturally being a software engineer (plus having an unhealthy need to track everything I do and build things that work exactly how I want them to work for me) I decided to build a Mac App to help me master the JavaScript part of what I need to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I had:
&lt;/h2&gt;

&lt;p&gt;I was constantly jumping between lists of interview questions, &lt;a href="https://www.greatfrontend.com/" rel="noopener noreferrer"&gt;GreatFrontend&lt;/a&gt;, browser tabs, a Claude terminal that I would paste my solution into and ask what I got wrong and VS code with copy and paste &lt;code&gt;console.logs&lt;/code&gt; from Claude to validate my answers. After a few days of doing this I was a bit lost as to how much I had learnt, what I was weak on, what I had already covered.&lt;/p&gt;

&lt;p&gt;I wanted this all in one place, so that's what I built. I call it &lt;a href="https://www.practice-pad.app/" rel="noopener noreferrer"&gt;Practice Pad&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Practice Pad?
&lt;/h2&gt;

&lt;p&gt;Practice Pad is a free macOS app for practising 24 of the most commonly asked JavaScript interview questions.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/446xJivsC4E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Each question opens in a live Monaco editor, because I want a real code editor not a web browser with no syntax highlighting etc.&lt;/p&gt;

&lt;p&gt;You can write your solution in JavaScript or TypeScript, run it against the included tests and see exactly what passed or failed. There are progressively harder options for each question with more edge cases.&lt;/p&gt;

&lt;p&gt;When I'm stuck I use the integrated AI panel that uses claude to give me feedback (normally I ask it for some pseudocode first)&lt;/p&gt;

&lt;p&gt;The app also tracks your progress. It has three progress steps. &lt;strong&gt;Tried&lt;/strong&gt;, &lt;strong&gt;Implemented with help (aka Claude)&lt;/strong&gt; and &lt;strong&gt;Completed&lt;/strong&gt;. Seeing those little green ticks for completed is genuinely what keeps me motivated to come back to it day after day.&lt;/p&gt;

&lt;p&gt;It's also got a little Pomodoro timer because that's how I like to structure learning. &lt;strong&gt;25 minutes of learning then a 5 minute break then rinse and repeat.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Monaco?
&lt;/h2&gt;

&lt;p&gt;It provides syntax highlighting, useful editor behaviour and strong JavaScript and TypeScript support. I wanted Practice Pad to feel like somewhere you could genuinely write and work through code, rather than a quiz with a small input field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feg8namd05ilo4oier891.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feg8namd05ilo4oier891.gif" alt="product-code-editor-practice-pad" width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why build a desktop app?
&lt;/h2&gt;

&lt;p&gt;Practice Pad is built with Electron, React and TypeScript.&lt;/p&gt;

&lt;p&gt;Electron allowed me to use the tools I already knew while creating a focused macOS app that can sit alongside the rest of my development environment. I've worked with Typescript and React for 7 years now and have built some Electron apps before. So it seemed like an easy choice.&lt;/p&gt;

&lt;p&gt;I could go into the technical reasons why a desktop app is better suited to this kind of app than a website but the main reason is I just feel like I'm more able to concentrate when I have an app fully open rather than a tab in my browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Has it helped?
&lt;/h2&gt;

&lt;p&gt;I’m not pretending that practising 24 questions will make anxiety disappear. But preparation is one part of the experience I can control.&lt;/p&gt;

&lt;p&gt;My hope is that mastering these concepts through repetition will make me feel better prepared and, in turn, reduce some of the anxiety I experience during live coding interviews.&lt;/p&gt;

&lt;p&gt;Practice Pad is completely free and currently available for Apple Silicon Macs if you'd like to give it a try.&lt;/p&gt;

&lt;p&gt;You can download practice pad from my website &lt;a href="https://www.practice-pad.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’d especially love to hear whether there are any obvious questions I've missed.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>ai</category>
      <category>interview</category>
    </item>
    <item>
      <title>I tried to explain everything in Javascript in 30 words.</title>
      <dc:creator>Michael </dc:creator>
      <pubDate>Wed, 15 Apr 2020 14:01:38 +0000</pubDate>
      <link>https://dev.to/msmfa/i-tried-to-explain-everything-in-javascript-in-30-words-1nl4</link>
      <guid>https://dev.to/msmfa/i-tried-to-explain-everything-in-javascript-in-30-words-1nl4</guid>
      <description>&lt;p&gt;I failed.&lt;/p&gt;

&lt;p&gt;Obviously. &lt;/p&gt;

&lt;p&gt;I've been learning Javascript for around 3 months. In that time I've been in constant conflict. I enjoy building projects, but I'm not knowledgeable enough to implement some of the advanced topics I'm learning into many of my projects. &lt;/p&gt;

&lt;p&gt;So when it came to trying to think of a new project idea, I really wanted to &lt;strong&gt;combine the conceptual side of learning to program with actually building a project that implemented some of the more complex ideas I'd been studying.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And so I came up with something called &lt;a href="https://javascript-in-30-words.netlify.com/" rel="noopener noreferrer"&gt;Javascript in 30 words&lt;/a&gt;. This was my attempt to describe basic and advanced concepts in Javascript in 30 words or less (spoiler alert: I cheated by using photos).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh667zi76iiatnboloe3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh667zi76iiatnboloe3u.png" alt="Alt Text" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;30 words was an arbitrary restriction I placed upon myself. It could have been 40 words or 200. &lt;strong&gt;What was important to me was that I forced myself to explain concepts I thought I already understood; in a way that hadn't been done before.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;During the project I wrote out my notes by hand (a method I find particularly helpful).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fybhm8yig24i9kx6g48vc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fybhm8yig24i9kx6g48vc.jpg" alt="Alt Text" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I iterated over my notes repeatedly until I got to the real core of what I was trying to say. &lt;/p&gt;

&lt;p&gt;Certain topics were easier than I anticipated. For example, I realised recursion was something I had over-complicated in my own mind. When it gets down to brass tacks recursion is simply a function that calls itself. &lt;/p&gt;

&lt;p&gt;Other topics (particularly those that revolved around Object Orientated Programming in Javascript) where a lot more of a challenge to accurately describe in 30 words or less. &lt;/p&gt;

&lt;p&gt;I think this has a lot to do with the difference between functional programming and OOP. OOP is (in my understanding at least) a much more holistic approach to programming. As such it requires a broader understanding of certain elements of Javascript. For example, explaining polymorphism without the context of Prototypal inheritance is a difficult task at best. &lt;/p&gt;

&lt;p&gt;This one one of the main benefits of the project. It really allowed me to hone in on my weaknesses. &lt;/p&gt;

&lt;p&gt;It's not so much that I didn't understand any particular concept, it was that I had viewed each topic in isolation. When I was forced to limit my descriptions my main difficulty was my inability to describe how all these elements are so intrinsically linked. Something that may seem obvious to most, but as someone who's new to programming this revelation helped a lot in progressing my understanding of programming and Javascript. &lt;/p&gt;

&lt;p&gt;In conclusion. While I failed to curtail every definition to 30 words. I did succeed in my other goal; learn more about Javascript!&lt;/p&gt;

&lt;p&gt;As I advance in my Javascript journey I hope to return to the project and refactor it using some of the techniques explained within the project.&lt;/p&gt;

&lt;p&gt;If you'd like to give me some ideas as to where I could use some of the ideas I'd love that! Here is the &lt;a href="https://github.com/msmfa/javascript-in-30" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like the project and would like to follow how it progresses feel free to star the &lt;a href="https://github.com/msmfa/javascript-in-30" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>computerscience</category>
    </item>
  </channel>
</rss>
