<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Kagunda JM</title>
    <link>https://kags.me.ke/posts/</link>
    <description>Recent content in Posts on Kagunda JM</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 20 Oct 2023 07:00:00 +0300</lastBuildDate><atom:link href="https://kags.me.ke/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ODK Central Domain Change: A Painless Backup and Restore Tutorial</title>
      <link>https://kags.me.ke/posts/odk-central-domain-change/</link>
      <pubDate>Fri, 20 Oct 2023 07:00:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/odk-central-domain-change/</guid>
      
      <description>Introduction ODK Central is a powerful tool for collecting, managing, and analyzing data using mobile devices. However, there may be situations where you need to move your ODK deployment from one server to another, such as changing hosting providers, upgrading hardware, or switching domains.
This tutorial will walk you through the steps of creating a direct backup of your ODK Central database, copying the backup file and other essential data to the destination server, and restoring the backup file on the new server.</description>
      
    </item>
    
    <item>
      <title>How to Transform SQL Queries to Crosstabs in PostgreSQL</title>
      <link>https://kags.me.ke/posts/postgresql-transform-sql-queries-to-crosstabs/</link>
      <pubDate>Wed, 08 Mar 2023 11:00:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/postgresql-transform-sql-queries-to-crosstabs/</guid>
      
      <description>A SELECT SQL query retrieves data from a database in a tabular form. The first row, or header row, has the column names, and all the other rows have the data that was retrieved.
In a crosstab, the data is condensed and the names of one or more columns are rotated. You can add row and column totals to a crosstab. For example, a list of salesmen&amp;rsquo;s monthly sales may include the months into the column headers.</description>
      
    </item>
    
    <item>
      <title>How To Install ODK Central on Ubuntu 20.04</title>
      <link>https://kags.me.ke/posts/install-odk-central-on-ubuntu-20.04/</link>
      <pubDate>Tue, 30 Nov 2021 06:10:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/install-odk-central-on-ubuntu-20.04/</guid>
      
      <description>Introduction The Open Data Kit (ODK) is an open-source set of tools and standards designed to help organizations and individuals in the field of data collection. ODK consists of several components, including ODK Central and ODK Collect. ODK Central is the ODK server that manages user accounts and permissions, stores form definitions, and lets data collection clients like ODK Collect connect to it for form download and submission.
In this blog article, you will learn how to install ODK Central on a custom Ubuntu server.</description>
      
    </item>
    
    <item>
      <title>How to Drop Multiple Databases in PostgreSQL</title>
      <link>https://kags.me.ke/posts/how-to-drop-multiple-databases-in-postgresql/</link>
      <pubDate>Thu, 28 Oct 2021 09:00:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/how-to-drop-multiple-databases-in-postgresql/</guid>
      
      <description>Introduction While performing database integration tests, things went south, and I ended up with more than 15 (fifteen) temporary PostgreSQL test databases.
I use OmniDB, an open-source application for managing databases. Version (3.0.2b) of OmniDB does not have an option for selecting and dropping multiple databases. To drop a database in OmniDB, you right-click on a database, select Drop Database from the context menu, run the query to drop the database, and finally close the query window.</description>
      
    </item>
    
    <item>
      <title>How To Export Data From Database Query To XML</title>
      <link>https://kags.me.ke/posts/how-to-export-data-from-database-toxml/</link>
      <pubDate>Mon, 28 Jun 2021 15:37:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/how-to-export-data-from-database-toxml/</guid>
      
      <description>Introduction Extensible Markup Language (XML) has been in existence for more than two decades. XML is a markup language for encoding documents in a format that is both human and machine readable. In XML, you define your own custom tags, elements and attributes to meet your specific needs. XML is case sensitive, allows comments and hierarchy is important. An XML file is a text file and can be opened with any text editor.</description>
      
    </item>
    
    <item>
      <title>Installing MS SQL Server 2019 on Parrot OS</title>
      <link>https://kags.me.ke/posts/how-install-ms-sql-server-on-parrotos/</link>
      <pubDate>Mon, 21 Jun 2021 15:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/how-install-ms-sql-server-on-parrotos/</guid>
      
      <description>Introduction Parrot OS is a light Linux distribution based on Debian. Microsoft SQL Server or SQL Server is a relational database management system (RDBMS) developed by Microsoft. Starting with SQL Server 2017, Microsoft added Linux support and thus making any newer versions cross platform.
This post steps through the process of SQL Server 2019 Developer edition installation on Parrot OS and contains the following topics:
downloading and configuring MS SQL Server 2019 package repository running the SQL Server setup process installation of SQL Server command line tools installation Azure Data Studio running queries in Azure Data Studio The commands used in this post will also work on any Debian based distribution like Ubuntu, MX Linux, Linux Mint, Knoppix among many others.</description>
      
    </item>
    
    <item>
      <title>Add Snowpack to ASP.NET Core Web App</title>
      <link>https://kags.me.ke/posts/add-snowpackjs-to-asp.net-core-web-app/</link>
      <pubDate>Mon, 15 Mar 2021 15:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/add-snowpackjs-to-asp.net-core-web-app/</guid>
      
      <description>Introduction I stumbled on Snowpack while searching for a solution to resolve a ParcelJS error.
Building my application assets with ParcelJS worked without errors but when running the application, none of the JS scripts were running. Upon checking the browser console window, I was getting the following error: Uncaught (in promise) Error: Cannot find module. I never managed to resolve the error but Snowpack appeared in one of the searches.</description>
      
    </item>
    
    <item>
      <title>The Data Directory Contains an Old postmaster.pid File</title>
      <link>https://kags.me.ke/posts/data-directory-contains-an-old-postmaster-pid-file/</link>
      <pubDate>Tue, 26 Jan 2021 08:10:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/data-directory-contains-an-old-postmaster-pid-file/</guid>
      
      <description>PostgreSQL Connection Failure Sometimes, computers have a life of their own. You shut down your laptop and on the next boot, you are unable to connect to a PostgreSQL 12 database.
Opening the installed Postgres.app, I notice it displays stale postmaster.pid file error.
Postmaster.pid What the heck is the postmaster.pid file? Turns out that the postmaster.pid is a lock file used to prevent two instances of the same PostgreSQL server from running on the same data-directory.</description>
      
    </item>
    
    <item>
      <title>How To Alter a Column Used By A View or Rule</title>
      <link>https://kags.me.ke/posts/how-to-alter-a-column-used-by-a-view-or-rule/</link>
      <pubDate>Tue, 12 Jan 2021 07:00:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/how-to-alter-a-column-used-by-a-view-or-rule/</guid>
      
      <description>In PostgreSQL, assume you have a table and view with the following definitions:
CREATE TABLE boq_items ( id character varying(22) NOT NULL, item_no character varying(50) NOT NULL, activity_name character varying(255) NOT NULL, page_no int NOT NULL, qty numeric(14,2) NOT NULL, rate numeric(14,2) NOT NULL, bq_amt numeric(14,2) NOT NULL ); CREATE VIEW vw_boq_item_names AS SELECT activity_name FROM boq_items; Attempting to change the definition of activity_name column using ALTER TABLE boq_items ALTER activity_name TYPE text, ALTER activity_name SET NOT NULL; will return a cannot alter type of a column used by a view or rule.</description>
      
    </item>
    
    <item>
      <title>How to Drop All Tables in PostgreSQL Database</title>
      <link>https://kags.me.ke/posts/postgresql-how-to-drop-all-tables/</link>
      <pubDate>Sun, 18 Oct 2020 10:00:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/postgresql-how-to-drop-all-tables/</guid>
      
      <description>Introduction The DROP TABLE command in PostgreSQL removes a table definition, all data and indexes of a table from a database. DROP TABLE will fail if the table has other objects that depend on it like views and foreign key definitions. The command will also fail and display a table does not exist message if the table being dropped does not exist. PostgreSQL does not have a drop all tables command and you have to define your own way of performing this task.</description>
      
    </item>
    
    <item>
      <title>How To Integrate Asp.NET Core Project with Bootstrap, TailwindCSS and ParcelJS</title>
      <link>https://kags.me.ke/posts/integrate-asp-net-core-project-with-bootstrap-tailwindcss-parceljs/</link>
      <pubDate>Wed, 30 Sep 2020 09:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/integrate-asp-net-core-project-with-bootstrap-tailwindcss-parceljs/</guid>
      
      <description>Introduction When you create a new ASP.NET Core Razor Pages project, the new project comes bundled with Bootstrap CSS framework and jQuery Javascript library. Files for both Bootstrap and jQuery are placed in a wwwroot/lib folder. The lib folder contains both compressed and un-compressed versions of all files your project may require.
During development, you add more CSS to customize the design of your final application. At times, the CSS you add may end up duplicating formatting under different class names.</description>
      
    </item>
    
    <item>
      <title>Git - Not Something We Can Merge</title>
      <link>https://kags.me.ke/posts/git-not-something-we-can-merge/</link>
      <pubDate>Sun, 30 Aug 2020 07:06:47 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/git-not-something-we-can-merge/</guid>
      
      <description>I use Git for version control. My workflow is simple; create branch from the main branch, make changes on the new branch, commit the changes and merge the changes to the main branch. I have aliased the git command to g and combine the commands in a single line in the form g checkout master;g merge branch-name; and it works.
It was therefore a surprise when I ran g checkout master;g merge add_progress;g push;g checkout add_progress and Git responded with merge: add_progress - not something we can merge.</description>
      
    </item>
    
    <item>
      <title>ASP.NET Core - The OAuth YouTube Data API Dance</title>
      <link>https://kags.me.ke/posts/youtube-data-api-razor-project/</link>
      <pubDate>Thu, 20 Aug 2020 08:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/youtube-data-api-razor-project/</guid>
      
      <description>Introduction YouTube Data API allows developers to add YouTube features to their applications. Using the API, a developer can upload and search for videos among many other features on behalf of the YouTube channel owner. In this post, we start by creating a Google project so that we can acquire credentials to access the YouTube API. We then create a Razor Pages application and use HTTP/REST to call the OAuth 2.</description>
      
    </item>
    
    <item>
      <title>ASP.NET Core Identity Authentication Simplified</title>
      <link>https://kags.me.ke/posts/asp-net-core-identity-authentication/</link>
      <pubDate>Tue, 07 Jul 2020 07:07:07 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/asp-net-core-identity-authentication/</guid>
      
      <description>Introduction A first encounter with ASP.NET Core Identity seems intimidating. Add claims and third party login providers to the picture and most developers will opt for custom implementations for authentication and authorization.
By categorizing ASP.NET Core Identity functionality into local users, third party login providers and application roles, we reduce this complexity making ASP.NET Core Identity easier to work with.
In this article, we step create a project using ASP.</description>
      
    </item>
    
    <item>
      <title>5 Steps To Host Static Website On DigitalOcean Running Ubuntu 19.10</title>
      <link>https://kags.me.ke/posts/do-create-static-website/</link>
      <pubDate>Thu, 04 Jun 2020 10:20:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/do-create-static-website/</guid>
      
      <description>Introduction Some tasks seem so simple when you are performing them regularly. If however you stay for a period of time without performing these tasks, it takes a lot of effort trying to recall the commands and the flow of how you performed those tasks. Setting up websites is one of those tasks; set it up and maybe it will take a long time before you repeat the process; by that time you have already forgetten how you went about it.</description>
      
    </item>
    
    <item>
      <title>Windows 10 - Setup Cmder</title>
      <link>https://kags.me.ke/posts/cmder-commander-console-for-windows/</link>
      <pubDate>Mon, 25 May 2020 19:10:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/cmder-commander-console-for-windows/</guid>
      
      <description>What is Cmder Cmder is a commander console for Windows. The opening line on Cmder&amp;rsquo;s website explains it all.
Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout, looking sexy from the start.
All the magic of Cmder happens through use of ConEmu - a console program for windows and Clink which gives it a powerful bash style command line editing, completion, history and much more.</description>
      
    </item>
    
    <item>
      <title>Generate Dynamic PDF Invoices Using React and React-PDF</title>
      <link>https://kags.me.ke/posts/generate-dynamic-pdf-incoice-using-react-pdf/</link>
      <pubDate>Thu, 12 Dec 2019 18:10:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/generate-dynamic-pdf-incoice-using-react-pdf/</guid>
      
      <description>Introduction Generation of reports is a core feature in most applications. When developing for the web, one may opt to generate reports using HTML/CSS or PDF. In situations where HTML/CSS reports require emailing to third parties, these reports are exported to various formats one of them being PDF. It is therefore advantageous where the initial report generation is in PDF format as this will not require any exporting.
In this post, we step through the process of generating a simple dynamic PDF invoice using React and react-pdf by Diego Muracciole.</description>
      
    </item>
    
    <item>
      <title>Setup a Git Server and Deploy with Git Hooks on Ubuntu 18.04</title>
      <link>https://kags.me.ke/posts/digitalocean-setup-git-server-deploy-with-hooks-ubuntu/</link>
      <pubDate>Thu, 18 Jul 2019 08:20:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/digitalocean-setup-git-server-deploy-with-hooks-ubuntu/</guid>
      
      <description>Introduction In this post we look at the process of setting up a Git repository on a DigitalOcean droplet running Ubuntu 18.04. After setting up the repository, we create a server side hook to automatically deploy a successful git push to a web server. A non-root user with no sudo permissions will be used to create the Git repository. The Git user will also be granted read and write permissions on the website for a successful deployment.</description>
      
    </item>
    
    <item>
      <title>Laravel Development Using PostgreSQL and Laradock</title>
      <link>https://kags.me.ke/posts/laravel-postgresql-laradock/</link>
      <pubDate>Mon, 10 Jun 2019 08:10:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/laravel-postgresql-laradock/</guid>
      
      <description>In this post, we setup a Laravel development environment using PostgreSQL and Laradock. Laradock uses Docker to easily setup up a development environment for PHP projects. By using Docker, you eliminate the need to install PHP, Composer, Laravel or a database server on your local computer.
Requirements Git will be required in order to clone the Laradock repository. You can find out if Git is installed on your computer by running git --version on a terminal/command prompt.</description>
      
    </item>
    
    <item>
      <title>Change name of macOS user account</title>
      <link>https://kags.me.ke/posts/macos-change-username/</link>
      <pubDate>Thu, 21 Mar 2019 19:35:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/macos-change-username/</guid>
      
      <description>During initial setup, my full and account names were mispelled.
If you are already logged, log out
Log in using a administrator account. The account you use to log in must be different from the account you want to change.
Choose Go, Go to Folder&amp;hellip; from the menu of press Shift-Command-G to open th Go to Folder window.
Type /Users and click OK
Within the /Users folder, you will see a folder with the name of the account you want to renames.</description>
      
    </item>
    
    <item>
      <title>Sideload Excel Add-In on MacOS Sierra</title>
      <link>https://kags.me.ke/posts/office-mac-side-load-excel-add-in/</link>
      <pubDate>Mon, 21 Jan 2019 02:01:05 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/office-mac-side-load-excel-add-in/</guid>
      
      <description>Introduction In a previous post we looked at the process of generating an Excel add-in and using mkcert to create private certification authority (CA) trusted by browsers. In this post, we continue the journey of developing office add-in by looking at the steps involved in side loading our add-in in an Excel host.
Prerequisites The add-in how to guide for iPad and Mac sets out the following prerequisites:
A Mac running OS X v10.</description>
      
    </item>
    
    <item>
      <title>Office Add-In using VsCode and Mkcert Private Trusted CA </title>
      <link>https://kags.me.ke/posts/office-add-in-mkcert-localhost-ssl-certificate/</link>
      <pubDate>Fri, 11 Jan 2019 02:01:05 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/office-add-in-mkcert-localhost-ssl-certificate/</guid>
      
      <description>Introduction Developing of Office add-ins requires use of HTTPS. SSL/TLS certificates are therefore required to grant permission to use encrypted communications and authenticate the identity of the certificate holder. When a new add-in project is generated, self signed certificates are also created for the project. For browsers to use these certificates, they have to be added as trusted root certificates. There are times however that some browsers fail to recognize these self-signed certificates as trusted even after adding them as root trusted.</description>
      
    </item>
    
    <item>
      <title>Buffalo Add Custom Dashboard Template</title>
      <link>https://kags.me.ke/posts/buffalo-add-custom-theme/</link>
      <pubDate>Wed, 01 Aug 2018 18:10:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/buffalo-add-custom-theme/</guid>
      
      <description>source: vali-admin dashboard overlaid with the Buffalo logo
In this tutorial, we add vali-admin dashboard template to a Buffalo application.
Buffalo Project Setup Navigate to your $GOPATH - cd $GOPATH/src/github.com/$USER/
Create a new Buffalo project - buffalo new valibuffalo
Change the project directory - cd valibuffalo
Create database for the project - buffalo db create --env development
Do a test run - buffalo dev and go to localhost:3000/
Prepare vali-admin dashboard template files Go to vali-admin Github page page</description>
      
    </item>
    
    <item>
      <title>Deploy Buffalo App to DigitalOcean</title>
      <link>https://kags.me.ke/posts/digital-ocean-deploy-buffalo-app/</link>
      <pubDate>Mon, 09 Jul 2018 22:20:15 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/digital-ocean-deploy-buffalo-app/</guid>
      
      <description>In this article, we go through the process of deploying a Buffalo application to a DigitalOcean Droplet using Docker images. We will utilize the Docker Compose Tool to manage the containers and Systemd to restart our application in case of failure.
Prerequisites You have developed a Buffalo application. I will be using theToodo example application. You have an account with DigitalOcean, You have created a DigitalOcean Droplet based on CoreOs Container Linux You are able to SSH into your Droplet.</description>
      
    </item>
    
    <item>
      <title>Route Your Domain To DigitalOcean</title>
      <link>https://kags.me.ke/posts/route-your-domain-to-digitalocean/</link>
      <pubDate>Fri, 25 May 2018 10:10:05 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/route-your-domain-to-digitalocean/</guid>
      
      <description>Introduction to DNS, IP and Domain Name Domain Name System (DNS) are the equivalent of a network&amp;rsquo;s phonebook. They maintain human-friendly domain names and resolve these human friendly names to IP addresses. While it is easy for people to remember domain names, computers use IP addresses to communicate.
Internet Protocol (IP) address is a unique identifier label assigned to each device that connects to a network whether local or external. IP addresses are four numeric numbers separated by dots (41.</description>
      
    </item>
    
    <item>
      <title>CoreOS Container Linux on DigitalOcean</title>
      <link>https://kags.me.ke/posts/digitalocean-install-coreos/</link>
      <pubDate>Sun, 20 May 2018 10:05:02 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/digitalocean-install-coreos/</guid>
      
      <description>CoreOs Container Linux is very light in comparison with other Linux distributions and requires applications to run inside their containers.
Create SSH Key Pair For Server Authentication
Login to the server (Droplet) will be via SSH keys and not passwords. SSH keys come in pairs, one private and the other public. The private key is known only to you while the public key can be shared with any SSH server to which you would like to connect.</description>
      
    </item>
    
    <item>
      <title>Migrate/Convert Virtualbox VM to Hyper-V</title>
      <link>https://kags.me.ke/posts/virtualbox-to-hyper-v/</link>
      <pubDate>Sun, 07 Jan 2018 20:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/virtualbox-to-hyper-v/</guid>
      
      <description>Launch VirtualBox
Select Virtual Media Manager from the File menu
When Virtual Media Manager window opens, select the VM file you want to migrate and click on Copy button
When the Copy Virtual Hard Disk window opens, click on ExpertMode button to enable selecting required options on one screen.
Under Hard disk file type, select VHD (Virtual Hard Disk)
Wait for the copy process to complete
Convert vhd to vhdx</description>
      
    </item>
    
    <item>
      <title>Powershell History Remove Duplicate Commands </title>
      <link>https://kags.me.ke/posts/powershell-remove-duplicate-commands/</link>
      <pubDate>Wed, 19 Apr 2017 19:20:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/powershell-remove-duplicate-commands/</guid>
      
      <description>When running commands within PowerShell, the history of commands may contain duplicated commands. To run a command contained within the commands history, you use the up arrow key to scroll up to the required command. If the commands are many and duplicated, it may require a bit of effort to get to the required command.
In Windows PowerShell 5.0, you can prevent duplication of commands within the history by running the following command in PowerShell:</description>
      
    </item>
    
    <item>
      <title>Hosting Google Fonts Locally</title>
      <link>https://kags.me.ke/posts/host_google_fonts_locally/</link>
      <pubDate>Fri, 07 Apr 2017 20:30:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/host_google_fonts_locally/</guid>
      
      <description>When a website using google fonts is hosted locally without internet access, the need arises to host fonts used on the site available locally. This post uses a simple demo to illustrate the steps required for self hosting google fonts locally.
Create an index.html file and styles.css. You can use different names for the files.
&amp;lt;!-- index.html --&amp;gt; &amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;#34;en&amp;#34;&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta charset=&amp;#34;UTF-8&amp;#34;&amp;gt; &amp;lt;meta name=&amp;#34;viewport&amp;#34; content=&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&amp;gt; &amp;lt;meta http-equiv=&amp;#34;X-UA-Compatible&amp;#34; content=&amp;#34;ie=edge&amp;#34;&amp;gt; &amp;lt;link href=&amp;#39;styles.</description>
      
    </item>
    
    <item>
      <title>Install Go on Windows 10</title>
      <link>https://kags.me.ke/posts/windows-set-go-environment-variables/</link>
      <pubDate>Fri, 03 Mar 2017 19:10:00 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/windows-set-go-environment-variables/</guid>
      
      <description>Download MSI installer After the download is complete, open the downloaded msi file and follow the prompts to install Go. By default, the installer places the files in the c:\Go folder and also adds the c:\go\bin directory to your PATH environment variable. Create a working directory for your Go projects and change to this newly created folder. This will be your Go workspace and should be separate from your Go installation folder.</description>
      
    </item>
    
    <item>
      <title>Recovering Folders converted to shortcuts by virus</title>
      <link>https://kags.me.ke/posts/recovering-folders-converted-to-shortcuts-by-virus/</link>
      <pubDate>Thu, 12 Feb 2015 22:09:49 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/recovering-folders-converted-to-shortcuts-by-virus/</guid>
      
      <description>There is nothing more annoying and frustrating than trying to copy files to a client&amp;rsquo;s computer using a usb drive and realizing that the clients computer has a virus and it has turned all your files into a shortcut. If you had important files and allow an antivirus to clean the usb drive, you may end up losing the files. This has happened to me on several ocassions and there are times I end up losing files.</description>
      
    </item>
    
    <item>
      <title>Installing Jekyll on windows 8.1</title>
      <link>https://kags.me.ke/posts/installing-jekyll-on-windows-8.1/</link>
      <pubDate>Mon, 02 Feb 2015 22:09:49 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/installing-jekyll-on-windows-8.1/</guid>
      
      <description>Jekyll is an static site generator designed for static websites and blogs. In this post, I enumerate the process of installing Jekyll on Windows 8.1.
On previous ocassions, my posts (though rare) have been dynamic and created using blogging platforms which make writing blog posts a very easy process. Unfortunately I never kept pace with the updates on these platforms and one day I woke up to find my site had been hacked.</description>
      
    </item>
    
    <item>
      <title>Returning Byte Array Data in ASP.NET MVC</title>
      <link>https://kags.me.ke/posts/returning-byte-array-data-in-asp.net-mvc/</link>
      <pubDate>Thu, 15 Aug 2013 23:28:26 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/returning-byte-array-data-in-asp.net-mvc/</guid>
      
      <description>Assume you have the following ASP.NET MVC model which contains a byte array property which will be used to hold data for an image.
public class CompanyModel { public string Id { get; set; } public string Name { get; set; } public byte[] Logo { get; set; } } On the controller side, you fetch the data from the database using code similar to the following
public ActionResult Settings(string countyId) { var county = _session.</description>
      
    </item>
    
    <item>
      <title>Cannot attach database SQL Server 2012 error 5</title>
      <link>https://kags.me.ke/posts/cannot-attach-database-sql-server-2012-error-5/</link>
      <pubDate>Tue, 30 Apr 2013 09:23:51 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/cannot-attach-database-sql-server-2012-error-5/</guid>
      
      <description>When upgrading from MS SQL Server 2008 to MS SQL Server 2012, I decided to retain the data directories I was using in SQL 2008. I therefore did a backup and detached all my private databases, removed SQL 2008 and did a clean install of MS SQL 2012.
I logged into the new server and on trying to attach back any of my databases, I encountered the following error:
CREATE FILE encountered operating system error 5 (Access is denied) while attempting to open or create the physical file .</description>
      
    </item>
    
    <item>
      <title>Add NUnit ASP.NET MVC Test Framework in VS 2012</title>
      <link>https://kags.me.ke/posts/add-nunit-asp-net-mvc-test-framework-in-vs2012/</link>
      <pubDate>Wed, 10 Apr 2013 23:12:09 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/add-nunit-asp-net-mvc-test-framework-in-vs2012/</guid>
      
      <description>Instructions for adding NUnit Test Framework to Visual Studio 2010 are lengthy and complicated. In a previous installation of Visual Studio 2010 I remember having used an extension that made the task much easier but I never noted down the name or url the extension.
I have finally managed to get hold of the name and links of the extension. And so, lest I forget, I am noting it down. I never know when I might require it again.</description>
      
    </item>
    
    <item>
      <title>Invalid Character Value for Cast Specification</title>
      <link>https://kags.me.ke/posts/invalid-character-value-for-cast-specification/</link>
      <pubDate>Fri, 27 Jan 2012 16:52:37 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/invalid-character-value-for-cast-specification/</guid>
      
      <description>Sometimes we waste a lot of time trying to get to the root cause of exceptions. Some exceptions are so misleading that they end up sending you on a wild goose chase.
When I encountered the following exception during SQL Server data importation process,
Invalid character value for cast specification. The wording led me to believe that one of the characters had a casting problem. Going through the code, I could not locate any place where I was casting single characters.</description>
      
    </item>
    
    <item>
      <title>Existing relationship must have related columns</title>
      <link>https://kags.me.ke/posts/existing-relationship-must-have-related-columns/</link>
      <pubDate>Thu, 20 Oct 2011 18:27:02 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/existing-relationship-must-have-related-columns/</guid>
      
      <description>I was working on the Microsoft SQL Server (2008) Management Studio when I renamed some tables. After renaming I decided to edit the relationships and I got stuck with the following error
The existing relationship must have at least one pair of related columns No matter what I did, I could not discard the screen with this message.
To reproduce the error, use the following steps but take note that you will end up in an endless loop and you will be forced to kill the SQL Server process.</description>
      
    </item>
    
    <item>
      <title>Windows 7 Control Panel Displays Blank</title>
      <link>https://kags.me.ke/posts/control-panel-displays-blank/</link>
      <pubDate>Tue, 11 Oct 2011 21:42:32 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/control-panel-displays-blank/</guid>
      
      <description>It seems there are times that computers get tired and decide to take a nap or maybe decide to stage a strike. How else would you explain a situation where a computer has been working without a hassle and suddenly you open the Control Panel and all you get is a blank screen staring at you?
Of late I have noted my laptop has been running slowly and I thought this was due to the number of applications installed.</description>
      
    </item>
    
    <item>
      <title>Installing PHP / IIS 7 on Windows 7</title>
      <link>https://kags.me.ke/posts/installing-php-iis-7-on-windows-7/</link>
      <pubDate>Sat, 10 Sep 2011 08:20:59 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/installing-php-iis-7-on-windows-7/</guid>
      
      <description>![alt=&#34;Internet Information Services Welcome Screen&#34;](/img/iis7-welcome.png#floatcenter) 1. Install Internet Information Services (IIS) by selecting `Start`, `Control Panel`, `Programs`, `Turn Windows features on or off`. Click the plus sign (+) to expand `Internet Information Services`, `World Wide Web Services` and `Application Development Features`. Under `Application Development Features`, make sure `NET Extensibility`, `ASP.NET`, `CGI, ISAPI Extensions`, `ISAPI Filters` and `Server-Side Includes` are selected. Download PHP compressed files. Note that Non-thread-safe build of PHP is recommended when using IIS.</description>
      
    </item>
    
    <item>
      <title>Get Computer MAC Address</title>
      <link>https://kags.me.ke/posts/get-computer-mac-address/</link>
      <pubDate>Sat, 20 Aug 2011 14:30:02 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/get-computer-mac-address/</guid>
      
      <description>A MAC address is a unique identifier assigned to a network interface card (NIC). The MAC is hard-coded to the NIC at the time of manufacture.
How do you get the MAC address for a computer?
Open Windows Command Prompt and type the following command:
ipconfig /all This will display a result similar to the following:
C:\&amp;gt;ipconfig /all Windows IP Configuration Host Name . . . . . . . .</description>
      
    </item>
    
    <item>
      <title>Who is using my port in Windows 7</title>
      <link>https://kags.me.ke/posts/who-is-using-my-port-in-windows-7/</link>
      <pubDate>Wed, 03 Aug 2011 23:02:20 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/who-is-using-my-port-in-windows-7/</guid>
      
      <description>I was testing an application that was set to use port 8080. The application failed to start up throwing an exception that the port was in use.
To identify the process tying up port 8080, I opened windows command prompt and typed the following command.
netstat -aop tcp netstat is useful for displaying active connections and ports on which a computer is listening.
Description of parameters used:
a - Displays all TCP and UDP connections and listening ports</description>
      
    </item>
    
    <item>
      <title>Computer Settings Not Matching Network Requirements</title>
      <link>https://kags.me.ke/posts/the-settings-saved-on-this-computer-for-the-network/</link>
      <pubDate>Fri, 15 Jul 2011 23:35:33 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/the-settings-saved-on-this-computer-for-the-network/</guid>
      
      <description>After upgrading my router WRT160NL to the latest DD-WRT Firmware (1614), I was unable to connect my laptop to the router using wireless adapter. No matter what I did I was still getting the error
The settings saved on this computer for the network do not match the requirements of the network I matched the security settings on the router and updated this on the laptop so that they were the same but the error would not go away.</description>
      
    </item>
    
    <item>
      <title>Installing DD-WRT on LinkSys WRT160NL</title>
      <link>https://kags.me.ke/posts/installing-dd-wrt-on-linksys-wrt160nl/</link>
      <pubDate>Wed, 13 Jul 2011 12:35:44 +0300</pubDate>
      
      <guid>https://kags.me.ke/posts/installing-dd-wrt-on-linksys-wrt160nl/</guid>
      
      <description>I bought a new router LinkSys WRT160NL to replace an Alvarion GW5051 provided by my internet service provider. The main reason replacing the router was with the intention of installing third party firmware which provided more functionality. Installing third party firmware was not possible with router provided by the service provider.
For the firmware, I had a choice between TomatoUSB or DD-WRT. However, after a bit of research I realised that LinkSys WRT160NL was not on TomatoUSB compatibility list and therefore settled on DD-WRT.</description>
      
    </item>
    
  </channel>
</rss>
