This Week I Learned 2017 - Week 52

Last week post and something from the current and previous years.

Last week of the year 2017. Is good to have some reflection by looking back at all the blog posts for the whole year. In total, including this post, I've written 75 posts, 17 more posts that last year. My plan for next year is hopefully even more post but on diverse topics rather than usual technical stuff.

Sedentary lifestyle is still an issue although how much I tried to get more active in my daily life either at my office and my home. The heatmap below illustrates that. Compare to last year, I'm comparatively less active. As you age, metabolism drop and lacking physical activity does impact you health someway or another. One good indicator is you gain more weight. Furthermore, you have to spend more money to buy new cloth. Having a pedometer does help but it's good you can have a weekly review of your daily steps taken. Having a weekly review on the step taken or exercises done is the plan for the next year. Adjustment through adding one or two micro habits into your daily life here. Awareness is the key here.

FOSS contribution? Unfortunately, still nothing much even though the daily commit streak was there. Is an ongoing battle on what to work on and pushing the first commit ahead. Although I've tried to created a few new project but didn't pursuit much ahead. My weekly reflection indicated that trying to do too many stuff at one time will make you overwhelmed and nothing much get done. The usual Analysis Paralysis symptom. Adjustment for 2018? Keep the daily streak but be more focus and set priority on what you want to do. Finish what you plan to do. If you can't, delegate or postponed it to a scheduled date, and move on to something else.

And this is how I plan to do in coming year of 2018.

Enough rambling, back to the usual stuff.

What did I miss? That probably the most important question you should either ask yourself or the domain expert in the pursuit of improving or mastering your craft. I've long seek the answer to this question. How good can you be? What is your threshold of your skill? The book The Talent Code did provide some answers (one of it is practice or the way how to practice but there is more to that). However, the missing piece is still how to sustain the curiousity to move forward, especially you've done the craft long enough and stuck in the "same sh*t different day" or "been there done that" mindset. This is very true when comes to software development where each year, some new techs were "rediscovered" again and again. However, this does not apply to professional sport where your genetic and age will play a crucial role in advancing your craft.

In MySQL, ON DELETE NO ACTION is the same as NO ACTION RESTRICT. Yet another quirk of our beloved MySQL database. Compare to the standard SQL or other real databases,  InnoDB storage engine does not supports deferred check, meaning that you can take no action on deleting a record during a transaction and resolve it before completing the transaction. Yay! Embrace the powerful feature of MySQL!

React is the future, inevitably you have to embrace it and add it to your front end development stack one way or another.

Betta Spawn Log : BSL20171231 : HMPK Marble (S) x HMPK Blue (S)

Our first successful breeding project.

Male: HMPK Marble (blue and white)
Age: 3+ months
Temperaments: Active.
Size: Medium (3.0cm body only)
Grade: C

We picked this male Betta of all the male because it was actively building, probably the largest bubble nest of all. Comparing its small size and the bubble nest size, we hoped to increase the probability of successful spawn. When we first bought this male, it's the only male Betta in the aquarium which was actively making a bubble nest in a very small jar. Active, mature adult, and healthy Betta fish build bubble nest all the time.

Female: HMPK Blue
Age: 3+ months
Temperaments: Aggressive
Size: Medium (3.0cm body only)
Grade: C

The female Betta was seen attacking other female within the community tank and we felt maybe this is the right female to start our breeding project.

Log Notes
Setting up the breeding tank. The usual aquarium plant, Indian Almond leave, floating plastic bag, transparent cup for the female Betta, and lastly the male Betta.

We were not sure whether the pair of Betta fish mated successfully, but from the top view, we can see the small fry (black dot) have appeared in the bubble nest. Note that we were using a small plastic bag cover to hold the bubble nest. Once we confirmed mating was successfully, both females (yes, we used both to create some sort of competition between the female Betta to encourage fertilization) were removed from the breeding tank.

The process of "cooking" BBS (Baby Brine Shrimp) as the food source for the hatched fry. It was a trial and error process where sometimes we didn't manage to hatch the shrimp. It was a lot of work and my SO took a lot of time to ensure all the fry were fed correctly.

We extracted the male Betta from the breeding tank. The male seemed very depressed and was inactive for quite some time. Most likely this was post-breeding depression as it was separated from the fry. After this incident, we decided to switch to leave father with fry breeding method.

Right now, all these fishes should be around 2.5-plus years old (see photo below). Therefore, we decided to move all the Betta fishes from the breeding tank to growing tank. Total fish count was 56. We were quite surprised by the number of fishes and initially thought that it should be around 20-plus to 30-plus. These juvenile fishes were quite happy with the additional spaces and were seen busy exploring the whole tank.

The setup of the growing tank was simple: 15 gallons aquarium tank, an air-pump filter (with carbon), Almond leaves extract and leaves, aquarium plants (Amazon Frogbit and Anacharis / Water Weed). We expect to change the water on bi-weekly basis, perhaps 25% changes.

We started to jar all the male Bettas as we noticed they started to fight each others and many were susceptible to damaged fins. How we wish we have more jar available at this hour.

We lost quite a few male and female Bettas from this spawn this month. We were wondering the root cause of infection due to irregular water changes or old age? The former reason sounds reasonable as Betta fish have a typical life span of 1 till 4 years.

1/ Our most successful breeding project. Unfortunately, the both the male or female Betta were not from the best genetic.

2/ While both the parent Betta was HMPK, all the male offspring breeded were HM. We suspected maybe the female Betta was actually a HM. Interestingly, most female Betta followed the genetic of male Betta, most white and light blue coloured.

This Week I Learned 2017 - Week 51

Last week post and something from the past.

One more week to go before the end of 2017.

The breeding process ended up with failure and our beloved one ended up in casualty due to stress and infection. Nevertheless, hard lesson learned and time to wipe out the whole population and try again.

Fender or Squier? Made in America (MIA), Mexico (MIM), China (MIC), or Indonesia (MII)? Is the year end now and there are plenty of sales going on at the local music store to clear the old stock. Found a Fender Standard Stratocaster Satin MIM with a good bargain price but how does it compare to Squier Vintage or Squier Classic Vibe? The price differences is negligible but the MIM Strat is pretty much the closest you can get to a MIA Strat although there are still quite a few differences.

When comes to Squier Strat, the rank of all Squier models according to the quality (worse to best) as follows: Bullet, Affinity, Standard, Vintage Modified, Deluxe, and Classic Vibe. If you've a budget constraint and still want to get something worthwhile, get the Standard Strat. If not, go for Classic Vibe Strat, especially the '60s if you like the classic rock. The build quality definitely worth it.

During my travel, pleasant surprise to find a Squier Vintage Modified Surf Stratocaster. While I'm not a fan of the looks of the pickups, the Duncan Designed LS-102 lipstick seems unique and new to me. Unfortunately, my tight schedule prevented me to taking her for a drive. Clearly, one of the six unique Squiers you need in your collection.

You have to have a system. The more you read, the darker it gets.

When integrating with different systems, the unit test have save my arse for so many times. Changes in the web service API and lack of support of Unicode. Encountered this error message while checking the log, "HTTP::Message content must be bytes ......", it seems that the web service API calls were having issue sending and receiving HTTP request and response in UTF8. A simple Unicode conversion when making HTTP request (encoding) and receiving HTTP response (decoding) should fix the issue. Surprised that REST::Client does not have handler to handle the HTTP request and HTTP response body content.

$req = HTTP::Request->new(POST => $endpoint);
$req->content_type("text/plain; charset='utf8'");

Judge Archer, ironically, the commentary is far more interesting than the movie itself.

It just dawned to me that this is so true. The lack of fundamental music theory is going lead you to great misunderstanding.
Most lead guitar parts are not chords. Typically playing in a band context will create a chord from multiple instruments, but that isn't always the case.

Betta Spawn Log : BSL20171210 : HMPK Marble (M) x HMPK Blue (S)

Our actual first Betta breeding project. So naive and so many mistakes made.

Male: HMPK Marble (M)
Age: 4+ months
Temperaments: Aggressive and majestic
Size: Small (3.0cm body only)
Grade: B

Despite the lack of colour formation, this male Betta was aggressive and majestic. Compare to other HMPK we have, the way it swam was quite different. It was patrolling the tank and protecting its territory. One thing we like was the body shape. It has large body head and slim caudal peduncle (near the tail). Note there was an issue with the colour of the photo shown below. This was a blue marble instead of purple marble.

Male: HMPK Marble (S)
Age: 3+ months
Temperaments: Active
Size: Small (2.5cm body only)
Grade: B

Nothing special about this female. Just a typical active female.

Log Notes
Saw some eggs in the bubble nest. We assumed the pair have mated.

The fry were seen swimming vertically. The male Betta was busy picking up the fry and relocating them back to the bubble nest.

We did not have BBS around and try to feed the fry with ground powder but we don't think this was working. Unfortunately, the fry did not survive.

1/ Before breeding, make sure you've proper food for fry ready like BBS. The whole spawn was wiped out due to hungry. Small pellet was not suitable as fry only eat anything that move. Even so, we should have try egg yolk instead.

2/ If the first pair did not mate, do not put in another female immediately. Let the male rest a bit. By doing so, we may contaminate the breeding tank and that was probably causing unnecessary stress to the male Betta leading to infection and subsequently, his death.

This Week I Learned - 2017 Week 50

Last week post or something from the archive.

Two more weeks to go and we can start the new year. Meet quite a few talented and inspiring people around. Wish I pick up illustration at a younger age. It never too old to try venture into something totally new.

The Second-system effect, where simple and efficient system was replaced by over-engineered systems due to personal agendas, preferences, and career advancement. The Mythical Man-Month book is within my reach and every time I saw the book cover, it reminded me of the profound insights of Fred Brooks. The Hack story at Facebook done everything correctly and to prevent such effect (Facebook should have just buy Zend last time and replace PHP with Hack instead). Software architecture is more leans towards theoretical, common sense, and management rather than practical hands-on stuff. Most of the recommended reading literature indicate this.

PostgreSQL Exercises. Yup, someone have helped me to check off one item of my bucket list. PostgreSQL should gain more traction and exposure comparable to MySQL. I'm glad someone made some contributions towards that direction. History always repeat itself, this time, unfortunately, the worse (MySQL) is always better.

License compliance. A concept so foreign for so many software house, let alone those startups or companies without even a human resource department.

Not really time management but mission, GTD, energy management, and automation.

Three girls in kitchen by William Gedney via (RD). When times were simpler and photography was manual, constraints, limited, and more humane. Roger May have a good write-up on his photography works.

Embroidery, potential new hobby for the coming new year? Example of a work (screenshot captured and cropped by me) by glazier-heart shown below. Not that hard, you just need patience and tracing ability. What if you combines your masterpiece with sarcasm and cynicism? Surely it going to be an awesome gift. Note to self, remember the Wheaton's Law.

This Week I Learned - 2017 Week 49

Last week post or something from the archive.

A few weeks ahead and we will reach the end of the year 2017 and embrace 2018. Slow week, lots of travelling and nothing much done. Interesting conversation with quite a few breeders.

Da Hu Fa is another good animation coming from China this year since the release of Big Fish & Begonia in 2016, preceded by Monkey King Hero Is Back in 2015. The Chinese animation industry comes a long way since the early days of Havoc in Heaven. It's still growing but still heavily influenced by Japanese anime in some ways and lack of the maturity and unique styles.

Interesting discussion on JavaScript itself with other developers. For RESTful API, use Koa.js (the development guide have some documentation), the next generation web framework for Node.js and the successor for Express.js.

Someone introduced me to Flow-based programming (FDP) and if you're using JavaScript, there is NoFlo. If you're from UNIX background, think FDP as pipeline or pipe and filter. Worth exploring and use it in your project? Well it depends, pretty much on the context or the type of system.

Looping and concatenating multiple arrays in Perl

Saw this code while searching through something and it caught my attention. Interesting way to concatenate arrays.
use strict;
use warnings;
use Data::Dumper;

my $a = [1,2];
my $b = [3,4];

my $c = [];
push @$c, @$_ for $a, $b;

print Dumper($c);

$VAR1 = [

Alternatively, you can write it as this way where we concatenate both arrays.
use strict;
use warnings;
use Data::Dumper;

my $a = [1,2];
my $b = [3,4];

my $c = [];
push @$c, $_ for (@$a, @$b);

print Dumper($c);

$VAR1 = [

However, if we have any duplicate items in both $a or $b, it will be merged as well.
use strict;
use warnings;
use Data::Dumper;

my $a = [1,2];
my $b = [1,2,3,4];

my $c = [];
push @$c, $_ for (@$a, @$b);

print Dumper($c);

$VAR1 = [

To resolve this, we need to remove the duplicate items in the combined array by using
use strict;
use warnings;
use Data::Dumper;
use List::MoreUtils qw(uniq);

my $a = [1,2];
my $b = [1,2,3,4];

my $c = [];
push @$c, $_ for uniq(@$a, @$b);

print Dumper($c);

$ perl
$VAR1 = [

This Week I Learned - 2017 Week 48

The usual last week post or something from the archive.

Down with fever and flu. At certain age, you really need to love your body as much as possible. On the bright side, I'm almost off the grid for the past few days.

The Best Monitor for Programming: A Cheap 40″ 4K TV. (via HN) Not really a good choice if you want to reduce eye strain and myopia. Also, you will need to have a good distance in order to get the actual benefits. However, definitely not for me. A large screen size is suitable for people who love to have multiple opened windows at the same time. I always prefer one window at a time.

The Diderot Effect. We all will experience this someway or another. Picking up a new hobby, for example, photography. Well, not only you're just getting the camera body only, you will purchase the whole system (complementary accessories), which includes bags, lens, filters, books, magazine, and etc. The constant upgrades will lead to endless hoarding. James Clear have recommended a few ways to manage Diderot Effect. The main take away are reduce exposures, prevent impulsive purchases, self-imposed constraints, and downgrade. The last strategy seems interesting. We're seldom downgrading on stuff we owned but constant pursuit for latest greatest.

CS007: Personal Finance For Engineers (via HN) Worth every minute of your time to go through the whole thing. We have been taught and educated on different types of mathematics but not really on finance. This should be the compulsory subject for all students. Start them young and early.

Emulate the SRV tones? Forget the about the budget and get his signature guitar, amps, and pedals. Or without bursting the bank, something more affordable. While having similar gears does getting you closer to emulate original tones, do know that how a guitarist play, hold, pick, and grip guitar have a huge influence on the tone. Furthermore, post processing have a big impact on the final sound and tone. However, something related, PixxyLixxx gave a good advice on why you should have a limit on how much you can spend on a guitar (in his case, is USD 300 with certain exception). Unless you're freaking rich, when you past certain age, different priorities in life set in. You should put the extra money in your kids college funds or fixing your house.

This Week I Learned - 2017 Week 47

Last week post or random stuff from the archive.

Certain kind of food and my body does not like each other. Age related issue or just simple bad food? On the bright side, got the well deserved rest. More travelling. I can check off one item in my bucket list. Write it down and make it happen.

Never let an inexperience personnel to change your guitar strings. Sloppy works causing the guitar can't stay in tune. How to get the new guitar string to stay in tune then? Just two simple ways. Stretch all guitar strings either vertically (YouTube) or horizontally (YouTube). If this still fail, then you have intonation issue, which is quite tricky to fix or some other problems.

Numerous people have recommend Nujabes, some claimed he is the father of chillhop. Definitely worth adding this genre to your daily playlist.

The fake Facebook profile industry. (via HN). Even in the early days of IRC chat. Social engineering at its best.

What are some interesting papers in CS for a beginner? So many papers to read yet so little time.

Probably the biggest unnoticed item in the cloud right now. AWS have shifted the hypervisor used for the AWS cloud platform, from Xen to KVM. While is may seems like a blow to Xen but there is another new virtualization solution based on Xen called LightVM.

Example of implementing a web development stack based on microservices. (via HN) Overly and unnecessary complex? Perhaps but it serves as a good example of what can be done but not really recommended.

Don't have proper exception handling in Perl? Use eval() then. I finally grok this `eval()` thing in Perl. Example as shown below.
eval {
     # code that might throw exception
     1;  # always return true to indicate success
or do {
    # this block executes if eval did not return true (bacuse of an exception)

    # save the exception and use 'Unknown failure' if the content of [email protected] was already
    # removed
    my $error = [email protected] || 'Unknown failure';

    # report the exception and do something about it

"Just use jquery. In a few years jquery will be rediscovered and praised all over again." While I don't think this is possible but it's funny as hell.

Fricking annoying preview mode in Visual Studio Code. Disable it.

React control and uncontrolled form inputs. Good for beginner to start with React.

That really says a lots about Silicon Valley, especially the part on a peculiar form of McCarthyism.

This Week I Learned - 2017 Week 46

Last week post or something from the archive. For something interesting related to a week, visualize your life in week. How many weeks do you still left?

So much things I've learned and observed this week. Some were the same old same old, others were quite eye opening instead, if you pay close attention.

Encountered this message, "expected, at character offset 2 (before "(end of string)")", when processing the JSON file during encoding. It turned out the root cause is how we use the read_file subroutine in File::Slurp module. Passing the right parameter, you can have multiple ways to either read the whole file or multiple lines. There even a research done on finding the optimized way to do do.

You’re working in the wrong place. (if you’re working in an open office)". When most of the employee are wearing headphones, that sufficiently shows that open floor plan have failed to reach its original intention, which to promote so-called information sharing and collaboration. Why open office don't work? Have you ever been to a library to study? If everyone keeps talking or making noise, do you think you can concentrate on your stuff?

The Amazing $1 Microcontroller. (via HN) The author should have written a book instead of a very lengthy blog post. I agree with the author, it's an exciting time for picking up electronic.

Looping through an array in JavaScript. A simple programming language construct, yet so many ways and workarounds. Add to that, you have JQuery way (.each()) of looping through DOM elements with its own quirk. Not to mention the let vs. var. No wonder so many JavaScript transpilers exists. And I was thinking PHP or Perl was bad, JavaScript is even more mind boggling. Forget about JavaScript, just stick to TypeScript which is gaining momentum these days.

The LEBRON stack. Anyone still remember the MEAN stack? I believe only Node.js survived the hype so far. Something similar, do you know Slack is using PHP for its server-side application logic?

Getting things done? (via HN) There are just two steps. However, till today, I'm still struggle with the execution of the system. Refine and more refine.

1/ Start something simple, the first step.
2/ You can stop if you want to.

This Week I Learned - 2017 Week 45

Last week post or something from the archive.

So many things to learn and yet, so little time. But once you've understand it, most of these stuff are rather quite straightforward.

The local startup scene have moved from the early days of cloning social network and shopping to the current day of big data, machine learning, artificial intelligent, and blockchain. History will repeat itself again as illustrated in Gartner Hype Cycle. The hype cycle will eventually die down and new shinny things will emerge again. Does the local startups works? Partly yes and no. Only time will tell.

SSDD. Probably the best term I can think of describing the web stack right now, especially on the front end part. Endless things "reinvented" or rediscovered again and again and again. One thing for sure, there is a clear distinctive separation between the Front End and the Back End development.

NBA Go, the finest NBA score from command line. Sadly, it still doesn't display well under different terminals and the dependency on Node.js. Is Node.js is the new PHP? Is Node.js going to dethrone PHP? Yes, my survey and gut feeling indicates so.

Agile Product Ownership in a Nutshell. It's going to be a long adjustment and readjustment process to get it done, if possible, right. Managing requirements and stakeholders expectations outweighs the implementation. Furthermore, it's even more challenging for flat organization with different geographical offices and working cultures. Interesting development indeed and can't wait for the growth and expansion.

MSP430FR2433. Another new board from TI.

This Week I Learned - 2017 Week 44

Last week post or the past stuff.

SMS bulk notification is a sunset industry right now in MY. I doubt people are still using SMS for communication except to receive notification from the banks, telcos, or something else. Companies or these value-added service providers are struggling to sustain their business and finding ways to pivot their core business to something else. However, I still fail to see how they going to evolve from there.

I've been travelling to a certain part of KL these days and every time I'm around that area, these service providers will spam me with SMS message relating to the services in that area. Suspected my telco provider have been sharing my preferences and location to these third party value-added service providers. Not to mention recent mobile data leaked.

Diet change seems to work somehow. Will continue with it and keep monitoring the progress.

Recent events, unfortunately, reinforced my prejudice regarding certain beliefs. The research summary shown below (emphasis added) best described it. Lesson learned. Move on.
"People are quick to change their moral values depending on which rule means more cash for them instead of others, a study shows. The researchers conclude that the "Pursuit of self-interest is tempered by the constraints of coordination. People seek not only to benefit themselves but also to persuade other people that they are morally right in doing so."
The "Rules' of Writing. (via HN) Definitely agree with the minimize the usage of adjectives and adverbs or better, kill it. Overuse is a sign of lazy writing, for examples:
"The man moved slowly."

Where you can rewrite using more vivid and stronger verbs.
"The man sneaked."
"The man strolled."
"The man limped."

Mastery is the side effect of deliberate and constant practices. You may or may not achieve it but nevertheless, if you enjoy doing it, then just continue as it. You can always start with technical writing.

What Python stack should you use? AWS Lambda, Python, AWS Cognito, Postgres and ReactJS. Interesting conclusion that goes against the bare-bone frameworks like Flask or Bottle.

Nature is both brutal and weird. What will happen when these eggs grow into mature adult bettta fish? (emphasis added by me)
"During and after spawning, the male uses his mouth to retrieve sinking eggs and deposit them in the bubble nest (during mating the female sometimes assists her partner, but more often she simply devours all the eggs she manages to catch). Once the female has released all of her eggs, she is chased away from the male's territory, as she will likely eat the eggs. If she is not removed from the tank then she will most likely be killed by the male."

This Week I Learned - 2017 Week 43

Last week post or the usual archive.

Lots of things I've learned and shared during the week. I sincerely hope the young lady who is starting a new chapter in her life is going to learn to invest her money wisely.

Seven years ago, there was one technical question that still lingered on. Due to some unexpected coincidence, I managed to revisit and solve it. The lesson learned here is given any web application performance problem,  if the bottleneck issue cannot be optimized further and the programming language lack of or stable support for asynchronous model, just delegate it to a message queue system.

Do you have the Learners Syndrome? Yes I do.

Where Do Old Programmers Go? The best, funniest, and sad answer is "They don't Go anywhere, instead they Rust?". But one question still remains, as Slashdot reader puts it (emphasis added by me). In the end of the day, is between money and legacy.
"Another who used to be self-employed coding for people on a consulting basis told me he got into woodworking, eventually. His reasoning? As you get older, you start asking yourself questions like, "What have I created that will be used and enjoyed by others even after I'm gone?" It's easy to sink years of your life into a software application, only to find that in a decade or two, nobody is using it anymore. It's become "old and obsolete". If you build good quality, hand-crafted furniture pieces? They're quite likely to be used for 100 years or more. Build a dresser for one of your kids and they may even be handing it down to THEIR kids."
How to write efficiently. Keep it short and simple.

Scott And Scurvy. Really long but worth going through the whole essay or you like the YouTube version of it. So much wasted efforts on focusing on the wrong stuff than we should just focus more on the medical and scientific research. Scurvy is a curable disease due to lacking of Vitamin C.

This Week I Learned - 2017 Week 42

Last week post or something from the archive.

Sweet old week 42. Another ten more weeks and we can conclude the year 2017. Things are getting more exciting. Switching different diet seemed to help somehow, even the complexion of old wounds was getting better.

21 years. That's is probably the longest overdue to-do item I've checked off this week. When I was young, Japanese Drama was a regular slot our local TV channel TV2. There was this drama and song which I partially remembered but can't remember the name or the casts. The tune have been humming inside my head for the past 21 years.

While building a play list of songs to test different amplifier or speakers, I stumbled upon a list old 90's Japanese opening theme songs. The first song on the list was the bloody tune that have been lingering in my mind for so long. The name of the song is "Ima Sugu Kiss Me (今すぐkiss me)" sang by the pop/rock band, Lindberg. You can safely ignore the awkward 90's fashion sense and MTV style. And the name of the drama is "Sekai de Ichiban Kimi ga Suki (世界で一番君が好き!)".

Dreyfus model of skill acquisition. One of the issue when picking up new skill is you may stuck at the advanced beginner level and can't move on to the next level. The joke about having ten years experience but doing the same thing ten times clearly illustrates this sad but truth scenario. How you know you're stuck in the advanced beginner level? Observe your seniors who have work much longer than you. Refactor your wetware is one of the possible way to overcome this.

Philharmonic Audio Affordable Accuracy speakers. Some knowledge on electronic and speaker design does help to improve an existing good enough speakers to excellent level. Again, sadly we can't get the parts here in MY.

The Farmer's Horse by Alan Watts. Not really much about the lesson of the story but the origin of the story. I've read this story several times and there are several versions. Some believed this is an old Chinese parable but I don't remember reading this story in any ancient Taoism literature. There are always stories from second source rather than the primary source. I was wondering what is the primary source of the story?

Vim after 15 years. (via HN). Time to clean up my Vim configuration again.

The ES9038PRO DAC chip (details from manufacturer). Never buy product by the brand, always look into the component used. Compare the specifications and features and purchase according to your budget. However, product based on this DAC chip is still rather expensive. Can't wait to get myself on any cheaper DACs based on this chip from China to test it out like the TFT HifiDuino project. Comparable, you also can get DAC using the AK4497EQ chip.

Coursera - Writing in the Sciences - Week 4

Continue with week 4. I've been quite behind the schedule and needs to stick back the schedule. Managed to finally sit down and went through all the week 4 modules in one session straight which took me around 3 hours. For the coming weeks, I should be able to get back on track.

4.1 More paragraph practice
The key take away from this module is emphasis on paragraph. Two important things:

(1) What's the paragraph about?
(2) What's the main idea or important points?

Good exercise to learn this is to summarize the main idea of the blog posts, papers, or other published literature. Webshit Daily is a good example of such writing with humour and sarcasm.

When you've a paragraph with complex idea, we can represent the concept as table or diagrams. As they said, a picture is worth a thousand words. If there are repetitive words or ideas, shorten it to take away the repetition. Wordiness may also leads to ambiguity, rewrite it to become more specific.

When to use passive voice? When it doesn't matter who did it.

Use "However" when you want to contrast something in the previous sentence.

One paragraph should contains one main idea. If you have two ideas within a paragraph, rewrite it into two paragraphs instead.

A paragraph can contains 1 - 3 sentences. Yes, there a paragraph with one sentence. I always think that a paragraph should at least have four sentences. One topic sentence, two supportive sentences, and one final concluding sentence.

4.2 Overview of the writing process
The main point is how do you approach writing? There are three major steps:

(1) Pre-writing.
A process of collecting, synthesizing, and organizing your data and ideas of your writing.

(2) Writing the first draft.
Turn the ideas into complete sentences. Writing should be fast and quick. Fsck grammar!

(3) Revision.
Revise to make it sounds better.

As a writer, you should follow the three steps in a sequential manner. Don't do two steps in one time. Multi-tasking is always bad! For example, start writing without much research is a typical approach by most people but this is not recommended. Not only this will stress you out, you are also prone to distraction as you're busy googling and doing something else. As you all know, googling for information will often leads to other unproductive online activities like reading news, checking social media status, and others. Also, when you're focus on the details of writing, you will lost focus on the big picture. Therefore, invest more time in pre-writing step.

Similarly, do not carry out writing the first draft and revision at the same time. Fsck grammar! Just make sure you have written down the ideas in complete sentences. Is okay you've wrong grammar, spelling, or the sentences do not sound good. That is for the last step -- revision!

The next question is how much effort or time we should spend on each step? The recommended breakdown are as follows:

- Pre-writing (70%)
- Writing the draft (10%)
- Revision (20%)

See how important the pre-writing process is. While going through this module, I've realized that my approach to writing, especially writing for learning should follow in this sequence!

4.3 The pre-writing step
Again, remove the bad habit of writing and gathering information simultaneously. Focus on gathering information. Don't starting writing unless you've gather and organize the information. If you have a sense of overall structure of your writing, then you can proceed to the next step.

To have an overview, use several available organization system. For example, mind map or road map so that you've an outline of the overall document. By organizing the ideas, you will know what are the missing pieces and what to search next. This process will take a while. If you're stuck, do something else. Subconsciously, the missing pieces will come to you, eventually in one way or another. Always carry a recorder, a pen, or any capturing ideas tools. You can even put a water proof whiteboard in your bathroom.

When come to organizing ideas with different viewpoints, group the arguments. For example, you can group the ideas by those who support it, the counter arguments, and the rebuttals.

4.4 The writing step
Just write. Fsck grammar or spelling or what ever style. Convey your organized ideas into complete sentences. Focus on the logical organization of your ideas. Best to set a timer on this so that your priority is to finish the writing instead of doing any revision or editing.

Do not edit your writing. Just write it down!

4.5: Revision
Six important steps which will improve the revision process. These are:

(1) Read your writing out loud.
The main purpose is to identify awkwardness in your writing. When the writing sounds good, then the reader will appreciate the natural flow of the writing.

(2) Do a verb check.
To make sure your writing is expressed in a direct way, underline all the main verb in each sentence. There are three issues with verb:

(a) Lackluster verb. For example, "are".
(b) Passive verb. For example, "was".
(c) Burried verb. For example, the main verb is too far from the subject. We have discussed this in previous week.

(3) Don't be afraid to cut.
Identify these issues to improve your writing. Those marked in bold are my bad writing habit.

(a) Dead weight words or phrases.
(b) Empty words or phrases.
(c) Long words or phrases.
(d) Unnecessary jargons and acronyms.
(e) Repetitive words or phrases. 
(f) Adverbs. (very, really, quite, or basically)

(4) Organizational review.
Tag the paragraph of your writing. Each tag is a summed up main point of the paragraph.

(5) Get outside feedback.
As the reader with or without the domain knowledge for feedback. The reader should be able to identify the main point, the take-home message, or the significance of your writing. If they are unable to do so, ask them to identify the part which are hard to grasp. Their feedback is the focus of your revision.

(6) Find a good editor.
Someone know have the domain knowledge and good in writing.

4.6: Checklist for the final draft
Finally, before sending out the writing to the editor or journal, go through these check list below to ensure consistency and accuracy.

(a) Check for consistency.
You writing style and so forth.

(b) Check for numerical consistency. 
For example, is the writing match the result in the table? Sometimes, sloppy copy and paste can cause inconsistency between the numerical data and the writing.

(c) Check your references.
One main issue is citation propagation where the writer back his/her statements based on a secondary source instead of the main source. Always do fact checking and reference to the main source.

Learning Objectives
(1) Practice writing clear and concise paragraphs.
Some common tips.

(2) Describe the steps in the writing process.
Most important lesson learned here. Pre-writing is so crucial that we also neglect it and do it together with writing. There will be no writing until you have completed the pre-writing step.

(3) Recognize the importance of spending sufficient time pre-writing.
This learning note was done in such way where I jot down the ideas which took me 3 hours. The writing was fast and it took around 1 hour.

(4) Recognize that good writing requires extensive revision.
Read, review, revise, and repeat.

This Week I Learned - 2017 Week 41

Last week post and something else from the archive.

Slow week. Too many pending stuff that needs my urgent attention and got sidetracked into firefighting some unplanned work.

So much I've learned regarding audio stuff. Some are hard lessons. First, active (or powered) and passive speaker have different features and usages. When you're getting a standalone DAC or DAC/Amplifier combo, make sure the DAC have enough output terminals. For example, passive speakers need two pairs of left and right output terminals where each pairs is channeled out to each speaker. Good comparison is the popular JBL LSR 305 and Pioneer SP-BS22-LR. See screenshots of the input terminals for each speaker.

The JBL LSR 305 only have two types of input, XLR and 6mm jack.

Meanwhile, the SP-BS22-LR have both positive and negative terminals. You will need to connect speaker wires to transfer the sound signal to both left and right speakers.

Second hard lesson. Not all amplifiers are created equally. Bookshelf and tower (floor-standing) speakers needs different output watts to produce optimal sound output.

After so many days, managed to finish Neil Gaiman's American Gods  book. Sadly, the TV series does not really live up to the book expectation (maybe due to limited budget?).

Use the `git stash` command correctly. Differentiate between `git pop` (apply and remove) and `git stash` (apply and keep in stash cache).

This Week I Learned - 2017 Week 40

Last week post or the usual archive stuff.

Week 40. Twelve more weeks to go before the end of the year.

The case against open office when people just copy without including the subtle details of the design and layout. While many organization sugarcoat the many benefits of of open office layout, the main advantage is the organization save a significant money using such layout.

200 productive hours per month? (via HN) Research shown that it's possible on daily basis, if a worker can concentrate 4 hours on deep work and remaining 4 hours on shallow work (meetings, random discussions, surfing, and slacking off). However, deep work requires more solitary environment, which is not possible in a open office environment.

Via Reddit. You always have to be suck at something before you can be better at it as shown in the quote below. But, unless you're constantly improving, you will stuck at the expert beginner level.
"Successful writers are people who allow themselves the freedom to suck—unrepentantly, happily, even."

What are the best combination (budget and feature wise) to setup a desktop music system? Below are the list of components:

(1) JBL LSR305 active speaker
(2) Lexicon Alpha audio interface / Behringer UCA222 / HIFIME(DIY) DAC
(3) XLR-to-3.5mm cable / TRS-to-3.5 mm cable / XLR male to RCA male cables

You should look into the issue of balanced audio.

Slashdot is 20 years olds! Ironically, good discussion was found in HN instead! I found the site when it was going through it second year and getting more popular due to discussion of FOSS. And off course, those idiotic memes, Anonymous Cowards, and BOredAtWork comments. Man I feel so old.

Audio gd is an interesting audio equipment manufacturer. The website still looks like those site Geocities era and you have to wait for a while for your order to be processed and built. While relatively unknown in some part of the world, Audio gd is one of those China manufacturers who build good audio equipment or parts.

How to increase gain in FX-Audio DAC X6. Some Redditor found a tiny little hack that increases the overall gain of the amplifier.

Coursera - Writing in the Sciences - Week 3

Last week, I've learned two important things, using strong verbs and cut unnecessary words. However, due to schedule conflicts, I'm way, way behind the schedule with week 3.

On a side note, interestingly, I've managed to organize the note in a more visually pleasant way. My future blog posts will follow such visual style.

3.1: Experiment with punctuation
Why use different punctuation? To vary your sentence structure so it won't become boring and monotonous. However, the examples and discussions in this module are quite limited. I've googled around for better one.

Different punctuation marks have different separation power. Below are the list starting from the lowest to the highest separate power. Read aloud when you use these punctuation marks, it will help to focus and stress on which part of the sentence.

This module will focus on the middle four (emphasis in bold). Dash and parentheses are less formal, use when necessary.
- Comma (shortest pause)
- Colon (bigger pause than comma)
- Dash (bigger and more abrupt pause)
- Parentheses (slip something extra into a sentence)
- Semicolon (near complete stop because it separate two related sentences)
- Period (complete stop)

(1) Dash
I seldom or never use this punctuation mark. Two purposes: to add emphasis or abruptly insert a definition. We can use dash to replace either commas or parentheses. Good example to compare three different usages.
"The food, which was delicious, reminded me of home."
"The food—which was delicious—reminded me of home."
"The food (which was delicious) reminded me of home."
(2) Colon
To main purpose is to introduce a list, quote, explanation, conclusion, or amplification.

(a) To introduce a list.
"I have three sisters: Daphne, Rose, and Suzanne."
Another example I love using number in the list.
This research follows four distinct phases: (1) establishing measurement instruments, (2) measuring patterns, (3) developing interventions and (4) disseminating successful interventions to other settings and institutions.
(b) To amplify and extend independent clauses where the second explains the first.
"He made three points: First, the company was losing over a million dollars each month. Second, the stock price was lower than it had ever been. Third, no banks were willing to loan the company any more money."
(c) To explain and amplify.
"After three weeks of deliberation, the jury finally reached a verdict: guilty."
(3) Semicolon
Something that I never use in my writing. I still can't seems remember or use this properly. Surprisingly, you can interchange period and semicolon! Use semicolon in these two situations:

(a) To connect two independent clauses (an independent sentence which contains a subject and a predicate), typically between the transition words (emphasis in bold).
"Mushrooms grow very quickly; in fact, after a good rain, it takes only a few hours and you start picking them."

(b) To separate series of items where items in the list contains internal punctuation. For this case, a comma.
"Science fiction includes Star Trek, with Mr. Spock; Battlestar Galactica, with its Cylons; and Star Wars, with Luke Skywalker and Darth Vader."
As a visual cue to group items in a list. I always have problems when describing a list of items with adjectives.
"I bought shiny, ripe apples; small, sweet, juicy grapes; and firm pears."
(4) Parenthesis
Use this when you want to put optional sentence fragment in your sentences or don't want to break the flow of your sentences, an afterthought. I'm referring to my own typical writing.

(a) To specify date in the sentence where you have extra comma which will break the flow of the sentence.
"We will schedule our appointment on this coming Sunday (24th September, 2017)." 

(b) To write informally or as an interjection, a style I commonly used.
"Anyone can afford (ahem, cheap!) the amplifier."
3.2: Practice, colon and dash
Still needs more practices to nail this down and it's quite hard to remember all the rules.

3.3: Parallelism
Also known as Parallel Structure. Definitely something you may encounter before but never know its actual name. Some good examples found in proverb:
"Easy come, easy go."
"No pain, no gain."
"Sometimes you win, sometimes you lose."
"One man's trash is another man's treasure."
"A bird in the hand is worth two in the bush." 
Two common types of Parallel Structure:

(a) With the -ing form (gerund) of words.
"Mary likes hiking, swimming, and bicycling."
(b) With infinitive phrases.
"Mary likes to hike, to swim, and to ride a bicycle."

3.4: Paragraphs
The key concept here is "1 paragraph = 1 idea". To elaborate, good paragraph is short (3 to 5 sentences) which encourages more white spaces (good for readability).

Apply the inverted pyramid style (see image below), similar to newspaper writing style where you put most important information at the beginning of the paragraph or writing. In the web, this is known as clickbait title.

Good paragraphs can consists of three things:

(1) Logical flow of ideas.
Three types as well, sequential in time, general to specific, and logical arguments.

(2) Parallel sentences structures.
We have discussed this earlier.

(3) Transition words (use with cautious and as simple as possible)
We use transition words in a sentence to indicate "changing gear". Popular transition words is "but", simpler than over exotic one like "on the other hand" or "nevertheless". But I'm surprised that she recommended to use two transition words ONLY:

(a) But, to signal a change of discussion.
(b) And, to further discuss some additional information.

Do not start every sentence with transition word within a paragraph. You can write beautiful flowing paragraph without using much transition words.

Focus on the first and last sentence in a paragraph. These are the only two things a reader will remember.

3.5: Paragraph Editing I
Some general advice from this module.

(1) Don't overuse transition words.
(2) Identify the main idea of the paragraphs.
(3) Identify the supporting ideas of the main idea.

One good example from the editing which illustrates brevity and reduce wordiness.

"Although the methodological approaches are similar, the questions posed in classic epidemiology and clinical epidemiology are different."
"Despite methodologies similarities, classic epidemiology and clinical epidemiology differ in aim."

3.6: Paragraph Editing II
When editing, outline the existing paragraph into several main points or sentences. Reconstruct these main points to replace the existing paragraph. The editing is shown below. It dawned to me that reviewing and editing other published literature is also crucial step to become a better writer.

Another example but shorter. However, if you pay attention to the editing, the main reason for wordiness is because the author wants to vary its writing and sounds intelligent (we discussed this is earlier post) and this impacts understanding.

3.7: A few more tips
In this module, Dr. Kristin raised an important question that I've encountered in most of my writing- repetition. To fulfill the number of pages in your writing assignment, you will inadvertently rewriting the same idea in different ways or using different words. How do you know? If you need to use thesaurus to find synonyms to avoid repeating a word in a sentence or paragraph, then you have the wordiness issue. For example, within the same sentence or paragraph, you find the words "illustrates" or "demonstrates". Another example, is "banana" or "the elongated yellow fruit". The second example is known as Elegant Variation. I have mixed feeling on this second example because for normal writing, it does add variety to writing.

If you are aware of such writing behaviour, ask yourself these two questions:
(1) Is the second instance of the word needed?
(2) Is the synonym of the word is better than repeating the word?

There are exceptions. Keywords in scientific writing can and should be repeated as those are the key concept of the writing. For example, anything in abbreviation list should be use consistently.

Learning Objectives
(1) Practice using colons, dashes, parentheses, and semi-colons.
Read it aloud and identify the duration of the pause. Then, pick the right mark punctuation.

(2) Recognize the importance of varying sentence structure.
Look into varying your transition words.

(3) Practice writing focused, organized paragraphs.
Look into Inverted Pyramid Style.

(4) Recognize that it is OK to repeat key words in scientific writing.
Look into the issue of Elegant Variation.

(5) Fix sentence parallelism.
Consistency is the key here. Follow the same sentence structure within a paragraph thus increase the cohesion.

This Week I Learned - 2017 Week 39

Last week post or the old archive.

Picking up lots of audio related stuff. Interesting week indeed.

Building a audio system but worry that your spending will lead to a serious discussion with your significant other(s)? Pay an acceptable amount on your credit cards and the remaining amount by cash. The audio sales person suggested this "workaround" for all his client who worry about their spending being known to their significant other(s). Interesting indeed. On self-reflection, if you worry your spending will cause an issue with your significant others(s), then you should not even spend that amount of money.

Buying headphone but low on budget? Doesn't have a trained ears or the time to test through all available headphones? Get Superlux HD668B, definitely worth every cent of your money!

One interesting trend with audio shop in MY is the emerging of community oriented stores. Currently, Starpickers and E1 Personal Audio are the two good example of such type of stores. Chill environment and good place for local audiophile meetup.

Klipsch R-15PM powered speaker (also known as active speaker). Worth it? Not with a retail price of MYR 2600. Unless you have extra cash to burn, have (going to build) a vinyl records collection, and love a minimum setup (no need extra amplifier, receiver, or DAC) with different input sources (TV, PC, Bluetooth, and Phono). Suitable for neat freaks who like clean setup where you have a pairs of speakers which can connect to to any electronic devices that generate sounds. Furthermore, JBL LSR 305 is still a better choice, sound and money wise (you can get it from Massdrop around MYR 1500 inclusive of shipping).

Stoner Acoustics UD125 is a locally made DAC and headphone amplifier. Price is set around USD 85 or MYR330. While I'm tempted to get it and support our locally made product, is it worth the money?

As I learned by reading blog posts and watching videos on different DACs and amplifiers, the product is as good as the components. While there is no information on what brands of capacitor used, the key electronic components are (1) Savitech SA9037 USB Audio Processor. The audio chip. I can't find any information on this except there is another audio chip using model number SA9027. (2) Asashi Kasei Microdevices (AKM) AK4490 High Performance DAC. (3) Texas Instruments (TI) TPA6120A Dual Channel High Power Amplifier.

When comes to reviewing and modding the Nobsound MS-10D Tube Power Amplifier, this guy knowledge sharing and follow ups is simply epic. We need more producer rather than moocher in this world.

Why you shouldn't spend money on cheap amplifiers or DACs. Be careful SMSL stuff as it's notorious known for creating spark when plugged in. Just get Lexicon Alpha and JBL LSR305s.

Upgrading to Ubuntu 17.10 Artful Aardvark Beta

Since Ubuntu 17.10 have reached its final beta (Canonical going to release it by Oct 19), might as well upgraded my lappy from 17.04. The upgrade process still took quite a while but so far no show stopper issues.

Upgrading to beta release is quite straightforward, just type this command.
$ sudo do-release-upgrade -d

Release details with Linux kernel 4.13.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu Artful Aardvark (development branch)
Release:        17.10
Codename:       artful

$ uname -a
Linux thinkpad 4.13.0-12-generic #13-Ubuntu SMP 
Sat Sep 23 03:40:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Some issues encountered or observations after the upgrade.

(1) Invalid MIT-MAGIC-COOKIE-1 key Cannot open display ":0"
The leftover issue from switching to Wayland from X? Resolving this by removing the `.Xauhority` file.
$ rm -rf ~/.Xauthority

(2) Gnome Shell was noticeable slow.
I'm currently running Gnome 3.26 but it was considerable slow compare to previous version. Maybe this was due to switching to Wayland?
$ gnome-shell --version
GNOME Shell 3.26.0

(3) New Setting application.
I never pay much attention, but the new settings layout have switched to a side bar style, which is more easier to read and find. Seems to be influenced by mobile devices?

(4) Shutter, the screenshot application is broken.
You can't capture screenshot using Shutter anymore as Wayland does not allows an application to capture the content of other application (security reason). Unfortunately, you have to use Gnome Screenshot, which have limited functionalities (you can't bloody capture the screenshot of it self).

This Week I Learned - 2017 Week 38

The usual stuff or last week post.

Long weekend holidays. More rest and clean up.

Fluff in Scientific Writing by Celia M. Elliott (PDF). Right, I definitely write in a fluff way. Awareness is the first step to improve your own writing.

So you have a pair of passive speaker. What now? The next step is to get a DAC and an amplifier. Or you can get a Class-T amplifier with build-in USB DAC and headphone amplifier combo like Topping TP30-MARK2. The USB DAC let the amplifier serves as an external sound card so you can channel out the sound from your PC through the USB.

As I learned in the last week post, the quality of any amplifier is the whole sum of its electronic components, especially the amplifier chip and capacitors. Screenshot below illustrates the PCB board and its components. Unfortunately, the amplifier chip is Tripath TA2024, which push about 15 watts per channel, a bit lacking for bookshelf speakers.

SMSL SA-36A PRO, while it's a affordable and quality amplifier, has two different versions. To save cost, the manufacturer have switch the amplifier chip from Texas Instrument TPA3118D2DAP to STMicroelectronics TDA7492PE. The general consensus from the reviews and forum discussions recommended to get the TPA3118 version. Maybe the SMSL get a better pricing from STMicroelectornics or Texas Instrument cannot keep up with the demands. This also reminded me of certain manufacturer which produced quality and affordable first generation of said product to get good rave reviews and slowly replace with cheaper components for next generation.

Unfortunately, SMSL SA-50 is currently out of stock and I can't find it in the SMSL website. Maybe SMSL decided to phase it out from the market? What about SMSL SA-60? It's not shown in the official website as well.

Neurochome's LM3886 done right? The correct amplifier design compare to others like Circuit Basics or Electronics Lab. I believed Tom Christiansen's experiences at Texas Instrument allows him to design the most optimized audio amplifier using TI LM3886 amplifier chip.

YouTuber FFcossag channel is what I consider good review, teardown, and educational on a particular amplifier. Good example was how he evaluated through the specification of Breeze Audio TPA3116 as shown below. Even better, his videos are in public domain! While we need to absorb and digest large unknown information, his does provides a quantitative (objective) rather than qualitative (subjective) analysis of an amplifier. Sometimes, it sounds nice to the reviewer is a personal taste.

While we're on Breeze Audio. Be extra careful when you plug in the power supply. One reviewer, NFM popped and burned one of the capacitor while testing it. Luckily he was protected by the aluminum case. Be extra careful with all these low end amplifier, supply lower power to the amplifier or you switch the capacitors to a higher voltages type. It does raises quite a lot of safely concerns with all these low cost amplifiers (no quality control, cheap or cloned electronic components) from China.

FFcossag also provides another excellent objective review on popular Lepai LP-2020A+. See video below. While the amplifier is way under-power compare to what the manufacturer claimed in the spec sheet, it's still value for performance worthy amplifier. However, the same problem exists. You can't bloody get this amplifier in MY and have to try your luck sourcing it from China.

Similarly, he also trashed the Lvpin LP-838 and make the consumer aware of what are they getting of buying a cheap amplifier. To save cost, certain manufacturer will reuse or recycle certain components. Is it safe? Hard to tell but it certainly does not increases any confident (more on this later) in using the product. Be an informed buyer, buy from reputable dealer and brands.