<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Purinda Gunasekara</title>
		<link>https://purinda.com/</link>
		<description>Recent content on Purinda Gunasekara</description>
		<generator>Hugo</generator>
		<language>en-AU</language>
		
		
		
		
			<lastBuildDate>Sun, 27 Sep 2026 00:10:00 +1000</lastBuildDate>
		
			<atom:link href="https://purinda.com/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 7: The Results</title>
				<link>https://purinda.com/posts/sinhala-asr-7-results/</link>
				<pubDate>Sun, 27 Sep 2026 00:10:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-7-results/</guid>
				<description>The finished model gets 7.1% of characters wrong on Sinhala sentences it never trained on, keeps English within 0.3 points of the original, and runs 17 times faster than real time on a laptop. Also: most of my test sentences turned out to be in the training data.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 6: What&#39;s Next</title>
				<link>https://purinda.com/posts/sinhala-asr-6-whats-next/</link>
				<pubDate>Sun, 27 Sep 2026 00:05:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-6-whats-next/</guid>
				<description>What has to be true before the Sinhala model ships, what&amp;rsquo;s left to do in the app, the questions I can&amp;rsquo;t answer yet, and the short version of the series.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 5: The First Training Run</title>
				<link>https://purinda.com/posts/sinhala-asr-5-first-training-run/</link>
				<pubDate>Sat, 26 Sep 2026 10:19:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-5-first-training-run/</guid>
				<description>A loss that looked perfect while half the transcripts were wrong, picking a learning rate by watching English get worse, three precision bugs no loss curve would show, and winning English back by blending with the original model.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 4: Training on a Mac, the Same Way the App Runs</title>
				<link>https://purinda.com/posts/sinhala-asr-4-training-on-a-mac/</link>
				<pubDate>Sat, 26 Sep 2026 10:18:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-4-training-on-a-mac/</guid>
				<description>Why the training runs on a MacBook Pro instead of a rented GPU, and the three places where the trainer had to copy the app exactly. One of them was a bug behind 40% of the errors in noisy English.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 3: Preparing the Training Data</title>
				<link>https://purinda.com/posts/sinhala-asr-3-data/</link>
				<pubDate>Sat, 26 Sep 2026 10:17:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-3-data/</guid>
				<description>Rewriting English words into English letters, keeping test speakers out of training, and a replay set labelled by the model itself so it doesn&amp;rsquo;t forget the languages it already knows.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 2: Why Qwen3-ASR as the Base Model</title>
				<link>https://purinda.com/posts/sinhala-asr-2-choosing-qwen3-asr/</link>
				<pubDate>Sat, 26 Sep 2026 10:16:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-2-choosing-qwen3-asr/</guid>
				<description>Choosing the model to fine-tune: why not one that already knows Sinhala, one model for every language, a decoder that can be told the language, which size, and what starting without Sinhala costs.</description>
			</item>
			<item>
				<title>Fine-tuning Qwen3-ASR for Sinhala – Part 1: Measuring the Models That Already Exist</title>
				<link>https://purinda.com/posts/sinhala-asr-1-measuring/</link>
				<pubDate>Sat, 26 Sep 2026 10:15:00 +1000</pubDate>
				<guid>https://purinda.com/posts/sinhala-asr-1-measuring/</guid>
				<description>Before training anything, I measured the speech models that claim to support Sinhala on 300 real recordings. None was usable for dictation, and the reasons shaped everything after.</description>
			</item>
			<item>
				<title>Complete Guide on Setting up HAProxy to Terminate SSL Generated by LetsEncrypt (certbot)</title>
				<link>https://purinda.com/posts/complete-guide-on-setting-up-haproxy-to-terminate-ssl-generated-by-letsencrypt-certbot/</link>
				<pubDate>Wed, 24 May 2023 22:59:20 +1000</pubDate>
				<guid>https://purinda.com/posts/complete-guide-on-setting-up-haproxy-to-terminate-ssl-generated-by-letsencrypt-certbot/</guid>
				<description>&lt;h2 id=&#34;dns-configuration-for-your-domain&#34;&gt;DNS Configuration for Your Domain &lt;a class=&#34;anchor&#34; href=&#34;#dns-configuration-for-your-domain&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Before generating SSL certificates with Let’s Encrypt or any other certificate authority, you need to have proper DNS configuration for the domain you are trying to generate certificates for. This involves ensuring that the domain’s name servers are correctly set up and pointing to the appropriate DNS provider.&lt;/p&gt;&#xA;&lt;p&gt;Here are the general steps to configure DNS name servers for the domain:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Docker – External IP for Your Docker App</title>
				<link>https://purinda.com/posts/docker-external-ip-for-your-docker-app/</link>
				<pubDate>Sun, 17 Apr 2022 21:22:04 +1000</pubDate>
				<guid>https://purinda.com/posts/docker-external-ip-for-your-docker-app/</guid>
				<description>&lt;h2 id=&#34;back-story&#34;&gt;Back story &lt;a class=&#34;anchor&#34; href=&#34;#back-story&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I was playing around with Pi-hole on my Ubuntu host and got stuck when I was starting up the container with 53, 67 (udp / tcp both) was getting errors (“listen udp4 0.0.0.0:53: bind: address already in use”) because the Ubuntu host system itself were using those ports.&lt;/p&gt;&#xA;&lt;p&gt;I have previously used reverse-proxies to get around such problems but this time I wanted a simpler solution so I don’t have to manage another service in my local network to run Pi-hole.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Dell XPS 9310 Fingerprint Reader and Better Power Management under Ubuntu 20.04</title>
				<link>https://purinda.com/posts/dell-xps-9310-fingerprint-reader-and-better-power-management-under-ubuntu-20-04/</link>
				<pubDate>Sat, 26 Feb 2022 13:10:10 +1100</pubDate>
				<guid>https://purinda.com/posts/dell-xps-9310-fingerprint-reader-and-better-power-management-under-ubuntu-20-04/</guid>
				<description>&lt;p&gt;Dell XPS 9310 series laptops or other similar models which were released late 2020 may have issues getting the fingerprint reader working under Linux distributions. This is apparently due to closed source device drivers. End of the article, I will be listing some power management configuration which will help reduce heat and extend battery life but at the expense of performance when AC power is disconnected.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you have a XPS which came with Ubuntu installation instead of Windows then you can download pre-built ISO from Dell site here &lt;a href=&#34;https://www.dell.com/support/home/en-au/drivers/osiso/ubt20&#34;&gt;https://www.dell.com/support/home/en-au/drivers/osiso/ubt20&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Comparison Sony E 18-135mm f3.5-5.6 vs Zeiss 16-70mm F4</title>
				<link>https://purinda.com/posts/comparison-sony-e-18-135mm-f3-5-5-6-vs-zeiss-16-70mm-f4/</link>
				<pubDate>Thu, 10 Oct 2019 22:39:11 +1100</pubDate>
				<guid>https://purinda.com/posts/comparison-sony-e-18-135mm-f3-5-5-6-vs-zeiss-16-70mm-f4/</guid>
				<description>&lt;p&gt;Purpose of the article is to point out long standing discussions and controversies around the Zeiss 16-70mm zoom and compare it to the Sony 18-135mm lens which is far more recent release from Sony and believed to be all around well praised lens.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Zeiss 16-70mm F4 (released on August 27, 2013)&lt;/li&gt;&#xA;&lt;li&gt;Sony E 18-135mm F3.5-5.6 (released in January, 2018)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Sony APS-C sensor cameras such as A6000 all the way to A6500s have a limited options when it comes to zoom lenses and the entire range from Sony comes down to 4 lenses which has their own strengths and weaknesses.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Centralised Scalable log-server implementation on Ubuntu 15.04</title>
				<link>https://purinda.com/posts/centralised-scalable-log-server-implementation-on-ubuntu-15-04/</link>
				<pubDate>Thu, 13 Aug 2015 01:02:49 +1000</pubDate>
				<guid>https://purinda.com/posts/centralised-scalable-log-server-implementation-on-ubuntu-15-04/</guid>
				<description>&lt;p&gt;The goal of this article is to explain how to implement a very simple log server which can accept application logs coming from one or more servers. For simplicity I will be implementing the log server and log forwarder (explained in Components section) on the same computer.&lt;/p&gt;&#xA;&lt;p&gt;In order to keep the article easy to understand and to keep the implementation simple as possible I have excluded the security of the logs that get transmitted from application servers to the log-server and considered outside the scope of this article. Therefore if you implement the exact solution make sure you consider security of log data as some logs may contain sensitive information about the applications.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Export NFS shares from OS X to Ubuntu / Debian and mount using Autofs</title>
				<link>https://purinda.com/posts/export-nfs-shares-from-os-x-10-10-4-to-ubuntu-debian-and-mount-using-autofs/</link>
				<pubDate>Thu, 06 Aug 2015 22:41:15 +1000</pubDate>
				<guid>https://purinda.com/posts/export-nfs-shares-from-os-x-10-10-4-to-ubuntu-debian-and-mount-using-autofs/</guid>
				<description>&lt;p&gt;I will discuss very few steps involved in getting a NFS directory shared from OSX and mounting it on an Ubuntu VM.&lt;/p&gt;&#xA;&lt;h3 id=&#34;step-1&#34;&gt;Step 1 &lt;a class=&#34;anchor&#34; href=&#34;#step-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Read &lt;a href=&#34;https://support.apple.com/en-us/HT202243&#34;&gt;https://support.apple.com/en-us/HT202243&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The gist of it is OSX knows how to handle(export) NFS shares as long as you write the instructions correctly in &lt;strong&gt;/etc/exports&lt;/strong&gt; file. So assume you need to export the directory in &lt;strong&gt;/Volumes/Disk 2/Projects&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;edit the /etc/exports file in your favourite editor as root (ex: sudo vim /etc/exports), paste the below command and change it to fit your requirement. Some parameters are explained below.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Symfony2 assetic with Ruby 2.1 (under Ubuntu 15.04)</title>
				<link>https://purinda.com/posts/symfony2-assetic-with-ruby-2-1-under-ubuntu-15-04/</link>
				<pubDate>Thu, 30 Apr 2015 13:52:57 +1000</pubDate>
				<guid>https://purinda.com/posts/symfony2-assetic-with-ruby-2-1-under-ubuntu-15-04/</guid>
				<description>&lt;p&gt;Recently updated my Dev machine to Ubuntu 15.04 and assetic:dump on Symfony2 apps stop working, showing the following error message.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[Assetic\Exception\FilterException]&#xA;An error occurred while running:&#xA;&amp;#39;/usr/bin/ruby&amp;#39; &amp;#39;/usr/local/bin/sass&amp;#39; &amp;#39;--load-path&amp;#39; &amp;#39;/home/purinda/Projects/phoenix/apps/frontend/src/Nlm/XYZBundle/Resources/&#xA;public/css&amp;#39; &amp;#39;--scss&amp;#39; &amp;#39;--cache-location&amp;#39; &amp;#39;/home/purinda/Projects/phoenix/apps/frontend/app/cache/dev&amp;#39; &amp;#39;/tmp/assetic_sassbUrFhU&amp;#39;&#xA;Error Output:&#xA;/usr/local/bin/sass:23:in `load&amp;#39;: cannot load such file -- /usr/share/rubygems-integration/all/gems/sass-3.2.19/bin/sass (LoadErro&#xA;r)&#xA;from /usr/local/bin/sass:23:in `&amp;lt;main&amp;gt;&amp;#39;&#xA;&#xA;Input:&#xA;&#xA;....&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It appears to be that Ubuntu 15.04 installs Ruby 2.1 but doesn’t install a more recent version of Sass, so in oreder to get a up-to-date version of Sass compiler, you need to install compass pre-release version.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Compiled binaries of Qt 5.3 for the Raspberry Pi (ARMv6) and Pi 2 (ARMv7-A)</title>
				<link>https://purinda.com/posts/compiled-binaries-of-qt-5-3-for-the-raspberry-pi-and-pi-2/</link>
				<pubDate>Sun, 08 Feb 2015 09:22:33 +1100</pubDate>
				<guid>https://purinda.com/posts/compiled-binaries-of-qt-5-3-for-the-raspberry-pi-and-pi-2/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;At the time of writing Qt 5.4 release existed but I found it has number of bugs that affect multimedia capabilities of the Raspberry Pi.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Download the following binary release and install using following instructions. Instructions assume you still have the user &lt;strong&gt;pi&lt;/strong&gt; in your Raspberry Pi system and make command installed as well (sudo apt-get install make). For the wget command, use the address found in “Download” link below the instructions.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Raspberry Pi WiFi configuration in Raspbian</title>
				<link>https://purinda.com/posts/raspberry-pi-wifi-configuration-in-raspbian/</link>
				<pubDate>Sat, 07 Feb 2015 00:49:20 +1100</pubDate>
				<guid>https://purinda.com/posts/raspberry-pi-wifi-configuration-in-raspbian/</guid>
				<description>&lt;p&gt;I recently bought a Raspberry Pi2 and installed Raspbian (version 2015-01-31), it comes with WiFi drivers preinstalled for the Realtek module which I used as my Raspberry Pi &lt;a href=&#34;http://au.element14.com/element14/wipi/dongle-wifi-usb-for-raspberry/dp/2133900&#34;&gt;WiFi dongle&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So I though things will go smoothly once I have the /etc/wpa_supplicant/wpa_supplicant.conf file configured. So what I did was setup it with my wireless network configuration, which looks like below ( I use WPA2-PSK, with CCMP authentication, if yours is different you may need to configure this right first, I used the &lt;strong&gt;wpa_gui&lt;/strong&gt; command in Raspbian for the following config).&lt;/p&gt;</description>
			</item>
			<item>
				<title>I/O Ports Programming (Parallel port) Reading / Writing using VB.NET</title>
				<link>https://purinda.com/posts/io-ports-programming-parallel-port-reading-writing-surveillance-system-using-vb-net/</link>
				<pubDate>Wed, 04 Feb 2015 23:46:54 +1100</pubDate>
				<guid>https://purinda.com/posts/io-ports-programming-parallel-port-reading-writing-surveillance-system-using-vb-net/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;This is a re-blog of my first ever article published online, on &lt;a href=&#34;http://www.codeproject.com/Articles/20545/I-O-Ports-Programming-Parallel-port-Reading-Writin&#34;&gt;Codeproject.com&lt;/a&gt;, which I wrote on 18 Sep 2007. Lately, I&amp;rsquo;ve not kept myself up to date with Windows and .NET platform so any feedback would be great regarding how well/bad this project works with more recent platform changes.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction &lt;a class=&#34;anchor&#34; href=&#34;#introduction&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The parallel port, or printer port, is one of the easiest pieces of hardware available to users for communicating with external circuitry or homemade hardware devices. Most people think that interfacing with an external circuit is hard and never come up with a solution. However, in this article, I am trying to convince you that porting with another external device is very easy and it has only a few tricks to be remembered!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Make your Mac (OSX) serve as a NTP time server</title>
				<link>https://purinda.com/posts/make-your-mac-osx-serve-as-a-ntp-time-server/</link>
				<pubDate>Mon, 19 Jan 2015 21:03:55 +1100</pubDate>
				<guid>https://purinda.com/posts/make-your-mac-osx-serve-as-a-ntp-time-server/</guid>
				<description>&lt;p&gt;&lt;strong&gt;Some background to the problem&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;At the time of writing I work for NewsCorp and they have a corporate firewall proxy inside the office LAN which blocks almost all ports below 1000 to external services (ex: github, bitbucket, ntp servers, etc) unless you specifically request for firewall rules to be allowed.&lt;/p&gt;&#xA;&lt;p&gt;I sometimes use my Mac to run some linux applications in virtual machines, so when the host is suspended (closing the laptop lid) or shutdown while VM state is saved and resumes it cannot resync the system clock (vm) since NTP uses Port 123 (UDP) the packets cannot get out or come back in via the corporate proxy / firewall rules. So AWS and other web services started reporting my requests are in past or not in sync with the current epoch.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Linux brightness control</title>
				<link>https://purinda.com/posts/linux-brightness-control/</link>
				<pubDate>Fri, 12 Sep 2014 22:32:26 +1000</pubDate>
				<guid>https://purinda.com/posts/linux-brightness-control/</guid>
				<description>&lt;p&gt;This is more of a note to myself than a blog post, whenever I install some Linux distribution on one of my laptops the first thing to be done is fix brightness controls as it helps to conserve battery life significantly.&lt;/p&gt;&#xA;&lt;p&gt;The changes required is trivial, start off with figuring out what drivers are in use on your system&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ls -ld  /sys/class/backlight/*&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;should list something like below but not all three, on mine I get intel and acpi&lt;/p&gt;</description>
			</item>
			<item>
				<title>QtMultimedia: FATAL: cannot locate cpu MHz in /proc/cpuinfo</title>
				<link>https://purinda.com/posts/fatal-cannot-locate-cpu-mhz-in-proccpuinfo/</link>
				<pubDate>Sun, 10 Aug 2014 23:51:30 +1000</pubDate>
				<guid>https://purinda.com/posts/fatal-cannot-locate-cpu-mhz-in-proccpuinfo/</guid>
				<description>&lt;p&gt;This became a problem for my Raspberry Pi (armv6h) running Archlinux (with a relatively newer kernel). Some users of my Grooveshark server reported some bufferring problems where it stopped streaming songs and reported “FATAL: cannot locate cpu MHz in /proc/cpuinfo”.&lt;/p&gt;&#xA;&lt;p&gt;Since the Grooveshark server is based on Qt5 I thought the new Qt5.3 version had some multimedia library changes that caused the issue, but turned out the issue is /proc/cpuinfo not producing CPU frequency for the ARM based CPUs. But what program is using a proc cpuinfo to determine CPU frequency without getting the value from sys filesystem exposed by the kernel? or using a monotonic clock as per newer kernels, which would provide timing capabilities without depending on system level changes, turned out there are quite a few programs around that depends on the value specified in “cpuinfo” file in proc filesystem. Including “jack” audio server which is a dependancy for QtMultimedia framework and number of other applications.&lt;/p&gt;</description>
			</item>
			<item>
				<title>My experiance with GI Stasis in Rabbits</title>
				<link>https://purinda.com/posts/my-experiance-with-gi-stasis-in-rabbits/</link>
				<pubDate>Sun, 03 Aug 2014 00:22:00 +1000</pubDate>
				<guid>https://purinda.com/posts/my-experiance-with-gi-stasis-in-rabbits/</guid>
				<description>&lt;p&gt;Every rabbit owner should read all the articles on this page &lt;a href=&#34;http://www.bio.miami.edu/hare/rabbithealth.html&#34;&gt;http://www.bio.miami.edu/hare/rabbithealth.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;It is a must, if you don’t and you have a bunny with you, I am sure you will regret when you lose them one day.&lt;/p&gt;&#xA;&lt;p&gt;Okay, I am not going to get into much detail on GI Stasis (in short and as far as I understand, it is a partial or full shutdown of a rabbits gastrointestinal system) as you can find hundreds of articles about the illness if you do a google search. What I will be explaining here is what we went through when our pet rabbit was struck with the illness and what we learnt from it. Here I am referring to ‘we’ as me, Maddie and Sloppy the minilop.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Installation Guide for Linux Mint 17 / Ubuntu 14 04 on Mac mini late 2012</title>
				<link>https://purinda.com/posts/installation-guide-for-linux-mint-17-ubuntu-14-04-on-apple-mac-mini-late-2012/</link>
				<pubDate>Tue, 29 Jul 2014 22:19:17 +1000</pubDate>
				<guid>https://purinda.com/posts/installation-guide-for-linux-mint-17-ubuntu-14-04-on-apple-mac-mini-late-2012/</guid>
				<description>&lt;p&gt;Installing Ubuntu 14.04 based distribution on a Mac (or any EFI based computer) has become very straightforward. If you read my previous guide on getting Ubuntu installed on Mac mini guide and thought it was long and too many things to configure, relax because you only have to run few commands with the latest Ubuntu 14.04 / Linux mint 17 distributions.&lt;/p&gt;&#xA;&lt;p&gt;Firstly, remember that you can either split your Mac partitions using DiskUtil and have a separate partitions for your Linux or you can wipe the whole disk and have just Linux on your Mac. If you choose to go with the first, then make a partition on your Mac, of at least 10GB for Linux. And remember how much disk space you allocated for this partition as in the Ubuntu/Mint setup, you will have to point to this specific partition.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Installing LPCXpresso on Ubuntu 14.04 based distribution</title>
				<link>https://purinda.com/posts/installing-lpcxpresso-on-ubuntu-14-04-based-distribution/</link>
				<pubDate>Sat, 17 May 2014 14:59:31 +1000</pubDate>
				<guid>https://purinda.com/posts/installing-lpcxpresso-on-ubuntu-14-04-based-distribution/</guid>
				<description>&lt;p&gt;I had to spend a lifetime trying to install LPCXpresso IDE built by NXP on Ubuntu 14.04, always came up with the following error message.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[14:52:45] purinda@purinda-ws[~/Downloads]+ ./Installer_LPCXpresso_7.1.1_125_Linux-x86&#xA;invalid command name &amp;#34;bind&amp;#34;&#xA; while executing&#xA;&amp;#34;::unknown bind Text &amp;lt;Tab&amp;gt;&amp;#34;&#xA; (&amp;#34;uplevel&amp;#34; body line 1)&#xA; invoked from within&#xA;&amp;#34;uplevel 1 $next $args&amp;#34;&#xA; (procedure &amp;#34;::obj::Unknown&amp;#34; line 3)&#xA; invoked from within&#xA;&amp;#34;bind Text &amp;lt;Tab&amp;gt;&amp;#34;&#xA; (procedure &amp;#34;::InstallJammer::InitializeGui&amp;#34; line 19)&#xA; invoked from within&#xA;&amp;#34;::InstallJammer::InitializeGui &amp;#34;&#xA; (procedure &amp;#34;::InstallJammer::InitInstall&amp;#34; line 68)&#xA; invoked from within&#xA;&amp;#34;::InstallJammer::InitInstall&amp;#34;&#xA; (file &amp;#34;/installkitvfs/main.tcl&amp;#34; line 38437)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The issue was that with multiarch built binaries shipped with Ubuntu, 32bit libraries cannot be installed via old library which I used in the past (ia32libs). As of Ubuntu 14.04 the 32bit packages can be installed by typing the same old “apt-get install &amp;lt;package&amp;gt;”, but with an extra suffix “:i386”.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Weekend Project: CSVFix.com</title>
				<link>https://purinda.com/posts/weekend-project-csvfix-com/</link>
				<pubDate>Mon, 07 Apr 2014 22:55:03 +1000</pubDate>
				<guid>https://purinda.com/posts/weekend-project-csvfix-com/</guid>
				<description>&lt;p&gt;One of my friends is working on a project which she spends most of her time integrating data from Xero, MyOB and other sources with their product at her work place, pretty much everyday.&lt;/p&gt;&#xA;&lt;p&gt;Normally this data exports come as CSV and Excel spreadsheets, last week she asked me whether we can build something to help her with this repetitive, boring task which needs lot of attention to get it right.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Enabling XDebug in AMPPS 2.2</title>
				<link>https://purinda.com/posts/enabling-xdebug-in-ampps-2-2/</link>
				<pubDate>Wed, 19 Feb 2014 00:06:36 +1100</pubDate>
				<guid>https://purinda.com/posts/enabling-xdebug-in-ampps-2-2/</guid>
				<description>&lt;p&gt;Once you have installed AMPPS 2.2 on MacOSx and navigate to PHP section in the AMPPS UI.&lt;/p&gt;&#xA;&lt;p&gt;Click on “Php Extension” button and you will see a list of extensions but XDebug, In order to get Xdebug to appear in that list you will have to goto /Applications/AMPPS/php-5.&amp;lt;version using&amp;gt;/lib/extensions/&lt;/p&gt;&#xA;&lt;p&gt;and copy the xdebug.so file in /Applications/AMPPS/php-5.&amp;lt;version using&amp;gt;/lib/extensions/ directory to /Applications/AMPPS/php-5.&amp;lt;version using&amp;gt;/lib/extensions/ext directory.&lt;/p&gt;&#xA;&lt;p&gt;Then the xdebug extension will show up in the extensions list.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Weekend Project: Pi Music Box – Raspberry Pi as a Music streaming device</title>
				<link>https://purinda.com/posts/pi-music-box-raspberry-pi-as-a-music-streaming-device/</link>
				<pubDate>Sun, 08 Dec 2013 18:58:37 +1100</pubDate>
				<guid>https://purinda.com/posts/pi-music-box-raspberry-pi-as-a-music-streaming-device/</guid>
				<description>&lt;h4 id=&#34;get-grooveshark-to-run-on-a-raspberry-pi-let-your-friends-connect-to-and-vote-for-their-favourite-songs-let-the-majority-rule-what-you-hear-at-home-or-office&#34;&gt;Get Grooveshark to run on a Raspberry Pi, Let your friends connect to and vote for their favourite songs. Let the majority rule what you hear at home or office. &lt;a class=&#34;anchor&#34; href=&#34;#get-grooveshark-to-run-on-a-raspberry-pi-let-your-friends-connect-to-and-vote-for-their-favourite-songs-let-the-majority-rule-what-you-hear-at-home-or-office&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;p&gt;We used to play songs regularly at work. Most of the time I play Dubstep while rest of the team want to listen to Trance or a different genre, this is where the clash of genres occur. This is where this system would be useful, if you get this running on a network then you can ask people to search their favourite songs and queue them in the system. Based on the votes they/others make for the song, it may float up or down making it either famous or not-so-famous. This makes a playlist of highest voted or popular songs.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I chose Linux over MacOSX after using a Mac for a year</title>
				<link>https://purinda.com/posts/why-i-chose-linux-over-macosx-after-using-a-mac-for-a-year/</link>
				<pubDate>Mon, 21 Oct 2013 00:40:59 +1100</pubDate>
				<guid>https://purinda.com/posts/why-i-chose-linux-over-macosx-after-using-a-mac-for-a-year/</guid>
				<description>&lt;h2 id=&#34;first-month-with-a-mac&#34;&gt;First month with a Mac &lt;a class=&#34;anchor&#34; href=&#34;#first-month-with-a-mac&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I had never used MacOSX till January this year when I got a new job and didn’t get an opportunity to let the company know my preferred setup for work. So I ended up with a MacMini late 2012 with an i7 CPU and lots of RAM. So It was very clear to me at the time that I would be stuck with it for a long time. Since I never used MacOSX I wasn’t aware of how the mouse or keyboard works and it took me almost 2-3weeks to get familar with most of the short cuts and basic functionality, so I thought of replacing the workstation I had at home with a Mac too, so that I can spend time using MacOSX and somehow minimise all sorts of embarassing situations I faced at work specially with the basic use of keyboard, mouse and software installations 😀&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to check if a Port is open or not in C (Unix/Linux)</title>
				<link>https://purinda.com/posts/how-to-check-if-a-port-is-open-or-not-in-c-unixlinux/</link>
				<pubDate>Mon, 30 Sep 2013 12:21:04 +1000</pubDate>
				<guid>https://purinda.com/posts/how-to-check-if-a-port-is-open-or-not-in-c-unixlinux/</guid>
				<description>&lt;p&gt;Thought of posting this script as I found this useful to embed in any socket based programs to figure out if a port is open or not in a certain host.&lt;br&gt;&#xA;Tested on a Linux box and appears to be working fine.&lt;/p&gt;&#xA;&lt;p&gt;Localhost and port 22 is hard coded into the snippet.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;sys/types.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;sys/socket.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;netinet/in.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;netdb.h&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;portno&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;localhost;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sockfd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;sockaddr_in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;hostent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sockfd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;socket&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sockfd&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ERROR opening socket&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;gethostbyname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;NULL&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;fprintf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ERROR, no such host&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;exit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;bzero&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;sizeof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sin_family&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AF_INET&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;bcopy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sin_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sin_port&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;htons&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;portno&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sockfd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;struct&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;sockaddr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;sizeof&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;serv_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Port is closed&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Port is active&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sockfd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
			</item>
			<item>
				<title>Multi-hop SSH Port Forwarding</title>
				<link>https://purinda.com/posts/multi-hop-ssh-port-forwarding/</link>
				<pubDate>Fri, 27 Sep 2013 02:23:08 +1000</pubDate>
				<guid>https://purinda.com/posts/multi-hop-ssh-port-forwarding/</guid>
				<description>&lt;p&gt;Following code block can initiate a tunnel between two ssh servers when the second ssh server doesn’t/can’t accept direct connections from the first, and it uses an interim ssh server to forward the port from the &lt;strong&gt;source&lt;/strong&gt; (where you would run this code block) to the destination.&lt;/p&gt;&#xA;&lt;p&gt;If you don’t have public/private keys established between servers, ssh will prompt you to enter two passwords, first is for the &lt;strong&gt;interim-server&lt;/strong&gt; and &lt;strong&gt;second&lt;/strong&gt; is for the destination.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Installation Guide for Linux Mint / Ubuntu on Apple Mac mini (late 2012)</title>
				<link>https://purinda.com/posts/installation-guide-for-linux-mint-15-ubuntu-13-04-on-apple-mac-mini-late-2012/</link>
				<pubDate>Sat, 07 Sep 2013 19:05:13 +1000</pubDate>
				<guid>https://purinda.com/posts/installation-guide-for-linux-mint-15-ubuntu-13-04-on-apple-mac-mini-late-2012/</guid>
				<description>&lt;p&gt;&lt;strong&gt;UPDATE (29-07-2014) : If you want to install Ubuntu 14.04 or Linux Mint 17 or newer version Please refer to &lt;a href=&#34;https://purinda.com/posts/installation-guide-for-linux-mint-17-ubuntu-14-04-on-apple-mac-mini-late-2012/&#34;&gt;Installation Guide for Linux Mint 17 / Ubuntu 14 04 on Mac mini late 2012&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;UPDATE (11-06-2014): As of Ubuntu version 14.04, Ubuntu installer supports Macs without going through the following guide. Download the compatible Mac ISO image from Ubuntu site before proceeding.&lt;/p&gt;&#xA;&lt;p&gt;UPDATE (11-01-2014): I removed Mint and Ubuntu versions used in the title of the article assuming that all Ubuntu based distros will be almost identical in terms of installation and initial configuration steps. I personally upgraded Mint 15 to 16 following the same steps and worked.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to Setup an Amazon AWS EC2 NFS Share</title>
				<link>https://purinda.com/posts/how-to-setup-a-amazon-aws-ec2-nfs-share/</link>
				<pubDate>Thu, 23 May 2013 23:42:38 +1000</pubDate>
				<guid>https://purinda.com/posts/how-to-setup-a-amazon-aws-ec2-nfs-share/</guid>
				<description>&lt;p&gt;This article will be short and to the point, so whoever wants to mount a remote nfs share in their local machine they should be able to get it up and running in 5 mins or less. Here we go!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step – 1 Setup AWS security groups&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;In your EC2 instance setup following Security group exemptions, it would be a good idea to create a separate security group called “NFS Services” or something to leave these exemptions separate from the rest of your security groups.&lt;/p&gt;</description>
			</item>
			<item>
				<title>NFS Shares between Ubuntu 12.04 and Mac OSX 10.8</title>
				<link>https://purinda.com/posts/nfs-shares-between-ubuntu-12-04-and-mac-osx-10-8/</link>
				<pubDate>Sat, 16 Feb 2013 22:23:18 +1100</pubDate>
				<guid>https://purinda.com/posts/nfs-shares-between-ubuntu-12-04-and-mac-osx-10-8/</guid>
				<description>&lt;p&gt;Mounting NFS volumes between Ubuntu and Mac OS X 10.8 was a problem for weeks, I started using SMB shares as I couldn’t get both systems live in harmony! But today fiddling with zillion different configurations in both sides I got Mac OS X to accept my NFS exports from Ubuntu 12.04. This is how I got it working….&lt;/p&gt;&#xA;&lt;p&gt;First you need to export directories from Ubuntu end, so you may need nfs-kernel-server package installed in the ubuntu system.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Multiple/Second SPI Buses on BeagleBone</title>
				<link>https://purinda.com/posts/multiple-spi-bus-beaglebone/</link>
				<pubDate>Mon, 01 Oct 2012 23:23:52 +1030</pubDate>
				<guid>https://purinda.com/posts/multiple-spi-bus-beaglebone/</guid>
				<description>&lt;h2 id=&#34;how-to-get-spi-to-work-on-beaglebone&#34;&gt;How to: Get SPI to work on Beaglebone &lt;a class=&#34;anchor&#34; href=&#34;#how-to-get-spi-to-work-on-beaglebone&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;If you want just one SPI port running, then most up to date images for beaglebone has enabled them by default.&lt;br&gt;&#xA;Location to get pre-compiled images with SPI1 enabled, &lt;a href=&#34;http://rcn-ee.net/deb/precise-armhf/v3.2.25-psp20/&#34;&gt;http://rcn-ee.net/deb/precise-armhf/v3.2.25-psp20/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;enabling-spi0&#34;&gt;Enabling SPI0 &lt;a class=&#34;anchor&#34; href=&#34;#enabling-spi0&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;step-1&#34;&gt;Step 1 &lt;a class=&#34;anchor&#34; href=&#34;#step-1&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;In order to enable userland SPI we need to be able to rebuild the kernel, so grab the Linux source:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Beaglebone RF24(nRF24L01) Library</title>
				<link>https://purinda.com/posts/rf24bb/</link>
				<pubDate>Thu, 09 Aug 2012 15:15:45 +0000</pubDate>
				<guid>https://purinda.com/posts/rf24bb/</guid>
				<description>&lt;h2 id=&#34;why&#34;&gt;Why? &lt;a class=&#34;anchor&#34; href=&#34;#why&#34; aria-label=&#34;Link to this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;I started working on a project which require communication with multiple radios. I started looking at nRF24L01 chip and found it to be very useful, cheap little device which has many features built-in. Initially I got two AVRs to talk to each other through the simple library found here (&lt;a href=&#34;http://www.tinkerer.eu/AVRLib/nRF24L01&#34;&gt;http://www.tinkerer.eu/AVRLib/nRF24L01&lt;/a&gt;). But I found multiple issues with the library when the number of nodes in the network increases,&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
