<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Symatech Labs</title>
	<atom:link href="https://symatechlabs.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://symatechlabs.com/</link>
	<description>We at Symatech Labs Limited believe Great Software solves Great Problems. Our services range from Desktop Software Development to Mobile Application Development. Over the years we have been able to develop software for reputable organisations and that has never changed.</description>
	<lastBuildDate>Tue, 27 Jan 2026 09:45:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://symatechlabs.com/wp-content/uploads/2023/07/cropped-logo_2401x1067-32x32.png</url>
	<title>Symatech Labs</title>
	<link>https://symatechlabs.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Case Study: FCDC Online Policy Tracker</title>
		<link>https://symatechlabs.com/case-study-fcdc-online-policy-tracker/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Tue, 27 Jan 2026 09:44:11 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=71464</guid>

					<description><![CDATA[<p>The post <a href="https://symatechlabs.com/case-study-fcdc-online-policy-tracker/">Case Study: FCDC Online Policy Tracker</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="71464" class="elementor elementor-71464">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-7e652e7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7e652e7" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1886da8" data-id="1886da8" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-23ef7ae elementor-widget elementor-widget-html" data-id="23ef7ae" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
			<iframe
  src="https://policytracker.fcdc.or.ke/guest/submissions?county_id=2&project_id=&daterange="
  width="100%"
  height="800"
  style="border:1px solid #ccc;"
  title="Policy Tracker"
  loading="lazy"
></iframe>
		</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/case-study-fcdc-online-policy-tracker/">Case Study: FCDC Online Policy Tracker</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Integrate Your QuickBooks Online To KRA eTIMS</title>
		<link>https://symatechlabs.com/integrate-your-quickbooks-online-to-kra-etims/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Wed, 21 May 2025 20:25:44 +0000</pubDate>
				<category><![CDATA[Integrations]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=71260</guid>

					<description><![CDATA[<p>Integrate QuickBooks Online To KRA eTIMS QuickBooks Online is a powerful, cloud-based accounting software built for small businesses, freelancers, and entrepreneurs to easily manage their finances. In light of the requirement by KRA for businesses to be compliant with eTIMS, below are the steps one can follow when integrating the QuickBooks Online account:     Step [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/integrate-your-quickbooks-online-to-kra-etims/">Integrate Your QuickBooks Online To KRA eTIMS</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="71260" class="elementor elementor-71260">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-f94f3e8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="f94f3e8" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-80f5a27" data-id="80f5a27" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-f636311 elementor-widget elementor-widget-text-editor" data-id="f636311" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.14.0 - 26-06-2023 */
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style>				<h2>Integrate QuickBooks Online To KRA eTIMS</h2><p><strong><a href="https://quickbooks.intuit.com/global/oa/online-accounting-software-for-small-business/" target="_blank" rel="noopener">QuickBooks Online</a></strong> is a powerful, cloud-based accounting software built for small businesses, freelancers, and entrepreneurs to easily manage their finances. In light of the requirement by <strong><a href="https://www.kra.go.ke/" target="_blank" rel="noopener">KRA</a></strong> for businesses to be compliant with <strong><a href="https://etims.kra.go.ke/basic/login/indexLogin" target="_blank" rel="noopener">eTIMS</a></strong>, below are the steps one can follow when integrating the QuickBooks Online account:  </p><p> </p><h4><strong>Step One</strong></h4><ul><li>Navigate to the <strong><a href="https://developer.intuit.com/" target="_blank" rel="noopener">Intuit Developer</a></strong> Section.</li><li>Create an <strong><a href="https://developer.intuit.com/workspaces" target="_blank" rel="noopener">App</a>.</strong></li><li>Set up a valid redirect URI in your App <strong>settings</strong>.</li></ul><div> </div><p>We&#8217;ve published a <strong><a href="https://github.com/symatechlabs/QuickBooks-KRA-Agent-Connect" target="_blank" rel="noopener">GitHub</a></strong> repository that includes method definitions for obtaining the <strong>Authorization Code</strong> after your App has been set up. The <em><strong>getAuthCode </strong></em>function will return a URL which you can open using your browser</p>						</div>
				</div>
				<div class="elementor-element elementor-element-e814433 elementor-widget elementor-widget-code-block-for-elementor" data-id="e814433" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='no'><code class='language-javascript'>    def getAuthCode(self):
        params = {
            &quot;client_id&quot; : CLIENT_ID,
            &quot;redirect_uri&quot; : REDIRECT_URI,
            &quot;response_type&quot; : &quot;code&quot;,
            &quot;scope&quot; : &quot;com.intuit.quickbooks.accounting&quot;,
            &quot;state&quot; : &quot;15874&quot;
        }
        return &quot;https://appcenter.intuit.com/connect/oauth2?&quot; + urllib.parse.urlencode(params)
        
        #The method will return a URL i.e http://localhost/quickbooks/?code={Authorization Code}&amp;state={State}&amp;realmId={CompanyID}</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-a851c5b elementor-widget elementor-widget-image" data-id="a851c5b" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.14.0 - 26-06-2023 */
.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}</style>												<img fetchpriority="high" decoding="async" width="852" height="671" src="https://symatechlabs.com/wp-content/uploads/2025/05/Screenshot-from-2025-05-21-20-42-45.png" class="attachment-large size-large wp-image-71261" alt="QuickBooks Online Authorization Screen" />															</div>
				</div>
				<div class="elementor-element elementor-element-90ab0d1 elementor-widget elementor-widget-text-editor" data-id="90ab0d1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Select the <strong>Connect</strong> option, this action will result in the browser redirecting to the redirect link you had set.</p><h4><strong>Step Two</strong></h4><div><p>We would need to exchange the <strong>Authorization Code</strong> for the <strong>Access Token</strong>.</p></div>						</div>
				</div>
				<div class="elementor-element elementor-element-6ab59e2 elementor-widget elementor-widget-code-block-for-elementor" data-id="6ab59e2" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='no'><code class='language-javascript'>    def getTokens(self):
        token_url = OAUTH_URL+&quot;/oauth2/v1/tokens/bearer&quot;
        auth = base64.b64encode(f&quot;{CLIENT_ID}:{CLIENT_SECRET}&quot;.encode()).decode()

        headers = {
            &quot;Authorization&quot;: f&quot;Basic {auth}&quot;,
            &quot;Content-Type&quot;: CONTENT_TYPE_FORM_URL_ENCODED
        }

        data = {
            &quot;grant_type&quot;: &quot;authorization_code&quot;,
            &quot;code&quot;: AUTHORIZATION_CODE,
            &quot;redirect_uri&quot;: REDIRECT_URI
        }

        response = requests.post(token_url, headers=headers, data=data)
        return response.json()</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-a04a4ab elementor-widget elementor-widget-text-editor" data-id="a04a4ab" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Step Three</strong></h4><p>With the <strong>Access Token</strong>, we can then proceed to getting the sales transactions.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-832cd8c elementor-widget elementor-widget-code-block-for-elementor" data-id="832cd8c" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>    def getSalesReceipts(self, accessToken, companyID, maxResults):
        url = f&quot;{SANDBOX_URL}company/{companyID}/query&quot;
        headers = {
            &quot;Authorization&quot;: f&quot;Bearer {accessToken}&quot;,
            &quot;Accept&quot;: &quot;application/json&quot;,
            &quot;Content-Type&quot;: CONTENT_TYPE_TEXT
        }

        query = &quot;SELECT * FROM SalesReceipt ORDERBY TxnDate DESC MAXRESULTS &quot;+maxResults
        response = requests.get(url, headers=headers, params={&quot;query&quot;: query})
        return response.json()</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-28e0d96 elementor-widget elementor-widget-text-editor" data-id="28e0d96" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Step Four</strong></h4><p>The result of <em><strong>Step Three</strong></em> above can then be submitted to our KRA Agent App which would then handle the submission to <strong><a href="https://etims.kra.go.ke/basic/login/indexLogin" target="_blank" rel="noopener">KRA eTIMS.</a></strong></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-6d1399a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6d1399a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3b66269" data-id="3b66269" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d3d295a elementor-widget elementor-widget-text-editor" data-id="d3d295a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Github</strong></h4><p>Find the full codebase on <a href="https://github.com/symatechlabs/QuickBooks-KRA-Agent-Connect" target="_blank" rel="noopener">Github</a></p><p> </p><p><em><a href="https://bit.ly/3YsPhmL" target="_blank" rel="noopener">Symatech Labs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/integrate-your-quickbooks-online-to-kra-etims/">Integrate Your QuickBooks Online To KRA eTIMS</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Integrate KRA eTIMS API With Your Point Of Sale Or System</title>
		<link>https://symatechlabs.com/how-to-integrate-kra-etims-api-with-your-point-of-sale-or-system/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Thu, 08 May 2025 18:35:43 +0000</pubDate>
				<category><![CDATA[Integrations]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=71179</guid>

					<description><![CDATA[<p>  How To Integrate KRA eTIMS API With Your Point Of Sale Or System eTIMS is a software solution by KRA that offers taxpayers a simple, convenient, and flexible way to manage electronic invoicing. It is accessible across a range of computing devices, ensuring ease of use and broad compatibility. Businesses can now generate and [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/how-to-integrate-kra-etims-api-with-your-point-of-sale-or-system/">How to Integrate KRA eTIMS API With Your Point Of Sale Or System</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="71179" class="elementor elementor-71179">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-9502b8a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="9502b8a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3839508" data-id="3839508" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-7bcf81a elementor-widget elementor-widget-text-editor" data-id="7bcf81a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2> </h2><h2><span data-preserver-spaces="true">How To Integrate KRA eTIMS API </span><span data-preserver-spaces="true">With</span><span data-preserver-spaces="true"> Your Point </span><span data-preserver-spaces="true">Of</span><span data-preserver-spaces="true"> Sale </span><span data-preserver-spaces="true">Or</span><span data-preserver-spaces="true"> System</span></h2><p><strong><a class="editor-rtfLink" href="https://etims.kra.go.ke/basic/login/indexLogin" target="_blank" rel="noopener"><span data-preserver-spaces="true">eTIMS</span></a></strong><span data-preserver-spaces="true"> is a software solution by </span><strong><a class="editor-rtfLink" href="https://www.kra.go.ke/" target="_blank" rel="noopener"><span data-preserver-spaces="true">KRA</span></a></strong><span data-preserver-spaces="true"> that offers taxpayers a simple, convenient, and flexible way to manage electronic invoicing. It is accessible across </span><span data-preserver-spaces="true">a range of</span><span data-preserver-spaces="true"> computing devices, ensuring ease of use and broad compatibility. Businesses can now generate and submit invoices using the following options:</span></p><p> </p><ul><li><span data-preserver-spaces="true">Online Portal – a web-based platform for invoicing accessible via </span><a class="editor-rtfLink" href="https://etims.kra.go.ke/basic/login/indexLogin" target="_blank" rel="noopener"><span data-preserver-spaces="true">etims.kra.go.ke</span></a></li><li><span data-preserver-spaces="true">eTIMS Client – a downloadable software that supports multiple branches and cashier tills/pay points. The software can be configured for both Windows and </span><span data-preserver-spaces="true">android</span><span data-preserver-spaces="true"> devices, </span><span data-preserver-spaces="true">i.e.</span> <span data-preserver-spaces="true">Windows based</span><span data-preserver-spaces="true"> computers &amp; laptops, </span><span data-preserver-spaces="true">android</span> <span data-preserver-spaces="true">smart phones</span><span data-preserver-spaces="true">, tablets &amp; Personal Digital Assistant (PDA) </span><span data-preserver-spaces="true">devices</span></li><li><span data-preserver-spaces="true">eTIMS Lite (Web) – a web-based solution accessible through eCitizen.</span></li><li><span data-preserver-spaces="true">eTIMS Lite (USSD) – accessed through the short code </span><strong><em><span data-preserver-spaces="true">*222#</span></em></strong><span data-preserver-spaces="true">. This solution is for individuals and sole proprietors.</span></li><li><span data-preserver-spaces="true">eTIMS Lite (Mobile app) – accessible on </span><span data-preserver-spaces="true">Play</span><span data-preserver-spaces="true"> Store and </span><span data-preserver-spaces="true">Apple</span><span data-preserver-spaces="true"> Store.</span></li><li><span data-preserver-spaces="true">eTIMS System to System Integration – This solution is tailored for businesses with an invoicing system and would like to integrate with eTIMS </span><span data-preserver-spaces="true">i.e.</span><span data-preserver-spaces="true">, Virtual Sales Control Unit (VSCU) and Online Sales Control Unit (OSCU).</span></li><li><span data-preserver-spaces="true">Reverse Invoicing and Buyer Initiated Solution – both solutions enable the buyer to generate a tax invoice on behalf of a seller.</span></li></ul><p> </p><p><span data-preserver-spaces="true">In this case, we will focus on the </span><strong><span data-preserver-spaces="true">OSCU</span></strong><em><span data-preserver-spaces="true">(Online Sales Control Unit) </span></em><span data-preserver-spaces="true">and </span><strong><span data-preserver-spaces="true">VSCU</span></strong><em><span data-preserver-spaces="true">(Virtual Sales Control Unit)</span></em><span data-preserver-spaces="true"> and how businesses can integrate their point of sale or system. </span><strong><a class="editor-rtfLink" href="https://www.kra.go.ke/" target="_blank" rel="noopener"><span data-preserver-spaces="true">KRA</span></a></strong><span data-preserver-spaces="true"> advises </span><span data-preserver-spaces="true">businesses</span><span data-preserver-spaces="true"> that have a lot of transactions to consider using </span><strong><span data-preserver-spaces="true">OSCU</span></strong><span data-preserver-spaces="true"> or the </span><strong><span data-preserver-spaces="true">VSCU. </span></strong></p><p><strong><span data-preserver-spaces="true">OSCU</span></strong><span data-preserver-spaces="true"> is preferred for businesses that primarily have their operations done in an online setting, while </span><strong><span data-preserver-spaces="true">VSCU</span></strong><span data-preserver-spaces="true"> is good for </span><span data-preserver-spaces="true">businesses</span><span data-preserver-spaces="true"> that are not always online.</span></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-3b214f7 elementor-arrows-position-outside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel" data-id="3b214f7" data-element_type="widget" data-settings="{&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500}" data-widget_type="image-carousel.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.14.0 - 26-06-2023 */
.elementor-widget-image-carousel .swiper,.elementor-widget-image-carousel .swiper-container{position:static}.elementor-widget-image-carousel .swiper-container .swiper-slide figure,.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-container-initialized):not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}</style>		<div class="elementor-image-carousel-wrapper swiper-container" dir="ltr">
			<div class="elementor-image-carousel swiper-wrapper" aria-live="off">
								<div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="1 of 3"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2025/05/Screenshot-from-2025-05-10-13-52-53.png" alt="KRA eTIMS Login" /></figure></div><div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="2 of 3"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2025/05/Screenshot-from-2025-05-10-13-57-49.png" alt="KRA eTIMS Sign Up" /></figure></div><div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="3 of 3"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2025/05/Screenshot-from-2025-05-10-13-58-57.png" alt="KRA eTIMS Service Request" /></figure></div>			</div>
												<div class="elementor-swiper-button elementor-swiper-button-prev" role="button" tabindex="0">
						<i aria-hidden="true" class="eicon-chevron-left"></i>					</div>
					<div class="elementor-swiper-button elementor-swiper-button-next" role="button" tabindex="0">
						<i aria-hidden="true" class="eicon-chevron-right"></i>					</div>
				
									<div class="swiper-pagination"></div>
									</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-eb0358e elementor-widget elementor-widget-text-editor" data-id="eb0358e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3><span data-preserver-spaces="true">Registering for OSCU and VSCU</span></h3><p> </p><p><span data-preserver-spaces="true">The two implementations<em>(OSCU and VSCU)</em> follow a similar signup process:</span></p><p> </p><ol><li><span data-preserver-spaces="true">Visit the </span><strong><a class="editor-rtfLink" href="https://etims.kra.go.ke/basic/login/indexLogin" target="_blank" rel="noopener"><span data-preserver-spaces="true">eTIMS</span></a></strong><span data-preserver-spaces="true"> portal.</span></li><li><span data-preserver-spaces="true">Select the Sign Up option.</span></li><li><span data-preserver-spaces="true">Enter the </span><span data-preserver-spaces="true">PIN number</span><span data-preserver-spaces="true"> of your business and click the verify button. This will auto-populate the other input fields with the details of your business.</span></li><li><span data-preserver-spaces="true">The Send OTP button, when clicked, would send a one-time password to the registered phone number. There are cases where you might want to change the phone number, you can do this by going to </span><strong><a class="editor-rtfLink" href="https://itax.kra.go.ke/KRA-Portal/" target="_blank" rel="noopener"><span data-preserver-spaces="true">iTax</span></a></strong><span data-preserver-spaces="true"> and updating it there. Consider contacting </span><strong><a class="editor-rtfLink" href="mailto:timsupport@kra.go.ke" target="_blank" rel="noopener"><span data-preserver-spaces="true">timsupport@kra.go.ke</span></a><span data-preserver-spaces="true"> </span></strong><span data-preserver-spaces="true">for any incidental technical issue.</span></li><li><span data-preserver-spaces="true">Once you have been able to </span><span data-preserver-spaces="true">Sign Up</span><span data-preserver-spaces="true">, you will </span><span data-preserver-spaces="true">then</span><span data-preserver-spaces="true"> log in and choose the type of eTIMS solution you would want(OSCU or VSCU).</span> <span data-preserver-spaces="true">This will be done by selecting the </span><strong><span data-preserver-spaces="true">Service Request</span></strong><span data-preserver-spaces="true"> tab</span><span data-preserver-spaces="true">, </span><span data-preserver-spaces="true">then </span><strong><span data-preserver-spaces="true">eTIMS.</span></strong></li><li><span data-preserver-spaces="true">You will be required to submit details of the directors and confirm the same using the personal </span><strong><span data-preserver-spaces="true">PIN</span></strong> <span data-preserver-spaces="true">of the directors</span><span data-preserver-spaces="true">, together with their corresponding mobile phone numbers.</span><span data-preserver-spaces="true"> An </span><strong><span data-preserver-spaces="true">OTP</span></strong><span data-preserver-spaces="true"> will be sent to the directors to confirm this action.</span></li><li><span data-preserver-spaces="true">In the Service Information section, you will be presented with the </span><strong><span data-preserver-spaces="true">eTIMS</span></strong><span data-preserver-spaces="true"> type options: </span><strong><em><span data-preserver-spaces="true">eTIMS Client, Online, VSCU </span><span data-preserver-spaces="true">and</span><span data-preserver-spaces="true"> OSCU</span></em></strong><span data-preserver-spaces="true">. Select the preferred option and proceed.</span></li></ol><h3><span data-preserver-spaces="true"> </span></h3><h3><span data-preserver-spaces="true">Integrating Into Your System</span></h3><p><span data-preserver-spaces="true">Depending on the eTIMS type selected above, we can then </span><span data-preserver-spaces="true">proceed to</span><span data-preserver-spaces="true"> integrate your point of sale or system to KRA. </span><strong><span data-preserver-spaces="true">Symatech Labs&#8217;s</span></strong><span data-preserver-spaces="true"> implementation covers all the options </span><span data-preserver-spaces="true">above.</span></p><p><span data-preserver-spaces="true">Recently the government placed a <strong><a href="https://kenyanwallstreet.com/taxman-rolls-out-etims-for-fuel-stations-kra-sets-june-30-compliance-deadline/" target="_blank" rel="noopener">notice</a></strong> on all petrol stations to integrate eTIMS by <em><strong>June 30th 2025</strong></em> as part of their compliance requirement. </span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-52f0be0 elementor-widget elementor-widget-text-editor" data-id="52f0be0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><p><em><a href="https://symatechlabs.com/contact-us/" rel="noreferrer noopener">Symatech L</a><a href="https://symatechlabs.com/" target="_blank" rel="noreferrer noopener">abs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/how-to-integrate-kra-etims-api-with-your-point-of-sale-or-system/">How to Integrate KRA eTIMS API With Your Point Of Sale Or System</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting up and using DeepSeek on your local computer</title>
		<link>https://symatechlabs.com/setting-up-and-using-deepseek-on-your-local-computer/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Mon, 27 Jan 2025 15:10:46 +0000</pubDate>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70960</guid>

					<description><![CDATA[<p>Setting up and using DeepSeek on your local computer. DeepSeek is a Chinese AI startup that has recently gained some attention for developing advanced AI models that rival those of leading companies like OpenAI and Google in a number of benchmarks as illustrated below. DeepSeek Release Paper DeepSeek has also open-sourced DeepSeek-R1-Zero, DeepSeek-R1, and six [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/setting-up-and-using-deepseek-on-your-local-computer/">Setting up and using DeepSeek on your local computer</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70960" class="elementor elementor-70960">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-7862851 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7862851" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a94a258" data-id="a94a258" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-1f7ef39 elementor-widget elementor-widget-text-editor" data-id="1f7ef39" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Setting up and using DeepSeek on your local computer.</h2><p><a href="https://www.deepseek.com/" target="_blank" rel="noopener">DeepSeek</a> is a Chinese AI startup that has recently gained some attention for developing advanced AI models that rival those of leading companies like OpenAI and Google in a number of benchmarks as illustrated below. </p>						</div>
				</div>
				<div class="elementor-element elementor-element-02b778a elementor-widget elementor-widget-image" data-id="02b778a" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
											<a href="https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf">
							<img decoding="async" width="1024" height="607" src="https://symatechlabs.com/wp-content/uploads/2025/01/benchmark.jpg" class="attachment-large size-large wp-image-70962" alt="DeepSeek benchmark" />								</a>
											<figcaption class="widget-image-caption wp-caption-text">DeepSeek Release Paper</figcaption>
										</figure>
									</div>
				</div>
				<div class="elementor-element elementor-element-277c66d elementor-widget elementor-widget-text-editor" data-id="277c66d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>DeepSeek has also open-sourced <em><strong>DeepSeek-R1-Zero, DeepSeek-R1</strong></em>, and six dense models distilled from <em><strong>DeepSeek-R1</strong></em> based on <em><strong>Llama</strong></em> and <em><strong>Qwen</strong></em>. An easier way of setting up DeepSeek on your local computer is using <a href="https://github.com/open-webui/open-webui" target="_blank" rel="noopener">Open WebUI</a> and <a href="https://ollama.com/" target="_blank" rel="noopener">Ollama</a> </p><h3> </h3><h3>Step One</h3><p>Go to <a href="https://ollama.com/" target="_blank" rel="noopener">Ollama</a> and select the correct build depending on your operating system. In our case we selected Linux and installed. You might need to install <em><strong>curl</strong></em>  just in case you did not have it set up already.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d0d3bf5 elementor-widget elementor-widget-image" data-id="d0d3bf5" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img decoding="async" width="497" height="411" src="https://symatechlabs.com/wp-content/uploads/2025/01/Screenshot-from-2025-01-27-17-10-57.png" class="attachment-large size-large wp-image-70966" alt="Ollama select screen" />															</div>
				</div>
				<div class="elementor-element elementor-element-39aa25b elementor-widget elementor-widget-text-editor" data-id="39aa25b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Run the following commmand on your Terminal: </p><p><strong>curl -fsSL https://ollama.com/install.sh | sh</strong></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-3c10ef7 elementor-widget elementor-widget-image" data-id="3c10ef7" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="594" height="91" src="https://symatechlabs.com/wp-content/uploads/2025/01/Screenshot-from-2025-01-27-17-16-02.png" class="attachment-large size-large wp-image-70967" alt="Terminal window" />															</div>
				</div>
				<div class="elementor-element elementor-element-3187389 elementor-widget elementor-widget-text-editor" data-id="3187389" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> </p><p><strong>On Windows</strong></p><p>Click on the <a href="https://ollama.com/download/windows" target="_blank" rel="noopener">Windows</a> option and download the set up</p><p> </p><p><strong>On Mac</strong></p><p>Click on the <a href="https://ollama.com/download/mac" target="_blank" rel="noopener">Mac</a> option and download and set up.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c0800ee elementor-widget elementor-widget-image" data-id="c0800ee" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="700" height="369" src="https://symatechlabs.com/wp-content/uploads/2025/01/Ollama_Mac-1.png" class="attachment-large size-large wp-image-70995" alt="Ollama Mac" />															</div>
				</div>
				<div class="elementor-element elementor-element-5721f05 elementor-widget elementor-widget-text-editor" data-id="5721f05" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> </p><p>Alternatively, if you have <a href="https://brew.sh/" target="_blank" rel="noopener">brew</a> set up. Run the following command on your Terminal window:</p><p><strong>brew install ollama</strong></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-6966efd elementor-widget elementor-widget-text-editor" data-id="6966efd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3>Step Two</h3><p>Go to <a href="https://ollama.com/search" target="_blank" rel="noopener">Ollama models</a> and select model that would work for you. In our case we selected the <em><strong>deepseek-r1:1.5b </strong></em>but feel free to pick any of the models depending on the kind of computer you will be using.</p><p>Go to the Terminal window and type <em><strong>ollama run deepseek-r1:1.5b</strong></em></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-4847c8f elementor-widget elementor-widget-image" data-id="4847c8f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="84" src="https://symatechlabs.com/wp-content/uploads/2025/01/Screenshot-from-2025-01-27-17-26-03.png" class="attachment-large size-large wp-image-70968" alt="Terminal" />															</div>
				</div>
				<div class="elementor-element elementor-element-2637fc1 elementor-widget elementor-widget-text-editor" data-id="2637fc1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> </p><p><strong>On Windows</strong></p><p>Open Windows PowerShell and run the same command <em><strong>ollama run deepseek-r1:1.5b</strong></em></p>						</div>
				</div>
				<div class="elementor-element elementor-element-6915926 elementor-widget elementor-widget-image" data-id="6915926" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="230" src="https://symatechlabs.com/wp-content/uploads/2025/01/PowerSheel_Ollama.jpeg" class="attachment-large size-large wp-image-70993" alt="Windows PowerShell Ollama" />															</div>
				</div>
				<div class="elementor-element elementor-element-da59843 elementor-widget elementor-widget-text-editor" data-id="da59843" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> </p><p><strong>On Mac</strong></p><p>Open Terminal and run the same command <em><strong>ollama run deepseek-r1:1.5b</strong></em></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-56a0c32 elementor-widget elementor-widget-image" data-id="56a0c32" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="750" height="468" src="https://symatechlabs.com/wp-content/uploads/2025/01/Ollama_Mac_Terminal.png" class="attachment-large size-large wp-image-70996" alt="Ollama Mac Terminal" />															</div>
				</div>
				<div class="elementor-element elementor-element-cc5a624 elementor-widget elementor-widget-text-editor" data-id="cc5a624" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p> </p><p><strong>DeepSeek installed, without browser interface</strong></p><p>At this point you can start prompting DeepSeek on the Terminal. If you prefer to use a browser window instead, please proceed to <em>Step Three</em> below.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-31c3840 elementor-widget elementor-widget-image" data-id="31c3840" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="967" height="402" src="https://symatechlabs.com/wp-content/uploads/2025/01/Screenshot-from-2025-01-29-15-00-27.png" class="attachment-large size-large wp-image-71001" alt="Using DeepSeek in terminal window" />															</div>
				</div>
				<div class="elementor-element elementor-element-8df20db elementor-widget elementor-widget-text-editor" data-id="8df20db" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3> </h3><h3>Step Three</h3><p>We will need to set up the web user interface using <a href="https://github.com/open-webui/open-webui" target="_blank" rel="noopener">Open WebUI.</a> To do so, ensure you have <a href="https://www.docker.com/" target="_blank" rel="noopener">Docker</a> set up and running. Type the following command on your terminal window.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-e6fba53 elementor-widget elementor-widget-code-block-for-elementor" data-id="e6fba53" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-61be78d elementor-widget elementor-widget-text-editor" data-id="61be78d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3> </h3><h3>Step Four</h3><p>Open <em><strong><a href="http://localhost:8080/" target="_blank" rel="noopener">http://localhost:8080/</a> </strong></em>on your browser and start making those prompts.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-7b502ce elementor-widget elementor-widget-image" data-id="7b502ce" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="657" src="https://symatechlabs.com/wp-content/uploads/2025/01/Screenshot-from-2025-01-27-17-45-46.png" class="attachment-large size-large wp-image-70970" alt="Open WebUI" />															</div>
				</div>
				<div class="elementor-element elementor-element-a984578 elementor-widget elementor-widget-text-editor" data-id="a984578" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3>YouTube Video</h3><p>Also find the <a href="https://www.youtube.com/watch?v=bPFTaepR5Is" target="_blank" rel="noopener">YouTube</a> video below that demonstrates what has been explained above..</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d344b50 elementor-widget elementor-widget-video" data-id="d344b50" data-element_type="widget" data-settings="{&quot;youtube_url&quot;:&quot;https:\/\/www.youtube.com\/watch?v=bPFTaepR5Is&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}" data-widget_type="video.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.14.0 - 26-06-2023 */
.elementor-widget-video .elementor-widget-container{overflow:hidden;transform:translateZ(0)}.elementor-widget-video .elementor-wrapper{aspect-ratio:var(--video-aspect-ratio)}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{height:100%;width:100%;display:flex;border:none;background-color:#000}@supports not (aspect-ratio:1/1){.elementor-widget-video .elementor-wrapper{position:relative;overflow:hidden;height:0;padding-bottom:calc(100% / var(--video-aspect-ratio))}.elementor-widget-video .elementor-wrapper iframe,.elementor-widget-video .elementor-wrapper video{position:absolute;top:0;right:0;bottom:0;left:0}}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}.e-con-inner>.elementor-widget-video,.e-con>.elementor-widget-video{width:var(--container-widget-width);--flex-grow:var(--container-widget-flex-grow)}</style>		<div class="elementor-wrapper elementor-open-inline">
			<div class="elementor-video"></div>		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-0713d6a elementor-widget elementor-widget-text-editor" data-id="0713d6a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h3>Conclusion</h3><p>It is our hope the above guidelines were helpful to your DeepSeek journey. Don&#8217;t hesitate to send us a Chat or shoot us an email in any case you might be having queries. Additionally, we’d love to hear your feedback. Please take a moment to leave us a <a href="https://g.page/r/CUsQK81NKo5uEAE/review" target="_blank" rel="noopener">review</a> on <a href="https://g.page/r/CUsQK81NKo5uEAE/review" target="_blank" rel="noopener">Google</a>—it really helps us grow!</p><p> </p><p> </p><p><a href="https://bit.ly/3YsPhmL" target="_blank" rel="noopener"><em>Symatech Labs</em></a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-073503b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="073503b" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d8c9cf0" data-id="d8c9cf0" data-element_type="column">
			<div class="elementor-widget-wrap">
									</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/setting-up-and-using-deepseek-on-your-local-computer/">Setting up and using DeepSeek on your local computer</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How To Get Details Of Your Android Device Using Kotlin</title>
		<link>https://symatechlabs.com/how-to-get-details-of-your-android-device-using-kotlin/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Sun, 10 Nov 2024 14:44:13 +0000</pubDate>
				<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70780</guid>

					<description><![CDATA[<p>How to Get details of your Android device using kotlin The Android SDK allows application developers to retrieve information i.e brand of the phone, device name among other details. Below is an example of how this can be done. Build Class import android.os.Build This class provides a number of static fields and methods which return [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/how-to-get-details-of-your-android-device-using-kotlin/">How To Get Details Of Your Android Device Using Kotlin</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70780" class="elementor elementor-70780">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-736b005 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="736b005" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-aa3731c" data-id="aa3731c" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-11a1879 elementor-widget elementor-widget-text-editor" data-id="11a1879" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>How to Get details of your Android device using kotlin </h2><p>The Android <a href="https://symatechlabs.com/sdk-and-apis-what-is-the-difference/">SDK</a> allows application developers to retrieve information i.e device model, device name among other details.</p><h4> </h4><h4><strong>Build Class</strong></h4><div><pre>import android.os.Build</pre></div><p>This class provides a number of static fields and methods which return details of the device. Some of the fields include:</p><ul><li><strong>Build.MODEL</strong>: <em>Returns the name of the device.</em></li><li><strong>Build.VERSION.RELEASE</strong>: <em>Returns the current version of the Android operating system</em></li><li><strong>Build.MANUFACTURER</strong>: <em>Returns the name of the manufacturer</em></li><li><strong>Build.DISPLAY</strong>: <em>Returns information about the software version and build type installed on the device.</em></li><li><strong>Build.FINGERPRINT</strong>: <em>Returns a concatenated string containing information about the manufacturer, device model, Android version, and build details.</em></li></ul><div><i> </i></div><div><h4><strong>Android Permissions</strong></h4><p>It is also possible to get the Wi-Fi/Cellular strength when connected to a network. This would require requesting permissions from the user. </p></div>						</div>
				</div>
				<div class="elementor-element elementor-element-09dab27 elementor-widget elementor-widget-code-block-for-elementor" data-id="09dab27" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='no'><code class='language-javascript'>&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.READ_PHONE_STATE&quot; /&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_WIFI_STATE&quot;/&gt;
&lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot;/&gt;


/* Android requires runtime permission requests starting from Android 6.0 or API level 23 */

   fun requestPermissions(fragment: Fragment) {

        val requestMultiplePermissionLauncher =
            fragment.registerForActivityResult(
                ActivityResultContracts.RequestMultiplePermissions()
            ) { result -&gt;
                for (r in result) {
                    Log.d(Constants.LOG_TAG, r.key + &quot; : &quot; + r.value.toString())
                }

            }
        requestMultiplePermissionLauncher.launch(
            arrayOf(
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.LOCATION_HARDWARE,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.READ_PHONE_STATE,
                Manifest.permission.MODIFY_PHONE_STATE,
                Manifest.permission.ACCESS_NOTIFICATION_POLICY,
                Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE,
                Manifest.permission.ACCESS_WIFI_STATE,
                Manifest.permission.CHANGE_NETWORK_STATE
            )
        )
    }
</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-b1b58a6 elementor-widget elementor-widget-text-editor" data-id="b1b58a6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Code</strong></h4><div><p>For simplicity, we have organised the repository in a manner that eliminates most of the boilerplate code. </p></div>						</div>
				</div>
				<div class="elementor-element elementor-element-6de942c elementor-widget elementor-widget-code-block-for-elementor" data-id="6de942c" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='no'><code class='language-javascript'>interface DeviceInfoInterface {

    fun getBatteryStatus(): String;
    fun getBatteryPercentage(): String
    fun getBatteryPercentage_(): Int
    fun getTotalStorage(): String;
    fun getFreeStorage(): String;
    fun getStoragePercentage(): Double;
    fun getTotalMemoryUsage(): String;
    fun getFreeMemoryUsage(): String;
    fun getMemoryPercentage(): Double;
    fun getNetworkInfo(): String;
    fun getAppVersion(): String;
    fun getDataSyncStatus(): String;
    fun getDeviceHealth(): String;
    fun getUserActivity(): String;
    fun getDeviceIdentity(): String;
    fun getWifiSignalStrength(): String
    fun getCellularSignalStrength(callback: (String) -&gt; Unit);
    fun getNetworkType(): String;
    fun getUptime(): String;
    fun startNetworkCallback(onNetworkChange: (String) -&gt; Unit);
    fun stopNetworkCallback();
    fun deviceDetails(deviceDetailsBinding: DeviceDetailsBinding);
    fun getDeviceId(): String

}</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-f29d4fd elementor-widget elementor-widget-text-editor" data-id="f29d4fd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Screens</strong></h4><p> </p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-c51b3fc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c51b3fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b33753e" data-id="b33753e" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-2256a63 elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel" data-id="2256a63" data-element_type="widget" data-settings="{&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500}" data-widget_type="image-carousel.default">
				<div class="elementor-widget-container">
					<div class="elementor-image-carousel-wrapper swiper-container" dir="ltr">
			<div class="elementor-image-carousel swiper-wrapper" aria-live="off">
								<div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="1 of 4"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2024/11/1.png" alt="1" /></figure></div><div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="2 of 4"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2024/11/2.png" alt="2" /></figure></div><div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="3 of 4"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2024/11/3.png" alt="3" /></figure></div><div class="swiper-slide" role="group" aria-roledescription="slide" aria-label="4 of 4"><figure class="swiper-slide-inner"><img decoding="async" class="swiper-slide-image" src="https://symatechlabs.com/wp-content/uploads/2024/11/4.png" alt="4" /></figure></div>			</div>
												<div class="elementor-swiper-button elementor-swiper-button-prev" role="button" tabindex="0">
						<i aria-hidden="true" class="eicon-chevron-left"></i>					</div>
					<div class="elementor-swiper-button elementor-swiper-button-next" role="button" tabindex="0">
						<i aria-hidden="true" class="eicon-chevron-right"></i>					</div>
				
									<div class="swiper-pagination"></div>
									</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1ed2218 elementor-widget elementor-widget-text-editor" data-id="1ed2218" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Github</strong></h4><p>Find the full codebase on <a href="https://github.com/brianosoro/DeviceDetails" target="_blank" rel="noopener">Github</a></p><p> </p><p><em><a href="https://bit.ly/3YsPhmL" target="_blank" rel="noopener">Symatech Labs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/how-to-get-details-of-your-android-device-using-kotlin/">How To Get Details Of Your Android Device Using Kotlin</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Create An Android Mobile App Using Kotlin That Consumes An API From A Drupal Instance</title>
		<link>https://symatechlabs.com/create-an-android-mobile-app-using-kotlin-that-consumes-an-api-from-a-drupal-instance/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 18:29:04 +0000</pubDate>
				<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70746</guid>

					<description><![CDATA[<p>Create An Android Mobile App Using Kotlin That Consumes An API From A Drupal Instance Drupal is a popular content management system(CMS) written using PHP and is used to build websites and web applications. Popular websites that use Drupal include: Nokia, Prime Minister Of Australia and Tesla. Below are the steps one can use to extend Drupal to the Android [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/create-an-android-mobile-app-using-kotlin-that-consumes-an-api-from-a-drupal-instance/">Create An Android Mobile App Using Kotlin That Consumes An API From A Drupal Instance</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70746" class="elementor elementor-70746">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-574623a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="574623a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5a38970" data-id="5a38970" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-e8098bc elementor-widget elementor-widget-text-editor" data-id="e8098bc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Create An Android Mobile App Using Kotlin That Consumes An API From A Drupal Instance</h2><p> </p><p><a href="https://www.drupal.org/">Drupal</a> is a content management system<em>(CMS)</em> written using <a href="https://www.php.net/" target="_blank" rel="noopener">PHP</a> and is used to build websites and web applications. Popular websites that use Drupal include: <a href="https://www.nokia.com/" target="_blank" rel="noopener">Nokia</a>, <a href="https://www.pm.gov.au/" target="_blank" rel="noopener">Prime Minister Of Australia</a> and <a href="https://www.tesla.com/" target="_blank" rel="noopener">Tesla</a>. Below are the steps one can use to extend Drupal to the Android client. The assumption is that the Drupal instance has been installed and is running.  </p><p> </p><h4><strong> </strong><strong>Drupal</strong></h4><ol><li>Install and enable the <a style="font-size: 1.125em; letter-spacing: 0.16px;" href="https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module" target="_blank" rel="noopener">JSON:API</a> module on the Drupal instance</li><li>Run the endpoints using Postman to simulate how the requests will be made by the Android client. </li></ol><p> </p><p><strong>Drupal URL structure</strong></p><p>In the <a href="https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module" target="_blank" rel="noopener">JSON:API</a>, each resource has a globally unique type property. For example:</p><ul><li>node&#8211;article  <em><strong>for articles</strong></em></li><li>user&#8211;user <em><strong>for users</strong></em></li><li>node&#8211;pages <em><strong>for pages</strong></em></li></ul><p> </p><p>When running the Postman requests, represent the URL as follows. Replace the BASE_URL with your domain or IP Address.</p><ul><li>https://BASE_URL/jsonapi/node/article    <em>get articles</em></li><li>https://BASE_URL/jsonapi/node/page     <em>get pages</em></li></ul><div><i> </i></div>						</div>
				</div>
				<div class="elementor-element elementor-element-43b5ec4 elementor-widget elementor-widget-image" data-id="43b5ec4" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="614" src="https://symatechlabs.com/wp-content/uploads/2024/08/Screenshot-from-2024-08-01-20-39-54.png" class="attachment-large size-large wp-image-70751" alt="" />															</div>
				</div>
				<div class="elementor-element elementor-element-4d6e779 elementor-widget elementor-widget-image" data-id="4d6e779" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="614" src="https://symatechlabs.com/wp-content/uploads/2024/08/Screenshot-from-2024-08-01-20-41-03-1.png" class="attachment-large size-large wp-image-70750" alt="" />															</div>
				</div>
				<div class="elementor-element elementor-element-0192030 elementor-widget elementor-widget-text-editor" data-id="0192030" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Kotlin Android Client</strong></h4><p>The <a href="https://bit.ly/3LQVr8s" target="_blank" rel="noopener">Android App</a> makes HTTP requests to the Drupal instance. Below are the steps used when building the App.</p><p>1. Open Android Studio and create a project</p><p>2. Add the necessary dependencies </p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-eaf4088 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="eaf4088" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-452f28b" data-id="452f28b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-3110ddd elementor-widget elementor-widget-code-block-for-elementor" data-id="3110ddd" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>dependencies {

    implementation(&quot;androidx.core:core-ktx:1.13.1&quot;)
    implementation(&quot;androidx.appcompat:appcompat:1.7.0&quot;)
    implementation(&quot;com.google.android.material:material:1.12.0&quot;)
    implementation(&quot;androidx.swiperefreshlayout:swiperefreshlayout:1.1.0&quot;)
    implementation(&quot;androidx.room:room-common:2.6.1&quot;)
    testImplementation(&quot;junit:junit:4.13.2&quot;)
    androidTestImplementation(&quot;androidx.test.ext:junit:1.2.1&quot;)
    androidTestImplementation(&quot;androidx.test.espresso:espresso-core:3.6.1&quot;)
    implementation(&quot;androidx.hilt:hilt-work:1.2.0&quot;)
    implementation(&quot;androidx.work:work-runtime-ktx:2.9.0&quot;)
    kapt(&quot;androidx.hilt:hilt-compiler:1.2.0&quot;)
    implementation(&quot;com.google.dagger:hilt-android:$hilt&quot;)
    kapt(&quot;com.google.dagger:hilt-compiler:$hilt&quot;)
    implementation(&quot;androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.3&quot;)
    implementation(&quot;com.squareup.retrofit2:retrofit:$retrofit&quot;)
    implementation(&quot;com.squareup.retrofit2:converter-moshi:2.9.0&quot;)
    implementation (&quot;com.squareup.okhttp3:okhttp:4.9.3&quot;)
    implementation(&quot;de.hdodenhof:circleimageview:3.1.0&quot;)
    implementation(&quot;androidx.activity:activity-ktx:1.9.0&quot;)
}</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-415d54a elementor-widget elementor-widget-text-editor" data-id="415d54a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>3. Add the Data Classes corresponding to the JSON structure of your Drupal API responses.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-833bee4 elementor-widget elementor-widget-code-block-for-elementor" data-id="833bee4" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>data class ArticleResponse(
    @field:Json(name = &quot;data&quot;) val data: List&lt;Data&gt; = listOf()
)

data class Data(
    @field:Json(name = &quot;id&quot;) val id: String? = &quot;&quot;,
    @field:Json(name = &quot;attributes&quot;) val attributes: Attributes = Attributes()
)

data class Attributes(
    @field:Json(name = &quot;title&quot;) val title: String? = &quot;&quot;,
    @field:Json(name = &quot;created&quot;) val created: String? = &quot;&quot;,
    @field:Json(name = &quot;path&quot;) val path: Path = Path(),
    @field:Json(name = &quot;body&quot;) val body: Body = Body()
)

data class Path(
    @field:Json(name = &quot;alias&quot;) val alias: String? = &quot;&quot;,
    @field:Json(name = &quot;pid&quot;) val pid: Int? = 0
)

data class Body(
    @field:Json(name = &quot;value&quot;) val value: String? = &quot;&quot;
)</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-366c995 elementor-widget elementor-widget-text-editor" data-id="366c995" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>4. In this case, we made use of the <a href="https://square.github.io/retrofit/">Retrofit</a> library to make HTTP requests to the JSON API.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-7845a04 elementor-widget elementor-widget-code-block-for-elementor" data-id="7845a04" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>    @Singleton
    @Provides
    fun provideRetrofit(): Retrofit{
        val okHttpClient = OkHttpClient().newBuilder()
            .connectTimeout(60, TimeUnit.SECONDS)
            .readTimeout(60, TimeUnit.SECONDS)
            .writeTimeout(60, TimeUnit.SECONDS)
            .build()
        return Retrofit.Builder()
            .baseUrl(Common.BASE_URL)
            .addConverterFactory(MoshiConverterFactory.create())
            .client(okHttpClient)
            .build();
    }</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-bc7c133 elementor-widget elementor-widget-text-editor" data-id="bc7c133" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>5. Set the API endpoints</p>						</div>
				</div>
				<div class="elementor-element elementor-element-4d88ae1 elementor-widget elementor-widget-code-block-for-elementor" data-id="4d88ae1" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>interface ArticleApi: Common {

    @GET(&quot;node/article&quot;)
    suspend fun getArticles(): ArticleResponse;

}</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-ef40bde elementor-widget elementor-widget-text-editor" data-id="ef40bde" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>6. Ensure you have the requisite permissions </p>						</div>
				</div>
				<div class="elementor-element elementor-element-a77a1b2 elementor-widget elementor-widget-code-block-for-elementor" data-id="a77a1b2" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>    /* AndroidManifest.xml file */
    &lt;uses-permission android:name=&quot;android.permission.ACCESS_NETWORK_STATE&quot; /&gt;
    &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
    &lt;uses-permission android:name=&quot;android.permission.ACCESS_WIFI_STATE&quot; /&gt;</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-d97ddb7 elementor-widget elementor-widget-code-block-for-elementor" data-id="d97ddb7" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>/* Kotlin Activity class */

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {


    @Inject
    lateinit var articleRepository: ArticleRepository;
    lateinit var mainActivityMvc: MainActivityMvc;
    lateinit var networkTools: NetworkTools;
    val mainActivityViewModel: MainActivityViewModel by viewModels&lt;MainActivityViewModel&gt;();

    companion object {
        lateinit var appCompatActivity: AppCompatActivity;
    }

    init {
        appCompatActivity = this;
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mainActivityMvc =
            MainActivityMvc(LayoutInflater.from(this), null, this, articleRepository, mainActivityViewModel);
        setContentView(mainActivityMvc.getRootView_())
        networkTools = NetworkTools(this);
        mainActivityMvc.setListerners();
        appCompatActivity = this;
        mainActivityMvc.sendAPIRequest();
        mainActivityViewModel.observe(this, this, mainActivityMvc, mainActivityViewModel);

        requestMultiplePermissionLauncher.launch(
            arrayOf(
                Manifest.permission.INTERNET,
                Manifest.permission.ACCESS_NETWORK_STATE
            )
        )



    }

    override fun onResume() {
        super.onResume()

        if (networkTools.checkConnectivity()) {

        }


    }

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            val homeIntent = Intent(Intent.ACTION_MAIN)
            homeIntent.addCategory(Intent.CATEGORY_HOME)
            homeIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
            startActivity(homeIntent)
            return true
        }
        return super.onKeyDown(keyCode, event)
    }

    private val requestMultiplePermissionLauncher =
        registerForActivityResult(
            ActivityResultContracts.RequestMultiplePermissions()
        ) { result -&gt;

        }



}</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-0fc6010 elementor-widget elementor-widget-text-editor" data-id="0fc6010" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><p>The above codebase is also available on <em><a href="https://bit.ly/3LQVr8s">Github</a></em> </p><p> </p><p><em><a href="https://bit.ly/3YsPhmL" target="_blank" rel="noopener">Symatech Labs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/create-an-android-mobile-app-using-kotlin-that-consumes-an-api-from-a-drupal-instance/">Create An Android Mobile App Using Kotlin That Consumes An API From A Drupal Instance</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Export All Databases In MySQL At Once</title>
		<link>https://symatechlabs.com/export-all-mysql-databases-at-once/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Thu, 25 Apr 2024 17:50:08 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70728</guid>

					<description><![CDATA[<p>Export All Databases In MySQL At Once While this might not be something you would need to do every day, it could come in handy to know how to export all databases in your MySQL instance at once. The implementation makes use of a shell script which is an essential component of Linux process automation. Shell scripts make it easier to write and execute commands. Let&#8217;s jump [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/export-all-mysql-databases-at-once/">Export All Databases In MySQL At Once</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70728" class="elementor elementor-70728">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-1bac2ba elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1bac2ba" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c707e07" data-id="c707e07" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d18f361 elementor-widget elementor-widget-text-editor" data-id="d18f361" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Export All Databases In MySQL At Once</h2><p><span data-preserver-spaces="true">While this might not be something you would need to do every day, </span><span data-preserver-spaces="true">it could come in handy to know</span><span data-preserver-spaces="true"> how to export all </span><a class="editor-rtfLink" href="https://symatechlabs.com/creating-a-database-for-your-app/" target="_blank" rel="noopener"><span data-preserver-spaces="true">databases</span></a><span data-preserver-spaces="true"> in your MySQL instance at once.</span><span data-preserver-spaces="true"> </span><span data-preserver-spaces="true">The implementation </span><span data-preserver-spaces="true">makes use of</span><span data-preserver-spaces="true"> a shell script </span><span data-preserver-spaces="true">which</span><span data-preserver-spaces="true"> is an</span><span data-preserver-spaces="true"> essential component of Linux process automation.</span><span data-preserver-spaces="true"> Shell scripts make it easier to write and execute commands.</span></p><p>Let&#8217;s jump to the code.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-5f0953b elementor-widget elementor-widget-code-block-for-elementor" data-id="5f0953b" data-element_type="widget" data-widget_type="code-block-for-elementor.default">
				<div class="elementor-widget-container">
			<pre class='line-numbers theme-okaidia' data-show-toolbar='yes'><code class='language-javascript'>#!/bin/bash

# Your MySQL credentials
USER=&quot;username&quot;
PASSWORD=&quot;password&quot;

# Retrieve all databases in your MySQL instance
DATABASES=$(mysql -u $USER -p$PASSWORD -e &quot;SHOW DATABASES;&quot; | grep -Ev &quot;(Database|information_schema|performance_schema|mysql)&quot;)

# Export as you iterate through the databases in your MySQL instance 
for DB in $DATABASES; do
    mysqldump -u $USER -p$PASSWORD --databases $DB &gt; $DB.sql
done
</code></pre>		</div>
				</div>
				<div class="elementor-element elementor-element-000956e elementor-widget elementor-widget-text-editor" data-id="000956e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h4> </h4><h4><strong>Executing Shell Scripts</strong></h4><p><strong>Assumption</strong>: You are running a computer that uses Linux or a Unix equivalent.</p><ol><li>Create the shell script <em>(as  above)</em></li><li>Set the right file permission to the script  <em><strong>chmod +x name_of_the_script.sh</strong></em></li><li>Run the script on your <a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal" target="_blank" rel="noopener">Terminal</a><em><strong> ./name_of_the_script.sh</strong></em></li></ol><p> </p><p><em><a href="https://symatechlabs.com/contact-us/" target="_blank" rel="noreferrer noopener">Symatech L</a><a href="https://symatechlabs.com/" target="_blank" rel="noreferrer noopener">abs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/export-all-mysql-databases-at-once/">Export All Databases In MySQL At Once</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Steps of Creating A Custom Camera using CameraX Library in Android</title>
		<link>https://symatechlabs.com/steps-of-creating-a-custom-camera-using-camerax-library-in-android/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Thu, 11 Apr 2024 18:58:19 +0000</pubDate>
				<category><![CDATA[Mobile Apps]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70677</guid>

					<description><![CDATA[<p>Steps of Creating A Custom Camera using CameraX Library in Android Comparatively, building a custom camera with Android&#8217;s CameraX library is &#8220;easier&#8221; than with the previous android.hardware.Camera API. android.hardware.Camera  had little control over exposure, focussing, and camera settings. It was devoid of many sophisticated features seen in contemporary cameras. The goal of Android Jetpack, which [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/steps-of-creating-a-custom-camera-using-camerax-library-in-android/">Steps of Creating A Custom Camera using CameraX Library in Android</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70677" class="elementor elementor-70677">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-293221d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="293221d" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7d58903" data-id="7d58903" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-2e216cf elementor-widget elementor-widget-text-editor" data-id="2e216cf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Steps of Creating A Custom Camera using CameraX Library in Android</h2><p>Comparatively, building a custom camera with Android&#8217;s <a href="https://developer.android.com/media/camera/camerax" target="_blank" rel="noopener">CameraX</a> library is &#8220;easier&#8221; than with the previous <a href="https://developer.android.com/reference/android/hardware/Camera" target="_blank" rel="noopener"><em><strong>android.hardware.Camera</strong></em></a> API. <a href="https://developer.android.com/reference/android/hardware/Camera" target="_blank" rel="noopener"><em><strong>android.hardware.Camera</strong></em></a>  had little control over exposure, focussing, and camera settings. It was devoid of many sophisticated features seen in contemporary cameras. The goal of <a href="https://developer.android.com/jetpack" target="_blank" rel="noopener">Android Jetpack</a>, which includes <a href="https://developer.android.com/media/camera/camerax" target="_blank" rel="noopener">CameraX</a>, is to simplify and standardize camera development across various Android devices.</p><p>Below are steps you can use when creating your custom camera.</p><h3> </h3><h3>Step One: Dependancies</h3><p>Add the following dependancies to the <strong><em>build.gradle.kts</em></strong> file. Sync the project to download the libraries to your local set up. You might experience some configuration issues, in that case you can always go through/download the source code as on <a href="https://bit.ly/3W20dGq" target="_blank" rel="noopener">Github.</a></p><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-70679" src="https://symatechlabs.com/wp-content/uploads/2024/04/carbon.png" alt="Add dependancies Camera X" width="2800" height="640" /></p><h4> </h4><h3>Step Two: Set up the permissions</h3><p>Add the following permissions on your<strong><em> AndroidManifest.xml</em></strong> file.</p><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-70683" src="https://symatechlabs.com/wp-content/uploads/2024/04/Android_Manifest_CameraX.png" alt="" width="2800" height="640" /></p><h3> </h3><h3>Step Three: Set up the Layout</h3><p>Include the <a href="https://developer.android.com/media/camera/camerax/preview" target="_blank" rel="noopener">PreviewView</a> in your layout file.</p><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-70688" src="https://symatechlabs.com/wp-content/uploads/2024/04/camera_x_xml_layout.png" alt="" width="2800" height="2464" /></p><h3> </h3><h3>Step Four: Jump to the code</h3><p>In this case we used an <a href="https://developer.android.com/guide/components/activities/intro-activities" target="_blank" rel="noopener">Activity</a>, the same can also be done for <a href="https://developer.android.com/guide/fragments" target="_blank" rel="noopener">Fragments</a>. The full codebase can be found on <a href="https://bit.ly/3W20dGq">Github.</a></p><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-70684" src="https://symatechlabs.com/wp-content/uploads/2024/04/CameraX_Kotlin_Android_Code.png" alt="" width="2800" height="3618" /></p><h3> </h3><h3>Final output</h3><p>Find the final output in the <a href="https://www.youtube.com/shorts/KsdO0iCyLjo" target="_blank" rel="noopener">YouTube Video</a> below.</p><p><iframe loading="lazy" title="Steps of Creating A Custom Camera Using CameraX Library In Android" width="1778" height="1000" src="https://www.youtube.com/embed/KsdO0iCyLjo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p><em><a href="https://symatechlabs.com/contact-us/" target="_blank" rel="noreferrer noopener">Symatech L</a><a href="https://symatechlabs.com/" target="_blank" rel="noreferrer noopener">abs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/steps-of-creating-a-custom-camera-using-camerax-library-in-android/">Steps of Creating A Custom Camera using CameraX Library in Android</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating A Database For Your App ?</title>
		<link>https://symatechlabs.com/creating-a-database-for-your-app/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Fri, 23 Feb 2024 22:06:35 +0000</pubDate>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[StartUps]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70594</guid>

					<description><![CDATA[<p>Creating a database for your application is among the initial items in your development sprint. It is important to get it right in the first instance as redoing the schema could mean a change in your application logic.  &#160; What is a database? You can imagine a database as some sort of a “digital cabinet” [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/creating-a-database-for-your-app/">Creating A Database For Your App ?</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70594" class="elementor elementor-70594">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-5191367c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5191367c" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ff69362" data-id="5ff69362" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-139dac5d elementor-widget elementor-widget-text-editor" data-id="139dac5d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Creating A Database For Your App ?</h2><p><span style="font-weight: 400;">Creating a database for your application is among the initial items in your development sprint. It is important to get it right in the first instance as redoing the schema could mean a change in your application logic. </span></p><h3> </h3><h3>What is a database?</h3><p>You can imagine a database as some sort of a “digital cabinet” that is neatly arranged and has the different items organized in their own “compartments” that are in most cases named for easy retrieval. An example could be a book cabinet that has compartments named by the genre i.e. fiction, biographies, science fiction, mystery, and e.t.c.</p><p> </p><p><span style="font-weight: 400;">The following are some of the considerations you can make when picking a database system.</span></p><h4> </h4><h4><strong>1. What Is The Purpose Of The Database</strong></h4><p><span style="font-weight: 400;">There are many reasons for coming up with a database, it is pertinent to determine this as it informs on the design and probably avoids unnecessary complexity. A database used in storing product details could be different from one that is used to record books in a library. </span></p><h4> </h4><h4><strong>2. The Type Of Database</strong></h4><p>Selecting the right database is critical as different databases have different features. For example, NoSQL databases do not store data using tabular relations as Relational databases. NoSQL databases are better suited for flexible, unstructured data or huge, scalable datasets, whereas Relational databases excel at structured data with clearly established relationships.</p><h4> </h4><h4><strong>3. Compatibility</strong></h4><p>The technology stack in use could determine the choice of the database system. Availability of drivers among other dependencies could inform your choice. You should pick a database system that would be compatible with your environment.</p><h4> </h4><h4><strong>4. Scalability</strong></h4><p>Over time, as users continue to make use of your application. The data stored in the database could grow and the demand in terms of resources<em>(CPU,RAM)</em> increases. Good user experience would dictate that the users should not experience degradation of the service. Picking a scalable database becomes an important factor to consider.</p><h4> </h4><h4><strong>5. Security Features</strong></h4><p>We live in a world where application software is mostly orchestrated and accessed publicly <em>(via Public IPs/Domains)</em>. There are advantages of having your application being publicly accessible i.e. you can serve people across the world. You can now see why security becomes an important consideration given that sensitive data could unwittingly get into the wrong hands. Some database systems come with security features that meet regulatory compliance out of the box. Other database systems would require intervention by the database administrator to enforce.</p><h4> </h4><h4><strong>6. Recovery</strong></h4><p>Make sure the database system has backup and durability procedures for data in the event of software errors, hardware malfunctions, or other calamities. Examine features like backups, replication, and transaction logging to prevent data loss and guarantee data integrity. </p><h4> </h4><h4><strong>7. Community Support</strong></h4><p>The ecosystem of the database system is as important as the features it has. Invariably, you will face issues, and depending on how big the community ecosystem is, resolution could take a few minutes to a few days.</p><h4> </h4><h4><strong>8. Cost &amp; Licensing</strong></h4><p>This may be the most underlooked factor when selecting a database system. Different setups could demand different licenses and some come with a cost attached to them.</p><p><em><a href="https://symatechlabs.com/contact-us/" target="_blank" rel="noreferrer noopener">Symatech L</a><a href="https://symatechlabs.com/" target="_blank" rel="noreferrer noopener">abs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/creating-a-database-for-your-app/">Creating A Database For Your App ?</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Six Steps Of Building A Minimum Viable Product (MVP)</title>
		<link>https://symatechlabs.com/six-steps-of-building-a-minimum-viable-product-mvp/</link>
		
		<dc:creator><![CDATA[Symatech Labs]]></dc:creator>
		<pubDate>Tue, 09 Jan 2024 17:24:48 +0000</pubDate>
				<category><![CDATA[Consultancy]]></category>
		<category><![CDATA[Product]]></category>
		<category><![CDATA[StartUps]]></category>
		<guid isPermaLink="false">https://symatechlabs.com/?p=70482</guid>

					<description><![CDATA[<p>Six Steps Of Building A Minimum Viable Product (MVP) What Is An MVP An MVP, or minimum viable product, is a trimmed-down version of a &#8220;new&#8221; product designed to target early adopters and offer insightful feedback for subsequent iterations. Building a Minimum Viable Product (MVP) is an essential step in obtaining insightful customer input and [&#8230;]</p>
<p>The post <a href="https://symatechlabs.com/six-steps-of-building-a-minimum-viable-product-mvp/">Six Steps Of Building A Minimum Viable Product (MVP)</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="70482" class="elementor elementor-70482">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-15b24ad9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="15b24ad9" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-360b9e42" data-id="360b9e42" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-24b51564 elementor-widget elementor-widget-text-editor" data-id="24b51564" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<h2>Six Steps Of Building A Minimum Viable Product (MVP)</h2><h3> </h3><h3>What Is An MVP</h3><p>An MVP, or minimum viable product, is a trimmed-down version of a &#8220;new&#8221; product designed to target early adopters and offer insightful feedback for subsequent iterations.</p><p> </p><p>Building a Minimum Viable Product (MVP) is an essential step in obtaining insightful customer input and validating your business idea. Before making a significant investment in development, an MVP enables you to test your idea with limited resources, assisting in the understanding of user needs and the improvement of your product. We&#8217;ll delve into the key components of building an MVP and outline the prerequisites for a productive development process in this article.</p><p> </p><h4><strong>1. Perform Market Analysis</strong></h4><p>For an MVP to be effective, it is essential to understand your target market. To differentiate your product/service, identify your competitors, evaluate their advantages and disadvantages, and do in-depth market research. Your feature set and product&#8217;s unique selling point <em><strong>(USP)</strong></em> will be improved at this point.</p><p> </p><h4><strong>2. Set Your Objectives and Vision</strong></h4><p>It&#8217;s critical to establish your MVP&#8217;s vision and goals before beginning development. Define your target market, describe the problem your product seeks to answer, and set up key performance indicators <em><strong>(KPIs)</strong></em> to gauge its effectiveness. The development process will be guided by this clarity, which will also keep you concentrated on providing value.</p><p> </p><h4><strong>3. Determine Key Elements</strong></h4><p>Once you have a clear vision and insights into the market, determine the essential elements that will help your users with their main problems. Sort features into priority lists according to how they will affect the problem&#8217;s resolution and how quickly they can be developed. Your MVP should be built around these specifications.</p><p> </p><h4><strong>4. Wireframes</strong></h4><p>Develop a user flow that describes the stages a user will take within your product to map out the user journey. Create wireframes to see how important screens will interact and be laid up. This procedure guarantees that the MVP&#8217;s design is in line with your vision and aids in the improvement of the user experience <em><strong>(UX)</strong></em>.</p><h4> </h4><h4><strong>5. Technical Specification</strong></h4><p>A thorough technical definition outlining the architecture, technologies, and frameworks to be used should be given to your development team. Data models, <a href="https://symatechlabs.com/sdk-and-apis-what-is-the-difference/" target="_blank" rel="noopener">APIs</a>, and any necessary third-party integrations should all be clearly defined. Technical specifications that are well enumerated tend to expedite the development process and reduce ambiguity.</p><p> </p><h4><strong>6. Test &amp; Re-Test </strong></h4><p>To get input on the user interface and overall experience, test the usability of the product with actual people. Based on the knowledge gathered from testing, iterate.</p><p> </p><h2>Types Of MVPs</h2><ol><li>Landing page MVP</li><li>The Fake Door</li><li>Demo video MVP</li><li>Single Feature MVP</li><li>Concierge MVP</li><li>Piecemeal MVP</li></ol><p> </p><p>Developing an MVP is a calculated approach to product development that helps entrepreneurs reduce risks and validate concepts. You may provide the groundwork for a successful MVP launch by outlining your goals, carrying out in-depth market research, identifying key features, creating wireframes and user flows, drafting a technical specification, giving scalability first priority, and carrying out extensive testing. Remember that the secret to a successful MVP isn&#8217;t just in its creation but also in the continuous iteration that follows, which produces a polished and ready-for-market product based on user feedback.</p><p> </p><p><em><a href="https://symatechlabs.com/contact-us/" target="_blank" rel="noreferrer noopener">Symatech L</a><a href="https://symatechlabs.com/" target="_blank" rel="noreferrer noopener">abs</a> is a Software Development company based in Nairobi, Kenya that specializes in Software Development, Mobile App Development, Web Application Development, Integrations, USSD and Consultancy.</em></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>The post <a href="https://symatechlabs.com/six-steps-of-building-a-minimum-viable-product-mvp/">Six Steps Of Building A Minimum Viable Product (MVP)</a> appeared first on <a href="https://symatechlabs.com">Symatech Labs</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
