Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

This Week I Learned 2018 - Week 37

Something from the archive or last week post.

If you want to do a YouTube video on tutorial on photography, how should you do it? So far, nothing can top this video. Well choreographed, interesting topic, and relevant demonstration on applying Morandi (a famous 20th century Italian still life painter) colour style in your photography. What impressed me was the tutorial was not focusing on the post-processing but instead stressed on the importance on scene selection and model's clothing choices. Sometimes, you can't simply post process (photoshop) everything.


How easy to setup development workstation in Ubuntu these days? In seconds, if you exclude the time needed to download all the packages. I've been looking into TypeScript, React, and VS Code these days and it's the right time to setup a new development environment through Ubuntu's Snap.
$ sudo snap install node --channel=10/stable --classic
$ sudo snap install vscode --classic
$ sudo snap install --edge typescript --classic

What is the best approach to read a book? Reading with a pencil  (via HN) or also known as marginalia. The idea is simple, you're basically collaborating with the book author by scribbling down your questions, thoughts, and ideas in the free margin space (limited for some books). In other words, purposeful annotations while reading or active reading (suitable for research papers but not some book genres where you read for leisure).  Also, such reading method is not applicable for ebook reader (yes, reMarkable exists but the steep price does not justify it), which still does not provides a good paper experience for doodling.

Is JQuery dead? Not yet but soon, probably within these few years. Reading through the blog post by Github Engineering on removing JQuery from Github frontend, little have I realized that the frontend (JavaScript) have matured enough to deprecate JQuery. What does this indicates? The web have move beyond the dreadful old incompatible Internet Explorer versions, which the main reason of the existence of JQuery project. What next? TypeScript becomes ES Next (maybe?) and the standardization and popularity of custome web components. One thing for sure, old things will be rediscovered, reimplemented, and rehyped again and again, as usual. Same old same old. (ง'̀-'́)ง

How to teach yourself hard things? (via HN) Alternatively, the Richard Hamming tackled this in his The Art of Doing Science and Engineering: Learning to Learn course and Edward Kmett in his Stop Treading Water: Learning to Learn lecture. Furthermore, comments in HN provides us with a few good gems in area of exercising, programming, or physics. However, this is only applicable for those who are discipline, having intrinsic motivationgood quality sleep, and don't get burn out (you will eventually). In short, learning will come naturally if you interested in tackling the problem itself. Time is limited, pick your battle wisely.

Why Microsoft Word is a better writing tool than LaTeX? Reading through the post by Thorsten Bell on the tools he used to write his book (via HN) reaffirms the mistake I've made when typesetting documents, books, and thesis using LaTeX, ConTeXt, and pandoc. Fancy tools may distract you from doing what matter most, writing itself. If the writing is difficult, we can be sidetracked through fiddling with these tools under the pretense of productive procrastination.That's why, a slow and noisy typewriter (surprise that it's still expensive these days) was such an efficient tool for writing. You can't do nothing else but type or write. Which is why so many distraction-free editors exists in these Interweb days.

Why I still love PostgreSQL after all these years? 100-plus of custome data types (even table and view can be as well) supported in the database itself (via HN). Programming languages can change numerous times for a long maintained systems. Not sure for the database system. Some developers prefer strongly typed programming languages, but they seldom look into database systems with custome data types support.

How do we test web service API through console or command line? (via HN) There are so many choices like Strest, Newman (console version of Postman), shakedown (Bash script), karateDSL, UnRAVL, Artillery, and Tavern (Python-based). Coming from console background, I have preference for shakedown and Tavern due to its simplicity.

To rent or buy a house? HN user isostatic gave a practical answer to this question. Buy if you're investing, having kids, or don't want to be forced to move. Rent if you don't want to maintenance the house.

What is the symptom of midlife crisis in a good way? Extreme athleticism. (via HN) One key point I agree with the writer is that we're preparing for the coming old ages as highlighted in this quote. Interesting days ahead.
...... extreme fitness is less about being young again and more about building yourself up for the years ahead. In other words, getting better at getting older.

This Week I Learned 2018 - Week 07

Last week post or something else from archive.

Survived another Chinese New Year. Seems like a slow and lazy holidays, nothing much happening these days due to the slow economic. However, lots of catching up in my reading.

Something about my sedentary lifestyle. It seems I'm quite active on Thursday, Friday, and Saturday. Can't recall what I did during Thursday. Will keep monitoring this to bring awareness so I can reach on average, 6,000 steps per day.


Productivity is not equivalent to learning. Yes, as Won Cho discovered of one month of writing down everything he learned during code. You need to find a way to balance out and achieve both goals. The discussion in HN was more towards methods on learning like spaced repetition. One key insight was reading or scanning through site like HN is not learning, that is consuming information. Similar to digesting entertainment news. Similarly, my TWIL is just a journal of my notes of something that interested me and mindless rambling.

The Kubernetes Effect. (via HN) Again, containers is not silver bullet, just use a real PAAS and solve your business problem first (bring in the moolah!). Remember that an software architecture is a reflection of an organizational (which is really a communication) problem. Yes, we know it's very tempting to use the latest greatest stuff but seriously, do you really needs microservices? Are you Google or Facebook scale? If not, just stick to monolith architecture! Don't start with me on the complexity of front end development these days. While reading through the comments, I've learned that JEE application server is just an OS with containerized applications.

Have a few discussion with a local breeders. My observation leads me to believe some of these breeders only breed occasionally but also a reseller as well. They restock from larger Betta farms at a lower value (due to lower grade) and sell it at a margin for profit. But profit is quite limited just from selling fish unless you breeding for large volume or only exotic species. To compensate that, some breeders switched to sell accessories (nets, tanks, or medication) and aquatic live foods (blood worm, miona, vinegar eels, or others).

Betta fish or any ornamental fishes needs lots of attention and details. A slight overlook can either kill the fishes or even the whole spawn. We have lost four although we've procured eight more this week. Our initial investigation must be due to cross contamination due to sharing of aquarium siphons. The next step is to monitor the water parameters or switch to Indian almond leaves (lower pH and antibacterial property) or Banana leaves for all the tanks. We will wait and see how the new batch adapt to our new approach.

This Yahoo Answers post have gave the best advice I've read so far on Betta fish. We do agree with most of the the insights shared by the poster. Definitely a post to revisit from time to time.

If anyone going to ask me about MongoDB again. This will be my one sentence answer. It's a web scale database that successfully exploiting the "hype first, feature later" strategy. Yes, I just repeat what others said online again and again to deride MongoDB. Thinking of upgrading or using it, just wait for Jespen audit reports.

Curated list of Perl stuff. What the different? It's almost the same for all programming languages?

Dtrace switched from CDDL to UPL license. Too little too late?

Success in software project management? The quote below illustrates the insight succinctly (emphasis added). Or screw any methodologies, just follow the WhatsApp approach (YouTube video).
"small teams made up of scary-smart accountable people, given a well-articulated objective (not solution) and are left alone without distraction"

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.

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.

This Week I Learned - 2017 Week 32

Last week post or something from the old TWIL archive.


Everything should be back on track this week after the "nature appreciation week". Lots of pending items to be checked off. Luckily, a few long delay items have been cleared off. As they said, one thing at a time. If you can't do it today, continue tomorrow but do not postpone for more than two days. Keep the streak going!

I've been quite effective in applying Scrum or Kanban at my workplace. Sadly, I can't say the same about my personal projects. What if I can obtain the same efficiency at my own stuff? Surely I will be surprised by the results. Lately, I have been thinking about what are the effective ways to get the best of each day, either at workplace and home. Discipline is definitely a must, of course with effective system. Another approach is to focus on overlapping what you done at work and your own personal projects. Focus on the important stuff, one thing at a time. Throw it the work life balance as well. Sometimes you just need to walk away from anything and just to unwind and recharge.


Invest in your own learning. Julia Evans shared her thought on this matter on keeping learning outside working hours. Learn and read something new but relevant to your work. That's it. However, it's best to set a time after work, for example, half an hour and learn or work on something new. This may sound easy but it's quite hard to do it in a constant manner. Consistency is always hard. Self-discipline is always hard.


What would you do if programming is made illegal overnight? Be a problem solver. Or do something else other than development works. There are millions of problems that need to be solved and and you can leverage your programming or IT knowledge one way or another. During the nature appreciation week, I've thought and discussed about this with my younger peers during the whole trip. Unfortunately, we are still caught into the tribalistic pressure or social conditioning in the name of team work or company culture. Someone told me before when I was starting out as a programmer, pick your battles, not everything is worth fighting for. These battles here refers to the things you want to do in your life, your bucket list, or something meaningful. And off course, at the same time, without starving yourself.


The morning paper and the Arxiv Sanity Preserver. I love reading research papers, even though most of the time I can't really understand most of it, especially those not within my domain of expertise. But the morning paper site makes everything fun and bearable. Beware, energy, attention, focus, and time are scarce, use it properly on things that matter to you. That's why social media are big time waster unless you're working in the digital content industry.


Ligne claire. French of clear line, the art style used by many illustrator, especially Moebius. Most recent illustrator who follows such style is Josan Gonzalez.


Money has a way of being the perfect "excuse" for vicious people to expose their viciousness. Interesting digression from the forum discussion which turned dark half-way.


Git bisect, the proper workflow. Didn't realize such things exists and probably won't bother to pick it up.

This Week I Learned - 2017 Week 17

Last week post or the whole series.

What happen to software developers who are still coding in their 40, 50, and 60?  What will happen in the next 22 years will be an interesting and unknown territory for older programmer to explore. There is always the case of how to do keep improving or how can we be a better programmerKaizen. Continuous improvement through through learning with understanding and stay healthy, both physically and mentally.

Complacency is your worse enemy when come to learning. We take it easy, do not dare to explore out of our comfort zone and afraid to look stupid. We know if we're heading this path, we will stuck forever, basically doing the same thing every year. Hence the developer with ten years experience but doing the same thing every year. Yet, we're afraid to start. Keep waiting for the right moment, the right motivation, and so no.

The older I get, the more I realized that motivation is fleeting and only discipline is reliable. Motivation is based on feeling where discipline is based on your habit. Best to cultivate good habits rather than waiting for the right feeling to come. Nothing but one step at a time.

#1 RIP Robert Pirsig. (via HN) Yes, he is the author of the cult book, Zen and the Art of of Motorcycle Maintenance. Interesting write-up on him during his day at spent in Banaras Hindu University (Varanasi, India).

#2 Good write-up on being a serious code reviewer. Only professional developer will take their code review session seriously as both parties, the reviewer and the code will learn something out of the session. The main obstacle is always how to handle it in a objective manner. Sometimes developer forget that you are (as a person) not your code. It's always a tricky situation.

#3 Sometimes, certain websites could change your life. No surprise some sites from are Ask Metafilter. All these reminds me of the web of the '90 and the time spent on aimlessly browsing through each pages. This is before RSS was even a thing yet.

#4 How many ways to execute your script parallelly? Three. Using wait, xargs, and GNU Parallel. The last one is the most comprehensive, featureful, and still being maintained.

#5 How Technology is Hijacking Your Mind. The prevalent tactics on manipulating our surfing behaviour. Throw in some dark patterns, we're basically somehow influenced to a certain agenda and direction. Given the ubiquitous Web and the Internet, how do we anticipate this manipulation? For a start, digital detox is a good start but still, this is not a long term solution, especially for those working in technology sector.

#6 Real-time Programming. (PDF) A course in learning about programming embedded real-time system.

#7 Is Perl still a good choice for web development? Yes and no. If you're not inheriting legacy Perl project, switch to something else more modern. If you're stuck with CGI, move to CGI alternatives like Mojolicious, Dancer2, Catalyst, or PSGI.

#8 Virtualization in GNU/Linux. Good introduction of different virtualization technologies available that we can use.

#9 The web is not desktop applications. Well said. Well said.

This Week I Learned - 2017 Week 15

Last week post or you can browse through the whole series.

While debugging a Makefile, I accidentally `rm -rf` my home folder. Lesson learned, always backup and sync your changes regularly. Nevertheless, it's always a good fresh start when your home folder contains not a single file or folder. Good that you have a weekly clean up of your machine, review, keep, or remove. Otherwise, there will be a lot of pending left over files.

It has been a while since I work on weekend. The serenity of the environment did improve your productivity ten-folds. There is no sounds other than the air-con, traffic, and your typing sounds. You're basically in the zone, focus solely on the task at hand. No more stupid shenanigan. In hindsight, you have to find or create your own optimal environment and zone. It all starts with a system that leads to a habit, good habits.

#1 How to read more books? Lots of good tips and increasing the volume of books you can read. It's already early April and I only managed to finish 2 books. Not really on track on finishing 12 books this year. Thinking back, reading style, book choices, timing, and context are what causing the slowness. One of the best strategy is to switch different books if you're stuck or bored. Some books need more mental energy to go through it. While reading 2 pages per day can develop a good habit, it's not sufficient fast enough to catch up with my pilling reading list.

#2 Engineer's Disease. The unconscious thought that can lead to arrogant and condescending personality. Maybe because such behaviour "stems from the OCD and emotional detachment our peoples tend to have, mixed in with a good dose of raging insecurity"? Good forum discussions to ponder upon, especially by those working in software development.

#3 Does teenager and adult have different learning capability? Time, available perceived time. Also discipline, attention, and focus. The discussion at HN gave a lot of strategies to attack the problem. Simple daily practice and learning together with different learning strategies. What to learn then? Fundamental. There is an interesting discussion on software development being a dead-end job after 35-40.

#4 On understanding the fundamental of Vim. Before you install any Vim's plugin, best to learn what the default features exists or not.

#5 System Design Primer. If you want to learn how to design large scale systems. However, premature optimization is still evil. Knowing something can be done right doesn't means it should be done now. There are always contexts and constraints. Solutions looking for problems always end up wasting everyone resources. This HN user's experience on scaling your system accurately illustrates such scenario.

#6 Looking busy at work?. Most people don't realize that pretend to work and look busy is actually far more harder than doing the actual work. Faking will deplete you psychologically as your thoughts, actions, and words are not in sync. However, there are always exception. Certain group of people thrive on such behaviour without caring for any forms of repercussion. While some just stuck with mind-numbing boring job. There is a saying by Napoleon Hill which states "If you are not learning while you’re earning, you are cheating yourself out of the better portion of your compensation.” Unless you're stuck with certain constraints, move on. You're not a tree!

#7 LXD finally available for Fedora. Not as native RPM package but through Snap. I'm going to reformat another workstation and install Fedora with it. One less reason to stick with Ubuntu. Only left the DEB package, which I believe, no way Fedora/CentOS/Red Hat is able to dethrone the number of available packages provided by Debian. I'm not looking for rolling release like Arch but availability of different software. Maybe Snap, the universal GNU/Linux package can change that?

This Week I Learned - 2017 Week 00

Happy new year!

2017, the year of the fire rooster. It will be interesting to see what this year will unfold itself. The plan will still remain the same every year. The usual stay alive and healthy, more reading, learning, writing, coding, and producing as well as build new habits. In other words, do, try, make more mistakes. As they said, "One who makes no mistakes make nothing at all". Be constant aware of you thoughts and actions. Live in the moments. There is a Zen saying, "When hungry, eat. When tired, sleep". Nevertheless, do plan ahead and learn from your past. In short, continue what you planned last year and adjust accordingly.

Learning reflection for 2016. I wrote 58 posts last year. Still a firm believer of quantity over quality. Writing is like exercising, you need to practice persistently to get better. However, blindly deliberate practice without any targets may be wasteful and leads to no where. Still something to ponder about. What I learned last year? Mostly Perl and Git as well as others stuff in between. When there are always rooms for improvement, all these exposure to new old stuff (Perl is damn old anyway) did satisfy my intellectual curiosity. Exposure to C++ for the last two months was interesting. It really piqued my interesting on static type programming languages.

As usual, here we go, something new I've learned this week.

#1 According to ISO 8601, the definition of week 01 if 1st Jan falls on Monday till Thursday. If it falls on Friday till Sunday, it's still the last week of previous year. However, there is no week 00. Nevertheless, I still prefer to call it week 00, as 1st Jan signifies a fresh start.

#2 Information overload? Thinking of applying digital minimalism? (via HN). FOMO is probably is main cause to our digital clutter. Unless these digital tools can bring values to your offline life, ditch them. Likewise, I still have a long way to go with my minimalist lifestyle, not everything fit into one bag yet. There are literally thousands of things I wish to ditch away. Still, one thing at a time.

#3 The D programming language. If you're doing doing development for quite some time and follow the programming language trend, you probably heard about this programming language. I've stumbled upon this again while doing some C++ coding. Developed as an alternative or replacement to C++, it still failed, after all these years, to gain any traction (based on my reading and impression of Thoughtworks' Technology Radar, HN, and Dlang subreddit). It was one year ago since Andrei Alexandrescu quit his secure job at Facebook (get a big pay cut but financially still ok) to push D forward on full time basis, does it really helps?

I played and read through the documentation, on the surface, it's looks quite nice, Python-like syntax with C/C++ speed but isn't Golang or Nim existed for the same reason? Nevertheless, the documentation was fun to read. Love the Contract Programming, especially the Invariants.  The wiki post on Components Programming Using D (ala functional programming) was one of the most interesting read on programming language this new year.

While we at it, some adjustments are needed to get Dlang to work in Ubuntu 16.10.

First, setup the APT repository for D.
$ sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list \
-O /etc/apt/sources.list.d/d-apt.list

$ sudo apt-get update && sudo apt-get -y --allow-unauthenticated install \
--reinstall d-apt-keyring && $ sudo apt-get update

$ sudo apt install dmd

Next, generate the sample hello word project.
$ dub init hello
$ cd hello/source

However, you will encounter error below during compilation.
$ dmd app.d
/usr/bin/ld: app.o: relocation R_X86_64_32 against symbol `__dmd_personality_v0' 
can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libphobos2.a(exception_249_55a.o): 
relocation R_X86_64_32 against symbol `__dmd_personality_v0' can not 
be used when making a shared object; recompile with -fPIC

Add these additional options to get it to run.
$ dmd app.d -fPIC -defaultlib=libphobos2.so
./app
Edit source/app.d to start your project.

Compile and run on-the-fly.
$ rdmd -defaultlib=libphobos2.so -fPIC app.d
Edit source/app.d to start your project.

This Week I Learned - 2016 Week 28

Looking back to the last week post or you might want to check out the whole series.

Great rule when picking up any technologies for your development stack.
If a project is innovative in a business sense, then choose a boring technology. If it is boring in a business sense, then choose an interesting technology.

Newscombinator's best of bookmarks. Every links is worthy your precious time.

Caching your GitHub password in Git. Seriously, do this if you commit early and commit often to remote repository.

The Golden Age of Autodidacts. Don't be a passive learner but instead a self-directed learner. Knowledge workers like programmer should always improve their learning skills. Don't let the feeling of inadequacy stop you, incorporate purpose or meaning in your learning. Start analyzing your learn and work pattern. Adapt and adjust. It's always never too late to start anything.

This Week I Learned - 2016 Week 09

Last week post.

#1 Goals vs. Systems. Before pursuing any goals, make sure you're making an informed and educated decision. The strategy is to use knowledge instead of willpower to pursuit your goals. For example, as not all carbohydrate foods are equal, you can lose weight easier if you pick the right food choice by knowing its Glycemic Index, which have an effect on a person's blood sugar.

#2 Raspberry Pi 3 is out. (HN discussion) The built-in onboard Wifi and Bluetooth as well as 64 bits support are welcoming feature. Unfortunately, local Element14 still awaiting stock. Heck, I can't even procure a Pi Zero till today. Not sure if the specs boost is worth the upgrade, however, some review claimed this release it's a worthy desktop replacement. If you never own a Pi before and itchy get on the single-board computer bandwagon, then you should get a Pi 3. As for me, will skip this as I'm saving money to get a SSD drive which definitely help with my testing of containers.

#3 Git rebase and the golden rule explained. Detailed explanation on Git rebase. If you want to stick to the Subversion's model of a single linear tree, then Git rebasing is the preferred choice. The only caveat is you may need to force-push if you rebase already commits that have been shared.

#4 Prevalence of Healthy Sleep Duration among Adults — United States. (Reddit discussion) Seriously, sleeping less than 7 hours per day may increase your chances of mortality. Rest people, rest.

#5 Using Make with Django. Lots of people (especially those from non-Unix background) overlook or underestimate the useful of GNU Make to manage tasks with your software project.

#6 How do you remember what you read? It will take times to internalised or digest the information but memorization is the initial step. If you can't retain the information within your brain, you can't analyze it. Retention is useful to verify your understanding if you just follow the these steps.
  1. Read a paragraph.
  2. Close the book.
  3. Write down what you remember.
  4. Re-read the paragraph and check.

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'.

Lifelong Learning

Via HN. Interesting article on rules to follow for lifelong learning by Richard Hamming, widely known for Hamming code, an error-correcting code used in telecommunication industry.

For a software developer, lifelong learning is crucial if you want to sustain your passion and extend your career. Similarly to fashion modelling or idols, ageism in software development is real and unavoidable. For non-technical people point of view, is always cheaper and easy to manage (ahem manipulate) young blood. This is true where the organization have limited budget and the developed system is just non-critical plain CRUD app.

The first rule resonates with me. Knowing the fundamental is understanding how things works as compare to get things to work. For example, using any programming languages to build a website is getting things to work. Knowing how the HTTP protocol works with all its intricate parts is understanding how things works. Many years ago, in FOSS world, Perl was the default choice to build any website. Later it was dethroned by PHP, and in a short while, Ruby due to Rails, and now Javascript which is ridding on Node.js popularity. Regardless the current trending programming language used for building a website, the fundamental part still remains the same. Hence, to stay relevant, focus on the fundamental.

Judging by my current career detour right now, this is the best time to pick up the fundamental again.