This Week I Learned - 2016 Week 04

In case you miss out, last week post.

#1 Shōwa Genroku Rakugo Shinjū (official site). Caught my attention with its unique and mature story line. Definitely way different from the regular shounen action anime. Basically a story about the journey of an apprentice rakugo storyteller. The fast paced dialogues and art style reminded me of The Tatami Galaxy (Reddit discussion).

#2 Mobile Suit Gundam: The Origin (official site). Probably the next anime series I like after the Mobile Suit Gundam: The 08th MS Team in Gundam franchise. Love the old school animation and original characters design. For some amusement, there is a good discussion on the worse Gundam protagonist.

#3 Social media friends are mostly fake (Reddit discussion). Agree with one of the comment. There is a distinctive difference between a contact and real friends. You should treat all social network as contact list for networking purpose, nothing more and nothing less. Real friends should be interacted through physical life.

#4 Empanada. So this is "Mat Salleh" (Portuguese to be exact) name for Malaysia snack called "karipap" or "curry puff". Knowing this makes me craving for the Empanada, especially those large one with filling of sweet potatoes, chicken meat, and curry spice.

#5 The Bookbinder. Remember before you submit your final thesis or dissertation you need to bind it with fabric or fake leather cover and gold foil lettering or seal? The video illustrates the step-by-step process to do it.

#6 How to create and apply patch in Git. Till today, I still can't remember how to do it properly.

#7 Conversational Commerce (HN discussion). I've noticed that the Social Network is slowly being replaced by Social Messaging. Are we going to the days where ICQ/AIM and IRC were once popular?

#8 PostgreSQL Query Plan Visualization (HN discussion). The most aesthetic visualization of PostgreSQL's execution plan for a SQL statement through the EXPLAIN command (more explanation on its usage). Which is also inspired by another tool explain.depesz.com. Unfortunately both are web-based tool where sometimes not applicable if you've sensitive SQL queries that should remain confidential.

This Week I Learned - 2016 Week 03

In case you miss out, last week post.

#1 The Happiness Code. Using rationality to overcome bad mental habits. For programmer, is like identifying the bottleneck of a legacy system and then refactor and optimize it. In other words, hack yourself. I agree with one of the comment, seems like a rediscovery of Cognitive Behavioural Theraphy (CBT) to me.

#2 The Akrasia Effect: Why We Don’t Follow Through on What We Set Out to Do. (HN discussion) Struggle with self-control and making bad decisions against your best interests while knowing it? You're in Akrasia state. Procrastination is an exemplar of such self-denial mental state. There is a step-by-step visual guide on beating procrastination through identifying your motivation. I firmly believe that motivation is related to willpower as written by Roy Baumeister in his book, Willpower: Rediscovering the Greatest Human Strength. Strong willpower correlates with keeping yourself healthy though enough sleep, adequate exercise, and stress management.

#3 Upgrade to Ansible 2.0. Already encountered one showstopper bug, fixed but does not seems release out yet. Also, more explicit deprecation warning of using 'sudo' instead of 'become' as privilege escalation method. Lots of changes needed for my dotfiles using Ansible.

#4 Can't boot into graphical login by default through Systemd and Lightdm seems corrupted. It seems I've messed up my Ubuntu installation after I nuked the Gnome 3 and reverted back to Unity desktop. I'm too accustom to SysV init system and it going to take a while for me to get acquitted with Systemd. Need to remember the runlevels used as runlevel 1 (rescue.target), runlevel 3 (multi-user.target), and runlevel 5 (graphical.target).

#5 ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded. Weird behaviour when I downgrade from Maria 10.0 to MySQL 5.6, MySQL client login as root won't work. When come to reading multi-pages forum post, never try the first solution purposed. Always start reading from the last page and moving backward. It seems this was due to leftover configuration of MariaDB where authentication using UNIX socket is not enabled by default. Purged both MariaDB and MySQL and installed PerconaDB instead. However, even PerconaDB has its own rather idiotic issue with AppArmor.

#6 The sound of the dialup, pictured. Bring back all those nostalgia memory of connecting to the Internet using your dial-up modem. I still remember the agony and disappointment when the download failed at 99% and can't be resumed. So close yet so far.

#7 We all should get a FitBit or something equivalent. Our body always trying to tell us something but we tend to ignore it. Use this as a monitoring tool to 'listen'. It's alarming that the lack of quality sleep can have such damaging effects to our health and shorten our lifespan.

#8 What 20 years difference makes. With passion, fueled by persistency, and self-exploration and guidance, one can live up to his/her childhood dream. The 10 thousand hours rule at work here.

#9 Working with CSVs on the Command Line. Using common Unix utilities (cat, grep, awk, and the like) to manipulate CSV file. Similar post that describe the usage but grouped by intention. There is also more refine CSV processing console tools like csvtool, csvfiltercsvkit (the equivalent GUI version is OpenRefine), txt-sushi, and tabulator.

#10 Have a Panda's Series or DataFrame? You can sort both data structures either by index, using sort_index() or by values, using sort() or sort_values().

This Week I Learned - 2016 Week 02

In case you miss out, the last week post

#1 Code-Switching to Improve Your Writing and Productivity. A discussion of ways to prevent yourself from fixated or "over baking" on your work while writing or coding. The gist of the approach is the switching between different writing assignments regularly. Just write and keep the momentum going.

Note: I've just realized while writing this post, I was applying her approach where each item in this post is a different topic for me to explore, investigate, learn, and jot it down concurrently. I was jumping between the items.

#2 The Best American Essays. You can find the list of essays for the year 2015. As stated in #1, to improve your writing, you need to read, learn, and mimic from the best essayists.

#3 The Easy Way To Learn Hard Stuff. To master any skill (in the context of programming), build stuff and built it starting from day one! Don't be obsess with elements (syntax and semantics) of the programming languages, use these elements to build something. In other words, don't focus on the tools, use the tools for all its intended purposes. For more general disciplines, the Coursera's course on Learning How to Learn is a good place to start. Plenty list of researched learning techniques.

One such technique is read, recall, and write it down (HN dicusssion) or similarly PQRST method. There is a worries that rote learning may lead to mere memorization, but without the information inside your head in the first place, how can you think and connect all the dots? I like the application of this technique in programming. Basically learn enough fundamental and challenge yourself to build something up from scratch without any references until your're really stuck. I experience once before while picking up Nim programming language. I was stuck with just a documentation and without Internet access. So, you're pretty much have to learn the hard and slow way but definitely you'll learn fast. Why so? One good reason, without Internet, there is not distraction or excuses for your to procrastinate.

#4 Already few days into the new year. Still contemplating on your new year's resolution? The US government has a list of popular new year's resolutions. Moreover, for each resolution, there is plenty of resources to guide you. Give it a try! For programmer, there is always the resolutions for programmer (HN discussion) which I covered it last week.

#5 Remember Dark Patterns, the deceptive user interface patterns to trick people? Now we have something similar but the opposite. GoodUI, a site which list good user interface patterns which have been heavily A/B tested.

#6 Ansible 2.0 has been released (Thre is a good HN discussion on YAML vs. Bash script). I have been anticipate this release especially the package module which let us install software using underlying package manager. Unfortunately, this only works if the package name is the same through all the GNU/Linux distributions, which is not so for most of the time. Also block is a welcoming feature which help to group related tasks by distribution like using 'ansible_distribution'.

This Week I Learned - 2016 Week 01

In case you miss out, last week post.

#1 Flowgorithm: Flowchart Programming IDE. Creating application using simple flowcharts, yet another level of abstraction for coding. Screenshots, step-by-step tutorial, and file format. Similar flowchart-based programming environment tools are RAPTOR, Visual Logic, and LARP. Unfortunately Windows only (should try with Wine). Flowgorithm is written in C# and most probably can run in GNU/Linux since .NET Compiler Platform ("Roslyn"), the compiler for C# and Visual Basic has been open-sourced. If there any tools to do the reverse or something like Visualize Python which let us visualize the flow from the source code instead? Well all the mentioned tools catered for educational purpose, is there anything similar for the industry like those for Model-driven engineering?

#2 How to think visually or rather, which visualization diagram should I use? Which reminds me of another visual decision tool, the chart chooser and slide chooser by Andrew Abela and Paul Radich. I always interested with visualization tools as it's a form of storytelling with data. I've been exploring different chart tools these days to plot my daily walking steps.

#3 Dummy output sound adapter in Ubuntu? Nothing but a force restart (pulseaudio -k) of PulseAudio sound server can't solve. It has been so long since I last encountered any sound card issue in GNU/Linux. I still remember many years back I tried, for weeks, to get my sound card to workonly to realize that I picked the wrong driver for the Linux kernel. Although the is a Yamaha sound card, the driver only works with the chipset, if I remember correctly, Cirrus Logic.

#4 DNS Conformance Suite and Test Harness. Conformance or to be exact, conformance testing, "is testing to determine whether a product or system or just a medium complies with the requirements of a specification, contract or regulation". Enormous list of Request for Comments (RFC) just to make sure that the DNS implementation conformance to the standards. Standardization is always tricky where so many parties involved and each with their own agenda which sometimes, slow down the the adoption of the certain standards. Case in point, Hyper Text Markup Language (HTML).

#5 Software Testing Techniques. Class Report for 17-939A (PDF) by Annie Lu Luo. Comprehensive literature review of software testing techniques. So far, the best paper I read in 2016. How I wish all the software engineering papers were written in such way. Again, this remind me of Ke-Sen Huang's resource for computer graphic page. Unfortunately my lack of mathematics knowledge and patience prevent me from fully understand most of these papers. Nevertheless, you can appreciate the beautifully generated images of these computer graphic research papers. And off course, there is this Papers We Love, where a group of people who love to read academic computer science papers. Unfortunately, as usual, there is still MY chapter and judging by all the past meetups, its existence will not sustain for long.

#6 Books Scientists Should Read Before The Age of 20. Some books are questionable but nevertheless, a good starting list. Personally, I will like to start with George Pólya's How to Solve It: A New Aspect of Mathematical Method. If you're short of time, here is the summary of his method.

#7 100 Days of Swift. Progression notes on learning Swift programming language. Compare to other self-learner, he managed to create interesting UI related small projects just by applying a few concepts. Something that anyone should try out when picking up new programming language.

#8 Write code every day? Not necessary, as fellow redditor, EarLil advised that just "follow your rhythm and stay healthy" (make sense but which rhythm?) or you can just switch between coding and writing, "code doesn't have to be code". Github commit heatmap is a good motivator to encourage you to make an effort to write or code something, even one-liner. The question remains? How long should you allocate time in a day so that it will get you started and won't burn you out? For me, one line of record or code, or a sentence. Something so easy that you don't have any mental excuses not to do it. Getting started is always the hardest. But once you've started, everything else will fall into places. Just start!

#9 Valuing time over money is associated with greater happiness. First empirical evidence that people who value time over money are more happier. This reminds me of the personal finance book, Your Money or Your Life, where the authors asked "how much that we have trade our hourly life energy for money?". Once you realize that the actual amount of cost, time, and effort spent just to earn an hourly wage, you will have a change of opinion regarding your career and the money you earned..

This Week I Learned - 2016 Week 00

Happy new year, 2016!

Inspired by Christian Neukirchen's blog, Trivium, where he curated interesting stuff about technology, mostly related to programming. I will start something similar but not limited just to programming. Instead of storing all those things I've stumbled upon as bookmark, in Google Plus' collection, or in my paper journal, why not turn it into an "essayish content"?

I didn't blog that much in 2015. Comparing to the previous years, which I vowed to write on a near daily basis, I blogged sporadically without any specific topics. Just mindless ramblings following the current technology fad, mostly those in Hacker News. Also, my writing style change. I tends to write longer post these days or rather, I've become wordy. Maybe the migration from Google Plus to Blogger caused that. It feels weird to write short blog post in Blogger. Contrary to what they said, especially in photography, the tool is as important as the doer.

A weekly post sounds reasonable. Most probably on every Saturday. Or Sunday if something come up a day before. That means I should have a minimum 52 posts by the end of year 2016. And additional few posts in between. A good baseline figure to motivate yourself to write even more. When comes to writing or reading, quantity always triumph quality. You always need more deliberate practices and discipline to master any skills.

Or maybe because I miss Memepool?

Without further ado, I present you the first post of this week I learned.

#1 Scott Meyers, the foremost expert on C++ programming language, announced that he is retiring from it after 25 years of involvement. Quarter-century is a very long period for anyone to just focus on one particular programming language. Especially to resist all the temptation of chasing the latest technology fad. The discussion at r/programming regarding his retirement is both funny and interesting. Some speculated that his next step. Maybe he is moving to Golang (due to title of the blog post), Ceylon (from his past posts), Node.js (I doubt so), Swift (possible), or Rust (another possible candidate)? Nevertheless, C++ always remains one of the item in my someday list (to-do list for procrastinator).

Some interesting tidbits about him. He has a consistent and unique hairstyle. There is even a poll on his hairstyle resemblance to famous people. The funny thing is I always mistaken him for Bertrand Meyer, the creator of Eiffel. Also, besides Philip Greenspun, he is the second technical people I'm aware of who seems to have a deep connection to their pet dog.

#2 Matt Might blog post on 12 resolutions for programmer should be reread annually during new year. I've covered this in the past, around 2013. Rereading his post and comparing to what I've done for the past two years, it seems that I didn't manage to pull through of the resolutions. Something I learned last year, discipline and persistency always outweigh passion. Also one mistake I've made was that you can't multitask your goals. As stated in his blog post, this is a "twelve month-size resolutions". Meaning that you should carry out one resolution at a month. This is akin to changing a habit, one at a time, for one at a month. Sometimes you've to slow down in order to move faster. One issue still remains, which can be summarized from HN discussion, sedentary life style is a huge health risk for IT jobs like programmer and system administrator.

#3 There are 64 GNU/Linux or Android friendly Single-board Computers(SBCs). Overwhelmed by the number of choices? As shown in the survey results, you can't go wrong with Raspberry Pi for its software support and community ecosystem even though it has lower hardware specification. For my case, the main reason is the pricing as I can procure both SBCs from the local element14 (electronic components distributor) site. For other SBCs, the shipping fees, tax, and delivery time does not justify it. Otherwise, I would have go for Odroid especially Odroid-C1 and Odroid-XU4. Adapteva's Parallella, marketed as mini supercomputer, caught my attention but the price and its usage, again, does not worth it.