Want to improve? You have got to read

MONDAY, JULY 20, 2020    

Everyday has to be a time of learning. What are you learning today? In the month of July, more time was placed into discovering technological tools to enable individuals on their own craft. I’ve taken some time to check out some learning tools before i jump into some general learning, and ended off with technical posts about processes and frameworks. Really interesting read, so do check them out!


Here’s a video on the benefits of reading. let’s read together!





Learning Tools



Another site with a ton of tutorials for different languages you wish to learn! Have to make the time to find out what you enjoy and want to learn next. Everyday is just about learning at least one thing that you didn’t know yesterday!



Visual always has a way to display and provide insights that words otherwise can not. Terminal GUI has always been in the community




Making beautiful pages from google sheets. The end point is the same, you want to have a website that is easy to maintain, update, and edit. Whatever the ways to go about that, as long as you reach your destination, good for it!



More often than not, every free time is considered a time that our peers can consider to be free and so to slot in activities just as hang outs. Reclaim allows you to block out time that you do not want to be touched or interrupted. The value add comes from the integration into different communication channels to communicate these blocks of time where no meetings can or should be arranged for you. Feels a little like a glorified calendar but definitely an interesting attempt to address a real world problem!



You probably heard of openStreetMap, now you have a new tool that allows you to draw out 3D maps. Im not entirely sure what are its usecases but definitely insightful and rewarding if you are able to utilize it to address your own problems. Visuals speaks a thousand words.



Super insightful and user friendly diagram drawing to simulate relationship between entities in a system! What happens if you have more of a component and based on its relationship to other entities, what is the net effect? This forces you to thin at system level instead of being overly concerned with low level details during strategic planning.



The ability to split songs into their own musical components is definitely a solution to many musician’s pain points. Sometimes you just want to hear the stings, or the electric guitar’s riffs. Definitely useful if utilized well.




General




The issue with china and hongkong has been in severe state for the past months to a year. Truly the unrest should never have been part of people’s lives. But as the circumstances presents themselves, we are mere beings subjected to these forces at large.



When we think of being happier, we almost always think about changing the external factors; richer, thinner, better houses. Few of us think about spending less time to work, more hobbies or time with friends and family. Almost noone thinks about retraining their way of thinking.



There are some other interesting books that are recommended from this article:


  • “Working effectively with legacy code" by Michael C. Feathers
  • “Concepts, Techniques and Models of Computer Programming" by Peter Van Roy
  • A philosophy of software design by John Ousterhaut

Clean code ultimately is still a good coding book to start off. But when the rubber hits the road, having to face the realism of code in legacy systems, you definitely need more experienced developers to show you actually good programming.





Encryption is to erase the meaning before transporting it.

  1. Choose the message m you want to encrypt
  2. Choose a random number r from the clock (has to be random) + every number has to have equal chance)
  3. add r to m
    1. The result, c called the ciphertext, is the encryption of message m with key r.


chart


So many different routes a software developer can take if they choose not to continue down the engineer path, and that is okay! What’s most important is for one to find his/her own passion, ‘calling’ and pursue it with laser sharp focus.


Once a problem was solved, this person will go back and continue thinking about the problem and try to figure out different solutions to the same problem. Afterwards, he’d come back with 3-4 alternative solutions to the same problem + explanations of why each solutions are somehow connected.


It’s also so easy to think that you understand something, when you actually don’t. So even figuring out whether you understand something or not requires you to attack the thing from multiple angles and test your own understanding.


To admit that you do not understand a concept is related to honesty or integrity. It is uniquely easy to lie to yourself that you know and move on because there is no external force keeping you honest. You and only you can run that constant loop of asking “do i really understand this?”. Writing then has a part to play. It forces you to articulate your understanding. And if the writing comes out confusing and disjointed, it is a reality check for knowledge gaps.


The tangible experiments of your learning with concrete examples is important to illustrate understanding. You do not just stop at simple verbal “word based” understanding. It can only bring you this far. But visuals creates a context in which your understanding can take place in.


Visualizing something, in three dimensions, can help you with a concrete “hook” that your brain can grasp onto and use as a model;


If you’re not coming up with visuals and your understanding of things remains on the level of abstractions or abstract concepts, you probably do not understand the concept deeply and should dig further.


source from nwilliams030’s twitter


Have the courage to be unafraid to look stupid. Have the courage to admit and seek for clarity and understanding. Don’t just pretend you understand just to pass the time.


If you want to understand something, go slow. Explore every step of the way in your adventure to learn and unveil. Read slowly, think slowly, really spend time pondering the thing. A week or a month of continuous pondering about a question will get you surprisingly far.




Technology processes or tech related




The most effective way to learn is to learn from the people whom have gone before you. There are so many giants out there which we could stand on their shoulders and learn from their mistakes as well. This is one fine blogger whom I thought has almost done it all and said it all (basically all that i’ve ever thought i could do over the many years of his career)



Really insightful and honest list of roles and responsibilities that a CTO has to be make throughout the startup journey - from a MVP to a working and selling product. It ranged from sales requirements such as security and features pipeline to employee retention and team growth. If you want challenges in life, CTO life is the way to go.



This is a common assumption that since the change was just these 2 lines of code, why does it have to take 2 days to get sorted out right?


  1. The information provided might not be able to replicate the issue.

This is fairly common when people merely just say “the feature is not working”. What does “not working” even means? What do you see? What errors are shown to you. All these are valuable information for us to replicate the issue.


  1. Im not familiar with this feature

It might be easy for the owner of this feature but if it wasn’t me. I need the time to understand the code, and how that bug could possibly arise. Dependent on the size of the application, this exploratory process duration can vary. If you have to find out what is wrong with the application, you first have to find out how does working ‘right’ looks like?


  1. Real cause not just the symptom.

Different from western doctors, most of the medicine is used to cure the symptom of the illness. You’ve got fever, lets bring the fever down. That fever could be an infection or a viral war that is going on inside you. Or that could be a bacteria which your body is trying to fight off. I believe that technology and western medical practices has gone beyond just symptomic fixes. Time can be taken to find out the cause. Swallowing down the symptom and prevent it from showing doesn’t mean the error is resolved.


Don’t be this:


Ostrich burying its head


  1. More than one way to get this error

Solving one cause doesn’t mean that is the only usecase we need to protect. We need to cover for other usecases as well. And this investigative process takes time. Often times, there is a balance we need to strike between a comprehensive resolution and “getting the best fix within the shortest amount of time to the customers first”. We cannot expect customers to just sit around for days for an urgent bug such as a ecommerce checkout issue to be resolved.


As one of my colleagues once said by accident: “FIX IT NOW”


  1. Happened once, could happen again else where

If this is a fairly common issue such as a coding bad habit. Perhaps this issue can easily be found in other parts of the code. I guess a simple but technical example will be the data type of process.env variables. In the case of node.js:


process.env.DEBUGGER_ENABLED=false

if(process.env.DEBUGGER_ENABLED){
    console.log(“This is printed”);
}

Is this printed?


The answer is yes. How come?


process.env variables are all string data type. Means process.env.DEBUGGER_ENABLED gives us “false”, which is a string, and thus it is truthy. Thus the condition is made and console log printed.


Common use case and will happy frequently. Happen once, can happen else where.


  1. Test test test. Test here, test there.

Finding the easiest solution to a problem often requires you to first find more than one solution to a problem before you can figure out the solution that introduces less bugs than more. After that, you’ve just got to test all your different usecases to make sure this bug does not come back ever again.


This is how 2 lines of code can easily take up 2 days to complete. So to those that ever dare to indicate that its just “2 lines of code”, do get yourself up to speed with the magnitude of work behind just that 2 lines of code.




Technology tools and framework



2x faster than react, kb sized applications, and 10ms interactivity. The tiny framework for building web interface. Perhaps it is an attempt to improve productivity. But productivity for what use cases? The first few questions that popped to mind is whether this application can be used for enterprise level applications? Can it have tests? How can we go about testing this? I guess its an interesting idea that abstracted out the gears and bolts of a functional application.



As with all livechat interfaces on websites, they are generally used for a few purposes:


  1. Lead generation
  2. Lead follow up
  3. Onboarding
  4. customer support

We want to improve the services we can provide for our customers on the other side of the browser. So it is about good responsiveness, helpdesk features, and even livechat to engage with a real live agent. This list gives good alternatives to intercom. Maybe i will consider giving each of these a try to know which is good.



Redis has a new governance model



Tools for nerds. haha im kidding. I’ve always heard of testing code. But to put test together with bash is a really new concept. It is making me feeling rather uncomfortable as well. I’m not sure why. Interesting tool to explore.




The CICD culture has started to gain popularity in the tech scene with its effectiveness and efficiency in getting code into the hands of endusers in the shortest period of time. With this process, you leverage on the power of automated testing to ensure all aspects and regressively test your product’s feature and usecases. Deployment can only get easier. Before we go further, we have to understand: what the hell is devops.


Just a random thought, the fundamental of decision making is to put the right information in the right hands with the fastest time possible. The end goal of all dashboards, analytics dashboards or monitoring dashboards from Kibana, Grafana or Prometheus is to fulfil this one same purpose. Put the appropriate information into the right hands at the fastest time possible, so the best and most informed decision could possibly be made. This thought got me intrigued on the make-up of devops and how could we as engineers enable our business users through the tools we currently have in this part of the century that our seniors do not.


Devops dashboard hell