609 lines
No EOL
26 KiB
HTML
Executable file
609 lines
No EOL
26 KiB
HTML
Executable file
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
<meta name="description" content="Getting all the prerequisite tools and software needed to get the project going.">
|
|
|
|
|
|
<meta name="author" content="Gugulethu Hlekwayo">
|
|
|
|
|
|
<link rel="canonical" href="https://gugulet.hu/qself/getting-started/">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="icon" href="../../assets/images/favicon.png">
|
|
<meta name="generator" content="zensical-0.0.20">
|
|
|
|
|
|
|
|
<title>Getting started - Gugulethu Hlekwayo</title>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/modern/main.d4922b3c.min.css">
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/stylesheets/modern/palette.dfe2e883.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Inter";--md-code-font:"JetBrains Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../../assets/css/g.css">
|
|
|
|
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,a=__md_scope)=>JSON.parse(t.getItem(a.pathname+"."+e)),__md_set=(e,t,a=localStorage,_=__md_scope)=>{try{a.setItem(_.pathname+"."+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute("data-platform",navigator.platform)</script>
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="indigo">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#install" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href="../.." title="Gugulethu Hlekwayo" class="md-header__button md-logo" aria-label="Gugulethu Hlekwayo" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-book-open" viewBox="0 0 24 24"><path d="M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></svg>
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-menu" viewBox="0 0 24 24"><path d="M4 5h16M4 12h16M4 19h16"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
Gugulethu Hlekwayo
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
Getting started
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<form class="md-header__option" data-md-component="palette">
|
|
|
|
|
|
|
|
|
|
<input class="md-option" data-md-color-media="none" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="indigo" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
|
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-search" viewBox="0 0 24 24"><path d="m21 21-4.34-4.34"/><circle cx="11" cy="11" r="8"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog" aria-label="Search">
|
|
<button type="button" class="md-search__button">
|
|
Search
|
|
</button>
|
|
</div>
|
|
|
|
|
|
<div class="md-header__source">
|
|
|
|
</div>
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href="../.." title="Gugulethu Hlekwayo" class="md-nav__button md-logo" aria-label="Gugulethu Hlekwayo" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="lucide lucide-book-open" viewBox="0 0 24 24"><path d="M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"/></svg>
|
|
|
|
</a>
|
|
Gugulethu Hlekwayo
|
|
</label>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../.." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Homepage
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../../resume/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
|
|
|
|
Resume
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="On this page">
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
On this page
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#install" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Install
|
|
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="Install">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#1-install-all-applications-and-tools" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
1. Install all applications and tools
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#2-clone-the-project-repo" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
2. Clone the project repo
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#3-import-flows-into-automate-and-displays-into-kustom" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
3. Import flows into Automate and displays into Kustom
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#4-configure-the-root-settings" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
4. Configure the root settings
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#5-start-the-1-context-flow-in-automate" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
5. Start the 1 Context flow in Automate
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#toolset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
|
|
Toolset
|
|
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
<h1>Getting started</h1>
|
|
|
|
<p>The qSelf project is made up of a number of inter-connected components:</p>
|
|
<ul>
|
|
<li><strong>Logical components:</strong> These are responsible for the logical progression of flows, moving data from screens and sensors to the database and further on to displays.</li>
|
|
<li><strong>Sensory components:</strong> These components collect external data from various sensors (mostly from the smartwatch).</li>
|
|
<li><strong>Input and Display components:</strong> These are responsible for receiving manually inputted data that supplements sensory data. The display components display the processed data on dashboards and reports.</li>
|
|
<li><strong>Analytical components:</strong> These components take the received data and parse it into useful information.</li>
|
|
<li><strong>Storage and Sync components:</strong> These components take data and store it in the SQLCipher database or in temp files for quick retrieval.</li>
|
|
</ul>
|
|
<p>Components are immutable, but the tools that make them work are replaceable and interchangeable.</p>
|
|
<p><strong>Diagram: Topology of the qSelf system</strong></p>
|
|
<p><img alt="The topology of the qSelf system from a wide view." src="qs-topology-3333x3333.webp" title="This is a Title" width="750" /></p>
|
|
<h2 id="install">Install<a class="headerlink" href="#install" title="Permanent link">¶</a></h2>
|
|
<h3 id="1-install-all-applications-and-tools">1. Install all applications and tools<a class="headerlink" href="#1-install-all-applications-and-tools" title="Permanent link">¶</a></h3>
|
|
<p>Install all applications in the toolset table. This includes CLI tools that are listed in the Termux row, and plugins for Automate.</p>
|
|
<h3 id="2-clone-the-project-repo">2. Clone the project repo<a class="headerlink" href="#2-clone-the-project-repo" title="Permanent link">¶</a></h3>
|
|
<p>Clone the project repo to the root of your user space on your mobile device using Termux and the following commands:</p>
|
|
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>cd /storage/emulated/0/
|
|
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>git clone git@github.com:gugulet-hu/qself-process.git
|
|
</span></code></pre></div>
|
|
<h3 id="3-import-flows-into-automate-and-displays-into-kustom">3. Import flows into Automate and displays into Kustom<a class="headerlink" href="#3-import-flows-into-automate-and-displays-into-kustom" title="Permanent link">¶</a></h3>
|
|
<p>Import the <code>latest.flo</code> files in each of the directories in the <strong>qself-process/Automate/</strong> folder. Inside Automate, the dot menu in the top-left corner includes the option to <strong>Import</strong>. Import the files in the <strong>qself-process/Kustom/wallpapers/</strong> folder into KLWP and import the files in the <strong>qself-process/Kustom/watchfaces/</strong> folder into KWCH.</p>
|
|
<h3 id="4-configure-the-root-settings">4. Configure the root settings<a class="headerlink" href="#4-configure-the-root-settings" title="Permanent link">¶</a></h3>
|
|
<p>Configure the root settings in <strong>qself-process/Automate/.demo-config.json</strong> file and rename the file to <strong>.config.json</strong>.</p>
|
|
<h3 id="5-start-the-1-context-flow-in-automate">5. Start the <a href="https://github.com/gugulet-hu/qself-process/tree/main/automate/1%20Context"><code>1 Context</code></a> flow in Automate<a class="headerlink" href="#5-start-the-1-context-flow-in-automate" title="Permanent link">¶</a></h3>
|
|
<h2 id="toolset">Toolset<a class="headerlink" href="#toolset" title="Permanent link">¶</a></h2>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Component</th>
|
|
<th>Tool</th>
|
|
<th style="text-align: center;">Device</th>
|
|
<th>Description</th>
|
|
<th>Install</th>
|
|
<th>Learn</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Logical</td>
|
|
<td>Python</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>Python is a general purpose programming language used for data analysis and various scripts.</td>
|
|
<td><a href="https://www.python.org/">Python</a></td>
|
|
<td><a href="https://teamtreehouse.com/tracks/beginning-python">TreeHouse</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Automate</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a></td>
|
|
<td>Automate is a graphical code tool to create and manage logic on the mobile device. The project also requires these Tasker plugins: <a href="https://joaoapps.com/">AutoWear, AutoInput</a>, <a href="https://github.com/termux/termux-tasker">Termux:Tasker</a>, <a href="https://docs.sleep.urbandroid.org/services/tasker_automate.html">Sleep as Android</a>, and <a href="https://docs.kustom.rocks/">Kustom</a> (the last two apps come with their respective Automate plugins).</td>
|
|
<td><a href="https://play.google.com/store/apps/details?id=com.llamalab.automate">Google Play</a></td>
|
|
<td><a href="https://llamalab.com/automate/doc/index.html">LlamaLab</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Sensory</td>
|
|
<td>wearOS device</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#watch"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 12a6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6 6 6 0 0 1-6-6m14 0a7.94 7.94 0 0 0-3.05-6.27L16 0H8l-.95 5.73A7.94 7.94 0 0 0 4 12c0 2.54 1.19 4.81 3.05 6.27L8 24h8l.95-5.73A7.96 7.96 0 0 0 20 12"/></svg></span></a></td>
|
|
<td>Any wearOS compatible smartwatch. The TicWatch Pro 5 is recommended for its battery life and general ease of use. It can also be rooted quite easily, unlike Samsung devices.</td>
|
|
<td><a href="https://www.mobvoi.com/us/pages/ticwatchpro5">TicWatch</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Android smartphone</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a></td>
|
|
<td>The smartphone is a fallback option for certain types of sensory input, such as Steps. The Pixel series is a lean option without the junkware from other Android device manufacturers. You can overlay it with <a href="https://grapheneos.org/">Graphene OS</a> to somewhat protect yourself from Google tracking and annoyances.</td>
|
|
<td><a href="https://store.google.com/category/phones">Pixel</a></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Sleep as Android</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a> <a href="../reference/devices/#watch"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 12a6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6 6 6 0 0 1-6-6m14 0a7.94 7.94 0 0 0-3.05-6.27L16 0H8l-.95 5.73A7.94 7.94 0 0 0 4 12c0 2.54 1.19 4.81 3.05 6.27L8 24h8l.95-5.73A7.96 7.96 0 0 0 20 12"/></svg></span></a></td>
|
|
<td>This app is the most reliable sleep tracker for Android. Make sure to turn off the features that send your data to the developer. It is deeply integrated into the way the sleep track flow works.</td>
|
|
<td><a href="https://play.google.com/store/apps/details?id=com.urbandroid.sleep">Google Play</a></td>
|
|
<td><a href="https://www.docs.sleep.urbandroid.org/services/automation.html">Docs</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Input and Display</td>
|
|
<td>HTML</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>HTML is required foundational knowledge to create web screens to accept manual inputs.</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>CSS</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>CSS is required foundational knowledge to create web screens to accept manual inputs. Better yet, Sass to manage the complexity of some of the input screens.</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>JavaScript</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>JavaScript is required foundational knowledge to create web screens to accept manual inputs. Some JS is also required for using advanced Automate techniques.</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>KLWP</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a></td>
|
|
<td>Kustom Live Wallpaper allows you to create interactive home screens and is a pretty powerful logical engine of its own. Most of the data is piped to the home screen dashboard for easy access.</td>
|
|
<td><a href="https://play.google.com/store/apps/details?id=org.kustom.wallpaper&hl=en&gl=US">Google Play</a></td>
|
|
<td><a href="https://docs.kustom.rocks/">Kustom</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>KWCH</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a> <a href="../reference/devices/#watch"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 12a6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6 6 6 0 0 1-6-6m14 0a7.94 7.94 0 0 0-3.05-6.27L16 0H8l-.95 5.73A7.94 7.94 0 0 0 4 12c0 2.54 1.19 4.81 3.05 6.27L8 24h8l.95-5.73A7.96 7.96 0 0 0 20 12"/></svg></span></a></td>
|
|
<td>Kustom Watch Face allows you to create watch faces using the Kustom interface. Like KLWP, it is also capable of doing logical operations.</td>
|
|
<td><a href="https://play.google.com/store/apps/details?id=org.kustom.watchface&hl=en&gl=US">Google Play</a></td>
|
|
<td><a href="https://docs.kustom.rocks/">Kustom</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Analytical</td>
|
|
<td>TBA</td>
|
|
<td style="text-align: center;"></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Storage and Sync</td>
|
|
<td>SQLCipher</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a> <a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>SQLCipher is the secure version of SQLite. The commands and queries are largely the same, except for the parts to access the database.</td>
|
|
<td><a href="https://github.com/sqlcipher/sqlcipher">GitHub</a></td>
|
|
<td><a href="https://www.zetetic.net/sqlcipher/">Zetetic</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>TablePlus</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>GUI tool for relational databases. In this project used to manually edit the database when things go wrong. Also useful to create queries.</td>
|
|
<td><a href="https://tableplus.com/">TablePlus</a></td>
|
|
<td><a href="https://docs.tableplus.com/">Docs</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Termux</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a></td>
|
|
<td>Termux is a terminal for Android that allows you to send commands for many popular application. For this project it is used for git commands and a couple of advanced techniques. The following packages are installed using the <code>pkg install <package></code> command: curl, gh, git, openssh, python, sqlcipher, termux-api, and termux-tools.</td>
|
|
<td><a href="https://github.com/termux/termux-app/releases">GitHub</a></td>
|
|
<td><a href="https://termux.dev/en/">Termux</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>iTerm2</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>iTerm is my preferred console for macOS. See the description for Termux for which CLI tools to install using the command <code>brew install <package></code>. <a href="https://brew.sh/">Homebrew</a> will also need to be installed.</td>
|
|
<td><a href="https://iterm2.com/">iTerm</a></td>
|
|
<td><a href="https://iterm2.com/documentation.html">Docs</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>Syncthing</td>
|
|
<td style="text-align: center;"><a href="../reference/devices/#mobile"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2"/></svg></span></a> <a href="../reference/devices/#laptop"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z"/></svg></span></a></td>
|
|
<td>Syncthing syncs folders and files across devices. Used to keep the project files updated between the laptop and the smartphone.</td>
|
|
<td><a href="https://syncthing.net/downloads/">Syncthing</a></td>
|
|
<td><a href="https://docs.syncthing.net/">Docs</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
<div class="md-copyright__highlight">
|
|
© Gugulethu Hlekwayo. All rights reserved.
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"annotate":null,"base":"../..","features":["navigation.indexes","navigation.instant","navigation.instant.prefetch","navigation.instant.progress","navigation.tracking","search.highlight"],"search":"../../assets/javascripts/workers/search.e2d2d235.min.js","tags":null,"translations":{"clipboard.copied":"Copied to clipboard","clipboard.copy":"Copy to clipboard","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.placeholder":"Type to start searching","search.result.term.missing":"Missing","select.version":"Select version"},"version":null}</script>
|
|
|
|
|
|
<script src="../../assets/javascripts/bundle.8ffeb9c9.min.js"></script>
|
|
|
|
<script src="../../assets/js/loader.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |