Shurn the Awesomer
Digital Mindset

Digital Mindset

Written on Thu, 28 June 2018

TL;DR



The 4 steps of innovation with Digital Mindset

  1. Quantify the object into parameters
  2. Measure the object with the parameters
  3. Find insightful meaning from the measurements
  4. Apply your insights

The Long Story


We all have been told that we are now living in the digital era. That we should have a digital mindset. Your boss comes to you and tells you that the company needs to digitise their product. Digital, digital, digital. What does that even mean?

What is digital?


Have you ever asked yourself this question? How do you even define it? Is it the smartphone you carry in your pocket? Is it that self-driving car that just sped past you? Is it that vending machine that refuses to dispense your favourite soda? Is it that facebook like button that you are monitoring?


We sort of know the difference between what's digital and what's not:

  • Digital clock vs. Non-digital clock
  • Cassette Tape vs. Compact Disc (CD)
  • Film Strip vs. Digital Versatile Disc (DVD)


But that still don't quite get the definition of Digital.

The Wiktionary explains that digital comes from the word digit, refering to our fingers and toes. We know in history that we used our fingers as a basis of counting up to ten. That's why globally, the number system we use is base10, from 0 to 9. In electronics, it uses base2 numbers, which is just 0 and 1. For computer scientists, they use the base16 numbers, from 0 to 9 and A to F. But whether we use base2, base10, or base16, doesn't matter. These number systems are representations of quantity.

Digit is the Representation of Quantity


What does it mean when we talk about changing something from analog to digital? One famous example is the conversion of analog sound to digital sound.

We know that sound waves are represented in a continuous wave form. This wave form can be stored in physical mediums like a phonograph record. So what did we do in order to digitise it? We measured the wave position at a specific moment of time. Let's say you measured the wave position once per second, you have a sampling rate of 1Hz. That isn't going to built a meaningful soundwave. But if you measured the wave position 44 100 times in a second, you will have a sampling rate of 44.1 kHz, which is the sampling rate of CD quality music. It is from this measurements you have taken that you build a meaningful soundwave. That's how you and I enjoy music today.

To Digitise is to Quantify


When we say that something is digital, it means that something is quantifiable. Nature is analog. We live in a analog world. In order to make sense of our world, we need it to be quantifiable, so that we can make measurements. That's why we have units like metres, inches, grams, pounds, dollars, seconds, minutes, hours, and so on. From this quantifiable units, we make our measurements. From these measurements, we make meaning out of it.

We, as humans, have come a long way to quantify the world. We quantify soundwaves, leading us to innovations like MP3. We quantify colour, leading to colourful screens like the one you are looking at now. We quantify electromagnetic waves, leading to phones, WiFi, and X-Ray machines.

When you can quantify, you can measure


If we are able to associate numbers to whatever is analog, we can make measurements. We measure in various ways. We have percentages, natural numbers, whole numbers, floating point numbers, logarithmic scales, matrices, and several others. We can also use a combination of them.

Percentages are suitable when there is known boundaries and expectations.

Natural numbers are suitable when we know that there are literal quantities of objects.

Floating point numbers, or commonly known as decimal numbers, are suitable when precision is required.

With great measurements, comes great meaning


Now that you know how to measure, you can find meaning in the measurements.

When you set percentages to the object, you already define the boundaries, or limitations, of the object in question. When the values of the object measurements are outside of 0 to 100, it is outside of intended range. Thus we associate percentage with what's normal, and what's not. We can also attach meaning to the values of the percentage, whether it is within normal range, or out of it.

Sometimes, we use percentage as a frame of reference. We use a more familiar object as the frame of reference to something less familiar. Like you weigh 16.5% on the moon. Despite not mentioning Earth, you know I'm referring to your weight on Earth. You need that reference because I'm betting that you haven't stepped on lunar soil.

Natural numbers are good to measure existence of objects at a moment of time. When you don't need to deal with the past or the future, you don't need to credits and debts. Specifically, you don't need negative numbers.

That's where whole numbers come in. Negative numbers means that you can have debt. You can subtract beyond the existing quantity.

But when precision is needed, floating numbers is your best friend. You can be as divisive as you want, only limited by what's humanly possible.

Knowing what type of quantity representation to use will give you the meaning you look for.

Applying meaning


Now that you have the meaning, apply it.

Let's try quantifying something that doesn't seem logical, and so analogous. Let's try to quantify emotion. It doesn't quite make any sense to say I'm feeling 50% emotion or 98% emotion. So let's take Robert Plutchik's 8 basic emotions. Now it would make more sense to say I'm feeling 10% fear, 50% trust, and 80% joy. We have made emotions quantifiable and measured it. At this percentages, you could probably guess I'm having an adventure with a trainer, thus the presence of fear, trust, and joy. If you're the trainer, I'm sure you have done a good job with making sure the adventure is joyous without too much fear. You probably want to work on gaining trust.

The Digital Era


Today in the tech world, we hear so many tech terms used. Where does each of these terms fall under in digital mindset?

Big Data


In today's cyberscape, we have a lot of data. A lot of data comes from how we use online services. Big companies, like Google, Facebook, Apple, Amazon, Microsoft, have been collecting a lot of data on our way of life. So much so that our privacy is invaded, but that's a topic for another blog post.

There's a lot of data contributed by the internet of things. With the increasing computing power and lowering of prices, more and more of our everyday objects are equipped with sensors. These sensors then collect the data and sends it to the cloud for further processing. Your smartphone is one such object, with a Samsung Galaxy S7 edge having 8 sensors itself. We call these objects The Internet of Things.

All these data is possible simply because we have quantified many things in our world. With the costs of storage dropping, we can afford to store massive amounts of data.

Machine Learning


Machine learning has come a long way. Along with dropping storage costs, computational power has increased, and better and specialised machine learning algorithms have been created.

All of these have resulted in meaningful insights that would have taken humans an incredible long time to figure out. At the same time, it has allowed machines to do the things what was once possible only by a human.

Artificial Intelligence


With machines being able to do what we humans used to have an advantage over, and in some cases, better than what we can do, we are increasingly allowing this artificial intelligence to govern our lives. From all the data it has collected and the meaningful insights it can compute in an instant, we allowed artificial intelligence to drive our cars, tell us how sick we are, beat us in our own game, gamble till we're broke, be our oracle, compose melody, paint art, and be racists.

Final note


The digital mindset is a very useful innovation framework for start-ups to begin with and mature companies to transform.

If you are a start-up, having trouble coming up with a way to disrupt, try the digital mindset approach. There is already a lot of data generated and publicly available, like Google's public data. If there isn't the data you are looking for, try to collect that data. Then find meaning out of that data by running the data through machine learning. Then from the meaning, apply it in the society with a sustainable business model.

If you're in a mature company with the task to innovate, you probably have lots of data in the company to begin with. You can approach this by finding new meaning from the data, or automating the process that your fellow colleagues are already doing. From there, there are several ways to apply it, perhaps a new business model, a faster operational procedure, or an entirely new operation.

Whatever the case is, I look forward to something innovative from what you read here.

Setup Zimbra 8.8 on Ubuntu 16.04

Setup Zimbra 8.8 on Ubuntu 16.04

Written on Thu, 12 April 2018

Optional Prerequisite: Install TCP BBR


TCP BBR is designed to counter traffic congestion. If your application frequently suffer from performance due to congestion, try TCP BBR.

Optional Prerequisite: Set up LVM


LVM is an excellent abstraction tool for storage. Highly recommended if you want to expand your storage needs in the future. Check out a related article on setting up infinite storage for web server but ignore the part on web server. Zimbra is commonly install on /opt/ so set the LVM to this folder.

Optional Prerequisite: Set up Swap Partition


Zimbra recommends a minimum of 8GB RAM. However, if you are faced with a situation where you do not have enough RAM and you can't just add more ram easily, you could use swap space partition or file.

Configure hostname


Edit /etc/hosts and add the following line:

10.0.0.168 mail.shurn.me mail


Change 10.0.0.168 to your ip address and the hostname to your hostname.

Edit /etc/hostname to this:

mail

Reboot your server and test that you see your hostname:

root@mail:~# hostname -f
mail.shurn.me
root@mail:~# hostname
mail

Install and Configure BIND DNS


Install bind9

root@mail:~# apt install bind9 bind9utils

Edit /etc/bind/named.conf.options, uncomment the forwarders, and add DNS server IP:

forwarders {
8.8.8.8; 8.8.4.4;
};


The DNS server is hosted by Google. Choose your own DNS server if you have a preference.

Add the following to /etc/bind/named.conf.local:

zone "shurn.me" {
type master;
file "/etc/bind/db.shurn.me";
};
zone "0.0.10.in-addr.arpa" {
type master;
file "/etc/bind/db.0.0.10";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/bind/db.0.0.127";
};


Change 0.0.10 to the reverse of your first 3 octet of your IP address, and shurn.me to your top level domain name.

Create /etc/bind/db.shurn.me and add the following:

$TTL 604800
@ IN SOA mail.shurn.me. admin.shurn.me. (
20180217 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800);Negative Cache TTL
;
@ IN NS mail
IN MX 10 mail
IN A 10.0.0.168
mail IN A 10.0.0.168


Change the domain and IP address accordingly.

Create /etc/bind/db.0.0.127 and add the following:

$TTL 3D
@ IN SOA mail.shurn.me. admin.shurn.me. (
2 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D);Minimum TTL
NS mail.shurn.me
1 PTR localhost.


Change the domain accordingly

Create /etc/bind/db.0.0.10 and add the following:

$TTL 3D
@ IN SOA mail.shurn.me. admin.shurn.me. (
1 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D);Minimum TTL
NS shurn.me.
10 PTR shurn.me.


Change the domain and IP address accordingly.

Restart bind service

root@mail:~# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.

Configure static IP address in /etc/network/interfaces:

source /etc/network/interfaces.d/*.cfg
auto eth0
iface eth0 inet static
address 10.0.0.168
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
dns-search shurn.me
dns-nameservers 10.0.0.168


Change the domain and IP address accordingly.

Edit /etc/resolvconf/resolve.conf.d/base to the following:

nameserver 10.0.0.168
search shurn.me


CHange the domain and IP address accordingly. Then regenerate resolve.conf with:

root@mail:~# resolvconf -u

Download and install Zimbra


Disable firewall first:

root@mail:~# service ufw stop

Download and install the latest stable version of Zimbra. At the time of writing, the latest version is 8.8.8.

root@mail:~# wget https://files.zimbra.com/downloads/8.8.8_GA/zcs-8.8.8_GA_2009.UBUNTU16_64.20180322150747.tgz
root@mail:~# tar xf zcs-8.8.8_GA_2009.UBUNTU16_64.20180322150747.tgz
root@mail:~# cd zcs-8.8.8_GA_2009.UBUNTU16_64.20180322150747
root@mail:~# ./install.sh

Read the instructions and answer accordingly to your requirements:

Do you agree with the terms of the software license agreement? [N] y
Use Zimbra's package repository [Y] y
Install zimbra-ldap [Y]
Install zimbra-logger [Y] y
Install zimbra-mta [Y] y
Install zimbra-dnscache [Y] n
Install zimbra-snmp [Y] y
Install zimbra-store [Y] y
Install zimbra-apache [Y] y
Install zimbra-spell [Y] y
Install zimbra-memcached [Y] y
Install zimbra-proxy [Y] y
Install zimbra-chat [Y] y
Install zimbra-drive [Y] y
Install zimbra-imapd (BETA - for evaluation only) [N] n
The system will be modified. Continue? [N] y
Change domain name? [Yes] Yes
Create domain: [mail.shurn.me] shurn.me
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] y
Save config in file: [/opt/zimbra/config.12345]
The system will be modified - continue? [No] y


Note: This is an abstract of the full installation details. You may experience different installation path.
Highly recommended to set the admin password. Notifying zimbra of your installation is entirely optional.

Go to your favourite browser and browse to your domain like ://mail.shurn.me:7071. Take note of the port 7071, which is the administive login. Without it, you will be presented with the mailbox login.

Send and receive a mail and see that it works.

Installing SSL Certificate


Follow the instructions here to install certbot for your system.

Follow the instructions here for the script to automate letsencrypt installation, except the following:

Location of sudoers.conf


On point 4, the configs/sudoers.conf is located at /opt/letsencrypt-zimbra/configs/sudoers.conf. So you should run the command like this:

root@mail:~# cp /opt/letsencrypt-zimbra/configs/sudoers.conf /etc/sudoers.d/zimbra_certbot

Zimbra restart might fail


The maintainer has taken note that there is a restart issue at the time of this writing. As such, you need to manually restart zimbra with:

root@mail:~# sudo -Hu zimbra /opt/zimbra/bin/zmcontrol restart

zmlogswatch does not start due to Date::Parse not installed


If zmlogswatch does not start, check /opt/zimbra/log/zmlogswatch.out and see if it reports any error related to Date::Parse and Swatchdog. If it does, you should proceed with the installation. Then attempt to restart zimbra again. Obtain the URL from Swatchdog here.

root@mail:~# apt install build-essential
root@mail:~# cpan
cpan[1]> install Date::Parse
cpan[2]> install Time::HiRes
cpan[3]> install Date::Calc
cpan[4]> install Date::Format
cpan[5]> install Date::Manip
cpan[6]> install File::Tail
cpan[7]> install Term::ANSIColor
cpan[8]> exit
root@mail:~# wget https://excellmedia.dl.sourceforge.net/project/swatch/swatchdog/swatchdog-3.2.4.tar.gz
root@mail:~# tar -zxvf swatchdog-3.2.4.tar.gz
root@mail:~# mv swatchdog-3.2.4 swatchdog
root@mail:~# cd swatchdog
root@mail:~# perl Makefile.PL
root@mail:~# make
root@mail:~# make test
root@mail:~# make install
root@mail:~# make realclean
root@mail:~# sudo -Hu zimbra /opt/zimbra/bin/zmcontrol restart

Renewing SSL Certificate


You may set up cron job to renew the certificate. Edit your cron job file with:

root@mail:~# crontab -e


Add the following:

12 12 * * * sudo -Hu zimbra /opt/letsencrypt-zimbra/obtain-and-deploy-letsencrypt-cert.shsudo -Hu zimbra /opt/zimbra/bin/zmcontrol restart
Installing Memcache on Ubuntu 16.04 for PHP

Installing Memcache on Ubuntu 16.04 for PHP

Written on Fri, 24 November 2017

Installing Memcache on Ubuntu 16.04 is a breeze. All you need are just the right commands and everything is installed.

apt install memcached php-memcached

After that, you just need to restart apache.

systemctl apache2 restart

That's it. You can verify that memcached is installed and working with phpinfo().

Sonarwhal - The best linting tool, so far

Sonarwhal - The best linting tool, so far

Written on Thu, 23 November 2017

I have been using Sonarwhal to check my website for errors for quite a while. This is quite a useful tool to get your website checked for best practises and errors.

So far, I have managed to clear out many issues raised by the online scanner provided free-of-charge. The downside of the scanner right now, is that I cannot set rules. Like I can't ignore certain domains that are not under my control, thus it reports their errors. The other downside I face is also a timeout between scans. I like to scan each time I make a site modification, which can be seconds apart. You can install this tool on your local premise to overcome these limitations.

Some of the errors and best practises I have done are like HSTS, PWA, and other security headers. It's a good tool to use. Give it a try for free.

My Wedding of a Lifetime

My Wedding of a Lifetime

Written on Thu, 23 November 2017

So you are going to tie your knot with your soulmate. Before you go running to get your wedding planner, would you like to consider planning on your own like I did?

The advantages of a DIY wedding are obvious:
  1. Your costs is significantly lowered. My entire pre-wedding + wedding + honeymoon costs less than S$9000.
  2. You dictate every step of the wedding. I held a Minions theme wedding. I picked my location. I picked my style.
The disadvantages of a DIY wedding are also obvious:
  1. You pretty much do everything on your own. If you mess up, you're on your own.
  2. It can be stressful, given the sheer amount of work required. Give consideration to your wife before making this step.
  3. You might need to pick up some skills to get things done.

Disclaimer


There are many considerations for my wedding that may not apply to you.

  1. Traditions that no longer hold meaning is not followed. For me, a lavish 9-course dinner is meaningless other than to please my invitees. This is my wedding, not a dinner treat.
  2. Gifts are not required. Particularly in Singapore culture, where gifts are an unspoken expectation, I made it clear in writing that gifts are not required. You're here to witness me and my spouse's bond together, not to be my sponsor for my wedding+honeymoon. This is not a fund-raising event. Therefore, my heartiest thank you all who gave. Those who didn't, your witness is the most important thing I asked and hoped for.
  3. My in-laws were from overseas, thus, I could do much savings from staying over at my in-laws' place during honeymoon.
  4. My company provided much benefits, thus, I was able to reduce some costs from certain activities.
  5. My solemnisation date and wedding date are on different dates.
  6. I'm a web developer. I could do certain things differently to achieve the same goal.
  7. My wife is good with sewing.
  8. A lot of my friends helped.

Pre-wedding Preparations


Since I do away with a wedding planner, I totally did not spend ~S$2300 just to engage a planner. The good thing about a wedding planner is that they come with a wealth of experience. Knowing potential pitfalls and obstacles can truly be a event-saver. They will take the load of stress from the couple, so that the couple can just focus on getting happily married, with emphasis on happy. The one single thing that annoyed me most was that a wedding planner advising my invitees based on the projected gift values they bring, which goes against my deep-seated belief that my wedding is not a fund-raising event.

The first item in my list of preparation was to choose a restuarant that gave the most value-for-money. I'm not looking for a cheap place to hold my wedding, but instead, I'm interested in making sure my money is well spent. So I chose EatPlayLove cafe. This place provides a full wedding package at a very reasonable price. The package includes a wedding cake, decorations, and backdrop.

Looking for clothes was not so straight forward. We wanted to look our best. Shopping around sure took much effort. In the end, my wife's talent came to great use. She bought very simple clothes and little accessories to sew them on. On top of the savings, we were able to customise the decorations on our clothes. When we did a comparison of equivalent clothes along Bugis, we managed a savings of 30% average. The biggest savings was from Minions Theme clothes. A piece of Minion theme shirt costs about ~S$80, but buying off a simple shirt and Minion artwork costs a mere ~S$20.

What is a wedding without photos to keep as memory. In this category, we made great savings too. There were many photography packages, but most of them start from ~S$1000. But I'm a web developer, and I can design my own photo album. My good friend, Louis, offered to be my photographer for free. We spent an entire Saturday going to Henderson Wave, Resort World Sentosa, and Palawan Beach taking lots of photos with our own basic camera. Other than the mistake of a dirty lens and having inadequate lighting at night, the most of the photos turn out great! Now, even though Louis offered to do this work completely free, I gave a small gift of appreciation and every meal on the day a treat as a thank you. Never take unfair advantage of friendships. After having it specially designed by me into a unique photo album, I got it printed for S$40. I also specially printed specific photos for distribution for ~S$10. I merely spent a bit more than S$100 on this section.

As tradition, every wedding must have a ring. My wife and I agree together that a ring is more symbolic than the weight in resale value. Diamond and Gold have nothing to do with love. Diamond dug out of Earth is dirty, and, in come cases, bloody. Diamond can be made in a lab. So after much consideration, we settle for 2 Swarovski crystal on a silver plated ring, at an affordable of S$168.

Giving my guest for coming to my wedding as a memory is something my wife and I wanted. We wanted something memorable, usable, affordable, and Minion theme. After looking around suppliers and types of items, we find that a luggage tag has the right balance among all the criterias we set out. A gift costs S$225.70 for 70 pieces.

The Big Day


As formalities, I had to ensure my in-laws are in Singapore during the celebrations. The 2-way flight tickets for 2 person was S$505.70, from Jetstar. For accommodation, practicality, affordability, and prestige has to have some balance. My wife and I are also staying there, thus, budget is a little tighter. After a good look around, we find Aliwal Park Hotel to have the right balance. 150 metres from wedding venue, reasonably comfortable stay, convenient travel to bugis for shopping, and an affordable pricing of S$664 for 5 nights.

Being a great host to my in-laws was important. My wife and I brought them to River Safari. The entry was completely free as it was part of my working company benefits. We also visited Madame Tussad's Musuem and Trick-Eye museum. The tickets were purchased online and as a bundle, total costing us S$128.

Bringing 2 families together was an important part of our marriage. I organised a 6 pax international buffet for us. As I hold SPH Rewards Card, I was given a 1-for-1 treat at The Seasonal Taste @ The Westin. It was such a worth it deal, costing only S$310 instead of S$620. The food is simply delicious, although a bit too salty for myself.

We got a friend to be my wife's make up artist. Since we needed the artist for both the Solemnising and the Wedding, it was charged at $180 each. It included an additional accessory of S$10 which my wife gets to own it. I would consider the rate to be at the lower end of the standard. So it's actually very affordable when I compared it to others that went as high as $300 per event and accessories are only for rental.

Of course, the highlight is the wedding itself at EatPlayLove. Every one present for my event was my photographer. I specially set up our website @ thazin.shurn.me for uploading photos. In preparation for big amounts of upload, I signed up Filestack's Starter Plan, which costs about ~S$70 after currency conversion.

Our Honeymoon


A 2-way flight ticket for me and my wife to Myanmar costs S$390. I had the privilege of staying with my in-laws, thus I saved on that, for 4 nights. I got to thank my in-laws for preparing our bed and mosquito nets.

I clearly remember visiting Shwedagon Pagoda. Being a foreigner, I had to pay a small token fee to enter the premise.

I also managed to visit Thabarwa Centre. Seeing the poor and the needy moved my heart to give a small donation to the place.

Overall, I spent S$1000 + my flight tickets over at Myanmar. Most of the items are far more affordable than in Singapore. 4G internet connection is reasonably priced.

Other Expenses


Logistics was certainly a big part of our journey going from place to place. Most of my trips were taken care through Grab. The overall costs of logistics was about ~S$100.

Food for those involved in preparing for our big day was how we express appreciation. This costs about ~S$400.

A token of appreciation goes to our solemniser, Dr Eileen Aw, Justice of the Peace. For her effort to do us such a service, we gave her S$68 as gift of appreciation.

Thank You


Thank you for your presences, gifts, and help, everyone. You have made our important day most memorable. Your help has made everything possible.

Our wedding has been made most meaningful. Our family and friends effort shows that relationship is the most important part of life. No amount of wealth could have bought us something so priceless and precious.

Those who could not have made it, your well wishes are no less equal.

Expense Breakdown


I expect you are waiting for this. Some of the figures are deliberately inaccurate as a range to give respects to the recepient.

  • Solemnizer: $50 - $100
  • Solemnisation Dinner: ~$200
  • Apparels: ~$300
  • Photography DIY: $110
  • Ring: $168
  • Venue + Food:$2500
  • Wedding Cake: $480
  • Door Gift: $225.70
  • Hotel Stay: $664
  • Makeup Artist: $370
  • Family Dinner: $310
  • Madame Tussad: $128
  • Logistics: ~$200
  • Food (Others): ~$400
  • Flight Tickets: $905.56
  • Honeymoon: $1000
  • Total: ~$8000
About Me

Greetings Earthlings , Shurn the Awesomer is here to give you an awesome time.

This little site is a record of my life, opinions, and views. I'm mainly writing about Technology & Gadgets, Busting Creationist Myths, and other philosophical stuff.

This site is done using CakePHP.

Uptime

With this uptime, how much more can I be proud of to showcase to the world? This uptime monitoring is brought to you by StatusCake since 13th May 2017.

Copyright

I will always check for copyright usage before using any materials on my site. Whenever due, credit shall be given.

However, if you notice that I may have infringed on any copyright material. Please do not hesitate to contact me. All works of every artist deserves to be honoured and respected.