<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Ikwechegh Ukandu on Medium]]></title>
        <description><![CDATA[Stories by Ikwechegh Ukandu on Medium]]></description>
        <link>https://medium.com/@bontus?source=rss-2fca9bd82f1e------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*p6MR-2Z2em4YVsqVksTXxg.jpeg</url>
            <title>Stories by Ikwechegh Ukandu on Medium</title>
            <link>https://medium.com/@bontus?source=rss-2fca9bd82f1e------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Wed, 11 Nov 2026 04:08:54 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@bontus/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Embrace the Internal Package: A Go Project Structure for Clarity.]]></title>
            <link>https://bontus.medium.com/embrace-the-internal-package-a-go-project-structure-for-clarity-2207bacb4bed?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/2207bacb4bed</guid>
            <category><![CDATA[go]]></category>
            <category><![CDATA[golang-development]]></category>
            <category><![CDATA[golang]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Sat, 08 Jun 2024 10:22:29 GMT</pubDate>
            <atom:updated>2024-06-08T10:22:29.790Z</atom:updated>
            <content:encoded><![CDATA[<h3>Embrace the Internal Package: A Go-Project Structure for Clarity.</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vevjcouZLZSrLq5p9gVrFg.jpeg" /><figcaption>Awesome Gopher.</figcaption></figure><p>As your Go project flourishes, maintaining a well-structured and lucid code base becomes paramount. The “internal package” approach provides a compelling strategy to enhance code clarity and manageability.</p><p>Consider a project where all the code resides in a single directory. Navigating and comprehending the code base transforms into a daunting task. This is precisely where internal packages shine. It empowers you to organize related functionalities within private packages, keeping your project well-structured and promoting modularity.</p><p>Here’s how the internal package structure works:</p><ul><li>Create an internal directory within your project root.</li><li>Insideinternal, establish sub-directories for specific functionalities (e.g., api, database, utils).</li><li>Each sub-directory represents an internal package. Code within these packages is not accessible outside the project.</li></ul><p>This approach offers several benefits:</p><ul><li><strong>Clarity:</strong> Internal packages group related code, making it easier to understand the project’s overall structure. Developers can quickly grasp how different functionalities interact.</li><li><strong>Maintainability:</strong> As your project grows, modifying or extending specific functionalities becomes isolated within their respective internal packages. This reduces the risk of unintended side effects in other parts of the code base.</li><li><strong>Testability:</strong> Internal packages allow for writing focused unit tests for each functionality. This improves code quality and facilitates debugging.</li><li><strong>Encapsulation</strong>: The internal directory helps encapsulate your code, ensuring that implementation details are hidden and not inadvertently used by other packages or projects.</li><li><strong>Maintainability</strong>: By clearly separating internal logic from publicly accessible code, it becomes easier to maintain and refactor the codebase without worrying about breaking external dependencies.</li><li><strong>Reduced Coupling</strong>: Internal packages are less likely to create tight coupling with external packages, promoting better modularity and design.</li><li><strong>Enhanced Security</strong>: Restricting access to certain parts of your code can prevent misuse and enhance security by ensuring that only intended parts of the codebase are exposed.</li></ul><p>However, keep the following in mind:</p><ul><li><strong>Accessibility:</strong> Code within internal packages cannot be directly imported by external projects. This structure is ideal for self-contained applications.</li><li><strong>Naming Conventions:</strong> Use descriptive names for internal packages to clearly communicate their purpose.</li></ul><h4>The Ideal Go project structure.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/587/1*7ICCw2Dy0b8BxNl3I6Yctw.png" /><figcaption>Ideal Golang project structure</figcaption></figure><ul><li><strong>cmd/</strong>: This directory contains the entry points for your applications. Each sub-directory represents a different application or command. The main.go file in each sub-directory is the starting point for that application.</li><li><strong>internal/</strong>: Contains non-exported (private) application and library code. It can have sub-directories like app for the core application code and pkg for internal reusable packages.</li><li><strong>internal/app/</strong>: Core application logic goes here.</li><li><strong>internal/pkg/</strong>: Internal packages that are shared across the application but should not be accessible outside of the project.</li><li><strong>pkg/</strong>: Contains library code that you want to be accessible to other projects. These are reusable packages that are safe to be imported by external projects.</li><li><strong>api/</strong>: Stores API definitions and implementations, usually organized by version.</li><li><strong>api/v1/</strong>: Version 1 of your API.</li><li><strong>web/</strong>: Contains web-related files, such as HTML templates, CSS, JavaScript, and other static assets.</li><li><strong>web/static/</strong>: Static files such as images, CSS, and JavaScript.</li><li><strong>web/templates/</strong>: HTML templates for rendering web pages.</li><li><strong>scripts/</strong>: Contains various utility scripts for development, build, and deployment tasks.</li><li><strong>configs/</strong>: Configuration files, such as YAML or JSON files, that can be used for setting up the application.</li><li><strong>build/</strong>: Files needed for building the project, including CI (Continuous Integration) configurations and build scripts.</li><li><strong>build/ci/</strong>: CI configuration files.</li><li><strong>build/scripts/</strong>: Scripts related to building the project.</li><li><strong>docs/</strong>: Documentation files for the project.</li><li><strong>test/</strong>: Additional external test applications and test data.</li><li><strong>vendor/</strong>: Contains the project dependencies. This folder is managed by the go mod vendor command.</li><li><strong>go.mod</strong>: The Go module file that defines the module’s properties and dependencies.</li><li><strong>go.sum</strong>: The checksum file to ensure the integrity of the dependencies.</li></ul><h4>How to Use the Internal Directory</h4><p>To use the internal directory effectively, follow these practices:</p><ul><li><strong>Design for Re-usability Within the Project</strong>: Place code in internal that is meant to be reused across different parts of your project but not outside it.</li><li><strong>Group Related Code</strong>: Organize related code into sub-directories within internal to keep your project organized and understandable.</li><li><strong>Avoid Overusing</strong>: Not all code needs to be in internal. Use it judiciously for code that truly needs to be protected from external access.</li></ul><p>By embracing the internal package structure, you’ll foster a well-organized and maintainable Go project. It promotes code clarity, reduces complexity, and lays the foundation for future growth.<br>What are your thoughts on using internal packages? Let’s chat about it on <a href="https://x.com/bontusss">Twitter</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2207bacb4bed" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Chaining Middlewares in GoLang with Ease Using  Alice Package]]></title>
            <link>https://bontus.medium.com/chaining-middlewares-in-golang-with-ease-using-alice-package-76b9c8cd1263?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/76b9c8cd1263</guid>
            <category><![CDATA[golang]]></category>
            <category><![CDATA[go]]></category>
            <category><![CDATA[middleware]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Sat, 28 Oct 2023 15:29:38 GMT</pubDate>
            <atom:updated>2023-10-28T15:29:38.246Z</atom:updated>
            <content:encoded><![CDATA[<h3>Chaining Middlewares in GoLang with Ease Using the Alice Package</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/1*fDDJTdiAfSHkd9DDuyfvBA.jpeg" /><figcaption>Middleware in golang</figcaption></figure><p>Middleware plays a pivotal role in GoLang web development, offering a way to preprocess and post-process HTTP requests and responses. These middlewares can be chained together to create a sequence of operations that enhance and manage web application functionality. While it is possible to handcraft middleware chains in GoLang, there&#39;s a more efficient and convenient way to do so using the Alice package. In this article, we&#39;ll explore how to chain middlewares in GoLang with the Alice package, making the process more elegant and maintainable.</p><p>Understanding Middleware in GoLang</p><p>Middleware is a set of functions that handle HTTP requests and responses in a web application. These functions intercept incoming requests and can perform tasks such as logging, authentication, data validation, and more before passing the request to the main application handler.</p><p>Chaining these middlewares means connecting them in a sequence to create a pipeline for request processing, where each middleware can manipulate the request and pass it to the next in the chain. GoLang&#39;s `http.Handler` interface facilitates the chaining of middlewares.</p><h3>Introducing the Alice Package</h3><p>The <a href="https://github.com/justinas/alice">Alice</a> package, created by Justinas Stankevičius, simplifies the process of chaining middlewares in GoLang. It provides a clear and expressive way to build middleware chains. Before diving into how to use the Alice package, you&#39;ll need to install it using the go get command:</p><p>```bash<br>go get github.com/justinas/alice<br>```</p><h3>Chaining Middlewares with Alice</h3><p>Let&#39;s explore how to chain middlewares using the Alice package:</p><p>1. Import the Alice package in your GoLang code:</p><p>```go<br>import &quot;github.com/justinas/alice&quot;<br>```</p><p>2. Define your middleware functions. Middleware functions should accept an `http.Handler` and return a new `http.Handler`. For example:</p><p>```go<br>func LoggerMiddleware(next http.Handler) http.Handler {<br> return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {<br> log.Printf(&quot;Request: %s %s&quot;, r.Method, r.URL.Path)<br> next.ServeHTTP(w, r)<br> })<br>}</p><p>func AuthMiddleware(next http.Handler) http.Handler {<br> return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {<br> // Authentication logic here<br> if authenticated {<br> next.ServeHTTP(w, r)<br> } else {<br> http.Error(w, &quot;Unauthorized&quot;, http.StatusUnauthorized)<br> }<br> })<br>}</p><p>func MainHandler(w http.ResponseWriter, r *http.Request) {<br> // Your main application logic<br>}<br>```</p><p>3. Create an Alice middleware chain by chaining the middleware functions together, and then use the chain as a `http.Handler`:</p><p>```go<br>func main() {<br> chain := alice.New(<br> LoggerMiddleware,<br> AuthMiddleware,<br> ).Then(http.HandlerFunc(MainHandler))</p><p>http.Handle(&quot;/&quot;, chain)<br> http.ListenAndServe(&quot;:8080&quot;, nil)<br>}<br>```</p><p>In the example above, we&#39;ve defined a middleware chain that logs requests using `LoggerMiddleware`, checks for authentication using `AuthMiddleware`, and finally passes the request to the `MainHandler`.</p><p>Benefits of Using Alice for Middleware Chaining</p><p>1. Readability: Alice makes your middleware chains highly readable and expressive, making it clear which middlewares are applied in which order.</p><p>2. Flexibility: Easily add, remove, or reorder middlewares in your chain to adapt to changing requirements.</p><p>3. Centralized Configuration: Manage all your middleware configurations in one place, making it easier to control and maintain your application’s request processing pipeline.</p><p>4. Error Handling: Centralized error handling becomes more straightforward when you have a well-structured middleware chain.</p><h3>Conclusion</h3><p>Chaining middlewares in GoLang using the Alice package is an elegant and efficient way to enhance the functionality of your web applications. By providing a clear and readable way to create middleware chains, Alice simplifies the process of managing cross-cutting concerns like authentication, logging, and more. With the flexibility to adjust middleware chains as needed, you can adapt your web application to changing requirements with ease. Whether you&#39;re building a small web service or a large-scale web application, the Alice package makes middleware chaining in GoLang a more maintainable and streamlined process.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=76b9c8cd1263" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Database Design]]></title>
            <link>https://bontus.medium.com/database-design-5559d3b6aaa4?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/5559d3b6aaa4</guid>
            <category><![CDATA[postgres]]></category>
            <category><![CDATA[database]]></category>
            <category><![CDATA[sql]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Sat, 08 Jul 2023 14:19:43 GMT</pubDate>
            <atom:updated>2023-07-08T14:19:43.864Z</atom:updated>
            <content:encoded><![CDATA[<p>Design a database schema using dbdiagram.io and generate codes automatically.</p><figure><img alt="A computer with some codes" src="https://cdn-images-1.medium.com/max/1024/0*FNAtw3zHbSOTVyKv" /><figcaption>Photo by <a href="https://unsplash.com/@casparrubin?utm_source=medium&amp;utm_medium=referral">Caspar Camille Rubin</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>This short tutorial will help you learn how to design and create an SQL DB schema using<a href="https://dbdiagram.io/d"> dbdiagram.io</a>. We will also learn how to save and share DB diagrams, then how to generate code to create the schema in a target database engine.</p><p>Let’s get to it. The picture below is the interface you will see when you visit <a href="https://dbdiagram.io/d">dbdiagram</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bqVaWqpLhzmuZcSO8uXG6Q.png" /><figcaption>dbdiagram.io interface</figcaption></figure><p>The left hand side is where you design your DB schema, the right hand side shows you a graphical representation of your design including relationships that you can share with your team. You can use the export menu on the top bar to generate a code for your design in different variants including PDF, PNG, SVG, generate SQL, Postgres and SQL-server codes. The share button allows to generate a shareable link to your design, an embed link and an option to invite someone via their email address.</p><p>If you already have an SQL code and wants see a graphical representation or you just want to redesign it, the import button allows to import SQL codes of different databases including — schema.rb — files from Rails. There’s also a history button to check previous saved versions of your designs.</p><h3>Designing a database Schema</h3><p>The left hand side is where we design the db schema. Dbdiagram has a default design once you open the app. The design has three tables and their respective fields with a corresponding diagram in the right. We will create a simple savings app database to learn the database markup language used in dbdiagram. The first thing is to give our project a name, I’ll name it Simple savings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/994/1*z8VSx3rbqikc5Pe3RJWz8Q.png" /><figcaption>Naming our project</figcaption></figure><p>We will have two tables namely the Users, Withdrawals and Savings tables. To design a database in dbdiagram, we use the DBML — Database Markup Language, you can check out the docs <a href="https://dbml.dbdiagram.io/docs/">here</a> for more details.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/634/1*lY6c9PiV-iJR4t4sHjO6yQ.png" /><figcaption>DBML codes</figcaption></figure><p>The image above show a complete design of our database. We have three tables with fields. We can create timestamps and give default values to the fields. The DBML allows us to build complex database schema and it updates our changes in real time. Below is a diagram generated for our design that i can share with my team.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aLgg-lBvSsSpm20otv5O1w.png" /><figcaption>DBML and Diagram</figcaption></figure><p>When ever you finish writing on the left hand side, click on the auto arrange button on the bottom panel to arrange the diagram to fit your screen. Designing databases can always be a dilemma but with this tool, it can be a flex. You can also manually rearrange the diagram what best works for you. The image below shows a rearranged version of our design show the relationships and references better.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/989/1*GVItmSlwKbAMJQ04YXJjXw.png" /><figcaption>Rearranged diagram</figcaption></figure><p>Now we can generate and download postgres code of our design using the export button and use it in our project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*Xl1dI_0dY24DkoUGE8GmDA.png" /><figcaption>Postgres code</figcaption></figure><p>Image below show the code generated for MySql database. You can see the use of back-ticks instead of quotes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*92gMMcg7d7pmx7rB2G9EJA.png" /><figcaption>MySql code</figcaption></figure><p>The image belows the generated code for Sql Server.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*QSRd8CfAU3rN9w7_iGq9cg.png" /><figcaption>MS SQL Server code</figcaption></figure><p>You can also generate PNG and PDF versions of your design.</p><p>To get updates on other articles, follow me on medium or <a href="https://twitter.com/bontusss">twitter</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5559d3b6aaa4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introduction to Golang]]></title>
            <link>https://bontus.medium.com/introduction-to-golang-c6dc2c26c850?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/c6dc2c26c850</guid>
            <category><![CDATA[golang-tutorial]]></category>
            <category><![CDATA[programming-languages]]></category>
            <category><![CDATA[go]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Thu, 09 Apr 2020 10:46:07 GMT</pubDate>
            <atom:updated>2022-12-21T15:06:10.590Z</atom:updated>
            <content:encoded><![CDATA[<p>In this article, I am going to tell you everything you need to know about Go lang, also called Go. According to the <a href="https://golang.org/">Go website</a>, Go is an opensource programming language that makes it easy to build simple, reliable, and efficient software developed by a team at Google. The core developers include 1. <a href="https://en.wikipedia.org/w/index.php?title=Robert_Griesemer&amp;action=edit&amp;redlink=1">Robert Griesemer</a><br>2. <a href="https://en.wikipedia.org/wiki/Rob_Pike">Rob Pike</a><br>3 .<a href="https://en.wikipedia.org/wiki/Ken_Thompson">Ken Thompson</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/650/0*hUIWnFxjsmVNXtur.png" /><figcaption>Go Logo</figcaption></figure><p>Go was built from concepts from other languages like Algol, Pascal, C, Modula, Oberon, Smalltalk and Newsqueak. Go inherited mostly from Oberon language and its syntax is from C. Go’s OOP is more like Smalltalk but in Go, you can attach methods to any type. And concurrency is mostly from Newsqueak which is a language also from Rob Pike and heavily inspired by Hoare’s paper of CSP (<a href="https://en.wikipedia.org/wiki/Communicating_sequential_processes">Communicating Sequential Processes</a>). The langauge is called <strong>Golang</strong> because of its domain name <em>golang.org</em> but the proper name is <strong>GO. </strong>It was designed in 2007 to improve programming productivity at Google. The designers wanted to address criticism of other languages in use at <a href="https://en.wikipedia.org/wiki/Google">Google</a>, but keep their useful characteristics. Go was publicly announced in November 2009, and version 1.0 was released in March 2012. Go is widely used in production at Google and in many other organizations and <a href="https://github.com/golang/go/wiki/Projects">open-source projects.</a></p><h3>Why create a new language?</h3><p>To answer this, we have to look at the very useful languages used at the time at Google. At the GO was designed, there were three languages that were the bedrock of Google’s productions. PYTHON, JAVA and C/C++. Each of this languages is very powerful on their own, however Google noticed that there was some loop holes which made the Go designers decide the bridge that gap. For example, python is very easy to use and the learning is not to huge but it is very slow because of the compile time because it is an interpreted language. Java is very quick but its type system has become very complex overtime (Its a natural trend for programming languages, they start out very simple but grows complex trying to implement additional use cases and features). Like java C and C++ is very quick but suffers the same complex type system and the learning curve is somewhat tiring. When C/C++ were designed, computers have considerable low memories unlike today, so a decision to maximize memory made C and C++ what they are today. In addition, all these applications were created at a time when multi threaded applications were extremely rare so concurrency in these languages were patched in at best.</p><blockquote><strong>Concurrency</strong> is when two tasks overlap in execution. In <strong>programming</strong>, these situations are encountered: When two processes are assigned to different cores on a machine by the kernel, and both cores execute the process instructions at the same time.</blockquote><h3>How Go solves these problems</h3><p>The first thing you need to understand is that Go is a:</p><h4>Strong and statically typed language.</h4><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28171%252C%2520184%252C%2520195%252C%25201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%252520main%25250A%25250Aimport%28fmt%29%25250A%25250Afunction%252520main%28%29%252520%25257B%25250A%252520%252520var%252520name%252520string%252520%25253D%252520%252522Bontus%252520Mayor%252522%25250A%252520%252520fmt.println%28name%29%25250A%25257D&amp;display_name=Carbon&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28171%25252C%252520184%25252C%252520195%25252C%2525201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%25252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%25252520main%2525250A%2525250Aimport%28fmt%29%2525250A%2525250Afunction%25252520main%28%29%25252520%2525257B%2525250A%25252520%25252520var%25252520name%25252520string%25252520%2525253D%25252520%25252522Bontus%25252520Mayor%25252522%2525250A%25252520%25252520fmt.println%28name%29%2525250A%2525257D&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d7d62db9cbe424c8adb0bb0aeed41faa/href">https://medium.com/media/d7d62db9cbe424c8adb0bb0aeed41faa/href</a></iframe><p>It inherits this feature set from java and c/c++. The type of the variable “name” cannot change overtime. We have explicitly told the compiler that the variable is a string. Static typing means that all your variables have to be designed at compile time. There are other ways around this if you dont want to statically declare variables but most of the time, you have to do this and enjoy the benefits that comes with static typing.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28171%252C%2520184%252C%2520195%252C%25201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%252520main%25250A%25250Aimport%28fmt%29%25250A%25250Afunction%252520main%28%29%252520%25257B%25250A%252520%252520var%252520name%252520%25253A%25253D%252520%252522Bontus%252520Mayor%252522%25250A%252520%252520fmt.println%28name%29%25250A%25257D&amp;display_name=Carbon&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28171%25252C%252520184%25252C%252520195%25252C%2525201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%25252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%25252520main%2525250A%2525250Aimport%28fmt%29%2525250A%2525250Afunction%25252520main%28%29%25252520%2525257B%2525250A%25252520%25252520var%25252520name%25252520%2525253A%2525253D%25252520%25252522Bontus%25252520Mayor%25252522%2525250A%25252520%25252520fmt.println%28name%29%2525250A%2525257D&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/2dec91d5ab1fba8782bba522d0de0dbb/href">https://medium.com/media/2dec91d5ab1fba8782bba522d0de0dbb/href</a></iframe><h4>Go has an excellent community</h4><p>There are at least half a million programmers in the <a href="https://research.swtch.com/gophercount">Go community</a>. Just because Go is a nice language doesn’t guarantee its success. The Go community is committed to making new developers ramping on Go get the best experience as possible. Most notable companies are Google, Docker, Dropbox, Heroku, Medium, Lyft, Uber, <a href="https://github.com/golang/go/wiki/GoUsers">and others</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xUVOejrPM0x3Rh_a.png" /><figcaption><a href="https://www.tiobe.com/tiobe-index/">https://www.tiobe.com/tiobe-index/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FGfCSGm2nf0yjnof.png" /><figcaption>Stackoverflow</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XzvXe9rSK82R1IKI.png" /><figcaption><a href="https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted">https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*wRO1QI2vmpjEtcqT.jpg" /><figcaption>A chart showing that 36% of developers want to learn Go next, followed by Python and Kotlin — Freecodecamp</figcaption></figure><h3>Concurrency</h3><p>Concurrency is extremely important at our time. It allows multiple processes running simultaneously and effectively.</p><p>Golang has efficient concurrency, like C, C++, Java, and at the same time concurrency in Go is done much easier thanks to goroutines, channels, and garbage collection.</p><h3>Let’s get our hands dirty a bit</h3><h4>Installation</h4><p>To download the Go language, find the file for your machine <a href="https://golang.org/dl/">here</a>. install the Go language follow the instructions <a href="https://golang.org/doc/install/source">here</a>.</p><p>We are going to learn some concepts in writing Go. Let’s an ASCII art…</p><h4>Gopher it from code academy</h4><p>An effective way to learn something new is by making something! In this project we’re going to incorporate the use of fmt to make <a href="https://en.wikipedia.org/wiki/ASCII_art">ASCII art</a>. One suggestion is to make a gopher:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28171%252C%2520184%252C%2520195%252C%25201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3D%252520%252520%252520%252520%252520%252520%252560.-%25253A%25253A%25253A%25253A%25253A%25253A-.%252560%25250A%252520%252520.%25253A-%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A-%25253A.%25250A%252520%252520%252560_%25253A%25253A%25253A%252520%252520%252520%252520%25253A%25253A%252520%252520%252520%252520%25253A%25253A%25253A_%252560%25250A%252520%252520%252520.%25253A%28%252520%25255E%252520%252520%252520%25253A%25253A%252520%25255E%252520%252520%252520%29%25253A.%25250A%252520%252520%252520%252560%25253A%25253A%25253A%252520%252520%252520%28..%29%252520%252520%252520%25253A%25253A%25253A.%25250A%252520%252520%252520%252560%25253A%25253A%25253A%25253A%25253A%25253A%25253AUU%25253A%25253A%25253A%25253A%25253A%25253A%25253A%252560%25250A%252520%252520%252520.%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A.%25250A%252520%252520%252520O%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253AO%25250A%252520%252520%252520-%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A-%25250A%252520%252520%252520%252560%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%252560%25250A%252520%252520%252520%252520.%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A.%25250A%252520%252520%252520%252520%252520%252520oO%25253A%25253A%25253A%25253A%25253A%25253A%25253AOo&amp;display_name=Carbon&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28171%25252C%252520184%25252C%252520195%25252C%2525201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%25252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3D%25252520%25252520%25252520%25252520%25252520%25252520%25252560.-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-.%25252560%2525250A%25252520%25252520.%2525253A-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-%2525253A.%2525250A%25252520%25252520%25252560_%2525253A%2525253A%2525253A%25252520%25252520%25252520%25252520%2525253A%2525253A%25252520%25252520%25252520%25252520%2525253A%2525253A%2525253A_%25252560%2525250A%25252520%25252520%25252520.%2525253A%28%25252520%2525255E%25252520%25252520%25252520%2525253A%2525253A%25252520%2525255E%25252520%25252520%25252520%29%2525253A.%2525250A%25252520%25252520%25252520%25252560%2525253A%2525253A%2525253A%25252520%25252520%25252520%28..%29%25252520%25252520%25252520%2525253A%2525253A%2525253A.%2525250A%25252520%25252520%25252520%25252560%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AUU%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%25252560%2525250A%25252520%25252520%25252520.%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A.%2525250A%25252520%25252520%25252520O%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AO%2525250A%25252520%25252520%25252520-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-%2525250A%25252520%25252520%25252520%25252560%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%25252560%2525250A%25252520%25252520%25252520%25252520.%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A.%2525250A%25252520%25252520%25252520%25252520%25252520%25252520oO%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AOo&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d61784c3fda2ffaeb10ef3f15b0e7ef4/href">https://medium.com/media/d61784c3fda2ffaeb10ef3f15b0e7ef4/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28171%252C%2520184%252C%2520195%252C%25201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%252520main%25250A%25250Aimport%252520%252522fmt%252522%25250A%25250Afunc%252520main%28%29%252520%25257B%25250A%252509var%252520a%252520string%252520%25253D%252520%252522%252560%252520%252520%252520%252520.-%25253A%25253A%25253A%25253A%25253A%25253A-%252520%252520%252520%252520%252520%252560%252522%25250A%252509var%252520b%252520string%252520%25253D%252520%252522.%25253A-%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A-%25253A.%252522%25250A%252509var%252520c%252520string%252520%25253D%252520%252522%252560_%25253A%25253A%25253A%252520%252520%252520%252520%25253A%25253A%252520%252520%252520%252520%25253A%25253A%25253A_%252560%252522%25250A%252509d%252520%25253A%25253D%252520%252522%252520.%25253A%28%252520%25255E%252520%252520%252520%25253A%25253A%252520%25255E%252520%252520%252520%29%25253A.%252520%252522%25250A%252509e%252520%25253A%25253D%252520%252522%252520%252560%25253A%25253A%25253A%252520%252520%252520%28..%29%252520%252520%252520%25253A%25253A%25253A.%252520%252522%25250A%252509var%252520f%252520string%252520%25253D%252520%252522%252520%252560%25253A%25253A%25253A%25253A%25253A%25253A%25253AUU%25253A%25253A%25253A%25253A%25253A%25253A%25253A%252560%252520%252522%25250A%252509g%252520%25253A%25253D%252520%252522%252520.%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A.%252520%252522%25250A%252509var%252520h%252520string%252520%25253D%252520%252522%252520O%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253AO%252520%252522%25250A%252509i%252520%25253A%25253D%252520%252522%252520-%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A-%252520%252522%25250A%252509var%252520j%252520string%252520%25253D%252520%252522%252520%252560%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%252560%252520%252522%25250A%252509k%252520%25253A%25253D%252520%252522%252520%252520.%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A%25253A.%252520%252520%252522%25250A%252509z%252520%25253A%25253D%252520%252522%252520%252520%252520%252520oO%25253A%25253A%25253A%25253A%25253A%25253A%25253AOo%252520%252520%252520%252520%252520%252522%25250A%252509fmt.Println%28a%29%25250A%252509fmt.Println%28b%29%25250A%252509fmt.Println%28c%29%25250A%252509fmt.Println%28d%29%25250A%252509fmt.Println%28e%29%25250A%252509fmt.Println%28f%29%25250A%252509fmt.Println%28g%29%25250A%252509fmt.Println%28h%29%25250A%252509fmt.Println%28i%29%25250A%252509fmt.Println%28j%29%25250A%252509fmt.Println%28k%29%25250A%252509fmt.Println%28z%29%25250A%252509fmt.Println%28%252522Bontus%252520Mayor%252520-%252520Mascot%252522%29%25250A%25250A%25257D%25250A&amp;display_name=Carbon&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28171%25252C%252520184%25252C%252520195%25252C%2525201%29%26t%3Dseti%26wt%3Dnone%26l%3Dtext%25252Fx-go%26ds%3Dtrue%26dsyoff%3D20px%26dsblur%3D68px%26wc%3Dtrue%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DHack%26fs%3D14px%26lh%3D133%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dpackage%25252520main%2525250A%2525250Aimport%25252520%25252522fmt%25252522%2525250A%2525250Afunc%25252520main%28%29%25252520%2525257B%2525250A%25252509var%25252520a%25252520string%25252520%2525253D%25252520%25252522%25252560%25252520%25252520%25252520%25252520.-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-%25252520%25252520%25252520%25252520%25252520%25252560%25252522%2525250A%25252509var%25252520b%25252520string%25252520%2525253D%25252520%25252522.%2525253A-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-%2525253A.%25252522%2525250A%25252509var%25252520c%25252520string%25252520%2525253D%25252520%25252522%25252560_%2525253A%2525253A%2525253A%25252520%25252520%25252520%25252520%2525253A%2525253A%25252520%25252520%25252520%25252520%2525253A%2525253A%2525253A_%25252560%25252522%2525250A%25252509d%25252520%2525253A%2525253D%25252520%25252522%25252520.%2525253A%28%25252520%2525255E%25252520%25252520%25252520%2525253A%2525253A%25252520%2525255E%25252520%25252520%25252520%29%2525253A.%25252520%25252522%2525250A%25252509e%25252520%2525253A%2525253D%25252520%25252522%25252520%25252560%2525253A%2525253A%2525253A%25252520%25252520%25252520%28..%29%25252520%25252520%25252520%2525253A%2525253A%2525253A.%25252520%25252522%2525250A%25252509var%25252520f%25252520string%25252520%2525253D%25252520%25252522%25252520%25252560%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AUU%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%25252560%25252520%25252522%2525250A%25252509g%25252520%2525253A%2525253D%25252520%25252522%25252520.%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A.%25252520%25252522%2525250A%25252509var%25252520h%25252520string%25252520%2525253D%25252520%25252522%25252520O%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AO%25252520%25252522%2525250A%25252509i%25252520%2525253A%2525253D%25252520%25252522%25252520-%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A-%25252520%25252522%2525250A%25252509var%25252520j%25252520string%25252520%2525253D%25252520%25252522%25252520%25252560%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%25252560%25252520%25252522%2525250A%25252509k%25252520%2525253A%2525253D%25252520%25252522%25252520%25252520.%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A.%25252520%25252520%25252522%2525250A%25252509z%25252520%2525253A%2525253D%25252520%25252522%25252520%25252520%25252520%25252520oO%2525253A%2525253A%2525253A%2525253A%2525253A%2525253A%2525253AOo%25252520%25252520%25252520%25252520%25252520%25252522%2525250A%25252509fmt.Println%28a%29%2525250A%25252509fmt.Println%28b%29%2525250A%25252509fmt.Println%28c%29%2525250A%25252509fmt.Println%28d%29%2525250A%25252509fmt.Println%28e%29%2525250A%25252509fmt.Println%28f%29%2525250A%25252509fmt.Println%28g%29%2525250A%25252509fmt.Println%28h%29%2525250A%25252509fmt.Println%28i%29%2525250A%25252509fmt.Println%28j%29%2525250A%25252509fmt.Println%28k%29%2525250A%25252509fmt.Println%28z%29%2525250A%25252509fmt.Println%28%25252522Bontus%25252520Mayor%25252520-%25252520Mascot%25252522%29%2525250A%2525250A%2525257D%2525250A&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/3f0f7007c611e3336c9e5c8e89525c5c/href">https://medium.com/media/3f0f7007c611e3336c9e5c8e89525c5c/href</a></iframe><p>This is my first article on Golang and i hope doing more as i learn more. yo can follow me on twitter <a href="https://twitter.com/bontusss">here</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c6dc2c26c850" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to create a free blog on GitHub with Jekyll.]]></title>
            <link>https://bontus.medium.com/how-to-create-a-free-blog-on-github-with-jekyll-b00f19325a?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/b00f19325a</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[blog]]></category>
            <category><![CDATA[jekyll]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Tue, 07 Jan 2020 02:14:01 GMT</pubDate>
            <atom:updated>2020-01-07T02:38:47.553Z</atom:updated>
            <content:encoded><![CDATA[<p>Just in case you haven’t heard about GitHub, which i doubt, <a href="http://github.com/">GitHub</a> is a global company that provides hosting for software development version control using Git. <a href="https://git-scm.com/">Git</a> is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.</p><h3>What is Jekyll</h3><p>Jekyll is a simple, blog-aware, static site generator for personal, project, or organization sites. With Jekyll, you don’t need any databases, no heavy downloads and it has a comment moderation ability. All you need do is just write a <a href="http://markdownguide.org/">markdown</a>, <a href="https://shopify.github.io/liquid/basics/introduction/">liquid</a>, HTML and CSS — Then, a static site comes out ready for deployment. Permalinks, categories, pages, posts, custom layouts are all optimized.</p><h3>Now, Lets begin…</h3><ol><li>Create a <a href="http://github.com/">GitHub</a> account, but if you already have an account, login to GitHub.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*IGxumojnqXG8N-vJWw0yww.jpeg" /><figcaption>Github and Jekyll. Source - webhostwhat</figcaption></figure><p>2. Create a new repository</p><p>3. Fill in the informations and click on create. You need to use the format YOUR_USERNAME.github.io to fill in the repository name for it to work. Then click on create at the bottom of the page.</p><h3>Set up jekyll locally</h3><ol><li>First, you will need to install Ruby. If you don’t have it yet, <a href="https://www.ruby-lang.org/en/documentation/installation/">follow this tutorial</a>.</li></ol><p>2. You will also need Bundler so if you don’t have it installed yet, run gem install bundler.</p><p>3. Now, let’s install Jekyll. We’re going to use a Gem named gitHub-pages which comes with Jekyll and all the required tools. Let’s install this gem with gem install github-pages.</p><p>Now that Jekyll is installed, you can create your new blog with the following command:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Djekyll%252520new%252520YOUR_WEBSITE_NAME&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%25252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Djekyll%25252520new%25252520YOUR_WEBSITE_NAME&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/bdcaac00df883f5d6522698c5673eaaf/href">https://medium.com/media/bdcaac00df883f5d6522698c5673eaaf/href</a></iframe><p>After installing, it will generates a folder with the following structure:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dbontus%25252F%25250A%252520%252520.gitignore%25250A%252520%252520_config.yml%25250A%252520%252520_includes%25250A%252520%252520_layouts%25250A%252520%252520_posts%25250A%252520%252520_sass%25250A%252520%252520about.md%25250A%252520%252520css%25250A%252520%252520feed.xml%25250A%252520%252520index.html&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%25252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dbontus%2525252F%2525250A%25252520%25252520.gitignore%2525250A%25252520%25252520_config.yml%2525250A%25252520%25252520_includes%2525250A%25252520%25252520_layouts%2525250A%25252520%25252520_posts%2525250A%25252520%25252520_sass%2525250A%25252520%25252520about.md%2525250A%25252520%25252520css%2525250A%25252520%25252520feed.xml%2525250A%25252520%25252520index.html&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/8dde31122131e5159f1b94a9b73649a2/href">https://medium.com/media/8dde31122131e5159f1b94a9b73649a2/href</a></iframe><p>In this case, the name of my project is <strong>bontus. </strong>Next we’re going to initialize Git in your directory, so move inside of it with cd bontus.</p><p>Run the following commands to start versioning your static website with Git.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%252520init%25250Agit%252520add%252520.%25250Agit%252520commit%252520-m%252520%2527Initial%252520Commit%2527&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%25252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%25252520init%2525250Agit%25252520add%25252520.%2525250Agit%25252520commit%25252520-m%25252520%27Initial%25252520Commit%27&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/eebcee0d75e2b3b2c0567936e51cb6e7/href">https://medium.com/media/eebcee0d75e2b3b2c0567936e51cb6e7/href</a></iframe><p>Next we’ll create a Gemfile. Why? Well, if you work on your website/blog from other computers, you will need to re-install Jekyll multiple times. The easiest way to do this is simply adding a Gemfile to the project that will contain the dependencies (i.e. github-pages).</p><p>Create a file named bontus/Gemfile and put the following inside:</p><pre>source &#39;https://rubygems.org&#39; <br>gem &#39;github-pages&#39;</pre><p>Then run bundle install. Let’s commit the new files (Gemfile and the newly generated Gemfile.lock).</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%252520add%252520.%252520%252526%252526%252520git%252520commit%252520-m%252520%2527Add%252520Gemfile%2527&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%25252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%25252520add%25252520.%25252520%25252526%25252526%25252520git%25252520commit%25252520-m%25252520%27Add%25252520Gemfile%27&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/399bbd27842ef301d8789424d1d04b55/href">https://medium.com/media/399bbd27842ef301d8789424d1d04b55/href</a></iframe><p>Before we push our new blog to GitHub, let’s try it in local and write an article.</p><h3>Test run Jekyll locally</h3><p>It’s pretty easy to run Jekyll in local, just run the following command from your website/blog folder.</p><pre>bundle exec jekyll serve</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/781/0*ZogZzLwxICF6kAdd" /><figcaption>Sample project</figcaption></figure><p>Congratulations, you now have Jekyll up and running… in local!</p><h3>Taking it live</h3><p>We did before so it shouldn’t be too hard. Just run the two following commands and everything should be pushed to Github correctly. Don’t forget to replace YOUR_USERNAME with your actual Github username.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%252520remote%252520add%252520origin%252520https%25253A%25252F%25252Fgithub.com%25252FYOUR_USERNAME%25252FYOUR_USERNAME.github.io.git%25250Agit%252520push%252520origin%252520master&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dapplication%25252Fx-sh%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3Dgit%25252520remote%25252520add%25252520origin%25252520https%2525253A%2525252F%2525252Fgithub.com%2525252FYOUR_USERNAME%2525252FYOUR_USERNAME.github.io.git%2525250Agit%25252520push%25252520origin%25252520master&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/2458ddc9286e1903923ce8915af3721a/href">https://medium.com/media/2458ddc9286e1903923ce8915af3721a/href</a></iframe><p>Our blog is now live at YOUR_USERNAME.github.io</p><h3>Writing our first post</h3><p>Alright, our static website is ready! Now we just need to add content. There’s already an article but let’s remove it and create a real one. Posts have to be created in the folder _posts/ and need to be formatted as YEAR-MONTH-DAY-title.md.</p><p>Let’s create one now, I will call mine 2020-11-13-my-first-post.md.</p><p>Next we need to define the meta-data of our post and add a bit of content:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcarbon.now.sh%2Fembed%3Fbg%3Drgba%28155%252C155%252C155%252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dmarkdown%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%2520Code%26fs%3D14px%26lh%3D152%2525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3D---%25250Alayout%25253A%252520post%25250Atitle%25253A%252520%252520%252522My%252520First%252520Post%252522%25250Adate%25253A%252520%252520%2525202015-11-13%25252021%25253A00%25253A00%25250Acategories%25253A%252520stuff%25250A---%25250A%25250ANice%21&amp;url=https%3A%2F%2Fcarbon.now.sh%2F%3Fbg%3Drgba%28155%25252C155%25252C155%25252C1%29%26t%3Dnight-owl%26wt%3Dnone%26l%3Dmarkdown%26ds%3Dtrue%26dsyoff%3D24px%26dsblur%3D19px%26wc%3Dfalse%26wa%3Dtrue%26pv%3D56px%26ph%3D56px%26ln%3Dfalse%26fl%3D1%26fm%3DFira%252520Code%26fs%3D14px%26lh%3D152%252525%26si%3Dfalse%26es%3D2x%26wm%3Dfalse%26code%3D---%2525250Alayout%2525253A%25252520post%2525250Atitle%2525253A%25252520%25252520%25252522My%25252520First%25252520Post%25252522%2525250Adate%2525253A%25252520%25252520%252525202015-11-13%2525252021%2525253A00%2525253A00%2525250Acategories%2525253A%25252520stuff%2525250A---%2525250A%2525250ANice%21&amp;image=https%3A%2F%2Fcarbon.now.sh%2Fstatic%2Fbrand%2Fbanner.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;scroll=auto&amp;schema=carbon" width="1024" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/41390417f8d866a7215ce3c1068b082e/href">https://medium.com/media/41390417f8d866a7215ce3c1068b082e/href</a></iframe><p>Well that’s it, you’re all set to write some awesome articles for your website or blog!</p><h3>9. Pushing our article</h3><p>We got a new article and I’d like everyone to be able to read it. To do this, we need to use Git and push it to the GitHub repository just like we did previously.</p><pre>git add .<br>git commit -m &#39;My First Post&#39;<br>git push origin master</pre><p>And we’re done.</p><p>Since our blog doesn’t have a database and we still need people to comment on our posts, The solution is <a href="http://disqus.com/">disqus</a>!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2Flog8tj%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2Flog8tj&amp;image=http%3A%2F%2Fapi.screenshotlayer.com%2Fapi%2Fcapture%3Faccess_key%3Dfe59908dad3baab69ffab249a2224b03%26viewport%3D1024x612%26width%3D1000%26url%3Dhttps%253A%252F%252Fupscri.be%252Flog8tj%253Fscreenshot&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href">https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b00f19325a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to create an Authentication system in Vue.]]></title>
            <link>https://bontus.medium.com/how-to-create-an-authentication-system-in-vue-9e8fcfaf857?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/9e8fcfaf857</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[vue-router]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[firebase]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Sun, 22 Dec 2019 16:49:04 GMT</pubDate>
            <atom:updated>2020-01-07T02:40:50.998Z</atom:updated>
            <content:encoded><![CDATA[<p>Hey guys, today we are gonna look at how I created an authentication system using Vue and <a href="http://firebase.google.com/">Firebase</a>. Authentication is simply identifying an individual, usually based on a username or password before they can have access to a the data on your application.</p><h3>Why use Vue</h3><p>With over 154k stars on GitHub, Vue.js is currently the trendiest JavaScript front-end framework, beating Angular and React in GitHub star count by a fair margin. When it comes to overall popularity, React is still the king and Angular, thanks to its specificity, holds a solid place. But here in Nigeria, I don’t see much community behind Vue for a while now, and the developer community worldwide, too, seems to be following suit. So what is it about Vue that makes it gain more traction every month?</p><p>Vue might have started as a small project driven by developer needs of its creator, Evan You, but it has matured considerably over the years — becoming a full-fledged framework with a grownup ecosystem and developer tooling. Along the way, <a href="https://www.monterail.com/blog/people-to-watch-if-youre-a-vue.js-developer">Vue attracted a decent number of contributors, sponsors, and evangelists</a>.</p><h3>What is Firebase?</h3><p>In short terms, Firebase is a set of tools that allows you to develop an application without server-side programming. It has real-time database, authentication system, crash reporting, analytics and other services ready to use in your mobile/web app. That way, you can focus on your app and users.</p><p>For application with minimal back-end needs such as authentication or database storage, no need to re-invent the wheel, Firebase does it for you, and gives you much more tools. Also, you don’t need to bother about scaling, server performance and database size, Firebase scales everything automatically.</p><h3>Shall we begin?</h3><p>First, we are going to initialize a new Vue project by using the great tool <strong>Vue Cli 3</strong><em> (</em><a href="https://github.com/vuejs/vue-cli"><em>https://github.com/vuejs/vue-cli</em></a>).</p><p>If you don’t already have <strong>vue cli</strong> installed, let’s install it (This is done on your terminal — windows + R, then type CMD and press enter):</p><pre>$ npm install -g @vue/cli</pre><p>Now that you have <strong>vue cli</strong> installed, let’s create a new project. In vue cli documentation, it say’s:</p><pre><strong>Usage<br></strong>$ vue create &lt;project-name&gt;</pre><p>One of the cool features of <strong>Vue CLI 3</strong>, is that you can initialize your project with zero configuration required, so that you can start to code as fast as possible.</p><p>Let’s create our new Vue project and call it ‘<em>vue-firebase-auth’</em>.<br><strong>N/B</strong>: <em>inside your CMD, go the folder you want to save your project. if you want your project to live on your documents folder. type</em><strong> cd/documents</strong><em> to enter the documents folder. Then type the command below.</em></p><pre>$ vue create auth-system</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/508/0*mWTba4fYE4lw3RSU.png" /><figcaption>Scaffolding a Vue project</figcaption></figure><p>You will be prompted to pick a preset. You can either choose the default preset which comes with a basic Babel + ESLint setup, or select “<em>Manually select features</em>” to pick the features you need.</p><p>For our case, we are going to select “<em>Manually select features</em>” and choose <strong>vue-router </strong>option<strong> </strong>since we will be using it during this tutorial. For the other features, do as you want, as it won’t really matter for the rest of the tutorial.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/647/0*n_BFaK6B6NWBTE3x.png" /><figcaption>Select the Router option</figcaption></figure><p>At the end, you will be asked if you want to save this preset for future projects and after that, and a couple of other questions, type n to reject, then press Enter. your project will be initialized.</p><p>Then, enter the new <em>vue-firebase-tutorial</em> directory, and run npm run serve</p><pre>$ cd vue-firebase-tutorial<br>$ npm run serve</pre><p>Now, if you open the url ‘<strong><em>http://localhost:8080’</em></strong>, you should have the default view of our Vue project!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eNgyIEuEcAycSxt0.png" /><figcaption>Vue New Project</figcaption></figure><p><strong>The App Structure</strong></p><p>Let’s have a quick look of the app structure.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/262/0*Vtf_69DYw6dljygB.png" /><figcaption>App structure on VS CODE</figcaption></figure><blockquote>The files we are gonna be working with are in the <em>src</em> <em>folder</em></blockquote><p>The other files are mostly configuration files generated by Vue Cli 3. If you want to have a complete overview of the structure, you can check the Vue Cli 3 documentation. Also, before going further in this tutorial, if you don’t already know the structure of a Vue file (like src/components/HelloWorld.vue), i advise you to take a look to this: <a href="https://vuejs.org/v2/guide/single-file-components.html">https://vuejs.org/v2/guide/single-file-components.html</a></p><h3>Now, lets get dirty…</h3><p>Our app will consist of three views, two (<em>Login</em> view and <em>Sign Up</em> view) that we can access only without authentication, and one (<em>Home</em> view) that we can access only with authentication.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/574/0*urg69K7v3pY3_9au.png" /><figcaption>App architecture</figcaption></figure><p>After login successfully or after a new account creation, we will be redirected to the part the needs authentication, the <em>Home</em> view.</p><h3>Step One: Login and SignUp</h3><p><strong>1–1 The Login View</strong></p><p>Let’s create the <em>Login</em> view. To do so, we will create a new Vue component called <strong>Login </strong>under src/views</p><p>For the moment, the component will simply consist of a title, two input fields, a button and a small sentence in the html.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ig4K1qqgV0Ty8d-M.png" /><figcaption>Login Component</figcaption></figure><p>Our component is now created! But how to display this new component in our app? Well, for that, we are going to use <strong>vue-router</strong><em>. </em>Remember? We already installed it when we initialized the app with <strong>vue-cli</strong><em>.</em></p><h3>What is <strong>vue-router</strong> ?</h3><pre>vue-router is the official router for <a href="http://vuejs.org/">Vue.js</a>. It deeply integrates with Vue.js core to make building Single Page Applications with Vue.js a breeze. Creating a Single-page Application with Vue.js + vue-router is dead simple. With Vue.js, we are already composing our application with components. When adding vue-router to the mix, all we need to do is map our components to the routes and let vue-router know where to render them.from vue-router documentation: <a href="https://github.com/vuejs/vue-router">https://github.com/vuejs/vue-route</a></pre><p>So, let’s add our new <strong>Login</strong><em> </em>component that we just created to our app router. Open the src/router.js file and add the <strong>Login</strong><em> </em>component to the router like that:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Mj-1XqbcX7btmWjW.png" /><figcaption>Adding Login component to router</figcaption></figure><p>Then, if you change your browser url to localhost:8080/#/login you should see the new <strong>Login</strong><em> </em>component that we just created displayed in your browser:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*La8sG2AF2TezKeHZ.png" /><figcaption>Login screen</figcaption></figure><p>You will notice that the default menu is still there despite the fact that we didn’t put it in the html template of the <strong>Login</strong><em> </em>component? Well, if you open the App.vue file, the template of the <strong>App</strong> component is as follow:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*epMruqS91hVUNt47.png" /><figcaption>App component</figcaption></figure><p>The <strong>App</strong> component is the main component of the app and will be the first to be rendered. It contains a div with two <strong>router-link</strong> elements and a html component called <strong>router-view</strong>.</p><p>We will soon talk about the <strong>router-link</strong> element, but first, let’s see what is the <strong>router-view </strong>element.</p><p><strong>Router-view</strong> is a component of <strong>vue-router</strong><em>:</em></p><pre>The &lt;router-view&gt; component is a functional component that renders the matched component for the given path. Components rendered in &lt;router-view&gt; can also contain its own &lt;router-view&gt;, which will render components for nested paths.from vue-router documentation <a href="https://router.vuejs.org/en/api/router-view.html">https://router.vuejs.org/en/api/router-view.html</a></pre><p>So, when reaching <a href="http://localhost:8080/#/login">http://localhost:8080/#/login</a> <strong>vue-router</strong> will render the attached component of the path/login we defined in src/router.js inside the <strong>router-view</strong> component. And since the <strong>App </strong>component also contain the nav div with the two router-link elements in his template, we also have them display in our view.</p><p>To avoid confusion with the navigation of the app we are creating, let’s remove this nav div from the <strong>App</strong> component and replace it with the vue logo. We already have the Vue logo inside the src/assets/ directory, so let’s use it!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*8-6a0ioFUZP30NL2.png" /><figcaption>App component after removing nav div</figcaption></figure><p>Also, Since we are not going to use the <em>About</em> view, we can remove the file from our directory (src/views/About.vue) and also remove i t from our routes configuration in src/router.js</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/904/0*i_z9HkXmpoNl2o4v.png" /><figcaption>src/router/index.js</figcaption></figure><p>Now, let’s get back to our <em>Login </em>view add some style to our <strong>Login</strong> component.Inside the &lt;style&gt; element of your Login.vue file, add those styles.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3R-rV9heyE5-Vrr3.png" /><figcaption>CSS for Login component</figcaption></figure><p>After adding this style, you will notice the changes below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*o28-urKDHuRDWdGP.png" /><figcaption>New style</figcaption></figure><p><strong>The Sign Up View</strong></p><p>The same way we created the <em>Login</em> view, we are going to create the <em>Sign Up</em> view. For that, create a new vue component called <strong>SignUp </strong>under src/views/.</p><p>As for the <strong>Login </strong>component, the <strong>SignUp </strong>component will consist, for now, of a simple form and some style attached to it.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0NI6SbsZWFOCyjkx.png" /><figcaption>Sign up component</figcaption></figure><p>Then, add the new component in our routes inside src/router.js</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Q90i3uVtQDIEpm70.png" /><figcaption>src/router/index.js</figcaption></figure><p>Then, if you open your browser to <a href="http://localhost:8080/#/sign-up%60">http://localhost:8080/#/sign-up</a>, you should have the following view:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*AMKtNGtuEN3Te6_A.png" /><figcaption>Sign up View</figcaption></figure><h3>Navigation between views</h3><p>If we look back to the schema of the app architecture we defined, we can navigate from the <em>Login </em>view to the <em>Signup </em>view, and from those two views to the <em>Home</em> view. How to do so?</p><p>Well, we will use another component of <strong>vue-router</strong><em> </em>that we quickly saw before,<em> </em>called <strong>router-link</strong>.</p><pre>&lt;router-link&gt; is the component for enabling user navigation in a router-enabled app. The target location is specified with the to prop. It renders as an &lt;a&gt; tag with correct href by default, but can be configured with the tag prop. In addition, the link automatically gets an active CSS class when the target route is active.from vue-router documentation: <a href="https://router.vuejs.org/en/api/router-link.html">https://router.vuejs.org/en/api/router-link.html</a></pre><p>So, in the <strong>Login </strong>and <strong>SignUp </strong>component, let’s implement router-link so we can navigate between those two views.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*mrTWoneio4aZ8Y9m.png" /><figcaption>src/view/login</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3SIu7b_kYJ4faZeE.png" /><figcaption>src/view/signup</figcaption></figure><p>Now, you should be able to navigate between the two pages by using the links we just created.</p><p>The last part of navigation will consist to go from <em>Login</em>/<em>SignUp </em>views to the <em>Home </em>view. For now, since we don’t have any code implemented, we will do a simple redirection to the <em>Home</em> view when clicking on the Connection button, without any authentication checking.</p><p>With router-link, the navigation take places in the html part of the component, but now, we want to navigate between routes programmatically. To do so, we need to attach an event when clicking on the Connection button, and with Vue, we can do that with the v-on directive or with the @ alias for v-on directive.</p><p>The event we want to listen to is click. So, on the click event of the Connection button, we want to navigate to the <em>Hello </em>view.</p><p>To navigate programmatically between views, <strong>vue-router </strong>has a set of function we can use in our app. To know more about those functions, you take a look in their documentation <a href="https://router.vuejs.org/en/essentials/navigation.html">https://router.vuejs.org/en/essentials/navigation.html</a>.</p><p>In our example, we are going to use the replace function, because once the user is logged in, we want the <em>Hello </em>view as our starting route.</p><p>Let’s change our <strong>Login </strong>component to put this in place.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*UpJq6IL6We_G_fp7.png" /><figcaption>src/views/login.vue</figcaption></figure><p>You can see inside the login function that we have this.$router.replace(&#39;home&#39;)</p><p>Why do we access the router with this? If you take a look into the main.js file, you’ll see that the router object is injected to the Vue app. That way, we can easily access it in every components of the app.</p><p>Also, we change the navigation to home, but we don’t have any hello path yet.</p><p>The default path of the <strong>Home </strong>component was / on the app initialization, but now that we know that the <em>Home</em> view will be only accessible when user is authenticated, let’s change the route so that the <em>Home</em> view is accessible when reaching /home path.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*iXQ33DDpV_BS8x2L.png" /><figcaption>src/router/index.js</figcaption></figure><p>Now, back to our <em>Login </em>view, if you click on the Connection button, you’ll be redirect to the <em>Home</em> view ! You’ll see two Vue logo display. That’s normal ! Check the content of the <strong>Hello-world </strong>component in src/components/HelloWorld.vue ;). Remove the image from the template of the <strong>Hello-world</strong> component to avoid duplication of the Vue logo.</p><h3>Firebase Integration</h3><p>Now that we have our front-end app ready, let’s implement Firebase so we can use it’s authentication system !</p><p><strong>3.1 Create a new project on Firebase</strong></p><p>To use Firebase, you first need to create a new project on the firebase console. If you don’t have any account created, create one, then go to <a href="http://console.firebase.google.com/">console.firebase.google.com</a>.</p><p>Click on Add project . Them you should have a popup to create a new project. Choose the name you want. I choose to call it vue-firebase-tutorial,</p><p>Follow the prompts and finish the other steps until you reach your dashboard</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/1*fLZfalbbGRkHEM4QiePThA.png" /><figcaption>Firebase dashboard</figcaption></figure><p>Congrats ! Your Firebase project is created. Now, to integrate it in our app, click on the code icon above Add an app to get started.</p><p>Setup you app nickname and register the app.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/631/1*hGWQC-MSsHrYhXUB4asnDQ.png" /><figcaption>Setting up the app</figcaption></figure><p>A popup with a code snippet should appear. Copy the code inside the second script balise. It should look like:</p><pre>// Initialize Firebaselet config = {<br>  apiKey: &quot;YOUR_API_KEY&quot;,<br>  authDomain: &quot;YOUR_PROJECT_ID.firebaseapp.com&quot;,<br>  databaseURL: &quot;https://YOUR_PROJECT_ID.firebaseio.com&quot;,<br>  projectId: &quot;YOUR_PROJECT_ID&quot;,<br>  storageBucket: &quot;YOUR_PROJECT_ID.appspot.com&quot;,<br>  messagingSenderId: &quot;YOUR_MESSAGING_SEND_ID&quot;<br>};firebase.initializeApp(config);</pre><p>Now, let’s back to our vue project. We need to add the Firebase module to our project. To do so:</p><pre>$ npm install ——save firebase</pre><p>Once the installation is done, let’s import Firebase module to our app. Open the main.js file, and initialize Firebase with the configuration code we copied earlier.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4OWL7wb2o-Ou27kt.png" /><figcaption>main.js file</figcaption></figure><p>For the simplicity of the tutorial, we put the Firebase configuration in main.js file, but on real production system, avoid to do that and put it in a specific configuration file. Also, you may see appear in the console some Firebase warnings about only importing the part of the SDK we actually use. In production, you should definitely do that! But again, to keep the simplicity of this tutorial, I skip this part.</p><p>We have everything ready now to create new users on Firebase !</p><p><strong>3.2 Create User on Firebase with the SignUp component</strong></p><p>Let’s go back to our <strong>SignUp</strong> component and implement what we need to create users on Firebase.</p><p>To create a new user, we will need to get back the email and the password typed in our form inside our component controller. To do so, we are going to use the v-model directive of Vue.</p><pre>You can use the v-model directive to create two-way data bindings on form input and textarea elements. It automatically picks the correct way to update the element based on the input type. Although a bit magical, v-model is essentially syntax sugar for updating data on user input events, plus special care for some edge cases.from Vue 2 documentation: <a href="https://vuejs.org/v2/guide/forms.html">https://vuejs.org/v2/guide/forms.html</a></pre><p>Once we retrieved the email and the password of the new user we want to create, we are going to use the Firebase function called <strong>createUserWithEmailAndPassword.</strong></p><p>This Firebase function does exactly what the name says, it create a new user with an email and a password. You can know more about this function in the official Firebase documentation here: <a href="https://firebase.google.com/docs/reference/js/firebase.auth.Auth#createUserWithEmailAndPassword">https://firebase.google.com/docs/reference/js/firebase.auth.Auth#createUserWithEmailAndPassword</a></p><p>Let’s add all that in our <strong>SignUp </strong>component:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uYsy_Gdenc1WBO87.png" /><figcaption>signup.vue</figcaption></figure><p>The <strong>createUserWithEmailAndPassword </strong>function return a Firebase promise, with an onResolve and onReject callback. You can know more about the different type of Firebase promises here: (<a href="https://firebase.google.com/docs/reference/js/firebase.Promise">https://firebase.google.com/docs/reference/js/firebase.Promise</a>).</p><p>For the moment, we just display an alert to see the result of the function.</p><p>Let’s try to create a new user in the interface.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*vbPW0U9FNPNngdmY.png" /></figure><p>It’s not working ! Why ?</p><p>The error message says:</p><pre><em>The given sign-in provider is disabled for this Firebase project. Enable it in the Firebase console, under the sign-in method tab of the Auth section.</em></pre><p>To have the possibility to create new user, we should enable the sign-in provider of Firebase. Let’s go back to the Firebase console, on the project we created earlier</p><p>On the Authentication part, we have a tab named SIGN-IN METHOD</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/867/1*T04iHbprq4yvikcEJtrAsg.png" /></figure><p>You just need to enable the Email/Password provider. Then let’s retry creating a new user again</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/963/1*39SThSqVfY3wLo4gyuKe_g.png" /></figure><p>N/B: Trying to add a user from the signup page returns an error that says Email address is badly formatted</p><p>To add a user for now, navigate to the users section on your firebase dashboard and add a new email and password.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-9OLthiY3-uM_XHu0_EXdQ.png" /><figcaption>Adding a new user</figcaption></figure><p><strong>Login with the new user</strong></p><p>Now that we have a new user created, let’s try to login with this user ! (When you successfully create a new user on Firebase, it automatically sign in the user in to the application, but for this example, we are going to sign in again from the <em>Login</em> view)</p><p>Let’s go back to our <strong>Login </strong>component. We need to get back the email and the password of the user who try to login, and sign in this user into Firebase. This component will look like the <strong>SignUp</strong> component, but the change will be the function we will call. To sign in a user in Firebase, we are going to use the <strong>signInWithEmailAndPassword </strong>function provided by Firebase. It takes the email and password as parameters and return a Firebase promise.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*cGPOuCIkgsGSO8VG.png" /><figcaption>login.vue</figcaption></figure><p>Now, let’s try to login with the user we just created</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*otr61G3AtTaken2xj0KDQA.png" /></figure><p>It’s working ! Your user is now authenticated in Firebase.</p><p>Am working on updating this project and fixing the error we encountered earlier. Please if you have the solution, I’ll appreciate a comment.</p><p>You can follow me on <a href="https://twitter.com/bontusss">Twitter</a> or <a href="https://www.instagram.com/official_bontus/">Instagram</a> to get update on other articles and tutorials.</p><p>The source code of this project is available on <a href="https://github.com/Japhmayor/vue-and-firesbase-authentication-system">Github</a>.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2Flog8tj%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2Flog8tj&amp;image=http%3A%2F%2Fapi.screenshotlayer.com%2Fapi%2Fcapture%3Faccess_key%3Dfe59908dad3baab69ffab249a2224b03%26viewport%3D1024x612%26width%3D1000%26url%3Dhttps%253A%252F%252Fupscri.be%252Flog8tj%253Fscreenshot&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href">https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9e8fcfaf857" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to be a Vue js developer]]></title>
            <link>https://bontus.medium.com/how-to-be-a-vue-js-developer-1435f7447697?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/1435f7447697</guid>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 15:05:39 GMT</pubDate>
            <atom:updated>2020-01-07T02:41:51.152Z</atom:updated>
            <content:encoded><![CDATA[<p>Hey guys, my name is Bontus Mayor and i currently work as the C.T.O at <a href="http://testrogen.com.ng/">Testrogen Innovation Hub</a>. Not too long ago i started to get interested in JavaScript. It was very difficult because i was used to Xampp and HT DOCS stuffs. So the whole CLI stuffs that came with JavaScript threw me off balance. I tried learning <a href="http://reactjs.org/">React</a> but my brain couldn’t just take it in. Everything got better when i heard about <a href="http://vuejs.org/">Vu</a>e. Understanding Vue was very easy for me as compared to react. The whole thing started making sense.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wFL3csJ96lQpY0IVT9SE3w.jpeg" /><figcaption>Vue JS Logo</figcaption></figure><p>So I want to help you understand what it takes to be a Vue developer. Vue.js is an open-source Model–view–viewmodel JavaScript framework for building user interfaces and single-page applications. It was created by <a href="https://twitter.com/youyuxi">Evan You</a>, and is maintained by him and the rest of the active core team members coming from various companies such as <a href="https://www.netlify.com/">Netlify</a> and <a href="https://www.netguru.com/">Netguru</a>.</p><p>Understanding Vue requires a knowledge of JavaScript because Vue was built from JavaScript. The need to know about JS syntax and basic operations, DOM manipulations, Hoisting, Event bubbling, prototyping etc. You should also have a knowledge of HTML or <a href="http://pugjs.org/">PUG</a>, CSS or <a href="http://getbootstrap.com/">BOOTSTRAP</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mORIOlnw-laMihY--C1xgA.png" /><figcaption>Source — Flaviocopes</figcaption></figure><p>To start with Vue, you have to install it on your computer. The easiest way to do this is via the Command Line via the Vue CLI. Before you start this, you should have the recent version of <a href="http://npmjs.com/">NPM</a> or <a href="http://yarnpkg.com/">YARN</a> installed on your machine.</p><p>Now lets install Vue:</p><pre>npm install -g @vue/cli<br># OR<br>yarn global add @vue/cli</pre><p>After installation, you will have access to the Vue binary in your command line. You can verify that it is properly installed by simply running Vue, which should present you with a help message listing all available commands.</p><p>You can check you have the right version with this command:</p><pre>vue --version</pre><p>No you are good to go!!!</p><p>Your Journey just began. You can learn all the things listed on the roadmap above via the links below:</p><ol><li>the basics of how the Web works</li><li>HTML, <a href="https://flaviocopes.com/css/">CSS</a></li><li>the <a href="https://flaviocopes.com/dom/">DOM</a></li><li>how browsers work</li><li>the <a href="https://flaviocopes.com/javascript/">JavaScript basics</a>, <a href="https://flaviocopes.com/javascript-events/">event handling</a>, the newest <a href="http://es6-features.org/">ES6–7–8</a> features</li><li><a href="https://flaviocopes.com/git/">Git</a></li><li>how to use the terminal</li><li><a href="https://vuehandbook.com/">the Vue basics</a></li><li><a href="http://webpack.js.org/">webpack</a></li><li>how to install packages using npm or yarn</li><li>how to run tasks using npm scripts</li><li>CSS modern tools: SASS, <a href="http://postcss.org/">PostCSS</a></li><li>a CSS framework like Tailwind or Bootstrap or another</li><li>how to use CSS in JS using Single File Components</li><li>how to manage state using component state or <a href="https://vuex.vuejs.org/">vuex</a>, and its libraries</li><li>how to check types using prop types or <a href="https://www.typescriptlang.org/">TypeScript</a></li><li>how to handle routing using <a href="https://router.vuejs.org/">vue-router</a></li><li>how to consume APIs using <a href="https://flaviocopes.com/graphql/">GraphQL</a>/<a href="https://flaviocopes.com/apollo/">Apollo</a>/REST using <a href="https://flaviocopes.com/axios/">axios</a> or <a href="https://flaviocopes.com/fetch-api/">fetch</a></li><li>use an utility library like lodash or moment</li><li>how to test using <a href="https://flaviocopes.com/jest/">Jest</a> and the <a href="https://vue-test-utils.vuejs.org/">Vue Test Utils</a></li><li>how to perform end to end testing using Cypress or Puppeteer or others</li><li>how to build a desktop Vue app using <a href="https://flaviocopes.com/electron/">Electron</a></li><li>how to internationalize an app using <a href="https://github.com/kazupon/vue-i18n">vue-i18n</a></li><li>how to implement server-side rendering</li></ol><p>The list could grow indefinitely, but those are the basics of a well-rounded Vue developer.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fupscri.be%2Flog8tj%3Fas_embed%3Dtrue&amp;dntp=1&amp;url=https%3A%2F%2Fupscri.be%2Flog8tj&amp;image=http%3A%2F%2Fapi.screenshotlayer.com%2Fapi%2Fcapture%3Faccess_key%3Dfe59908dad3baab69ffab249a2224b03%26viewport%3D1024x612%26width%3D1000%26url%3Dhttps%253A%252F%252Fupscri.be%252Flog8tj%253Fscreenshot&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=upscri" width="800" height="400" frameborder="0" scrolling="no"><a href="https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href">https://medium.com/media/7219a2bed7f5c7d9e9b3a1d8ec4ef592/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1435f7447697" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Chemistry of the mind]]></title>
            <link>https://bontus.medium.com/chemistry-of-the-mind-175fa79010e8?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/175fa79010e8</guid>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Fri, 23 Aug 2019 17:15:16 GMT</pubDate>
            <atom:updated>2019-08-24T12:01:03.725Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AqfFeS21aZKosubHHcrc6g.png" /></figure><p>I Believe that the mind is made up of the same universal “fluid” energy as that which constitutes the ether which fills the universe. It is a fact as well known to the layman as to the man of scientific investigation, that some minds clash the moment they come in contact with each other, while other minds show a natural affinity for each other. Between the two extremes of natural antagonism and natural affinity for growing out of the meeting of minds, there’s a wide range of possibility for varying reactions of mind upon mind.</p><p>It’s quite probable that the mind is made up of a fluid or substance it energy, call it whatever suits you, similar (if not the same substance as) the ether. When two minds meets each other, the mixing it the units of this “mind stuffs (call it electrons of the ether) sets up a chemical reaction and starts vibrations which affects the two individuals pleasantly or unpleasantly.</p><p>For the purpose of establishing this topic upon sound foundation, we’ve gone a long way towards success by admitting that the meeting it coming close in contact of two minds sets up in each of those minds a certain noticeable effect, while it is desirable, it is not essential to know what the cause of this reaction of mind upon mind. That the reaction takes place, in every instance, is a known fact which gives us a starting point from which we may show what is meant by the term “Master Mind”</p><p>A Master Mind may be created through the bringing together or blending, in a spirit of perfect harmony, of two or more minds. Out of this harmonious blending, the chemistry of the mind creates a third mind which may be appropriated and used by one or all of the individual minds. The Master Mind will remain available as long as the friendly harmonious alliance between the individual minds exist. It’ll disintegrate and all evidence of it’s former existence will disappear the moment the friendly alliance is broken.</p><p>This principle of mind chemistry is the basis and cause for practically all the so-called “soul-mates” and eternal triangle cases, so many of which find their way into the divorce courts and meet with popular ridicule from ignorant and uneducated people who manufacture vulgarity and scandal out of one of the greatest of nature’s laws.</p><p>The entire civilized world knows that the first two or three years of association after marriage are marked by much agreement, of a more or less Petty nature. These are the years of “adjustment”. If a marriage survive them, it’s more than apt to become a permanent alliance. These facts no experienced married person will deny. Again we see the “effects” without understanding the “cause.”</p><p>While there are other contributing causes, yet, in the main, lack of harmony during these early years of marriage is due to the slowness of the chemistry of the minds in blending harmoniously. Stated differently, the electrons or units of the energy called the mind are often neither extremely friendly nor antagonistic upon first contact; but through constant association they gradually adapt themselves in harmony, except in rare cases where association has the opposite effect of leading, eventually, to open hostility between these units.</p><p>It’s well known fact that after a woman and a man have lived together for ten to fifteen years, they become practically indispensable to each other, even though there may not be the slightest evidence of the state of mind called love. Moreover, this association and relationship sexually not only develops a natural affinity between the two minds, but it actually causes the two people to take on a facial expression and to resemble each other closely in many other marked ways.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/738/1*P6krhYdtbDyaOcCONtb2GQ.jpeg" /></figure><p>Two minds will not blend unless the element of perfect harmony is present, wherein lies the secret of success or failure of practically all business and social partnerships. Every salesman and every military commander and every leader in any way of life understands the necessity of “esprit de corps” — a spirit of common understanding and cooperation — in the attainment of success. This Mass spirit or harmony or purpose is obtained through<br>Discipline, voluntary or forced, of such a nature that the individual minds become blended into a “Master Mind,” by which is meant that the chemistry of the individual minds is modified in such a manner that these minds blend and function as one.</p><p>The method through which this blending process takes place are as numerous as the individuals engaged in the various forms of leadership. Every leader has his or her own method of coordinating the minds of the followers. One will use force. Another used persuasion. Another plates upon the fear of penalties while another plates upon rewards.</p><p>No group of minds can be blended into a Master Mind if one of the individuals of that group possesses one of these extremely negative, repellant minds. The negative and positive minds will not blend in the sense here described as a Master Mind. Lack of knowledge of this fact has brought many able leaders to defeat.</p><p>Any able leader who understands this principle of mind chemistry may temporarily blend the minds of practically any group of people, so it’ll represent a mass mind, but the composition will disintegrate almost the very moment the leader’s presence it’s removed from the group.</p><p>[I’ll update it daily as far as I get inspired]</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=175fa79010e8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Design Thinking]]></title>
            <link>https://bontus.medium.com/design-thinking-e2c10ec29876?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/e2c10ec29876</guid>
            <category><![CDATA[design-thinking]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[graphics-design]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Thu, 31 Jan 2019 22:39:32 GMT</pubDate>
            <atom:updated>2019-01-31T22:49:18.845Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*GFHy4GVr6wAwp3kqrtPwhQ.jpeg" /></figure><p>Learning about design thinking was a bonus to my Front end journey. I’ve made so many designs in past which didnt look so aesthetic and appealing to me and the worst was i didnt know what to do to make my choice of colors professional but learning about design thinking today has given me that push i so much craved.</p><p>I decided i wasn’t gonna learn about this alone, you have to learn it too. So let’s get down to the business of design thinking…</p><p><em>Design Thinking is a design methodology that provides a solution-based approach to solving problems. It’s extremely useful in tackling complex problems that are ill-defined or unknown, by understanding the </em><a href="https://www.interaction-design.org/literature/topics/human-needs"><em>human needs</em></a><em> involved, by re-framing the problem in human-centric ways, by creating many ideas in </em><a href="https://www.interaction-design.org/literature/topics/brainstorming"><em>brainstorming</em></a><em> sessions, and by adopting a hands-on approach in prototyping and testing. Understanding these five stages of </em><a href="https://www.interaction-design.org/literature/topics/design-thinking"><em>Design Thinking</em></a><em> will empower anyone to apply the Design Thinking methods in order to solve complex problems that occur around us — in our companies, in our countries, and even on the scale of our planet.</em></p><p>We will focus on the five-stage Design Thinking model proposed by the Hasso-Plattner Institute of Design at Stanford (d.school). d.school is the leading university when it comes to teaching Design Thinking. The five stages of Design Thinking, according to my tutor, are as follows: <a href="https://www.interaction-design.org/literature/topics/empathise">Empathise</a>, Define (the problem), Ideate, Prototype, and <a href="https://www.interaction-design.org/literature/topics/test">Test</a>. Let’s take a closer look at the five different stages of Design Thinking.</p><h3>1. Empathise</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/0*UzqLYgTyiF1EzEgy.jpg" /><figcaption><em>Author/Copyright holder: Teo Yu Siang and </em><a href="https://www.interaction-design.org/literature/topics/interaction-design"><em>Interaction Design</em></a><em> Foundation. Copyright licence: CC BY-NC-SA 3.0</em></figcaption></figure><p>The first stage of the Design Thinking process is to gain an empathic understanding of the problem you are trying to solve. This involves consulting experts to find out more about the area of concern through observing, engaging and empathizing with people to understand their experiences and motivations, as well as immersing yourself in the physical environment so you can gain a deeper personal understanding of the issues involved. Empathy is crucial to a human-centered design process such as Design Thinking, and empathy allows design thinkers to set aside their own <a href="https://www.interaction-design.org/literature/topics/assumptions">assumptions</a> about the world in order to gain insight into users and their needs.</p><p>Depending on time constraints, a substantial amount of information is gathered at this stage to use during the next stage and to develop the best possible understanding of the users, their needs, and the problems that underlie the development of that particular product.</p><h3>2. Define (the Problem)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/0*MU1disNZibylDqmn.jpg" /><figcaption><em>Author/Copyright holder: Teo Yu Siang and </em><a href="https://www.interaction-design.org/literature/topics/interaction-design-foundation"><em>Interaction Design Foundation</em></a><em>. Copyright licence: CC BY-NC-SA 3.0</em></figcaption></figure><p>During the Define stage, you put together the information you have created and gathered during the Empathise stage. This is where you will analyse your observations and synthesise them in order to define the core problems that you and your team have identified up to this point. You should seek to define the problem as a <a href="https://www.interaction-design.org/literature/topics/problem-statement">problem statement</a> in a human-centred manner.</p><p>To illustrate, instead of <a href="https://www.interaction-design.org/literature/topics/defining-the-problem">defining the problem</a> as your own wish or a need of the company such as, “We need to increase our food-product market share among young teenage girls by 5%,” a much better way to define the problem would be, “Teenage girls need to eat nutritious food in order to thrive, be healthy and grow.”</p><p>The Define stage will help the designers in your team gather great ideas to establish features, functions, and any other elements that will allow them to solve the problems or, at the very least, allow users to resolve issues themselves with the minimum of difficulty. In the Define stage you will start to progress to the third stage, Ideate, by asking questions which can help you look for ideas for solutions by asking: “How might we… encourage teenage girls to perform an action that benefits them and also involves your company’s food-product or service?”</p><h3>3. Ideate</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/0*--No5DInf-QU6olQ.jpg" /><figcaption><em>Author/Copyright holder: Teo Yu Siang and Interaction Design Foundation. Copyright licence: CC BY-NC-SA 3.0</em></figcaption></figure><p>During the third stage of the Design Thinking process, designers are ready to start generating ideas. You’ve grown to understand your users and their needs in the Empathise stage, and you’ve analysed and synthesised your observations in the Define stage, and ended up with a human-centered problem statement. With this solid background, you and your team members can start to “think outside the box” to identify new solutions to the problem statement you’ve created, and you can start to look for alternative ways of viewing the problem. There are hundreds of <a href="https://www.interaction-design.org/literature/topics/ideation">Ideation</a> techniques such as Brainstorm, Brainwrite, <a href="https://www.interaction-design.org/literature/topics/worst-possible-idea">Worst Possible Idea</a>, and <a href="https://www.interaction-design.org/literature/topics/scamper">SCAMPER</a>. Brainstorm and Worst Possible Idea sessions are typically used to stimulate free thinking and to expand the problem space. It is important to get as many ideas or problem solutions as possible at the beginning of the Ideation phase. You should pick some other Ideation techniques by the end of the Ideation phase to help you investigate and test your ideas so you can find the best way to either solve a problem or provide the elements required to circumvent it.</p><h3>4. Prototype</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/0*Ey5HtVbYVL5p_mFZ.jpg" /><figcaption><em>Author/Copyright holder: Teo Yu Siang and Interaction Design Foundation. Copyright licence: CC BY-NC-SA 3.0</em></figcaption></figure><p>The design team will now produce a number of inexpensive, scaled down versions of the product or specific features found within the product, so they can investigate the problem solutions generated in the previous stage. Prototypes may be shared and tested within the team itself, in other departments, or on a small group of people outside the design team. This is an experimental phase, and the aim is to identify the best possible solution for each of the problems identified during the first three stages. The solutions are implemented within the prototypes, and, one by one, they are investigated and either accepted, improved and re-examined, or rejected on the basis of the users’ experiences. By the end of this stage, the design team will have a better idea of the constraints inherent to the product and the problems that are present, and have a clearer view of how real users would behave, think, and feel when interacting with the end product.</p><h3>5. Test</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/0*-k3P7UKh09mgdQ4N.jpg" /><figcaption><em>Author/Copyright holder: Teo Yu Siang and Interaction Design Foundation. Copyright licence: CC BY-NC-SA 3.0</em></figcaption></figure><p>Designers or evaluators rigorously test the complete product using the best solutions identified during the prototyping phase. This is the final stage of the 5 stage-model, but in an iterative process, the results generated during the testing phase are often used to <em>redefine</em> one or more problems and inform the <em>understanding</em> of the users, the conditions of use, how people think, behave, and feel, and to empathise. Even during this phase, alterations and refinements are made in order to rule out problem solutions and derive as deep an understanding of the product and its users as possible.</p><h3>The Take Away</h3><p>In essence, the Design Thinking process is iterative, flexible and focused on collaboration between designers and users, with an <a href="https://www.interaction-design.org/literature/topics/emphasis">emphasis</a> on bringing ideas to life based on how real users think, feel and behave.</p><p>Design Thinking tackles complex problems by:</p><ol><li>Empathising: Understanding the human needs involved.</li><li>Defining: Re-framing and defining the problem in human-centric ways.</li><li>Ideating: Creating many ideas in ideation sessions.</li><li>Prototyping: Adopting a hands-on approach in prototyping.</li><li>Testing: Developing a prototype/solution to the problem.</li></ol><p>Thanks for reading and learning with me.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2c10ec29876" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is CSS]]></title>
            <link>https://bontus.medium.com/what-is-css-1b075a9c30cd?source=rss-2fca9bd82f1e------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b075a9c30cd</guid>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Ikwechegh Ukandu]]></dc:creator>
            <pubDate>Mon, 28 Jan 2019 21:00:30 GMT</pubDate>
            <atom:updated>2019-01-28T21:05:35.457Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*X9ejZ1mTMs0AwEHB5op-vQ.jpeg" /></figure><p>Am very tired, am in the toilet thinking how today went and I’ve just remembered that someone asked today “what’s CSS”? I immediately told myself why would someone not know what CSS is but on a second thought, there’s was a time I didn’t know what CSS is. Am gonna try to explain what CSS is in a very least possible way. In web development there’s are three core languages used in front-end development.</p><ol><li>HTML</li><li>CSS</li><li>JavaScript</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/225/1*hPTUrlnMtohvlXB8IKEZjw.png" /></figure><p>HTML is a markup language fully known as hypertext markup language. HTML describes the structure of Web pages using markup. HTML elements are the building blocks of HTML pages. HTML elements are represented by tags.</p><p>JavaScript</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*Iqetgux9EIH3gyENdNe-Nw.png" /></figure><p>JavaScript, often abbreviated as JS, is a high-level, interpreted programming language that conforms to the ECMAScript specification. It is a language that is also characterized as dynamic, weakly typed, prototype-based and multi-paradigm. It’s the default scripting language of the web.</p><p>CSS</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/225/1*9CwFWe1Pe2VHnxBqTQqu_g.png" /></figure><p>Ever wondered what makes things look as they do on the web? Or how to change the design of a page? This is where CSS (Cascading Style Sheets) come in! Below, we’ll explain what CSS is, what it does and what it’s used for!</p><p>Let’s take a look…</p><p>CSS stands for Cascading Style Sheets with an emphasis placed on “Style.” While HTML is used to structure a web document (defining things like headlines and paragraphs, and allowing you to embed images, video, and other media), CSS comes through and specifies your document’s style—page layouts, colors, and fonts are all determined with CSS. Think of HTML as the foundation (every house has one), and CSS as the aesthetic choices (there’s a big difference between a Victorian mansion and a mid-century modern home).</p><h4>How Does CSS Work?</h4><p>CSS brings style to your web pages by interacting with HTML elements. Elements are the individual HTML components of a web page—for instance a paragraph—which in HTML might look like this:</p><blockquote>&lt;p&gt;This is my paragraph!&lt;/p&gt;</blockquote><p>If you wanted to make this paragraph appear pink and bold to people viewing your web page through a web browser, you’d use CSS code that looks like this:</p><blockquote>p { color:pink; font-weight:bold; }</blockquote><p>In this case, “p” (the paragraph) is called the “selector”—it’s the part of CSS code specifying which HTML element the CSS styling will effect. In CSS, the selector is written to the left of the first curly bracket. The information between curly brackets is called a declaration, and it contains properties and values that are applied to the selector. Properties are things like font size, color, and margins, while values are the settings for those properties. In the example above, “color” and “font-weight” are both properties, and “pink” and “bold” are values. The full bracketed set of</p><blockquote>{ color:pink; font-weight:bold; }</blockquote><p>is the declaration, and again, “p” (meaning the HTML paragraph) is the selector. These same basic principles can be applied to change font sizes, background colors, margin indentations, and more. For instance. . .</p><blockquote>body { background-color:lightblue; }</blockquote><p>. . .would make your page’s background light blue, or. . .</p><blockquote>p { font-size:20px; color:red; }</blockquote><p>. . .will create a 20 point font paragraph with red letters.</p><p>External, Internal, or Inline CSS?</p><p>You might be wondering how this CSS code is actually applied to HTML content, though. Much like HTML, CSS is written in simple, plain text through a text editor or word processor on your computer, and there are three main ways to add that CSS code to your HTML pages. CSS code (or Style Sheets) can be external, internal, or inline. External style sheets are saved as .css files and can be used to determine the appearance of an entire website through one file (rather than adding individual instances of CSS code to every HTML element you want to adjust). In order to use an external style sheet, your .html files need to include a header section that links to the external style sheet and looks something like this:</p><blockquote>&lt;head&gt; &lt;link rel=”stylesheet” type=”text/css” href=mysitestyle.css”&gt; &lt;/head&gt;</blockquote><p>This will link the .html file to your external style sheet (in this case, mysitestyle.css), and all of the CSS instructions in that file will then apply to your linked .html pages.</p><p>Internal style sheets are CSS instructions written directly into the header of a specific .html page. (This is especially useful if you have a single page on a site that has a unique look.) An internal style sheet looks something like this. . .</p><blockquote>&lt;head&gt; &lt;style&gt; Body { background-color:thistle; } P { font-size:20px; color:mediumblue; } &lt;/style&gt; &lt;/head&gt;</blockquote><p>. . . a thistle background color and paragraphs with 20 point, medium blue font will now be applied to this single .html page.</p><p>Finally, inline styles are snippets of CSS written directly into HTML code, and applicable only to a single coding instance. For example:</p><blockquote>&lt;h1 style=”font-size:40px;color:violet;”&gt;Check out this headline!&lt;/h1&gt;</blockquote><p>would cause one specific headline on a single .html page to appear in violet, 40 point font.</p><p>Generally speaking, external style sheets are the most efficient method for implementing CSS on a website (it’s easier to keep track of and implement a site’s style from a dedicated CSS file), while internal style sheets and inline style can be used on a case by case basis when individual style changes need to be made.</p><p>So if HTML is the foundation, frames, walls, and girders supporting your website, consider CSS the paint color, window styles, and landscaping that comes on afterward. You can’t get anywhere without putting that foundation up first, but—once you do—you’ll want to follow up with some style, and CSS is the ticket to unleashing your inner decorator.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b075a9c30cd" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>