<?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: Vaibhav Namburi</title>
    <description>The latest articles on DEV Community by Vaibhav Namburi (@veebuv).</description>
    <link>https://dev.to/veebuv</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%2F154356%2F2a39fb27-eed0-4da9-9979-389276c16ae6.jpg</url>
      <title>DEV Community: Vaibhav Namburi</title>
      <link>https://dev.to/veebuv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/veebuv"/>
    <language>en</language>
    <item>
      <title>Don't learn coding in 2021!</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Tue, 02 Feb 2021 07:14:54 +0000</pubDate>
      <link>https://dev.to/veebuv/don-t-learn-coding-in-2021-1cp5</link>
      <guid>https://dev.to/veebuv/don-t-learn-coding-in-2021-1cp5</guid>
      <description>&lt;p&gt;Yup, I said it. If you're looking to be a programmer, you most likely shouldn't...iiiiiifff you've got certain characteristics and expectations set in mind.&lt;/p&gt;

&lt;p&gt;I've covered those key points in this video.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zXO0TH0GlnI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;After hating coding 10 years ago to now having our products be used by millions of users, generate multiple millions in monthly revenue across our clients - I've learnt a thing or two about those who should learn to code and those who shouldn't&lt;/p&gt;

&lt;p&gt;I've also gone fairly in-depth into why you need to learn how to code and where exactly you can begin!&lt;/p&gt;

&lt;p&gt;I won't spoil the video as I'm sure you'll enjoy it!&lt;/p&gt;

&lt;p&gt;PS feel free to follow on me on &lt;a href="https://twitter.com/veebuv"&gt;twitter.com/veebuv&lt;/a&gt; if you like what you watched&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>15 Reasons Developers Need To Learn UX Design</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Tue, 05 Jan 2021 05:06:09 +0000</pubDate>
      <link>https://dev.to/veebuv/15-reasons-developers-need-to-learn-ux-design-16jl</link>
      <guid>https://dev.to/veebuv/15-reasons-developers-need-to-learn-ux-design-16jl</guid>
      <description>&lt;p&gt;Knowing how to code alone won't be enough 2021 onwards. Understanding the experience layer and intent behind code is vital for developers to progress in their career both technically and laterally. In the end, code is being built to improve the customer's life, and by knowing the basic principles being UX will help developers create better experiences or use tools like &lt;a href="https://bugreporting.co"&gt;bug reporting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today the consumer market is moving towards Omni-channel experience, and the developer and UX designers need to focus more on web and mobile-friendly user experience than ever before. A developer and designer work more closely to provide a better user experience for the website or app they develop. Technical errors on the software are the critical reason for the app deletion. &lt;/p&gt;

&lt;p&gt;Over 90% of the downloaded apps are erased after one use due to poor user experience. Similarly, according to expert's studies, 80% of users never return to a low user experience website. This is why UX design is a crucial factor in software or application development. The user expects extraordinary experience on apps, websites they use every day. They never provide 2nd change on the software. In this article, let's look in detail at why developers want to learn UI/UX design.&lt;/p&gt;

&lt;p&gt;‍&lt;br&gt;
The 15 reasons I've highlighted here for you:&lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interface vs. Experience&lt;/li&gt;
&lt;li&gt;How User Experience Shapes Software Development&lt;/li&gt;
&lt;li&gt;Excellent Ux Design Encourages to Develop of a More User-Centric Product&lt;/li&gt;
&lt;li&gt;Make the Product More Popular With Ux Design. &lt;/li&gt;
&lt;li&gt;Reduce Flaws and Development Cost&lt;/li&gt;
&lt;li&gt;Ux Plays a Vital Role in Software Architecture&lt;/li&gt;
&lt;li&gt;Limited Resource&lt;/li&gt;
&lt;li&gt;Designing in the Browser&lt;/li&gt;
&lt;li&gt;Front End Development &amp;amp; Ux Design&lt;/li&gt;
&lt;li&gt;Ux Can Make You a Better Developer&lt;/li&gt;
&lt;li&gt;Gets Higher Return on Investment (ROI)&lt;/li&gt;
&lt;li&gt;Learn Skills That Complement Your Existing Talents&lt;/li&gt;
&lt;li&gt;Gain Skills That Can’t Be Automated&lt;/li&gt;
&lt;li&gt;Execute Your Code Towards the User Experience&lt;/li&gt;
&lt;li&gt;User Empathy Will Help You Stand Out in the Business Market&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Interface vs. Experience
&lt;/h2&gt;

&lt;p&gt;Before we get down to detail, let's understand the difference between the User Interface (UI) and User Experience (UX).  &lt;/p&gt;

&lt;p&gt;User Interface is anything that the user interacts with the website or app. In another term, UI is the point where the user interacts with the digital product or service. They come in three categories Graphical user interfaces( GUIs), Voice-controlled interface (VUIs), and Gesture-based interfaces. &lt;/p&gt;

&lt;p&gt;Graphical user interfaces: Users interact with electronic devices through graphic icons. The best example is the computer's desktop.&lt;/p&gt;

&lt;p&gt;Voice-controlled interface: Users interact with the application through their voices. E.g., Siri, Alexa, etc.&lt;/p&gt;

&lt;p&gt;Gesture-based interface: Users engage with 3D design spaces through real movements, e.g., Virtual reality (VR) games.&lt;/p&gt;

&lt;p&gt;In contrast, User Experience is the complete look and feel of the website or application. UX is the final impression of the user about the product or service.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How User Experience Shapes Software Development**
&lt;/h2&gt;

&lt;p&gt;UX and UI design are essential for any application development. Five significant reasons show you need to focus more on the design during product development. Research says that the product's experience influences 97% of customer decisions. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When software or application works great but is not user-friendly, people will not prefer to use it. The software has to attract and retain the user. User interface and experience are upfront on the development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lower development costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Identifying the roadblocks and issues in the client experience before development with save you time on modifying code. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster development time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great UX and UI configuration save time in the development cycle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase revenue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;People prefer to download or ready to pay for the application that suits their needs and easy to use. If you develop a product with useful UI and UX will increase the app's purchase or downloading.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better Client retention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;User-friendly apps will keep people returning. The application will become an integral part of their everyday life. If developing a poor UX will leave a lasting impression. The developer has to identify the design problems before deployment.  &lt;/p&gt;

&lt;h2&gt;
  
  
  3. Excellent Ux Design Encourages to Develop of a More User-Centric Product
&lt;/h2&gt;

&lt;p&gt;UX design offers insights about what your users want from the product that you are developing. It is the core point for product design. User research and usability testing at each step of the development prove how the user-friendly product evolved.&lt;/p&gt;

&lt;p&gt;Before product development, conduct user research and speak with the end-users and understand their needs. The study will help to develop the best user experience application or software.&lt;/p&gt;

&lt;p&gt;In the end the builders (in this case developers) need to have an understanding of the outcome of what they’re building.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Make the Product More Popular With Ux Design.
&lt;/h2&gt;

&lt;p&gt;According to statistics, nearly 67% of consumers are more likely to purchase the product if they are happy with their user experience.&lt;/p&gt;

&lt;p&gt;Creating a straightforward user journey or planning the best end-user experience makes client retention and retains the existing customers. This boost in product purchase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bugreporting.co"&gt;bug reporting&lt;/a&gt; is a user feedback tool for websites and apps. It allows users to record full-length video feedback. The application also captures the data to replicate any errors that users face. A BugReporting software is an automatic tool that helps developers and designers view the exact bugs that are user-facing on the UI/UX.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Reduce Flaws and Development Cost
&lt;/h2&gt;

&lt;p&gt;When you combine user's demands in your application's development process, it will considerably decrease UX problems in the later stage of the product journey.&lt;/p&gt;

&lt;p&gt;A basic understanding of UX design will help understand which will not work for the user before product development. Mockups and prototypes will reduce user-related bugs' chances, and it will minimize the development cycle time. The developers can make a clear decision on software development with prototyping.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Ux Plays a Vital Role in Software Architecture
&lt;/h2&gt;

&lt;p&gt;High performance and software stability can only be achieved by the developers. These two are the unsung heroes of user experience design.&lt;/p&gt;

&lt;p&gt;For example, Website visitors will leave the page if they face low page loading. Unnecessary redirects, server delays, heavy images, heavy CSS, HTML, JavaScript files, fancy animated effects or page widgets, etc., may cause inadequate loading speed.&lt;/p&gt;

&lt;p&gt;The developer needs to fix these defects to improve the user experience. Suppose there is a lag in site loading due to server delay. In that case, the coder needs to find suitable hosting for their website. In this way, the developer will enhance the user experience, product accessibility, and usability.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Limited Resource
&lt;/h2&gt;

&lt;p&gt;In many startups or small businesses, there won't be any dedicated resource for design. Developers out there want to tackle projects entirely on their own, who can't afford to hire a designer (or require to spend the money elsewhere). They will be able to learn to design for their products until they identify the valuable resource.&lt;/p&gt;

&lt;p&gt;Another main reason developers need to learn design is to work more effectively with designers. If the developer understands the basic design, it will help create stunning UI and create a better user experience. &lt;/p&gt;

&lt;p&gt;Learning about design improves the relationship between designer and developer. The developer can easily understand the user interface correction that is provided by the designer. Learning makes the developer view the design on the designer's view for the application development. &lt;/p&gt;

&lt;h2&gt;
  
  
  8. Designing in the Browser
&lt;/h2&gt;

&lt;p&gt;Many designers hesitate to perform designing on the browser because they need to know the necessary CSS and HTML programming or codes to create on the browser. That is the specific reason behind why it's an excellent fit for engineers getting into designing.&lt;/p&gt;

&lt;p&gt;There are many tools and browser plugins available today, which assist you in designing the browser. Which makes the developer and designer's life easy. Here are some useful tools for coder and UI/UX designers includes Sketch, Axure, InVision Studio, Craft, Proto.io, Adobe XD, Webflow, Figma, and more &lt;/p&gt;

&lt;h2&gt;
  
  
  9. Front End Development &amp;amp; Ux Design
&lt;/h2&gt;

&lt;p&gt;Not all designers need to know to write coding in contrast to the front-end developer, which doesn't mean it is necessary to know UX. But both the UX design and Front end development work more excellently together. &lt;/p&gt;

&lt;p&gt;If a front-end developer has both, the knowledge will help in creating significant and usable applications. Learning will bridge the gap between the designer and developer and can complete the quality-assured application.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Ux Can Make You a Better Developer
&lt;/h2&gt;

&lt;p&gt;The demand for programming engineers is developing by 22% consistently until 2029. Among all the developers with a special in user experiences are ahead of the job compilation. Users are the priority of any app or web app development, so many recruits look for candidates who have sound knowledge of software development, and UX design is considered more. As a developer, expand your career horizons by continuous learning. A basic understanding of UX design will increase the chance of landing your dream job.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Gets Higher Return on Investment (ROI)
&lt;/h2&gt;

&lt;p&gt;UX impacts client satisfaction; as a result, it will generate higher ROI for the longer term. It is essential to develop the best user experience at the first interaction with your product. &lt;/p&gt;

&lt;p&gt;Best UX design will engage your user with your application and create customer loyalty for your brands. People will also recommend the product if they are satisfied. It will increase your inbound leads and revenue. If the coder doesn't understand, UX's fundamentals will create a negative impact on UI. Research says that companies that spend on UX design can increase a minimum of 30% sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Learn Skills That Complement Your Existing Talents
&lt;/h2&gt;

&lt;p&gt;By learning new skills like UX, you will come out of your comfort zone. Many platforms provide free and paid online courses about user experience design. Here are some of the websites with lessons that help you to upgrade your expertise in designing.&lt;/p&gt;

&lt;p&gt;Coursera: Introduction to User Experience Design &amp;amp; UX Design Fundamentals&lt;/p&gt;

&lt;p&gt;Learnux.io: Course on Usability&lt;/p&gt;

&lt;p&gt;UX Design Institute: Professional Diploma in UX Design&lt;/p&gt;

&lt;p&gt;You can find many similar online courses to grow your expertise in UI and UX design. &lt;/p&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Gain Skills That Can’t Be Automated
&lt;/h2&gt;

&lt;p&gt;‍&lt;/p&gt;

&lt;p&gt;Improve your expertise on the following &lt;/p&gt;

&lt;p&gt;User Empathy: Understanding the customer's need is fundamental to UX design. The developer we need to build a product keeping customer wants in mind.  &lt;/p&gt;

&lt;p&gt;Improve Communication: The understanding of end to end development life cycle will help the coders better communicate among the team and outside of the organization. Better communication will reduce the gap between the development and designing team.&lt;/p&gt;

&lt;p&gt;Prototyping: As a developer also have experience in prototype but not much on UX content. The study shows that 52.1% of designers spend their time on prototyping. If the developer also learns the UX prototype will help the coder to provide a good user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. Execute Your Code Towards the User Experience
&lt;/h2&gt;

&lt;p&gt;See the user persona or client journey map, analyze the UML files associated with the product development, and better understand customer requirements. Without understanding user insight and developing a product feature that doesn't fit the user's need, it will waste time, resources, and money. It will not satisfy end-user needs. &lt;/p&gt;

&lt;p&gt;Most in-house designers coordinate with the development team through the product development lifecycle to ensure quality assurance and avoid technical limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  15. User Empathy Will Help You Stand Out in the Business Market
&lt;/h2&gt;

&lt;p&gt;If you understand the customer requirements and build the solution, it will make more customer satisfaction. User satisfaction will automatically create the possibility of a product's success. &lt;/p&gt;

&lt;p&gt;Many recruiters seek a developer who understands the customer's requirements and developing user-friendly software. Learning UI and UX will help you with actual product development&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;UX design is a fun element of development. Developers with design knowledge can be creative and flexible, logical while building software. Design and development are interdependent. Mastering your expertise in design will encourage you to provide excellent apps continuously. &lt;/p&gt;

&lt;p&gt;The above key points will be helpful to understand why UX design is the core for development. Upskill yourself and become a better developer. Its 2021, the age of the generalised specialist, especially in smaller work environments your ability to join to skills that are co-dependent but have large communication gaps will be highly respected and will be highly sought after&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>programming</category>
      <category>ux</category>
    </item>
    <item>
      <title>7 Vital AWS Concepts easily explained</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Thu, 28 May 2020 03:46:47 +0000</pubDate>
      <link>https://dev.to/veebuv/7-vital-aws-concepts-easily-explained-n45</link>
      <guid>https://dev.to/veebuv/7-vital-aws-concepts-easily-explained-n45</guid>
      <description>&lt;p&gt;Let's face it, AWS can make you pull your hair out if you don't understand what's happening.&lt;/p&gt;

&lt;p&gt;Scratch that, that's programming in general.&lt;/p&gt;

&lt;p&gt;What I'm about to share with you is basically what I wish I knew 4 years ago when I was working at a company as the only dev and they told me these exact words:&lt;/p&gt;

&lt;p&gt;"Hey V, We've decided to move to AWS, and the old dev quit, can you help"&lt;/p&gt;

&lt;p&gt;Seems like a straightforward sentence, but what followed was a lot of stress. Stress because as someone who always did front end and some backend work, I wasn't fully aware of deployment infrastructures or devops systems&lt;/p&gt;

&lt;p&gt;So this quick, and (what I think) simple guide, is to give you, an overview of AWS (conceptually) that I wish I had when I started - this is not a setup tutorial (that will come later)&lt;/p&gt;

&lt;p&gt;40 Apps deployed, millions of requests maintained and an &lt;a href="https://cenario.co" rel="noopener noreferrer"&gt;AI startup&lt;/a&gt; later, here we go:&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an EC2? How does it work?
&lt;/h2&gt;

&lt;p&gt;This is one of the building blocks of AWS. You will definitely interact with an EC2 instance at some point in your AWS journey provided you're not going completely serverless (more on this later).&lt;/p&gt;

&lt;p&gt;EC2 stands for Elastic Cloud Compute, and it's an AWS service that provides you with a server (like a box, a MacBook without a screen) to run your application. You get to decide all sorts of configurations, memory, box size and power. But in short, it is a server with a public IP address (if you want it to be public) as well as an HTTP address&lt;/p&gt;

&lt;p&gt;Once you build an EC2 instance, you can access it by SSHing into the box, i.e the equivalent of username and password into the server. Once inside you can do anything you want in a server&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run node jobs&lt;/li&gt;
&lt;li&gt;Do a hello world application&lt;/li&gt;
&lt;li&gt;Launch a server&lt;/li&gt;
&lt;li&gt;Route your server localhost:3000 to the outside world using NGINX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS if you're wondering how the configuration is set up, AWS has this concept called Amazon Machine Images, which are basically "blueprints" for server configurations&lt;/p&gt;

&lt;p&gt;You might wonder, who decides what data goes in/out of the server and this is dependant upon the security group your EC2 belongs to as well as the VPC ACL (this will be in a follow up blog)&lt;/p&gt;

&lt;p&gt;PPS: With EC2 you can also run a "spot server", let's say you want to do a job once a week but don't want to pay for the server the whole time, a spot server basically turns on, charges you for the time it's operating, performs the task and then turns off. Saving you $$$&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS S3
&lt;/h2&gt;

&lt;p&gt;S3 is fantastic if you treat it right. Amazon S3 stands for Amazon Simple Storage Service (hope you're picking up their vibe with numbers in the abbreviations)&lt;/p&gt;

&lt;p&gt;S3 is a programmatic dropbox. You can upload photos, videos, JSON, gzips, entire frontend web projects and let it get served via a public URL. It is also used for holding versions of your server when you're trying to auto-deploy your server using github or bitbucket (more on this later) - basically, it can host a heap of different s**t&lt;/p&gt;

&lt;p&gt;The most common uses I've had for S3 have been 2 fold. One to host assets uploaded by users (if your customers upload a profile photo etc for example) and the second to serve my actual frontend website.&lt;/p&gt;

&lt;p&gt;See S3 has this magical feature where it lets you upload the (for eg) the dist file of your Vue/React/Angular project into an S3 bucket and serve it to your customers. You can do this quite literally by routing your S3 URL (which they create for you automatically) with a CNAME you set up on godaddy or any hosting service.&lt;/p&gt;

&lt;p&gt;In order for you to "Authenticate" or "secure (put https)" your S3 bucket website URL, you'll need to associate it with something called CloudFront (I know, F me so many things) which is Amazons CDN network, this service allows for you connect your actual custom domain "banana.com" to the S3 bucket by providing the S3 bucket as an "origin".&lt;/p&gt;

&lt;p&gt;I won't go into the benefits of a CDN, so if your S3 bucket is a public-facing bucket, I wouldn't see why you wouldn't make it part of a CDN network (content delivery network) to pace up asset delivery&lt;/p&gt;

&lt;h2&gt;
  
  
  Message Queue Services via SQS
&lt;/h2&gt;

&lt;p&gt;Amazon has its own service (of course) for message queues. If you're not completely aware of what a message queue is, here's my way of understanding it.&lt;/p&gt;

&lt;p&gt;If you've ever stood in line at a McDonalds, you see this little holding area where there are bags of food sitting around waiting to be distributed by a staff member.&lt;/p&gt;

&lt;p&gt;That is the queue, and the message (i.e the food) can only be processed once (i.e once a message to make food, or once the food is given to the customer, that's it)&lt;/p&gt;

&lt;p&gt;Message queues are a form of async communication, the main role of Message Queues is to batch large loads of work, smoothen spiky workloads, and decouple heavyweight tasks (large cron job processing)&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%2Fi%2Fhfvcrieybwc30y7cn1g1.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%2Fi%2Fhfvcrieybwc30y7cn1g1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Image credits AWS)&lt;/p&gt;

&lt;p&gt;Queue services are used extensively in modern architecture to speed up application build and also simplify the process of building apps. Modern-day builds include several micro-services that are isolated from each other and SQS allows for data to be transferred from a producer (the one sending a message) to the consumer (the receiver) in fast and effective way. Since its async, there are no "thread blockages" that happen therefore stopping the entire service.&lt;/p&gt;

&lt;p&gt;Going back to the McDonalds example, imagine how crap the service would be if only one order can be delivered at a time, and until one order is delivered the other can begin.&lt;/p&gt;

&lt;p&gt;The process effectively works by sending and receiving message signals, the producer sends a message by adding a task to the queue (putting an order on the delivery table at an McDs) the message sits on that table until a receiver takes the message and does something with it (give it to the customer)&lt;/p&gt;

&lt;p&gt;You might ask, okay how does this work when there are one producer and many receivers, this is called a Pub/Sub system (Publish/Subscribe)&lt;/p&gt;

&lt;p&gt;An example would be, if a sale is made on a Shopify store, there would be multiple services hooked into that "topic of a sale" to perform multiple, different/isolated tasks. For eg. Send a Slack notification to the shop owner, print out an order label, trigger an email sequence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Load Balancers
&lt;/h2&gt;

&lt;p&gt;The name says it all, a Load Balancer's job is to sit on top of a network of (for this example) EC2 boxes and check to see if each server is currently on overload or not.&lt;/p&gt;

&lt;p&gt;If a server is on overload, the job of the load balancer is to divert traffic to the next closest available server.&lt;/p&gt;

&lt;p&gt;You might wonder, wait what if I have an open socket with a server behind the load balancer, how is that session magically maintained/transferred across to a whole new server running in parallel. The answer is if you do have situations like this, AWS Application Load Balancer is smart enough to sustain ongoing sessions (Just need to tick the make it sticky checkbox when creating a load balancer)&lt;/p&gt;

&lt;p&gt;Another use case of load balancers is that they provide you with a SSL certified endpoint (don't need to add your own at least during testing), you can expose this route via a CNAME or a Masked route (&lt;a href="https://server.myapp.com" rel="noopener noreferrer"&gt;https://server.myapp.com&lt;/a&gt;). At this point, you need to make sure your EC2 instances are only accessible internally (i.e remove any external IP access), this will make sure that any security threat is isolated to minimal points of entry&lt;/p&gt;




&lt;p&gt;If you've liked reading so far, feel free to &lt;a href="https://twitter.com/@veebuv" rel="noopener noreferrer"&gt;follow me&lt;/a&gt; for heaps more epic content&lt;/p&gt;




&lt;h2&gt;
  
  
  API Gateways
&lt;/h2&gt;

&lt;p&gt;I learnt of API gateways during my quest to set up an SSL for an EC2 server. The first attempt was painful, I tried doing it within the EC2 instance, I was breaking my head (in hindsight, I overcomplicated things) but as a happy surprise, I came to learn of API gateways.&lt;/p&gt;

&lt;p&gt;Think of an API gateway as a proxy, i.e its the middleman that receives your requests, do something to it if you want, and then sends that request to someone else you have no clue about.&lt;/p&gt;

&lt;p&gt;There are many use-cases for API Gateways, but the 2 I'm mentioning, in particular, are acting as a secure proxy for an EC2 instance and second, wrapping a request with auth tokens.&lt;/p&gt;

&lt;p&gt;Have you ever had that experience where you might need to make a request from the front end to a 3rd-party service, but the only way you can access that service is by adding to the request header an auth token, but that auth token is sensitive. You might think you need to go ahead and build an entire server to receive these requests, amend it and then send it to the 3rd party API. That's a very painful way, an easier way is using an API gateway, where it gives you the capability to mutate the request (in a limited way) before you send it off to the 3rd party API&lt;/p&gt;

&lt;h2&gt;
  
  
  Lambda Functions
&lt;/h2&gt;

&lt;p&gt;AWS Lambda functions let you run "functions" in the cloud without needing to maintain a server. The function executes your code only when you need it to (certain time of day, or when it receives a request from somewhere) and it can scale really fast!&lt;/p&gt;

&lt;p&gt;The common use I've seen is mainly to respond to changes in your DB, react to HTTP requests it receives from AWS API gateway.&lt;/p&gt;

&lt;p&gt;So you can treat lambda functions as part of a "serverless" architecture.&lt;/p&gt;

&lt;p&gt;Supply the code to a lambda function, tell it what event it needs to react to and let it run free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon VPC
&lt;/h2&gt;

&lt;p&gt;A Virtual Private Cloud is a private cloud within AWS' public cloud. Think of it as your own little office space inside a WeWork (LOL) which is publically accessible to everyone&lt;/p&gt;

&lt;p&gt;Within that room, you've got own systems set up your own processes and communication layer, however, it can only be accessed via a restricted endpoint i.e the front-door.&lt;/p&gt;




&lt;p&gt;That's all for now, many more of these to come both in the format of a book and soon a course &lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>backend</category>
    </item>
    <item>
      <title>8 Ridiculously Simple Javascript Tricks Not Taught on Tutorials</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Thu, 07 May 2020 06:54:19 +0000</pubDate>
      <link>https://dev.to/veebuv/8-ridiculously-simple-javascript-tricks-not-taught-on-tutorials-2f7o</link>
      <guid>https://dev.to/veebuv/8-ridiculously-simple-javascript-tricks-not-taught-on-tutorials-2f7o</guid>
      <description>&lt;p&gt;I've been a little busy building &lt;a href="https://cenario.co" rel="noopener noreferrer"&gt;cenario&lt;/a&gt; over the past few months and shining my coding skills again.&lt;/p&gt;

&lt;p&gt;During this period I remembered/learnt a lot of simple tricks that might be useful for beginners or people looking to quickly upgrade their syntax knowledge&lt;/p&gt;

&lt;p&gt;So here we go 🚀:&lt;/p&gt;

&lt;h2&gt;
  
  
  Null checker (optional chaining)
&lt;/h2&gt;

&lt;p&gt;I used to use _.get from lodash, but since a little while I'm using a babel preset to use this pattern&lt;/p&gt;

&lt;p&gt;PS this is available in Node 14, but if you want to use it in your current project you can use the optional chaining babel plugin&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%2Fi%2Fwe77vijkqgvfwgfg7oe3.jpeg" 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%2Fi%2Fwe77vijkqgvfwgfg7oe3.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Destructuring Arguments in a function
&lt;/h2&gt;

&lt;p&gt;It gets a little clunky to reference the same nested variable within the function, that could have been done on the argument level.&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%2Fi%2Fuddujtk7jpsca450bqpl.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%2Fi%2Fuddujtk7jpsca450bqpl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reallocating variables
&lt;/h2&gt;

&lt;p&gt;Naming variables is tougher than people think. Combine that with my low with destructuring, I found it painful that variables would conflict whenever I would destructure. This has been in my pocket for a few years now&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%2Fi%2Fhrve4ze725j3m4f1ms9r.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%2Fi%2Fhrve4ze725j3m4f1ms9r.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Staying away from splice
&lt;/h2&gt;

&lt;p&gt;I've stayed away from splice actively, just from seeing its internal working and knowing how slowly it operates. Yes you can also use splice for 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%2Fi%2F2g57p2sl2mm6wymdk3ff.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%2Fi%2F2g57p2sl2mm6wymdk3ff.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintaining the context of this easily in objects
&lt;/h2&gt;

&lt;p&gt;Super simple shortcut&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%2Fi%2Fqwvdpobbuinmsmh9t52q.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%2Fi%2Fqwvdpobbuinmsmh9t52q.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Typescript without Typescript
&lt;/h2&gt;

&lt;p&gt;Okay I'm kidding, this is not typescript, but hey you can set arguments to be required values, vs doing null checks within the function&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%2Fi%2Fup63bcn2l33bjvzxmzxe.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%2Fi%2Fup63bcn2l33bjvzxmzxe.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Unique array
&lt;/h2&gt;

&lt;p&gt;This is a doozy and has been for so long, lodash has a uniq method too, I used to use that a lot until I remembered good mate JS allows for Sets and Maps (a topic for another day)&lt;/p&gt;

&lt;p&gt;So you can create an array with unique values, in a very performant way, and in a clean way using Sets&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%2Fi%2Fo2axy1ygg1tpwki1nron.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%2Fi%2Fo2axy1ygg1tpwki1nron.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Default away
&lt;/h2&gt;

&lt;p&gt;Sometimes you want to ensure there's at least some default value set to the arguments of your function&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%2Fi%2F1x2x43jrmairpa38hyc8.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%2Fi%2F1x2x43jrmairpa38hyc8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;There you go, all simple things and most importantly they don't ruin readability (like many hacks)&lt;/p&gt;

&lt;p&gt;Hope you enjoyed this! Looking forward to getting more active again!&lt;/p&gt;

&lt;p&gt;twitter: &lt;a href="//twitter.com/@veebuv"&gt;twitter.com/@veebuv&lt;/a&gt;&lt;br&gt;
linkedin: &lt;a href="//linkedin.com/in/vaibhavnamburi"&gt;linkedin.com/in/vaibhavnamburi&lt;/a&gt;&lt;br&gt;
instagram: &lt;a href="https://instagram.com/_veebuv" rel="noopener noreferrer"&gt;_veebuv&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>es6</category>
      <category>showcode</category>
    </item>
    <item>
      <title>6 Easy ways to launch your startup to a MASSIVE audience</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Wed, 26 Feb 2020 23:51:59 +0000</pubDate>
      <link>https://dev.to/veebuv/6-easy-ways-to-launch-your-startup-to-a-massive-audience-16jg</link>
      <guid>https://dev.to/veebuv/6-easy-ways-to-launch-your-startup-to-a-massive-audience-16jg</guid>
      <description>&lt;p&gt;If you’re fortunate enough to have an audience that already from being active on social media or just being great at storytelling, kudos to you.&lt;/p&gt;

&lt;p&gt;You’ve got people who care about your thoughts and will listen when you&lt;br&gt;
speak.&lt;/p&gt;

&lt;p&gt;If you’re reading this while your product is in development, get started NOW! Get online, get on LinkedIn, TikTok, Youtube, and start sharing knowledge bits on things you know that will make the lives of people better . Trust me, you know something, often people fall into the trap of “Obvious Knowledge,” where they think that other people “Obviously” know what they know, here’s some news for you - nothing could be further from the truth!&lt;/p&gt;

&lt;p&gt;There will always be someone who knows less than you and you will always know less than someone else. It’s up to you to share that knowledge and eventually the audience that respects what you share and talks about will form around you!&lt;/p&gt;

&lt;p&gt;On the topic of launching, there’s definitely no set way to launch your startup, AirBnB for example, kept launching their start-up until it eventually got traction, people hype launches too much . Do you remember when WhatsApp launched? Or go back and think of one of your favourite apps, do you remember when they launched? It’s highly unlikely that you do for most products.&lt;/p&gt;

&lt;p&gt;Products are often discovered via friends and word of mouth, you stumble across them in some blog, or you end up seeing a very attractive ad, you click through, and install the product.&lt;/p&gt;

&lt;p&gt;However, here’s 6 ways you can easily launch your startup with the expectation of good traction in no order:&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Silent launch
&lt;/h2&gt;

&lt;p&gt;Get your product a landing page with the right copy structure . Reach out to targeted customers via LinkedIn, Facebook, or other digital platforms; give your customers a very quick and succinct description of what the product does (follow the PASO strategy for example) .&lt;/p&gt;

&lt;p&gt;This landing page can be simple and be built using tools like Instapage, Landem, Landingpage, Webflow, etc .&lt;/p&gt;

&lt;p&gt;Have one simple CTA, where the customer can subscribe via an email address, and you can reach out to them when they do .&lt;/p&gt;

&lt;h2&gt;
  
  
  2) Friends and family launch
&lt;/h2&gt;

&lt;p&gt;To begin with, make sure the product is actually aimed for them . Don’t build a startup banking solution and give it to your friends and family who have no idea about the problems faced by a startup .&lt;/p&gt;

&lt;p&gt;Ask them to give you very honest and critical feedback . I’d almost go as far as avoiding any good feedback and just focus on what needs to be improved .&lt;/p&gt;

&lt;p&gt;Make sure they actually use your product and aren’t giving you feedback to be nice to you .&lt;/p&gt;

&lt;h2&gt;
  
  
  3) Stranger launch
&lt;/h2&gt;

&lt;p&gt;You’re launching directly to complete strangers who may use your product and give you feedback on your startup .&lt;/p&gt;

&lt;p&gt;You can do this directly by going to roadshows, expos, malls, marketplaces, and booths where your customers will be .&lt;/p&gt;

&lt;p&gt;Make sure when you do this launch, it’s in an environment with strangers who are aware that you are a start-up because then people will approach it with the mentality that they are the first user and set their expectations .&lt;/p&gt;

&lt;h2&gt;
  
  
  4) Online community launch
&lt;/h2&gt;

&lt;p&gt;This approach if done well has changed the trajectory of many companies . Launching on platforms like HackerNews, ProductHunt, Reddit, Betalist, or other public platforms can have a lot of benefits because there’s the added advantage of community vitality .&lt;/p&gt;

&lt;p&gt;With platforms like HackerNews and Reddit, you need to be cautious with the way you word your post, the title needs to be very eye-grabbing and it should not be a “Look at me” title, the post should offer value and insights to the reader. This way you’ve gained some trust and authority with the person reading your post before you link your product offering at the end of the post.&lt;br&gt;
With ProductHunt and Betalist, people come there to discover new companies, so the messaging can be a little different from the other forums mentioned above.&lt;/p&gt;

&lt;h2&gt;
  
  
  5) Request access launch
&lt;/h2&gt;

&lt;p&gt;We’ve kind of spoken about this kind of launch when we chatted about building virality into your startup. A great example is SuperHuman/Hotmail, where they created a great product and attached the “Sent via SuperHuman” on each email.&lt;br&gt;
Then go further and incentivise distribution by offering customers bonuses like skipping the waiting line, or discounts for sharing your product with customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  6) Pre-order campaign launch
&lt;/h2&gt;

&lt;p&gt;Many successful companies that have been bought for 100s of millions have started this way . Look at MVMT, the millennial watch company; they started on Indiegogo with a Handycam recorded video .&lt;/p&gt;

&lt;p&gt;They raised 300k in pre- orders that gave them tonnes of validation that there’s a market and used this initial traction to build a full-scale business .&lt;/p&gt;

&lt;p&gt;Much like the Online community launch, your messaging and video content needs to be very compelling to get potential buyers to purchase your product, but also share it with the rest of the world .&lt;/p&gt;

&lt;h2&gt;
  
  
  7) Social Media/Blogger launch (a bonus)
&lt;/h2&gt;

&lt;p&gt;Social media influencers work because they use familiarity . Branding is familiarity and with familiarity comes trust . The job of a social media influencer is to be a familiar trustworthy face that already has a strong communication pipeline with your audience; you need to leverage these people to distribute your product.&lt;br&gt;
Reach out to every influencer or expert in your niche and tell them about your product.&lt;br&gt;
Offer the product for free or ask under goodwill to share . You’ll get a few f-offs, but also a few will accept and that might be all you need to change the entire game and trajectory of your business .&lt;/p&gt;

&lt;p&gt;Feel free to follow my journey as I build &lt;a href="https://cenario.co"&gt;cenario.co&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="//twitter.com/@veebuv"&gt;twitter&lt;/a&gt;&lt;br&gt;
&lt;a href="//linkedin.com/in/vaibhavnamburi"&gt;linkedin&lt;/a&gt;&lt;br&gt;
&lt;a href="//instagram.com/@_veebuv"&gt;instagram&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>startup</category>
      <category>freelancer</category>
      <category>entrepreneurship</category>
    </item>
    <item>
      <title>The Best Way to use Actions in VueJS</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Mon, 06 Jan 2020 07:34:11 +0000</pubDate>
      <link>https://dev.to/veebuv/the-best-way-to-use-actions-in-vuejs-1i51</link>
      <guid>https://dev.to/veebuv/the-best-way-to-use-actions-in-vuejs-1i51</guid>
      <description>&lt;p&gt;So back into it after a while 😀- happy new year everyone! Why this post? Simply because as a &lt;a href="https://five2one.com.au"&gt;company&lt;/a&gt; we get to experience so many unique problems and need to come up with new patterns that help solve the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is the problem?
&lt;/h2&gt;

&lt;p&gt;We needed to work out an extremely easy way to subscribe to active HTTP requests, for global loader states and other reasons.&lt;/p&gt;

&lt;p&gt;If we were using REST as an HTTP protocol layer, then we could have used axios' interceptors to simply commit a mutation to a vuex module tracking the state of an HTTP event. We could do this by creating an object where the keys represent the HTTP event name (something unique) and the value is something truthy, a binary 1 or just some string.&lt;/p&gt;

&lt;p&gt;Then we subscribe a button or a loader to that object to find the corresponding active state it's responsible for. This decentralises the necessity to ever actively code each button or modal to maintain a loader state and instead gives us a chance for writing code in a DRY way.&lt;/p&gt;

&lt;h2&gt;
  
  
  HOWEVER...
&lt;/h2&gt;

&lt;p&gt;Not everything was that simple for us because we're using graphql and apollo, and we're doing it in a non-usual way, where we're using apollo GQL, but not apollo state, so the GQL requests are made using apollo mutations and queries but the data response is stored in plain Vuex.&lt;/p&gt;

&lt;p&gt;The main issue was not the apollo state, the issue was that, atleast for now, we couldn't track how to intercept GQL queries in the same way as an axios interceptor and mutate Vuex each time with the right metadata, so a super simple solution we used was.... &lt;em&gt;drum roll&lt;/em&gt; ... creating &lt;em&gt;proxy actions&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Whats a proxy action?
&lt;/h2&gt;

&lt;p&gt;Its quite literally what it says, it a proxy to the main event.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;proxyAction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;dispatch&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;actionName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setLoading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;setLoading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setLoading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;actionName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;setLoading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;dispatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;setLoading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_vm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$toasted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;BE_API_ERROR_MESSAGE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above code snippet shows we dispatch a &lt;em&gt;setLoading&lt;/em&gt; action who's job is to toggle the active HTTP request binary value to 1 or 0 (and we subscribe our loader states to this). In addition, we also dispatch the action that was meant to be executed, which is the GQL HTTP query.&lt;/p&gt;

&lt;p&gt;So this way, all across the project, we don't need to add multiple lines in the &lt;em&gt;mapActions&lt;/em&gt; spread operator within the &lt;em&gt;methods&lt;/em&gt; object of a VueJS file's JS section. Instead you just need to do the below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;...&lt;/span&gt;

&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;mapActions&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;proxyAction&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;proxyAction&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And whenever a CTA is called or an action needs to be executed, you can simply do the below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;buttonCalled&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;proxyAction&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;actionName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;user/followVaibhavOnLinkedin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://linkedin.com/in/vaibhavnamburi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, as mentioned above, you don't need to have multiple lines in the &lt;em&gt;mapActions&lt;/em&gt; spread for all the actions you need, instead, you can simply add it via text and call whatever actionName you want to call and pass whatever data you want to pass!&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros of using proxy actions:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Global Button loaders&lt;/li&gt;
&lt;li&gt;Buttons can be disabled to make another API request if one is in progress(For example, clicking on signup button twice is prevented)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hopefully, this helped you out!&lt;/p&gt;

&lt;p&gt;If you think this is a helpful tip please feel free to share it around for others as well on twitter/ youtube or wherever you'd like 😃 and feel absolutely free to tag me too! (&lt;a class="comment-mentioned-user" href="https://dev.to/veebuv"&gt;@veebuv&lt;/a&gt;
)&lt;/p&gt;

&lt;p&gt;PS if this pattern is common, then I definitely wasn't aware of it in the VueJS/Vuex community, but in the case it is, I'd love to be tagged to the original discussion so I can see how they've done it!&lt;/p&gt;

&lt;p&gt;PPS: Special thanks to &lt;a href="https://www.linkedin.com/in/dinesh-madanlal/"&gt;Dinesh&lt;/a&gt; for being pivotal in the experimentation of ideas and implementation of this!&lt;/p&gt;

&lt;p&gt;twitter: &lt;a href="//twitter.com/@veebuv"&gt;twitter.com/@veebuv&lt;/a&gt;&lt;br&gt;
linkedin: &lt;a href="//linkedin.com/in/vaibhavnamburi"&gt;linkedin.com/in/vaibhavnamburi&lt;/a&gt;&lt;br&gt;
instagram: &lt;a href="https://instagram.com/_veebuv"&gt;_veebuv&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>vuex</category>
      <category>vue</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Five Lessons I learned going from 3 to 7 figures as a Techie</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Tue, 10 Dec 2019 06:22:05 +0000</pubDate>
      <link>https://dev.to/veebuv/five-lessons-i-learned-going-from-3-to-7-figures-as-a-techie-55hn</link>
      <guid>https://dev.to/veebuv/five-lessons-i-learned-going-from-3-to-7-figures-as-a-techie-55hn</guid>
      <description>&lt;p&gt;disclaimer: I implore you to look past the title, really not "showing off" at all, I wanted to share the mistakes I made as a tech person building a business - hopefully this helps you&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Entrepreneurship is never easy, but you can make it a little better with improved processes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;White on white. A row of empty desk space, with a singular chair. The blank canvas in front of me, mirroring the state of my business. This was two years ago, when I launched my business with just $500 and a lot of optimism.&lt;/p&gt;

&lt;p&gt;As every founder will tell you, it’s never easy. There is what people see, and then the looooong [sic] hours which we often humbly brag about on social media, or socially when we do make it out of the office. We wear it with pride. Yet too often it’s a sign that we need more or improved processes in place.&lt;/p&gt;

&lt;p&gt;As a technical founder, I have three main roles. The ‘entrepreneur’ who seeks to grow and scale the business. The ‘manager’ who’s sweating, always straining for quicker delivery or more aligned planning. And the heart of operation, the ‘technician’ who loves coding and building the whole thing out. And there are different leadership qualities needed for each of these.&lt;/p&gt;

&lt;p&gt;I wanted to share what I’ve learned scaling my business as there are things I wish I’d known before starting it all.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn to separate.
&lt;/h1&gt;

&lt;p&gt;I know I’m not alone in this problem. I suspect it could be the single hardest balancing act for founders. As a ‘technician’ I had the temptation to step in and correct mistakes on projects as they arose. But the ‘manager’ in me knew this wouldn’t develop my team. And the ‘entrepreneur’ screamed that there’s no value in a business which was solely reliant on my input. So I had to resist.&lt;/p&gt;

&lt;p&gt;It became easier. I’d recommend going on a holiday. Just for a week, when you’re starting to feel that it will all fall down if you went away, to prove to yourself and your team, that you’re not as needed as you project you are.&lt;/p&gt;

&lt;h1&gt;
  
  
  Productise your offering
&lt;/h1&gt;

&lt;p&gt;When you’re feeding 12 people, you need to make sure individuals are being taken care of in a recurring way. As a global services business we had to develop systems and processes, by asking what we could repeat at scale. We were cultivating cultural growth. So I ensured that when the company won, so did the individual. We wanted the team to feel like they were more than just their title, and by introducing a rotating team lead for the week, we ensured that variety, responsibility and accountability. You can’t make a project manager a developer, but you can certainly try to make a developer, the lead.&lt;/p&gt;

&lt;h1&gt;
  
  
  Develop a niche
&lt;/h1&gt;

&lt;p&gt;This is something we did well at the start. Almost all of our work for the first 12 months was in Vue.js or blockchain technology. It helped build our reputation, which was massive as we were a services based business. The majority of our new business came through referrals, which was a nice position to be in, yet it didn’t lay the groundwork for scaling. I wish we’d focused on SEO and digital marketing at an earlier stage to help with inbound requests.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hire for aptitude not knowledge.
&lt;/h1&gt;

&lt;p&gt;This applies across disciplines. You can always teach someone the finer points of your house style and approach. It’s why we developed a hiring method which involved giving new recruits a tech test, in a language they weren’t fluent in. We were able to understand their problem solving capabilities when looking at how quickly they were able to adapt. Often you don’t want a new hire to be so experienced with ‘what they know’ that they won’t be willing to be a generalist. For us that’s exactly what we needed.&lt;/p&gt;

&lt;p&gt;So work out what you want to be famous for and where potential holes may currently lie in your current team and hire studiously. We were bootstrapped and so another hat I wore was HR too. I hired those who could work autonomously and hold themselves to account. We learned that to maintain an engaged workforce, we had to be transparent about the finances and what we were all working towards, and having a collective consciousness about the goal we were all aiming at.&lt;/p&gt;

&lt;h1&gt;
  
  
  Experiment more
&lt;/h1&gt;

&lt;p&gt;I mentioned earlier that our inbound marketing funnel was nowhere near as strong as it should have been early on. We had to build our presence on social, so I took to posting daily on LinkedIn, joining groups and eventually vlogging my new startup and hosting a podcast series. Find which channels work best for your business.&lt;/p&gt;

&lt;p&gt;We were always aiming for momentum based growth rather than movement, by which I mean, being busy is irrelevant if you’re not having an impact where it matters for the business.&lt;/p&gt;

&lt;p&gt;For us SEO and digital marketing proved two valuable channels for generating new leads. But I wished we had taken more risks in our approach at an earlier stage. There are a host of free resources on YouTube of those looking to tout their expertise, so start there but try and do it yourself as it’s good to know what works, and because it can influence other decisions in the business, which, for us, included creating a podcast. &lt;/p&gt;

&lt;p&gt;While the team expanded rapidly in a short space of time, the cyclical nature of the projects we were working on often meant that we had underutilised resources. So after some careful thought, I’ve since moved to a virtual model, scaling up and down as needed on projects. I’m able to still deliver high-end niche platforms now with an even wider pool of expertise to draw on. We now offer systems, which breed talent. By codifying processes, like on-boarding new engineers for example, I can trust that the team will be building something repeatable. This is what you need to focus on when looking to scale. How far can you remove yourself from the business and everything still work flawlessly?&lt;/p&gt;

&lt;p&gt;My advice for founders who are looking to grow: experiment. See what works for your business for sales, HR, etc, preferably before it’s too late and you’re scrambling to retrofit solutions.&lt;/p&gt;

&lt;p&gt;PS Original article is here 👉 &lt;a href="https://www.entrepreneur.com/article/343281"&gt;Entrepreneur&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you liked this, feel free to find me here:&lt;/p&gt;

&lt;p&gt;twitter: twitter.com/&lt;a class="comment-mentioned-user" href="https://dev.to/veebuv"&gt;@veebuv&lt;/a&gt;
&lt;br&gt;
linkedin: linkedin.com/in/vaibhavnamburi&lt;br&gt;
instagram:_veebuv&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How to build your first prototype and what to expect</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Mon, 09 Sep 2019 09:56:18 +0000</pubDate>
      <link>https://dev.to/veebuv/how-to-build-your-first-prototype-and-what-to-expect-16ek</link>
      <guid>https://dev.to/veebuv/how-to-build-your-first-prototype-and-what-to-expect-16ek</guid>
      <description>&lt;p&gt;Spoiler: No Code is involved&lt;/p&gt;

&lt;p&gt;There are tonnes of ways you can get around this, I’ll share a few and the linear process I take to deliver stuff QUICK but more importantly of extreme immediate value that “further validates my cause”!&lt;/p&gt;

&lt;p&gt;PS: If you haven’t at this point already read Hooked or Evil by Design, you should give them a go - life changing and pivotal for any founder.&lt;/p&gt;

&lt;p&gt;So step one is to use your research from the previous article (if you read it) to work out what the pain points your customers have faced are, how often they face it, and what about their current solution bothers them the most (important)&lt;/p&gt;

&lt;p&gt;Get a piece of paper and write in big bold letters the total time you’ll spend on this. And make sure you stick to this timing, its important to establish prioritisation ASAP. Create 3 columns, Needs, Wants, Outcomes&lt;/p&gt;

&lt;p&gt;Write down all the Needs YOU think are necessary to make the product a success, then write down all the wants and make sure sure you write down the outcome you expect when you create this “needs” for a product (can be something like push notifications)&lt;/p&gt;

&lt;p&gt;Alright, now wipe out all the wants, just focus on the needs for this very moment. Wants are luxuries. So with the list of needs and outcomes, work out which outcomes are MOST important to your customer, all research from our last email.&lt;/p&gt;

&lt;p&gt;Conform yourself to 2-5 features and then let’s start building with complete focus on outcome-driven success.&lt;/p&gt;

&lt;p&gt;Go to a tool like proto.io , framer.com/prototyping, axure.com - all super simple and beginner-friendly tools that have HEAPS of prebuilt components like MAPS, contact lists the usual stuff ready.&lt;/p&gt;

&lt;p&gt;This is where you need to recheck your goal very often, what is the goal of building this prototype? Is it to just demo a concept? Is it to show people a new way of doing something? Is it a new way of thinking about an existing solution?&lt;/p&gt;

&lt;p&gt;Make sure you build your prototype around your validation goal, or just goal. And REMEMBER, not everyone will get your prototype - people are visual creatures and most people are not innovators (&lt;a href="https://ondigitalmarketing.com/learn/odm/foundations/5-customer-segments-technology-adoption/"&gt;The 5 Stages of Technology Adoption | OnDigitalMarketing.com&lt;/a&gt;) literally if you have a sample group of 100 people, only 2.5 of them will kinda get what you’re doing - so don’t be discouraged.&lt;/p&gt;

&lt;p&gt;So yeah, take the feedback you get from here with a pinch of salt - you’re looking for words like “oh this is great”, “whoa that would be awesome”, “ah yeah I get that”, nice but subtle reactions&lt;/p&gt;

&lt;p&gt;Build a simple clickable prototype and then send it to friends and ask pressing questions such as “does this approach solve the problem you have right now?”, “will you pay for something that does this?”, “Do you see yourself every using this?”&lt;/p&gt;

&lt;p&gt;Collect all the feedback you get from people you’ve shared this with and go back to the drawing board clustering patterns of similarity and complaints - build around the customer and use your innovative mindset to offer that special sauce.&lt;/p&gt;

&lt;p&gt;Timebox yourself again and spend a little more time around addressing the feedback your audience have given, mainly around your approach solving their problem, and if it did or didn’t do so.&lt;/p&gt;

&lt;p&gt;Iterate around three pillars, your goals, your customer's goals and the highest level of impact to deliver optimal value to your customer. With this you should have built an extremely minimal and ridiculously basic version of your product you can then look at sharing with a professional designer or engineering it yourself!&lt;/p&gt;

&lt;p&gt;I've learnt this helping and observing all the successful startups and companies we work with at five2one and I encourage you to use a test and build approach as well&lt;/p&gt;

&lt;p&gt;If you liked this, definitely follow me on for the similar stuff:&lt;/p&gt;

&lt;p&gt;twitter: twitter.com/&lt;a class="comment-mentioned-user" href="https://dev.to/veebuv"&gt;@veebuv&lt;/a&gt;
&lt;br&gt;
linkedin: linkedin.com/in/vaibhavnamburi&lt;br&gt;
instagram:_veebuv&lt;/p&gt;

</description>
      <category>mvp</category>
      <category>javascript</category>
      <category>startup</category>
      <category>programming</category>
    </item>
    <item>
      <title>5 Ways To Easily Validate Your Idea Before Its Too Late</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Thu, 05 Sep 2019 16:03:33 +0000</pubDate>
      <link>https://dev.to/veebuv/5-ways-to-easily-validate-your-idea-before-its-too-late-4d0o</link>
      <guid>https://dev.to/veebuv/5-ways-to-easily-validate-your-idea-before-its-too-late-4d0o</guid>
      <description>&lt;p&gt;If you're a software engineer you've definitely thought about building your own app at some point, and if you haven't you should - you've got the superpowers to do it anyway!&lt;/p&gt;

&lt;p&gt;On that note, You’d be surprised at how many established startups are still “validating” trying to get product-market fit.&lt;/p&gt;

&lt;p&gt;Now before we go into validation, lets learn about the most over-used phrase in startups, no - not #hustle or #entrepreneur - product/market fit, this is the phenomenon where what you're building serves an incredible pain point to the exact audience you want, its a moment when you're no longer pushing your product but pulling back, telling your customers to hold off because you can't handle this scale - your numbers will no longer make sense to you, and you're just scratching to keep your app online&lt;/p&gt;

&lt;p&gt;Product-Market fit is the nirvana every founder wants to achieve, I mean I don’t know about you, but the above sounds like a problem I’d want everyday, all day - and hey it’s different for every company, be aware.&lt;/p&gt;

&lt;h1&gt;
  
  
  1 Competitor Analysis
&lt;/h1&gt;

&lt;p&gt;Yeah, I say this a 1000x a month, there is no idea in the world that hasn’t been tried in some way, you’ve just got to find out how they failed - and out execute. Competition is inevitable, if your product does well, you WILL have competition.&lt;/p&gt;

&lt;p&gt;Remember if all your USP is, is an idea, you have a hobby not a business.&lt;/p&gt;

&lt;p&gt;With that said, going onto the market, thinking like your prospective customer, type in solutions you’d expect to find. Analyse what competitors are doing - if you’ve got them, then you don’t need to spend much time on validation of the idea but instead validation of the execution.&lt;/p&gt;

&lt;p&gt;Go to their facebook pages, their social media ads, and look at the comments and scout for the main pain points people are facing at the moment (can be UX, price, expense) and formulate your approach around that.&lt;/p&gt;

&lt;h1&gt;
  
  
  2 Talk to the customer
&lt;/h1&gt;

&lt;p&gt;Sounds obvious but a good percentage of founders never talk to the customer, they just assume its a problem people have because its “obvious” . No - talk to your customer from day 1, you should be either building product or talking to customers, that’s your own job in the initial stages.&lt;/p&gt;

&lt;p&gt;If you don’t know who to talk to or where to find them, that’s your first problem, why would you build a product for someone you don’t even know exists ?&lt;/p&gt;

&lt;p&gt;So yes, talk to your customer, and ask them if they have this problem, if they’re in pain because of it, how much it costs them to solve it (important to know they actually solve the problem) and how often the encounter this issue.&lt;/p&gt;

&lt;p&gt;In doing so, you almost build up a meta customer persona&lt;/p&gt;

&lt;h1&gt;
  
  
  3 Share a promise
&lt;/h1&gt;

&lt;p&gt;Another super simple way is to build a website or landing page, the goal of the page is to gauge interest.&lt;/p&gt;

&lt;p&gt;Now, its not as simple as throwing up a website and using interest to that site as a metric for success, your copy and messaging needs to be correct.&lt;/p&gt;

&lt;p&gt;Compare the two below:&lt;/p&gt;

&lt;p&gt;“Share car rides with random people using a mobile app to find them, and pay less than a taxi”&lt;br&gt;
 Vs&lt;br&gt;
“Hate waiting for taxis ? With a click of a button, you have your own personal chauffeur, who’s cheaper than a taxi”&lt;/p&gt;

&lt;p&gt;Get my point ? Don’t just vomit out a landing page and expect it to blow up, get the messaging right, test a few word versions and based on the conversion you can use it to gauge the interest you have on the product.&lt;/p&gt;

&lt;p&gt;Share it with influencers in your space, with friends and people within your direct reach that might be effected by your product - make sure you share it with early adopters and innovators - if I shared the idea of Uber with my Dad he would have thought I was high.&lt;/p&gt;

&lt;p&gt;Make sure your outreach audience has an appetite for innovation. In addition post it in forums and groups - reddit, hacker news, communities where your target market lives&lt;/p&gt;

&lt;h1&gt;
  
  
  4 Sell Before you build
&lt;/h1&gt;

&lt;p&gt;This one tests your sales skills but at the same time lets you understand if people really see value in what you’re doing. We’re building a product for a client right now and he’s been invited to present at seminars and events based on his “idea”.&lt;/p&gt;

&lt;p&gt;Is it new ? NOPE - there’s about 6 competitors in the market, but he was able to articulate the gap in the market and pinpoint the exact pain areas people are facing with existing solutions at the moment.&lt;/p&gt;

&lt;p&gt;If you can gather interest, people actually sign an agreement on a product you can deliver, that’s some pretty decent validation you have going there.&lt;/p&gt;

&lt;p&gt;This is basically what kickstarter is built for - get a prototype or even less and share the product and see if you can get paying customers&lt;/p&gt;

&lt;h1&gt;
  
  
  5 Analytics overload
&lt;/h1&gt;

&lt;p&gt;This is when you’ve built out a small prototype already, don’t just launch and stay blind, analytics will be the bloodline of your business when you start.&lt;/p&gt;

&lt;p&gt;Analytics and feedback loops - make sure you’re talking to your customer as often as possible, understanding what they like and don’t like about the product.&lt;/p&gt;

&lt;p&gt;Observe drop off points, I.e places in the app that might be confusing or difficult for the customer in addition set up tools like intercom/drift so your customer can chat with you directly and you can build a stronger relationship with them&lt;/p&gt;

&lt;p&gt;This way even with a small prototype that took you a couple of weeks to build, you’ll be able to confirm your hypothesis and add more fuel to the fire.&lt;/p&gt;

&lt;p&gt;I've learnt this helping and observing all the successful startups and companies we work with at &lt;a href="//htts://five2one.com.au"&gt;five2one&lt;/a&gt; and I encourage you to use a test and build approach as well &lt;/p&gt;

&lt;p&gt;If you liked this, definitely follow me on for the similar stuff:&lt;/p&gt;

&lt;p&gt;twitter: twitter.com/&lt;a class="comment-mentioned-user" href="https://dev.to/veebuv"&gt;@veebuv&lt;/a&gt;
&lt;br&gt;
linkedin: linkedin.com/in/vaibhavnamburi&lt;br&gt;
instagram:_veebuv&lt;/p&gt;

</description>
      <category>startup</category>
      <category>developer</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>The Perfect Wrapper Components in Vue 2.6 and soon Vue 3.0</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Mon, 12 Aug 2019 15:09:42 +0000</pubDate>
      <link>https://dev.to/veebuv/the-perfect-wrapper-components-in-vue-2-6-and-soon-vue-3-0-2pae</link>
      <guid>https://dev.to/veebuv/the-perfect-wrapper-components-in-vue-2-6-and-soon-vue-3-0-2pae</guid>
      <description>&lt;p&gt;Do you want to build a codebase that looks like a teenagers bedroom or do you want to build one that looks like its straight out of IKEA.&lt;/p&gt;

&lt;p&gt;The difference in clean, predictable and quick code and code that is inconsistent, buggy and takes centuries to add features to boils into a couple of components.&lt;/p&gt;

&lt;p&gt;The component we’re talking about today comes in the form of design system components, mainly wrapper components. As a Vue / Frontend developer — you NEED to work with your designer buddy to make sure the design system being built is concise and “inheritable”.&lt;/p&gt;

&lt;p&gt;Inheritable? Yeah — inheritable, i.e design pattern that builds on top of itself, evolving design, rather that components that look like they belong to different projects — this is exactly how we built &lt;a href="https://flowyse.com" rel="noopener noreferrer"&gt;https://flowyse.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alright — enough fluff, how do we build a strong wrapper component structure? Let’s use in our example an input field and a button.&lt;/p&gt;

&lt;p&gt;Step 1:&lt;/p&gt;

&lt;p&gt;Solution architecture questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What states does the input field have ?&lt;/li&gt;
&lt;li&gt;Where is data being fetched and sent&lt;/li&gt;
&lt;li&gt;Will it be maintaining it’s own data layer or absorbing from a parent&lt;/li&gt;
&lt;li&gt;Do I directly sync all my input fields straight to a central management store like Vuex ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step 2:&lt;br&gt;
Answers&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hover, OnFocus, Error&lt;/li&gt;
&lt;li&gt;Parent component&lt;/li&gt;
&lt;li&gt;No it won’t, data layer is from the parent (in this instance, you can do it your way)&lt;/li&gt;
&lt;li&gt;No, we’re syncing all data to the parent of the input
Great now thats done, lets look at a very simple input component.&lt;/li&gt;
&lt;li&gt;We have a root label wrapping the input component&lt;/li&gt;
&lt;li&gt;We bind the input component to $attrs (more on this very soon)&lt;/li&gt;
&lt;li&gt;We listen to “$listeners” (whatever that is)&lt;/li&gt;
&lt;li&gt;Lastly we listen to on “input” changes and emit “change” event to the parent&lt;/li&gt;
&lt;/ul&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%2Fmiro.medium.com%2Fmax%2F633%2F1%2AUxRUq2BQdflM8tRmYH2Y9w.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%2Fmiro.medium.com%2Fmax%2F633%2F1%2AUxRUq2BQdflM8tRmYH2Y9w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VueJS knew that wrapper components were idealistic and natural of every component driven framework. A part of the “prop” proposition is that attributes or “directives” passed down from the parent not recognised as props by the child automatically get attached to the root of the child…confusing&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%2Fmiro.medium.com%2Fmax%2F251%2F1%2An-cq13-yYyyjoNeBpiErrg.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%2Fmiro.medium.com%2Fmax%2F251%2F1%2An-cq13-yYyyjoNeBpiErrg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine passing greeting into the input wrapper, if greeting wasn’t registered as a prop — it would be added as a field onto the  wrapper of our input field, by setting inheritAttrs to false we prevent that, and instead override that and pass all the meta data directly into the input component.&lt;/p&gt;

&lt;p&gt;This way you don’t need to register EVERY prop in the input wrapper, but essentially it passes itself through the wrapper naturally (as a wrapper should allow)&lt;/p&gt;

&lt;p&gt;Secondly we have this thing called $listeners — this is Vue’s great way of basically bubbling all events the component listens to up to the parent, this way you don’t need to register each event manually — again, a great way to create a wrapper component.&lt;/p&gt;

&lt;p&gt;The goal of the wrapper is to essentially provide some design conformity — PS wrappers should 100% be responsible for custom logic as well, you can easily add as much custom logic to a wrapper component as needed, you can get access to the value of the input field by registering value as a prop.&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%2Fmiro.medium.com%2Fmax%2F273%2F1%2AiSMGKl5PxXi1f9NG5alcNg.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%2Fmiro.medium.com%2Fmax%2F273%2F1%2AiSMGKl5PxXi1f9NG5alcNg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What we’re left with is an input wrapper with the model defined in the scope of the component where the wrapper is created, and attributes that are meant to be passed directly to the input component will be register as expected.&lt;/p&gt;

&lt;p&gt;This is exactly how the entire Flowyse project is built out, and one of the reasons why I could ship it out in 5.5 weeks.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚨WHOA WHOA — SOMETHING HUGE IS UP🚨
&lt;/h3&gt;

&lt;p&gt;With Vue 3.0 you don’t need so much config when creating your base wrapper component&lt;/p&gt;

&lt;p&gt;Our component gets MUCH more simpler to use&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%2Fmiro.medium.com%2Fmax%2F552%2F1%2AtsiE4bQDN-shy1s8Lefosg.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%2Fmiro.medium.com%2Fmax%2F552%2F1%2AtsiE4bQDN-shy1s8Lefosg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice we no longer have $listeners or inheritAttrs&lt;/p&gt;

&lt;p&gt;In Vue 3.0 there’s no more automatic inheritance of attributes, which means $attrs automatically includes all non-prop related attributes without needing to define inheritAttrs: false .&lt;/p&gt;

&lt;p&gt;Even with the listeners v-on compiles straight to the attributes @enter compiles to on-enter . By simply doing v-bind="attrs".&lt;/p&gt;

&lt;p&gt;"attrs" include all non-emitted listeners as well, and the best part is….&lt;/p&gt;

&lt;p&gt;v-model compiles into model-value and on-model-update by doing v-bind="$attrs" so no more model option nor do we need to override the native input event like we did before&lt;/p&gt;

</description>
      <category>vue</category>
      <category>optimisation</category>
      <category>javascript</category>
      <category>frontend</category>
    </item>
    <item>
      <title>5 Simple Security Practices For Startups You NEED To Do</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Fri, 09 Aug 2019 00:09:29 +0000</pubDate>
      <link>https://dev.to/veebuv/5-simple-security-practices-for-startups-you-need-to-do-5bn4</link>
      <guid>https://dev.to/veebuv/5-simple-security-practices-for-startups-you-need-to-do-5bn4</guid>
      <description>&lt;p&gt;I know you’re running a company and gunning at 500 miles an hour, trust me I make a living building things fast, so I get it. However, you don’t need to go to the nth level of security but at least do basic things when building out your product so you don’t end up in the news for the wrong reasons.&lt;/p&gt;

&lt;p&gt;Here’s a super short article on some of the basic things you can do to ensure your product is “safe” to some extent. Of course, you can really amp this up with ridiculous security practices, pen-testing, ML-based anomaly detection software, internal LAN networks and firewall and 2 Factor Authentication - the list can go on.&lt;/p&gt;

&lt;p&gt;This article is going to use a node and AWS as an example - I'm pretty confident the same principles will apply to your stacks too.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Hashing passwords
&lt;/h2&gt;

&lt;p&gt;Yes I know, its taught in bootcamps and 1st-year Uni, yet its sad that I need to bring it up. Hash your passwords using bcrypt and salt rounds. Salting is a randomised string generated and represents the cost factor, and the goal of salting is to prevent your system from getting hit with a rainbow table to brute force passwords.&lt;/p&gt;

&lt;p&gt;Some bcrypt best practices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Perform UX research to find what are acceptable user wait times for registration and authentication.&lt;/li&gt;
&lt;li&gt;If the accepted wait time is 1 second, tune the cost of bcrypt for it to run in 1 second on your hardware.&lt;/li&gt;
&lt;li&gt;Analyze with your security team if the computation time is enough to mitigate and slow down attacks.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Load all ENV variables through your pipeline
&lt;/h2&gt;

&lt;p&gt;Using AWS Parameter Store, Elasticbeanstalk set up, and your pipeline system, use variable identifiers in your pipeline such as &lt;code&gt;DB_URL=$DB_URL&lt;/code&gt; to inject sensitive values into your backend environments.&lt;/p&gt;

&lt;p&gt;Make sure the variables are different for your prod and staging environment.&lt;/p&gt;

&lt;p&gt;Make sure those variables are accessed by restricted IAM accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. VPC Networks
&lt;/h2&gt;

&lt;p&gt;Its super simple to set up but a Virtual Private Cloud in simplest terms can be thought of as a house where all the people in the house can freely communicate with each other and only a certified person is allowed to open the door. This house is in a community that is freely accessible.&lt;/p&gt;

&lt;p&gt;Think of the community as a public cloud and the house a private cloud within the public cloud. &lt;/p&gt;

&lt;p&gt;The official wiki definition is: A virtual private cloud (VPC) is an on-demand configurable pool of shared computing resources allocated within a public cloud environment, providing a certain level of isolation between the different organizations (denoted as users hereafter) using the resources.&lt;/p&gt;

&lt;p&gt;You can set up the DB so that only systems within the VPC can access your DB.&lt;/p&gt;

&lt;p&gt;If you want external access to your DB make sure in your inbound rules, you whitelist all IPs.&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fapys2nff8ygnsx1vh0tl.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fapys2nff8ygnsx1vh0tl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image creds to znetlive.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. CORs Access
&lt;/h2&gt;

&lt;p&gt;A super simple thing to set up in a node environment and only allow request access from whitelisted domains.&lt;/p&gt;

&lt;p&gt;This will prevent anyone just using your auth token to then get access to the DB without the restrictions of the UI (so to speak)&lt;/p&gt;

&lt;h2&gt;
  
  
  5. CRTFs
&lt;/h2&gt;

&lt;p&gt;Whenever you're doing social authentication like Google, FB or LinkedIn(compulsory)&lt;/p&gt;

&lt;p&gt;Its worth setting up a secret (hard to guess) key when you make your redirect call. On return of the call make sure the secrets match, this ensures there hasn't been any tampering done to the request and the request is pure.&lt;/p&gt;

&lt;p&gt;Here's a quick link of what &lt;a href="https://dev.toCRTF"&gt;https://en.wikipedia.org/wiki/Cross-site_request_forgery&lt;/a&gt; is.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Bonus mention
&lt;/h2&gt;

&lt;p&gt;Don't copy production data to weaker environments to test your product. Make sure production is untouched and development environment covers the edge cases you're solving for.&lt;/p&gt;

&lt;p&gt;Creds Alex Joyce&lt;/p&gt;




&lt;p&gt;There you go, some super simple and basic things to set up that won't take more than a few minutes.&lt;/p&gt;

&lt;p&gt;Using this a bare minimum base, you can amp it up to the nth level - I'll be sure to update this as I can think of simpler ones.&lt;/p&gt;

&lt;p&gt;And of course, if you've got more that you'd like to share, please put them in the comments because it'll help me and others alike!&lt;/p&gt;

</description>
      <category>dev</category>
      <category>backend</category>
      <category>programming</category>
    </item>
    <item>
      <title>What happens when you type in www.xyz.com</title>
      <dc:creator>Vaibhav Namburi</dc:creator>
      <pubDate>Mon, 05 Aug 2019 05:00:46 +0000</pubDate>
      <link>https://dev.to/veebuv/what-happens-when-you-type-in-www-xyz-com-j4p</link>
      <guid>https://dev.to/veebuv/what-happens-when-you-type-in-www-xyz-com-j4p</guid>
      <description>&lt;h3&gt;
  
  
  How Does the Domain Name System work?
&lt;/h3&gt;

&lt;p&gt;How does the internet know what to get you and how to get you your website?&lt;/p&gt;

&lt;p&gt;This blog will be relatively shorter than most because it’s straightforward to explain, considering that a few steps are going to be skipped and only the main necessary logic points will be explained!&lt;/p&gt;

&lt;p&gt;Lets go!🚀&lt;/p&gt;

&lt;p&gt;Side note: have a look at the diagram, that should simplify things for you 😀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QzE2HbCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ob4yrjsmul90x0ojfpb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QzE2HbCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ob4yrjsmul90x0ojfpb1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  When you type in &lt;a href="http://www.xyz.com"&gt;www.xyz.com&lt;/a&gt; in your browser what happens?
&lt;/h3&gt;

&lt;p&gt;You set up a “query” or a question to send to a server. The first server your query hits is called the Recursive Resolver, which is usually operated by your internet service provider (Vodafone, Telstra). The recursive resolver knows which other DNS server or domain name system servers to ask the original question of “What is the IP of &lt;a href="http://www.xyz.com%E2%80%9D"&gt;www.xyz.com”&lt;/a&gt; — IP stands for internet protocol, think of it as an address, or perhaps like your phone number.&lt;/p&gt;

&lt;p&gt;The first DNS server the recursive resolver talks to is the Root Server which are servers running all over the world and have information about Top Level Domains such as .com/.net. So the recursive resolver asks the root server for DNS info regarding .com. — Note that there's 1000s of servers supporting the root and its the DNS’ job to find the answer to your query quickly!&lt;/p&gt;

&lt;p&gt;The Top Level Domain DNS server stores information regarding the second-level domains i.e the .com sever stores information regarding xyz.com. I.e the TLD DNS server responds back with the IP address of the domain’s name server, which gives us the next clue!&lt;/p&gt;

&lt;p&gt;The recursive resolver then takes this IP and sends a query to the domain’s name server, this DNS server knows the IP address of our website &lt;a href="http://www.xyz.com"&gt;www.xyz.com&lt;/a&gt; and returns to the recursive resolver the IP address of our website.&lt;/p&gt;

&lt;p&gt;After all this, the website appears in our browser, and voila done!&lt;br&gt;
PS all this happens in a fraction of a second!&lt;/p&gt;

&lt;p&gt;Nothing in programming is magic. Except CSS...&lt;/p&gt;

</description>
      <category>dev</category>
      <category>beginners</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
