<?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: MEGHAN</title>
    <description>The latest articles on DEV Community by MEGHAN (@meghan).</description>
    <link>https://dev.to/meghan</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F889303%2F0305d175-a9d4-4997-b530-ea431affc18e.png</url>
      <title>DEV Community: MEGHAN</title>
      <link>https://dev.to/meghan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meghan"/>
    <language>en</language>
    <item>
      <title>Product manager: can you add a super simple sign up form today?</title>
      <dc:creator>MEGHAN</dc:creator>
      <pubDate>Sat, 06 Aug 2022 08:13:00 +0000</pubDate>
      <link>https://dev.to/meghan/product-manager-can-you-add-a-super-simple-sign-up-form-today-9nk</link>
      <guid>https://dev.to/meghan/product-manager-can-you-add-a-super-simple-sign-up-form-today-9nk</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I admit, this annoying PM is me. &lt;strong&gt;I hinted to developer that I need a signup form quick, like in 0.5 day. She hinted me back: it is not possible&lt;/strong&gt;. Plus, she is still bug-fixing the last iteration of our product design.&lt;/p&gt;

&lt;p&gt;It was so blunt - her hint, I think she didn't master the 1 single most useful skill when it comes to communicating with product manager, the creatures that are constantly furious onHearing "no can't do" :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Clearly state your capacity without encouraging unrealistic expectations and intimidating at the same time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was &lt;del&gt;disencouraged&lt;/del&gt; intimidated ☹️&lt;/p&gt;




&lt;h2&gt;
  
  
  What's so hard
&lt;/h2&gt;

&lt;p&gt;So I had some frontend development background. Presumptuous enough, I set out to do it myself. There I met with frustratingly numerous obstacles. &lt;/p&gt;

&lt;h3&gt;
  
  
  🙀Git
&lt;/h3&gt;

&lt;p&gt;It's a &lt;strong&gt;himalaya mountain&lt;/strong&gt; in front of every not-everyday-programmer. Git cheatsheet is required every step of the way. Tiptoeing on the ice, trying very hard not to mess up with the branches. It already took me &amp;gt;0.5 day to do just the basics:  branching, config, pull and commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  3️⃣ Vue
&lt;/h3&gt;

&lt;p&gt;Not defeated. I continue.&lt;/p&gt;

&lt;p&gt;Here my outdated knowledge on Vue is challenged. I know vue2 but its a vue 3 era already. I do admit and is learning to admire the beauty of the vue3 by using composition API. I admire how it can accommodate both easy and confusing at the same time. &lt;/p&gt;

&lt;p&gt;you don't need the rigid &lt;code&gt;data{}&lt;/code&gt;, &lt;code&gt;methods{}&lt;/code&gt;, &lt;code&gt;onCreate{}&lt;/code&gt; blablabla anymore - dont know if Evan You the creator got his inspiration from 八股文 (a paradigm fixed style that Ancient Chinese must adhere to when they write official thesis especially in a national test). But then you have &lt;code&gt;ref()&lt;/code&gt;, &lt;code&gt;reactive()&lt;/code&gt; - both can be reactive but with differences. and  &lt;code&gt;const rect = reactive()&lt;/code&gt; rect can't be modified but reactive({property:value}) property can be modified. etc etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Form
&lt;/h3&gt;

&lt;p&gt;Let me fast forward here (Forget about the process of learning the ant-design-vue framework - their documents and codesandbox did help a lot.)&lt;/p&gt;

&lt;p&gt;The real challenge is &lt;strong&gt;product manager should really put some thoughts into the limitations and business purposes behind the "simple" form.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Depending on which ID system we are using, what are the mandatory fields for signup and account creation. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What validation rules should apply to name, password and other mandatory fields?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What to prompt to user when validation fails?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the best practice in terms of filling a form?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;Here are the considerations ( *&lt;em&gt;I'm glad I put myself in shoes of both product manager and developer even if it's at the cost of burning midnight oil. *&lt;/em&gt;)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I think the best practice is real-time validation.&lt;/strong&gt; It should &lt;strong&gt;not be subject to negotiation&lt;/strong&gt;. Ant-design provides quite extensive validation supporting either builtin and custom. There is another plugin I really like - vee-validate. I used ant-design's.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rules applied to all mandatory fields are not empty by default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rules applied to email is builtin and we need not worry about it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rules applied to password is often custom and here is where we enforce our organization's security rules in the business operations.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Two passwords must match and in case either one is changed after validation, the re-validation must happen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;after submit, there is final validation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the demo:&lt;br&gt;
&lt;iframe src="https://codesandbox.io/embed/form-with-custom-validator-ant-design-vue-3-2-10-forked-from"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;if you can't see the preview, here is the screenshot&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HeYjxdEL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dqwakn5f9gf96soitsnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HeYjxdEL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dqwakn5f9gf96soitsnm.png" alt="screenshot of a signup form" width="800" height="923"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;here is the button linked to the &lt;strong&gt;codesandbox&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/form-with-custom-validator-ant-design-vue-3-2-10-forked-from-basic-ant-design-vue-3-2-10-pi8p8l?fontsize=14&amp;amp;hidenavigation=1&amp;amp;theme=dark"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1rJFNpIB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://codesandbox.io/static/img/play-codesandbox.svg" alt="Edit Form with custom validator - ant-design-vue@3.2.10 (forked from Basic ant-design-vue@3.2.10)" width="201" height="42"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final product
&lt;/h2&gt;

&lt;p&gt;Final product is a bit different than just a demo. Our ID system allows accounts to be used across teams so only unregistered email is allowed to be used for account creation, otherwise an invitation will happen instead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DEwceRb---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/coeaki9la9ql6jovexa2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DEwceRb---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/coeaki9la9ql6jovexa2.png" alt="screenshot of account creation" width="800" height="924"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Today's takeaway is an advice for Product manager: &lt;strong&gt;do not attempt to code on your own&lt;/strong&gt;. Downside of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;it's a slap in your face telling you how wrong it was to think its a 1-day thing.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;it doesn't earn respect from programmers cos they be like " what's so hard" " i can do it too, maybe just a bit uglier but who cares". &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;at the end of the day, still one salary for doing two jobs. And the coding still doesn't make up a surviving skill for you should you lose pm job one day. its an expertise requiring expertise focus and dedication.&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>vue</category>
      <category>form</category>
      <category>antdesign</category>
    </item>
    <item>
      <title>Ultimate boost to your programming productivity!</title>
      <dc:creator>MEGHAN</dc:creator>
      <pubDate>Sat, 09 Jul 2022 05:17:34 +0000</pubDate>
      <link>https://dev.to/meghan/ultimate-boost-to-your-programming-productivity-1ek1</link>
      <guid>https://dev.to/meghan/ultimate-boost-to-your-programming-productivity-1ek1</guid>
      <description>&lt;p&gt;&lt;code&gt;macstudio&lt;/code&gt; &lt;code&gt;macos&lt;/code&gt; &lt;code&gt;monterey&lt;/code&gt; &lt;code&gt;zsh&lt;/code&gt; &lt;code&gt;oh-my-zsh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Today is Saturday. I had a &lt;strong&gt;grand&lt;/strong&gt; plan, to replace existing serial-usb cable &amp;amp; drivers in my project, to increase the transmission quality ( current drivers keep giving me scrambled characters when read() from the port). Alright, by the sound of it, it is already huge. And it is indeed, 200%. &lt;/p&gt;

&lt;p&gt;Rolling up sleeves (no, not wearing long-sleeve), shooting down espresso caffeine x3 (sneaked in some milk), I'm ready to go! &lt;strong&gt;yeah!&lt;/strong&gt; &lt;strong&gt;boom!&lt;/strong&gt; &lt;strong&gt;I'm unstoppable!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open up google, type: "serial-usb cable", search, get the top result, then search for android drivers. Shit, it is rar, search for "unzip rar in macos". Tab after tab, hey, wait, what is this?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frd0zq9ibjhwo1x37zq1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frd0zq9ibjhwo1x37zq1g.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Out of I-forgot-where, something caught my eye. In a splitting 0.01 second, I've decided this is what I &lt;del&gt;want&lt;/del&gt; Need!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;search for "zsh git tag"&lt;/li&gt;
&lt;li&gt;found oh-my-zsh theme 'agnoster'&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nano ~/.zshrc&lt;/code&gt; to change theme, a disgusting color label with ? invalid character was displayed.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbytnurzvqm8e84syd8v.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;WTF?&lt;/strong&gt; ( i meant, android way, What A Terrible Failure)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;well, search for solution, noticed that a symbol font should be installed for the character to display correctly : 'powerline'&lt;/li&gt;
&lt;li&gt;search for 'install powerline in macos'&lt;/li&gt;
&lt;li&gt;&lt;p&gt;installed it. did not work: &lt;br&gt;
&lt;code&gt;raise ValueError, 'unknown locale: %s' % localename&lt;br&gt;
ValueError: unknown locale: UTF-8"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;search for fix, set below:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then run &lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;new error. search for solution and decided to set &lt;code&gt;PATH=$HOME/.local/bin:$PATH&lt;/code&gt; in zshrc&lt;/li&gt;
&lt;li&gt;fixed everything but the color of labels is really an eye-sore&lt;/li&gt;
&lt;li&gt;go to the theme file &lt;code&gt;nano ~/.oh-my-zsh/themes/agnoster.zsh-theme&lt;/code&gt; you can tweek the colors&lt;/li&gt;
&lt;li&gt;and open up terminal.app, change the color panel setting from the profile you use. 
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0se3usf5v0sbp6jspg49.png" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Phew! Finally! Ta-da!:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjne5olqfkcuuvsoupgq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjne5olqfkcuuvsoupgq.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do you feel it? you felt it? Coding productivity boooooosted x 100! Level unlocked. Skill tree lit up! &lt;/p&gt;

&lt;p&gt;Well empty stomach calling, gotta go. But wait, I have a vague feeling that I seem to forget something, what is it? &lt;br&gt;
nvm. &lt;/p&gt;

&lt;p&gt;There is always another day. &lt;/p&gt;

&lt;p&gt;Sun rises everyday. &lt;/p&gt;

&lt;p&gt;Rome is not built in one day. &lt;/p&gt;

&lt;p&gt;Work-play balance. &lt;/p&gt;

&lt;p&gt;Peace, love.&lt;/p&gt;




&lt;p&gt;Alright, I wasn't telling the whole story.&lt;br&gt;
here it unfolds:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzzddpakfqd6ucjuinj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzzddpakfqd6ucjuinj7.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2hk2u0nb4jrwgh0tsvy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2hk2u0nb4jrwgh0tsvy.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;In case anybody asks, configure it in VS Code:&lt;br&gt;
Open setting:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1di3bdxxomerp9xw08wl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1di3bdxxomerp9xw08wl.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There you go:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5maxookflpva6xw9g8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5maxookflpva6xw9g8u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
  </channel>
</rss>
