2018-08-17 17:18:40 +00:00
|
|
|
---
|
|
|
|
layout: post
|
|
|
|
title: "Weekly Resources and Learnings #2"
|
|
|
|
date: 2018-07-17 18:30:34 +0800
|
|
|
|
author: foo-dogsquared
|
|
|
|
categories: general
|
2018-08-19 06:43:52 +00:00
|
|
|
tags: [programming-notes, weekly-learnings, learning]
|
2018-08-17 17:18:40 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
Alright! Second entry, second step into this consistency of habits thing, and a second good news to me since I learnt something.
|
|
|
|
Well, I'll also a recap every now and then just to make sure I am not learning for just the sake of learning. Yeah, quite the
|
|
|
|
nerd. Anyway, let's go in the main point of the post.
|
|
|
|
|
|
|
|
## What I've learned this week
|
|
|
|
### Gatsby
|
|
|
|
Yeah, I think I'll go with Gatsby with this site but not definitely today. "What is Gatsby?", you might've ask? Gatsby is simply
|
|
|
|
a static site generator (SSG) similar to Jekyll, the SSG this blog was built upon. I chose Jekyll at the time because of the
|
|
|
|
support from GitHub Pages which will automatically build the site for you by just storing the source files, so no more the extra
|
|
|
|
hassle of having to build the site before you store it in the repo. But in any case, I am kind of bored with Jekyll and so, I am
|
|
|
|
trying to learn Gatsby for a couple of reasons:
|
|
|
|
to learn React (and in hindsight, Node), to learn GraphQL which is something I am curious about, and to rebuild my site.
|
|
|
|
### Computational complexity
|
|
|
|
There is a measurement on how effective and efficient an algorithm is. But first, there are some things
|
|
|
|
we have to be mindful of whenever we talk about these things. First, there is the dataset that the algorithm must process in.
|
|
|
|
Let's say the algorithm takes ten, a hundred, a thousand, a hundred thousand, or even a million inputs but for the sake of
|
|
|
|
example, we usually go with *n*. So it means the code takes *n* inputs but what counts here is the number of steps that
|
|
|
|
block of code goes through in order to fully process the data, whatever functions it was instructed to do.
|
|
|
|
|
|
|
|
Now for the most part, we usually describe how effective an algorithm is through the Big O notation and the Big Omega notation.
|
|
|
|
#### Big O (O)
|
|
|
|
It is the notation used for describing the worst-case runtime of the algorithm. So when we say it has a worst-case runtime of
|
|
|
|
*n* or `O(n)` (read as big O of *n*), the maximum steps that algorithm can take is through *n* times, whatever the number of
|
|
|
|
datasets that algorithm involves.
|
|
|
|
The Big O is usually the one that is being talked about whenever we speak of the algorithm runtimes, in general. So when we
|
|
|
|
say the runtime of an algorithm, it is usually the Big O notation.
|
|
|
|
#### Big Omega (Ω)
|
|
|
|
If the Big O notation is a pessimist, this one is the optimist. It is used to describe the best-case scenario, that is, the
|
|
|
|
least amount of steps to fully process the inputs the algorithm has to process. Of course, the Big Omega notation has to be
|
|
|
|
less than the Big O notation. ~~What kind of information I am typing now?~~
|
|
|
|
#### Big Theta (Θ)
|
|
|
|
When the maximum and the minimum number of steps are the same. We can describe it with the Big Theta notation. I don't know
|
|
|
|
the 99.6% of the whole general computer science stuff but it is said that the Big Theta notation is rarely referred. Just
|
|
|
|
bear it in mind that this exists.
|
|
|
|
#### Usual Representation
|
|
|
|
These are the usual time to describe the complexity of the algorithm:
|
|
|
|
<div class="table" markdown="1">
|
|
|
|
|
|
|
|
| Runtime | Term
|
|
|
|
| --- |
|
|
|
|
| O(1) | Constant time
|
|
|
|
| O(log n) | Logarithm time
|
|
|
|
| O(n) | Linear time
|
|
|
|
| O(n log n) | Linearithm time
|
|
|
|
| O(n^2) | Quadratic time
|
|
|
|
| O(∞) | Infinite time
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
### Sorting algorithms
|
|
|
|
They have different speed and different usage. Things like the selection sort, the bubble sort, the insertion sort, the merge
|
|
|
|
sort which is my main focus for now. I haven't really written some kind of a sorting algorithm yet but I'm currently
|
|
|
|
going for it. I'll write a more detailed version of this in the next entry of this series but for now all I can say is that
|
|
|
|
these sorting algorithm all have the same goal of sorting through a list but they all have different ways in doing so.
|
|
|
|
The merge sort, for example, uses the divide and conquer approach which makes the number of steps in the process to go by in
|
|
|
|
half thus, the number of steps whenever the dataset is increasing will be minimal. While the other approach such as the
|
|
|
|
insertion sort goes through the whole list for once and it involves manipulating the elements whilst in the process.
|
2018-10-27 03:47:01 +00:00
|
|
|
|
2018-08-17 17:18:40 +00:00
|
|
|
### Recursion
|
|
|
|
I know about recursion but I haven't still wrote a recursive function other than the factorial function and the things you
|
|
|
|
would usually code from a tutorial. I always go through whether I have to use iterations/loops or recursion. Anyway, I have
|
|
|
|
read some stuff that when use a recursive function when the task branches off. I know it's not really set in stone and it is
|
|
|
|
more a guideline.
|
|
|
|
|
|
|
|
Also, recursion, have different consequences depending on the implementation of the programming language.
|
|
|
|
For example, some languages are slower when compared to using an iterative version of that function since it consumes a stack
|
|
|
|
frame in the memory space. In some cases, there are languages that implemented to adapt to recursive function
|
|
|
|
like, for example, the tail call optimization wherein the function returns the value when the recursive function gets called,
|
|
|
|
thus avoiding to allocate a new stack frame.
|
2018-10-27 03:47:01 +00:00
|
|
|
|
2018-08-17 17:18:40 +00:00
|
|
|
### Processing (the programming language)
|
|
|
|
I took some break from the usual stuff I do when programming so I quickly glanced over some stuff that is outside of whatever
|
|
|
|
I am doing which is mostly about logic and data structures and whatnot. And I found the world of generative art.
|
|
|
|
[Processing](https://processing.org) is a programming language that is built by the artists, for the artists. Well, it is similar
|
|
|
|
to playing with HTML5 Canvas and [p5.js](http://p5js.org/) was apparently related with this. So far, I've followed their
|
|
|
|
video tutorial and saw [one of the most awesome video players I've ever seen](http://hello.processing.org/) in the works, just
|
|
|
|
saying. So far, I've fun with it. Quite the potential stress reliever for me, unfortunately, creative art is not my thing nor my
|
|
|
|
specialty, so...
|
|
|
|
|
|
|
|
## Article of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [The Art of Command Line by *jlevy*](https://github.com/jlevy/the-art-of-command-line)
|
2018-08-17 17:18:40 +00:00
|
|
|
It's not an article per se but whatever, looks like one to me. 😁 Anyways, this is actually a GitHub repo that guides you to be
|
|
|
|
a master in using the command line in one page. Sounds awesome, isn't it? This is basically a collection of tips on how to use
|
|
|
|
a command line (specifically Bash but it can apply to other scripting shells like PowerShell in Windows, for example). It has
|
|
|
|
tips for basics usage, system debugging, processing of files and their data, etc. You get the idea, they have lots of stuff for
|
|
|
|
different situations.
|
|
|
|
|
|
|
|
## Book of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [The Subtle Art of Not Giving a F\*ck by *Mark Manson*](https://www.amazon.com/Subtle-Art-Not-Giving-Counterintuitive/dp/0062457713)
|
2018-08-17 17:18:40 +00:00
|
|
|
Another book with a self-explanatory title. I have a paperbook version of this and I'm halfway finished so at least I can say
|
|
|
|
the full (more like half) experience of reading this. Spoiler alert, this is a book that teaches you how to see the important
|
|
|
|
things and let go of everything else. Despite with the crude, vulgar language, the slap-in-the-face talks, and the brutally
|
|
|
|
(as in brutally brutal) honest talk to a lot of common stuff, if you don't mind that, you'll probably see the message the author
|
|
|
|
is giving. Honestly, the reading experience is a bit stale the further you read on but I still recommend this book for the idea
|
|
|
|
and its quirk. If you want to not want to spend for it, here's a
|
|
|
|
[summarized version](https://fourminutebooks.com/the-subtle-art-of-not-giving-a-fck-summary/) of it.
|
|
|
|
|
|
|
|
## Podcast Episode of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [Self-Esteem from the *SadBoyz Podcast*](https://sadboyzpod.com/episodes/self-esteem)
|
2018-08-17 17:18:40 +00:00
|
|
|
If you've never heard of name of the podcast series, *SadBoyz* is a podcast hosted by a pair of hosts,
|
|
|
|
[Jarvis](http://twitter.com/jarvis) (who has a [YouTube channel](http://youtube.com/jarvisjohnson)) and
|
|
|
|
[Jordan](http://twitter.com/jordanadika) and a guest, if they have one. This podcast is generally about almost everything,
|
|
|
|
from careers, self issues, to societal problems. *Almost everything*, really. Also, their podcast has a
|
|
|
|
[YouTube channel](https://www.youtube.com/channel/UCsv_tpDUp-atfn-zzcsGyIg) too that contains the video version of their
|
|
|
|
podcast if you want to watch them speak.
|
|
|
|
|
|
|
|
## Site of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [Regexr](https://regexr.com/)
|
2018-08-17 17:18:40 +00:00
|
|
|
A site that focuses on regular expressions. It has features like real-time searches and results, an in-site reference, and even
|
|
|
|
a search function for community-built patterns so you can use other people's regex. Quite the stuff if you are looking to build
|
|
|
|
up your regex building skills.
|
|
|
|
|
|
|
|
## Tools of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [Materials Theme by *equinosocio*](https://equinsuocha.io/projects/material-theme/)
|
2018-08-17 17:18:40 +00:00
|
|
|
Well, a theme is probably not categorized in the hard definition of a 'tool' but for me, it is. It can be used as a tool in
|
|
|
|
helping you to code more efficiently because you gotta take care of your eyes, you know. Anyway, I recently discovered this
|
|
|
|
theme from the Gatsby tutorial by Scott in *LevelUpTuts*. I find the darker+high-contrast theme to be absolutely fantastic
|
|
|
|
especially on JavaScript files and it is quite pleasing on the eyes and now discovered the ❤ for high contrast themes. 😁
|
2018-10-27 03:47:01 +00:00
|
|
|
### [nativefier by *jiahaog*](https://github.com/jiahaog/nativefier)
|
2018-08-17 17:18:40 +00:00
|
|
|
This has been referred to me by someone on Discord (you know who you are 😀). This is a CLI program that converts web page into
|
|
|
|
a desktop application as in an `.exe` program on Windows and similar stuff on Mac and Linux. It uses Electron (the framework
|
|
|
|
VS Code and Atom was built upon) to make your web apps executable on a desktop system. I've used this one to convert
|
|
|
|
[one of my projects](https://github.com/foo-dogsquared/one-for-all) into a desktop app and it is quite awesome to see your
|
|
|
|
web page into a desktop app for some reason especially if you think your web app is much suitable to be one. But still, I don't
|
|
|
|
think my web app is worth the [117 MB](https://i.imgur.com/jGHYJjo.png) for just being a simple app that lists out a bunch
|
|
|
|
of input areas from a JSON file.
|
|
|
|
|
|
|
|
## Watch of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [Why our screens make us less happy? by *Adam Alter* from TED](https://www.youtube.com/watch?v=0K5OO2ybueM)
|
2018-08-17 17:18:40 +00:00
|
|
|
It's a TED talk by Adam Alter about the impact of using technology in our lives. Aside that it is kind of fitting for me
|
|
|
|
since I am trying to get away with less time, I think this is a wonderful video overall. While this talk will leave different
|
|
|
|
impact for different people, this talk can be much more valuable if you can get the message that can be applicable to you.
|
|
|
|
For my case, I got the idea that our screens make us less happy is mostly because of the insta-culture this internet has
|
|
|
|
implanted in almost every modern culture especially now that we can get information with a few instances of keystrokes away.
|
|
|
|
I was about to say my whole idea that I got from this talk but it is going to take a whole new post, probably, so I'll leave it
|
|
|
|
at that. Go watch it, you may get a few meaningful lessons from there that you can keep in mind, hopefully.
|
|
|
|
|
|
|
|
## Channel of the Week
|
2018-10-27 03:47:01 +00:00
|
|
|
### [Kollektivet2](https://www.youtube.com/channel/UCBtvGVEUmTuR7bKBDT03_FA)
|
2018-08-17 17:18:40 +00:00
|
|
|
A YouTube channel of a now-ended TV show in Norwegian about funny skits and funny music videos. It also has some exclusive YouTube
|
|
|
|
content for it. Even though they have some content in Norwegian, they have English skits too, fortunately for us English-using
|
|
|
|
people to join in on the fun. I discovered it through a random search of one of their song's lyrics (which is named a Hit Song)
|
|
|
|
for an activity then I search for the song since I was curious for it. Then, the rest is history.
|
|
|
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
Going so good so far for the second entry. As always, hope you find it useful. 😁
|
|
|
|
|
|
|
|
About the computer engineering stuff I mentioned in the previous entry. Yeah, still trying into the basics of electronics. How
|
|
|
|
am I going to transpose it into a blog post is a main problem now, hehe. I have (almost) all of the materials ready to be a part
|
|
|
|
of my experimental learning journey. Still finding an electronic store for other stuff.
|