ReverieI am Pleasantly losthttp://localhost:2368/http://localhost:2368/favicon.pngReveriehttp://localhost:2368/Ghost 2.0Mon, 08 Oct 2018 18:05:48 GMT60Outline, the missing VPN?<p>An upcoming travel opportunity had me searching for a VPN service I could use whiles away from 127.0.0.1 . This search lead me to <a href="https://www.getoutline.org/en/home">Outline.</a>  A free vpn tool tailored for journalist - Touted as granting you access to the "internet you can trust" , as having "strong privacy</p>http://localhost:2368/an-outline-of-outline/5bbb81f7a28f826e5cb6978dvpngoogleoutlineJean HuitMon, 08 Oct 2018 18:05:00 GMT<p>An upcoming travel opportunity had me searching for a VPN service I could use whiles away from 127.0.0.1 . This search lead me to <a href="https://www.getoutline.org/en/home">Outline.</a>  A free vpn tool tailored for journalist - Touted as granting you access to the "internet you can trust" , as having "strong privacy and security". </p><p>What led me to choose Outline over the rest, was the fact that you could run this vpn tool on your own server or a<a href="https://en.wikipedia.org/wiki/Virtual_private_server"> VPS</a> of your choice.</p><p>The three things you would need to get started:</p><ol> <li>A VPS of your choice eg. Vultr, AWS, Google Platform, Digital Ocean etc</li> <li><a href="https://github.com/Jigsaw-Code/outline-server/releases">The Outline Manger</a></li> <li><a href="https://github.com/Jigsaw-Code/outline-client/releases">The Outline Client</a></li> </ol> <ul><li>Spin up a linux based server on your VPS</li></ul><figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/SERVER.png" class="kg-image"><figcaption>An instance on Vultr VPS</figcaption></figure><ul><li>Login to your server, <strong>ssh</strong> credentials should be available to you.</li><li>Follow the prompts on the Outline Manager to setup the server.</li></ul><figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/Screen-Shot-2018-10-08-at-16.57.32-1.png" class="kg-image"><figcaption>The Outline manager&nbsp;</figcaption></figure><figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/Screen-Shot-2018-10-08-at-17.57.56.png" class="kg-image"><figcaption>Step 2 - Outline manger, instructions when I chose the 4th option. since I am running on Vultr.</figcaption></figure><ul><li>Download the Outline Client and add a server by copying and pasting an access key made available via the Outline Manager </li></ul><figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/Screen-Shot-2018-10-08-at-17.59.42.png" class="kg-image"><figcaption>Outline Client Waiting for Access key</figcaption></figure><p>And just like that you have a VPN connection setup. Your conversations, transactions etc etc are all free from prying eyes.</p><p>Another thing I like is that, I can just destroy my server and spin up another one and a completely new VPN connection anytime I want.</p><p></p><p></p><p> </p>Building for the World<figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/accessibility.png" class="kg-image"></figure><p>Did you know the world has 15% of its inhabitants being disabled and that 2-4% of the 15% have significantly high levels in functioning?</p><p>15% here amounts to <strong>1,080,000,000</strong> people!</p><blockquote><strong>The power of the web is in its universality. Access by everyone, regardless of  disability is an</strong></blockquote>http://localhost:2368/building-for-the-world/5bbb709fa28f826e5cb6977faccessibilitywebdisabilityJean HuitMon, 08 Oct 2018 15:54:23 GMT<figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/10/accessibility.png" class="kg-image"></figure><p>Did you know the world has 15% of its inhabitants being disabled and that 2-4% of the 15% have significantly high levels in functioning?</p><p>15% here amounts to <strong>1,080,000,000</strong> people!</p><blockquote><strong>The power of the web is in its universality. Access by everyone, regardless of  disability is an essential aspect. - Tim Berners -Lee</strong></blockquote><p>The Web is thus fundamentally designed for use, by the masses whatever their software, hardware, language or location.  Nothing should hinder persons with disabilities from using the Web. </p><p>Unfortunately, the webs universality ends with the remaining 75% of the world's inhabitants. </p><p>I styled my title to remove the notion that building/developing for the world wide web with people living with disabilities in mind, sidelines normal functioning individuals.  Building with disabilities in mind, is a merit to those living without.</p><p>Increase in speed {load times of websites} | Clear and Concise text with a focus on context are some of the advantages when developers build with disabilities in mind. These are positives for everyone concerned. </p><p><strong>How do we do this?</strong></p><h2 id="designing-for-the-web">Designing for the Web</h2><ul><li>Provide sufficient contrast between foreground and background</li><li>Do not use colour alone to convey information</li><li>Ensure forms have clear and concise corresponding labels</li><li>Provide identifiable feedback</li></ul><h2 id="writing-for-the-web">Writing for the Web</h2><ul><li>Provide informative unique page titles</li><li>Make link text meaningful</li><li>Write meaningful text alternatives for images</li><li>Create transcripts and captions for multimedia. <strong> </strong><em>Eg</em><strong>. </strong><em>Audio only content - podcast (transcripts)Video , Training Videos - (caption)</em></li></ul><h2 id="developing-for-the-web">Developing for the Web</h2><ul><li>Use Markup to  convey meaning and structure</li><li>Associate a label with every form control</li><li>Include alternative text for images</li><li>Write code that adapts to users technology. {be responsive}</li><li>Avoid CAPTCHA’s where possible <em>Eg.Not requiring captures for authenticated users, Provide more than two ways to solve CAPTCHA’s</em></li></ul><p>This list is definitely not exhaustive, there are  a lot more things  that can be done to make the web more accessible to the world. </p><hr><ul> <li><a href="https://www.w3.org/WAI/">https://www.w3.org/WAI/</a></li> <li><a href="https://developers.google.com/web/fundamentals/accessibility">https://developers.google.com/web/fundamentals/accessibility</a></li> <li>World Report on Disabilities - World Health Organisation 2011 (<a href="https://bit.ly/2MnRZBb">https://bit.ly/2MnRZBb</a>)</li> </ul> GMail's got a Confidential Mode<figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/06/Screen-Shot-2018-06-19-at-14.28.31.png" class="kg-image"><figcaption>The bottom strip of the compose message window</figcaption></figure><p>GMail keeps getting feature rich day in day out.</p><p>I noticed this update after GMail for web (chrome browser) asked to be refreshed after installing some updates.</p><p>The confidential mode allows for emails being sent to be read-only.  By read-only, recipients will</p>http://localhost:2368/gmails-got-a-confidential-mode/5b2a687091eb2b7c743a5a9egmailfeatureJean HuitMon, 25 Jun 2018 12:39:06 GMT<figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/06/Screen-Shot-2018-06-19-at-14.28.31.png" class="kg-image" alt="GMail's got a Confidential Mode"><figcaption>The bottom strip of the compose message window</figcaption></figure><img src="http://localhost:2368/content/images/2018/06/2000px-Gmail_Icon.svg.png" alt="GMail's got a Confidential Mode"><p>GMail keeps getting feature rich day in day out.</p><p>I noticed this update after GMail for web (chrome browser) asked to be refreshed after installing some updates.</p><p>The confidential mode allows for emails being sent to be read-only.  By read-only, recipients will not have the option to forward mails, download or print them. </p><p>There is more...</p><p>The option to set expiry dates for emails, after which the recipient and for the matter anyone else will no longer have access to the email in question.</p><figure class="kg-image-card"><img src="http://localhost:2368/content/images/2018/06/Screen-Shot-2018-06-19-at-14.28.46.png" class="kg-image" alt="GMail's got a Confidential Mode"><figcaption>confidential mode options.</figcaption></figure><p>A very simple but intriguing feature. Did not know I needed this, until it existed.</p>Github : Codeship : Firebase HostingIf free is a requirement to hosting your code amidst running a continuous integration and delivery setup. You have come to the right place.http://localhost:2368/github-codeship-firebase-hosting/5b167ac256cee20c1dab57abgithubgitfirebasehostingfreeandopencodeshipJean HuitTue, 05 Jun 2018 17:07:47 GMT<img src="http://localhost:2368/content/images/2018/06/kobu-agency-409288-unsplash.jpg" alt="Github : Codeship : Firebase Hosting"><p>If <code>free</code> is a requirement to hosting your code amidst running a continuous integration and delivery setup. You have come to the right place.</p> <p>This here, is a short tutorial to making this come true.<br> Need to understand git? check this <a href="https://github.com/GDGAccra/CrashCourseWeb/wiki/Git-Resources">here</a></p> <p>The defualt mode of hosting for free on firebase, will be to develop locally and then push directly to firebase - hosting.<br> However, this will work if you are the only developer.</p> <p>In the scenario where, you have a team of developers,as is usually the case, you will need to bring in the middleman, <a href="https://codeship.com/"><strong>codeship</strong></a> or another of its like.</p> <p>Setting up and connecting to your github/bitbucket/gitlab repository is as simple as abc. I will skip all that and bring you to the meat of the equation.</p> <p>For Codeship to push/deploy your code to firebase-hosting, it will need to login as the owner of the firebase account. To do this, codeship will need a token which you will generate in your terminal.</p> <p><strong>ps</strong>: You need to have firebase-cli installed to do this.<br> <code>npm install -g firebase-tools</code></p> <p>Next you login via the terminal <code>firebase login:ci</code><br> You will be redirected to your browser to login with the required gmail address and its password. After a succeful login, a token &quot;in this case a string of text&quot; will be generated and display in the terminal.<br> Keep this safe.</p> <p>Running <code>firebase list</code> gives you the list of projects you have running on/created on firebase and the names you gave them. Keep the name of this project in mind.</p> <p>By now, you might have completed the creation of your project on codeship.<br> Just to be sure:</p> <ul> <li>create account/login to codeship</li> <li>click on <strong>new project</strong></li> <li>connect to your repository</li> <li>select codeship <strong>pro</strong> or <strong>basic</strong></li> </ul> <p>If you skipped the configure projects, you can find that under project settings. Select the <strong>ENVIRONMENT</strong> tab.<br> Under Environement Variable, type in <code>FIREBASE_TOKEN</code> as the KEY and then paste the token you initially generated into the VALUE field. Click Save or Add or +</p> <p>Click on the <strong>Test</strong> tab,<br> Select, the option to run your own commands and in the space for setup commands type in:</p> <pre><code>nvm install &lt;verison number&gt; #eg. nvm install v6.9.5 #to install that particular version of node npm install -g firebase-tools #to install the firebase tools firebase deploy --token &quot;$FIREBASE_TOKEN&quot; --project &quot;&lt;project name&gt;&quot; #to deploy your project with the token you generated and saved #as an envrionment variable and the project name </code></pre> <p>save changes and that should be all. Make a commit to your repo, and you should see codeship kick-in and do the rest.</p> <p>All <strong>should</strong> be green and good.</p> What the heck is GDPR?<p>This is a blog post, that is meant to paint in broad strokes an understanding of what GDPR is.</p> <p>Almost every website or web app you access today is in your face about new terms and conditions they are rolling out and will like to make you aware and/or</p>http://localhost:2368/what-the-heck-is-gdpr/5af9b6250caeecec3160c262gdprJean HuitMon, 14 May 2018 16:18:43 GMT<p>This is a blog post, that is meant to paint in broad strokes an understanding of what GDPR is.</p> <p>Almost every website or web app you access today is in your face about new terms and conditions they are rolling out and will like to make you aware and/or seek your permission.<br> The current reason behind this change is due in part to GDPR. What it is? why now? Find out more in the writeup.</p> <p><strong>What is the GDPR?</strong><br> This is the “General Data Protection Regulation&quot; approved by European Union member states on the 14th of April 2016.<br> A regulation meant to harmonize data privacy laws across the EU. Granting all EU citizens extreme control over their data privacy and reshapes the way Organizations handle data privacy.</p> <p><strong>Why are you now seeing GDPR notifications.</strong><br> Main reason will be because the date from which GDPR compliance will be compulsory is approaching. This date falls on the 25th of May 2018. Companies &amp; Businesses in the EU or having clients in the EU are fervently doing all they can to make sure they are compliant before the date or face steep penalties. Which could be 4% of their global turnover or 20 million euros or which ever is greater.<br> It is this flurry of activities that make actions towards GDPR compliance more visible.<br> According to a survey conducted in 2016 by <a href="https://www.pwc.com/us/en/press-releases/2017/pwc-gdpr-compliance-press-release.html">PwC</a>, 68% of US based companies are expected to spend between 1-10 millions dollars to meet GDPR requirements. Another 9% of US companies, are expected to spend more than 10 million dollars.</p> <p><strong>What TYPE of DATA does the GDPR cover?</strong><br> Any and all type of data that can uniquely identify an individual is covered under GDPR.</p> <ul> <li>Basic Identity: Name, Age etc</li> <li>Web Data, Geo Data, IP, cookies</li> <li>Health and genetic data</li> <li>Biometric</li> <li>Racial &amp; Political</li> <li>Sexual Orientation</li> </ul> <p><strong>What are the key areas GDPR covers?</strong><br> The underlining element to consider is Data Protection, in that data protection is a fundamental right. As such, all persons have the right to have their data protected, the right to defend their personal data and the right to move their data without restriction or hinderance.<br> The scope of the GDPR applies to the processing of data, automated or otherwise which form part of a filing system or intended to form part of one.<br> Data of individuals that are citizens of EU member states.<br> A Business entity that has presence in the EU.<br> Business entities that process/handle data of EU member state citizens.</p> <p>This affords consumers total control over their data.</p> <ul> <li>Consumers should be able to access all their data, in storage or being processed.</li> <li>Should be able to tell what their data is being used for.</li> <li>Has the right to be forgotten and prevent 3rd party’s from accessing their data.</li> <li>Should be able to transfer their data to another service provider.</li> <li>Consent should be easy to give and withdraw,<br> Terms and Conditions should be clear in meaning, and not bundled up with one another, ie. consent for “A” shouldn’t be bundled up as consent for “B”.</li> </ul> <p>Another area that the GDPR covers, has to do with <strong>mandatory disclosure</strong>. This means any business or entity that falls under the purview of the GDPR has a maximum of 72 hours to disclose incidents of data breaches.</p> The | pipe |<p>The alternate symbol (vertical bar) on the backslash key, on the standard US keyboard: is known as the pipe. <mark>i'm sure more of you didnt know it was called that</mark>.</p> <p>And I can bet most people, have not used it before.</p> <p>If you are a developer or someone on the</p>http://localhost:2368/the-pipe/5ad7454a27a53074e5eabc6bnlclinuxcommandsJean HuitWed, 18 Apr 2018 13:48:01 GMT<p>The alternate symbol (vertical bar) on the backslash key, on the standard US keyboard: is known as the pipe. <mark>i'm sure more of you didnt know it was called that</mark>.</p> <p>And I can bet most people, have not used it before.</p> <p>If you are a developer or someone on the unix,linux,macOS side of life,or spend most of your time in the terminal or command-line, you are not most people.</p> <p>The pipe serves a form of redirection, that channels the output of a command,script or program as input for another set of commands, scripts or program.</p> <p>Eg.<br> <code>command 1's output | command 2 as input</code><br> <code>cat text | wc -l</code><br> The above example, uses the <mark>cat</mark> command on a text document and pipes the result of that instruction into the word count <mark>wc</mark> command with the <mark>-l</mark> argument to show number of lines.</p> <p>Usage is not limited too<br> <code>ps aux | grep 'root'| less</code><br> One can daisy chain more of these pipes together to your hearts content.</p> <p>Thats it for now.</p> The move to Firebase<p>For some reason, I just do not remmeber why, I decided to find out if my one off blog could find another home.</p> <p>For two years, this blog has been <s>squatting</s> living for free on github and before that blogger.</p> <p>Today, I'm proud to say, what begun as:<br> <em><a href="http://bustlive.blogspot.com">http://bustlive.</a></em></p>http://localhost:2368/the-move-to-firebase/5a330280a15c11625f035592firebaseghostbloghttpsJean HuitThu, 14 Dec 2017 23:30:49 GMT<img src="http://localhost:2368/content/images/2017/12/fireghost.png" alt="The move to Firebase"><p>For some reason, I just do not remmeber why, I decided to find out if my one off blog could find another home.</p> <p>For two years, this blog has been <s>squatting</s> living for free on github and before that blogger.</p> <p>Today, I'm proud to say, what begun as:<br> <em><a href="http://bustlive.blogspot.com">http://bustlive.blogspot.com</a></em> --&gt; <em><a href="http://jeanhuit.github.io">http://jeanhuit.github.io</a></em> and then to <em><a href="http://johnawotwi.me">http://johnawotwi.me</a></em> is now <em><a href="https://johnawotwi.me">https://johnawotwi.me</a></em> .<br> New digs and all, notice the extra (s) in there..yuh, that is all for free.</p> <p>See <a href="https://johnawotwi.me/ghost-adventures-i/">Ghost Adventures</a> for the initial steps, especially the update.</p> <p>All you will need to replace is the part about github. Instead of hosting and setting up a git repo, get a free account and setup a free project 'static sites' only at <code>console.firebase.google.com</code><br> Install the firebase CLI (command line interface), login,initialize the project folder, select your static output folder and then deploy.</p> <p>Obviously, <a href="https://johnawotwi.me/know-your-node/">you should know your node</a> first.</p> <ul> <li>install the firebase tools</li> </ul> <pre><code>npm install -g firebase-tools </code></pre> <ul> <li>provide your credentials, popup opens a browser</li> </ul> <pre><code>firebase login </code></pre> <pre><code>cd &lt;project folder&gt; </code></pre> <ul> <li>initialize the project, select the kind of project, hosting</li> </ul> <pre><code>firebase init </code></pre> <ul> <li>select path to folder for static pages</li> </ul> <pre><code>firebase deploy </code></pre> <h1 id="etvoila">et voila!!!</h1> After a Format<p>Something I do regulary to any machine I work with is a regular format.</p> <p>I find, that with regular use, a MacOS | Win | Linux box gathers dust - remanants of software installed, uninstalled, used-no-more, forgotten among other things, that clutter or clog ones workflow.</p> <p>Formatting a computer to me, sort</p>http://localhost:2368/after-a-format/5a32b895a15c11625f035588newinstallationmacOSJean HuitSun, 10 Sep 2017 17:46:00 GMT<p>Something I do regulary to any machine I work with is a regular format.</p> <p>I find, that with regular use, a MacOS | Win | Linux box gathers dust - remanants of software installed, uninstalled, used-no-more, forgotten among other things, that clutter or clog ones workflow.</p> <p>Formatting a computer to me, sort of gives your machine a new breath of life. This month, was no different.</p> <p>The difference this time, I decided to use a somewhat automated process to install all the software I will need on the machine. After combing the internets, I chanced upon this tutorial that I, for want of a better word unashamedly made use of. I pretty much did almost the exact thing, with very minor differences.</p> <p>The magic: &quot;Homebrew&quot;.</p> <p>In simple terms, I listed all software I wanted to install in a file - Brewfile and Homebrew did the rest.</p> <p>Feel free to follow the tutorial <a href="https://www.taniarascia.com/setting-up-a-brand-new-mac-for-development/">here</a><br> Feel free to clone, star my <a href="https://github.com/JeanHuit/macSetup">brewfile.</a></p> Grepgrep is a command-line utility for searching plain-text data sets for lines that match a regular expression.http://localhost:2368/grep/59aaa7406774a07e39ab0f6enlclinuxcommandsJean HuitSat, 02 Sep 2017 13:12:43 GMT<img src="http://localhost:2368/content/images/2017/09/grep-1.png" alt="Grep"><p>Another linux command, I find very useful, this is a command that helps you search for strings/text within documents. There are a whole lot of uses for it, but I will leave you to explore that yourself.</p> <p>Its simplest form is:</p> <pre><code>grep &lt;word&gt; &lt;in file&gt; =&gt; grep &quot;dog&quot; animals.txt </code></pre> <p>The above looks for <mark>dog</mark> in a text file called <mark>animal.txt</mark></p> <p>There are flags/options you can set with the command to make things easier.</p> <pre><code> -x = exclusive, exact match -v = everything but -i = I do not care about case </code></pre> <p>and many more.</p> <p>You can also use <mark>[]</mark> and <mark>^</mark> to help make your search more refined.</p> <pre><code>grep ^a* fruits.txt </code></pre> <p>Finds fruits that have <mark>a</mark> in them</p> <pre><code> grep ^a.p fruits.txt </code></pre> <p>Finds fruits that begin with an <mark>a</mark> and followed a random letter and then by a <mark>p</mark>.</p> <pre><code>grep ^[a-p] fruits.txt </code></pre> <p>Find all text that begin with an <mark>a</mark> through to <mark>P</mark> in fruits.txt<br> Go ahead and play with grep!</p> <p>Lastly, grep can search through huge files very quickly, and outputs can be overwhelming, eg. log files. To make it easier, and this can be used for most linux commands,you can pipe commands through each other.</p> <pre><code>ps aux | grep 'root'| less </code></pre> <p>This simply means, I am looking for <mark>root</mark> in the output of <code>ps aux</code> but due to the volume outputted, I want to see them in pages, thus the use of <code>less</code>.</p> <p>Go ahead and play with grep. Fun times ahead.</p> #PhotoWalkGHPhotowalk Ghana - Telling Ghana's story, a walk at a time.http://localhost:2368/post-post/59a820ebc2665ecf084d0082ghanaphotowalkghtravelphotographyJean HuitThu, 31 Aug 2017 15:54:27 GMT<img src="http://localhost:2368/content/images/2017/08/IMG-20170827-WA0020.jpg" alt="#PhotoWalkGH"><p>This past weekend, I ventured out with <a href="https://www.instagram.com/photowalkgh/">PhotowalkGh</a>, a group of individuals made up of Photobloggers, Photojournalists, Photographers and Travellers. Gadgets as expected are: DSLR's and Smartphones. I am to be considered under category: <strong>Traveller</strong> and Gadget: <strong>a Smarthphone</strong>.</p> <p>This is by no means my first foray with PhotowalkGh, but to all extents this is my first post on the issue.</p> <p>Destination; <strong>Akosombo &amp; Juapong</strong><br> As always, meeting point was the Accra Mall.</p> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> <p>The first stop was at Juapong, where we disembarked at the Volta Star Textile Limited premise. Used to produce textiles back in the day, but currently produces material for other textile printing companies.</p> <hr> Then to the Akosombo township, which initially looked like there will be very little to capture, boy was I wrong. <hr> Photowalk starts as photographers pair up and move in different directions, in hopes of getting varied shots that tell a wonderful story of whatever town we get into. <blockquote> <p><strong>Juanpong</strong><br> was no different.<br> and<br> so was<br> <strong>Akosombo</strong></p> </blockquote> <p>Checkout my work <a href="https://www.instagram.com/huitjean/">on Instagram</a><br> You could also checkout the work of other photograhers using the following hashtag <mark>#photowalkgh</mark> .<br> Discover the beauty of Ghana, through the work of these photograhers. Find some amazing stories.!!</p> <p><em>Post image by:<a href="https://www.instagram.com/mtofstudios/">@mtofstudios</a></em></p> Wordpress Theme & Plugin UploadFTP done right, simple and easy on your local /developement version of wordpress.http://localhost:2368/wordpress-theme-plugin-upload-2/59a05a59f9c5cecb993b20feftpwordpresspluginsthemesJean HuitFri, 25 Aug 2017 16:40:40 GMT<p>Ever encountered the issue of setting up an <strong>FTP server</strong> to allow you upload, update themes and plugins on your local/development version of wordpress?</p> <p>Well, there is a simple solution to that.</p> <p>Simply edit your <code>wp-config</code> file by adding this piece of code anywhere in the above mentioned file.</p> <pre><code>define('FS_METHOD', 'direct'); </code></pre> <p>This should sort you out.</p> netstat<blockquote> <p>This post is the beginning of a series I'd tag <mark>nlc</mark> to talk about linux commands that I come across.A <strong>simpler man</strong> page for myself of my own words, minus the bells and whistles of the many options you come across in the man pages without almost ever using.</p></blockquote>http://localhost:2368/nifty-linux-commands/59a05a59f9c5cecb993b20fdlinuxnlcJean HuitTue, 04 Jul 2017 14:39:52 GMT<blockquote> <p>This post is the beginning of a series I'd tag <mark>nlc</mark> to talk about linux commands that I come across.A <strong>simpler man</strong> page for myself of my own words, minus the bells and whistles of the many options you come across in the man pages without almost ever using.</p> </blockquote> <hr> <h2 id="netstat">Netstat</h2> <p>Short for network status, this command when run without options <code>netstat</code> , can get carried away. Displaying all incoming and outgoing network requests at a go. This can be daunting and one may easily get lost trying to sift through all that data.<br> Piping <code>|</code> the data through <code>less</code> will make it easier for you to peruse and understand where your data is going, from what application and from what point data is being returned.<br> eg.</p> <pre><code class="language-bash">netstat -nr | less </code></pre> <p>Using the <code>- nr</code> option, gives you access to your routing table in number format, i.e shows you the network address.</p> Running Ghost on Google Compute Engine<p>So what do you with <strong>$300</strong> you cannot spend.<br> Well except on the platform that gave you the cash, albeit virtual.</p> <p>I run a blog or as I like to say, a place where I dump my thoughts and ideas at <a href="http://johnawotwi.me">johnawotwi.me</a> and my favourite platform to run on</p>http://localhost:2368/running-ghost-on-google-compute-engine/59a05a59f9c5cecb993b20fcgoogleghostcloudJean HuitSat, 01 Jul 2017 20:23:03 GMT<p>So what do you with <strong>$300</strong> you cannot spend.<br> Well except on the platform that gave you the cash, albeit virtual.</p> <p>I run a blog or as I like to say, a place where I dump my thoughts and ideas at <a href="http://johnawotwi.me">johnawotwi.me</a> and my favourite platform to run on is Ghost<br> <img src="http://localhost:2368/content/images/2017/08/Ghost_icon.png" alt="Ghost_icon"></p> <p>So my first expense was to host a ghost blog on Google Compute Engine; this is just an aspect of the whole Google Cloud Platform. Now take note however, Google Cloud Platform has inbuilt deployments of Ghost Blogging platform through the Cloud Launcher [One click solution/deployment].</p> <ul> <li>Sign in with &quot;as usual&quot; your gmail account.<br> <a href="https://console.cloud.google.com">Google Cloud Console</a></li> <li>Select Compute Engine and start a new VM instance.</li> <li>A name of your choice</li> <li>Ubuntu 16.04 (my choice)</li> <li>Setup an f1 micro compute engine VM instance <ul> <li>This is the smallest instance available. I chose to start with this.</li> </ul> </li> <li>After the instance is started up, you are presented with option to log into your instance. I choose to this this via &quot;ssh in your browser&quot;<br> <img src="http://localhost:2368/content/images/2017/08/Screen-Shot-2017-06-30-at-3.44.52-PM.png" alt="Screen-Shot-2017-06-30-at-3.44.52-PM"></li> <li>Once this is done, update and upgrade your repo and installed packages.</li> <li>Then install: <code>nginx</code> , <code>zip</code> , <code>wget</code>, <code>node v6</code> &amp; <code>nano</code></li> <li>Also grab the ghost package while doing that.</li> <li>Start up your nginx server and ensure its working.<br> <code>service start nginx</code> and check out the temp IP address provided.</li> </ul> <p>This line will update, upgrade, install and get all the necessary packages needed to continue with this step.</p> <pre><code class="language-bash">sudo apt-get update &amp;&amp; sudo apt-get upgrade -y &amp;&amp; sudo apt-get install -y zip wget nano nginx &amp;&amp; curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - &amp;&amp; sudo apt-get install -y nodejs &amp;&amp; wget https://ghost.org/zip/ghost-latest.zip &amp;&amp; unzip ghost-latest.zip -d ghost </code></pre> <ul> <li> <p>This will copy and extract your ghost directory in your working directory.</p> </li> <li> <p>Change into your Ghost directory and run<br> <code>npm install —production &amp;&amp; npm install sqlite3 —save</code></p> </li> <li> <p>Next we need to make sure <code>nginx</code> sees our ghost application and properly redirects traffic to the ghost setup.</p> </li> <li> <p><code>cd</code> into <code>/etc/nginx</code> and create your own <code>conf</code> file aptly named <code>ghost.conf</code></p> </li> <li> <p>Using nano or an editor you prefer type this in :</p> </li> </ul> <pre><code class="language-bash">server { listen 80; server_name your-domain-name.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } } </code></pre> <ul> <li> <p>Above are configuration settings that point external requests coming to your <strong>domain name</strong> through <strong>port 80</strong> to the <strong>localhost@2368</strong> which has ghost running. <strong>Note</strong> <code>your-domain-name.com</code> can be the external IP google gives you via the console at setup if you do not have a domain name yet.</p> </li> <li> <p>Next delete the default conf files in the following directories, using <code>rm</code> here.</p> </li> </ul> <pre><code class="language-bash">rm /etc/nginx/sites-available/default rm /etc/nginx/sites-enabled/default rm /etc/nginx/conf.d/default </code></pre> <ul> <li>and you are done.</li> <li>restart <code>ghost</code> | <code>nginx</code> and et voila.</li> </ul> <p><strong>Note:</strong> Anytime any of the above services stops, your ghost platform stops. Also note external IP's also change. To make them static, you can reserve an IP through the Google cloud console.</p> <ul> <li> <p>To do this, click on the options button i.e on the cloud console, click on <code>Networks &gt; External IP addresses</code>.</p> </li> <li> <p>Select your running instance and click on reserve static address. Thats it! You now have a static ip to go with your ghost instance.</p> </li> <li> <p>With a static IP you can configure your domain if you have one, to point to your static IP address. Remember to change <code>your-domain-name.com</code> in <strong>ghost.conf</strong> to reflect your new setup if you used the IP initially.</p> </li> <li> <p>Next is to get ghost running permanently.</p> </li> <li> <p>You can achieve this using <a href="http://pm2.keymetrics.io/">pm2</a>, <a href="https://github.com/foreverjs/forever">forever</a> or <a href="https://github.com/petruisfan/node-supervisor">supervisor</a></p> </li> <li> <p>I found <strong>supervisor</strong> worked for me. <em><strong>There are many tutorials out there that takes care of this</strong></em></p> </li> </ul> <p>Thats it!<br> You know have a running ghost blog.</p> <p><strong>ps</strong> I received a prompt, citing performance issues, after two days running ghost on the f1 micro. Technical tip was to go in for more ram and processor capacity, that equal $$ out of your $300.</p> Depressing Opposites<blockquote> <p>This unpublished poem I wrote a while back came ahunting.<br> I now outdoor it in this space.</p> </blockquote> <p>Quench a thirst, to feel thirsty?<br> Eat, to get hungry?<br> Sleep, to wake?<br> Breathe to exhale</p> <p>Light is, because darkness exists<br> Good is measured against evil<br> Black is what makes white stand out<br></p>http://localhost:2368/depressing-opposites/59a05a59f9c5cecb993b20fbJean HuitThu, 29 Jun 2017 13:08:28 GMT<blockquote> <p>This unpublished poem I wrote a while back came ahunting.<br> I now outdoor it in this space.</p> </blockquote> <p>Quench a thirst, to feel thirsty?<br> Eat, to get hungry?<br> Sleep, to wake?<br> Breathe to exhale</p> <p>Light is, because darkness exists<br> Good is measured against evil<br> Black is what makes white stand out<br> None is, without the other</p> <p>To what end do we grind and hustle each day,<br> Only so, you live to hustle and grind another day?<br> To what end do you pick yourself up when you’ve fallen,<br> Only to fall again?</p> <p>What’s the purpose of life?<br> If the death is the only constant.<br> What’s the purpose of striving to beat time, make time, catch up? <br> If in death, even time stands still.</p> <p>Life is measured in opposites<br> Smiles are worth their weight in tears.</p> ![reverie-4](/content/images/2017/08/reverie-4.png)Apps Unbecoming<p>“There is an app for that” is a phrase that 2016 saw and heard in abundance. Almost every facet of our lives has been permeated by a plethora of apps. Most notably mobile applications, spurred on by the constant growth of the smartphone market and the need for connected devices.</p>http://localhost:2368/apps-unbecoming/59a05a59f9c5cecb993b20faappsbloatJean HuitFri, 30 Dec 2016 13:33:15 GMT<p>“There is an app for that” is a phrase that 2016 saw and heard in abundance. Almost every facet of our lives has been permeated by a plethora of apps. Most notably mobile applications, spurred on by the constant growth of the smartphone market and the need for connected devices.</p> <p>This is so true, from apps that <a href="http://appcrawlr.com/ios/perfect365-makeup-photo-editor">whiten your teeth<br> </a> to apps that teach you <a href="https://play.google.com/store/apps/details?id=com.quizmine.combobotnyandzoology&amp;hl=en">botany and zoology</a>.</p> <p>However, the abundance of apps do not necessarily mean things are all rosy. Well in some cases they are. We invite these apps into our lives, on the premise that they would make our lives simpler, promising to deliver smooth performance, timely updates, improved service, breaking news, file management etc etc.</p> <p>And they do…</p> <p>Till they begin to suck the life of our data plans, our storage capacity, and most painfully start adding functionalities that we did not need in the first place.</p> <p>This week I had to do some spring cleaning, on my smartphone.</p> <p>First to go was <strong>TrueCaller</strong>.<br> Started out as a neat application , promising to let you know who is calling before you pick up a call. I dare say that was a functionality that we wish we had since antiquity, and it was brilliant, until the creators begun adding variations and options, bells and whistles that begun getting in the way, notifications you could not turn off unless you enabled them, which was the same as turning on the notification.<br> Now I am not saying these additions are not improvements; which in turn are good, but they are not always what your client wants, even if majority cry out for that particular functionality. Thus it will always be a good design principle to leave an opt-out option for your client to enable/disable a particular option.</p> <p>Next was <strong>ES Explorer</strong>.<br> This app is no doubt the best in file managers, and that was what it was before it became a media player, a notification master, a file-change-noise-making-pop-up notifier, space-clearing, phone-system-tuning-app. I was told the paid version was way better, offering you more ways to customize it.<br> Even so, the free version though free was very annoying. It had to go.</p> <p>Now I am two apps light and the world has not come to a screeching halt.<br> Tell me what apps you can and should do away with before we start the new year.!</p> <p>Cheers,<br> <img src="http://localhost:2368/content/images/2017/08/37292860-christmas-pictures-1.jpg" alt="37292860-christmas-pictures-1"></p>