Skip to content
This repository has been archived by the owner on Nov 27, 2021. It is now read-only.

YenTingWu/procrastination

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 

Repository files navigation

Procrastination

Why

During my self-taught period and my last job, I learned and experienced UI techniques, and also built a fundamental mindset of how to develop a comprehensive client-side applications. However, when talking about the server side, I had only a slightly understanding. I was confused about the detail of how both sides communicate; felt frustrated when cors problems showed up somehow, which took me tons of time to find out that all I needed to do was to add a fucking one-line code into the backend codebase and the error solved; was alienated when other people were talking about api gateway, docker and other backend stuff. These experiences cultivated my curiosity and pushed me to learn more things.

After leaving my last job, I took a course - Stanford - CS 253 Web Security instructed by Feross Aboukhadijeh, who was such a great instructor and a tech enthusiast. I can still feel his passion and how humble he was even though he had been in this industry for decades. He was Jack Peralta in tech. Just give the annoying website a try (You might like to use another browser instead of the current one you are using) and you will know why.

In this course, he took us through the comprehensive overview of web security. He demoed how people attack a site and demoed again how we could prevent our sites from malicious attacks. Also, he went into detail about basic concepts of web, including dns, https, tls and the different version of auth, which are terms I heard before but never fully understood. In addition, he provided reading resources for each class. These experiences really helped me get into the network of web and gave me a chance to practice my skill of reading long articles.

While taking this course, I started browsing around new things in the web community just for satisfying my curiosity. I struggled to get a job last year so that I had no time to try anything not a job requirement Besides, I had no ability to understand those articles, and had no experience to tell which solution was more appropiate to a specific situation, or what problem the library solved. It was so much pleasure that you can understand what people were discussing, even though it was hard to grasp all the points at the first place in some cases. At this point, I finally realized what "trade off" is. It was a term that Jimmy, my ex-manager, had reminded me several times but I couldn't really get it. Not knowing "trade off" screwed me up beyond number not only in programming but in my life and my work as well.

I have never been so happy in study time before. In this period, I tried bunch of libraries, learned lots of concects about computer and web, and joined an open-source project. Even though all I can help was to translate english to traditional mandarine, but I got a chance to see how people worked together in a remote workspace, which is also my dream pattern for work. However, I wasn't sure enough what I had learned so far if I only input my knowledge without giving an output. So I decided to make a small project to play with what I had learned for now and try some libraries in my list. In this project, my goal was:

  • Build an app with client and server sides
  • Build authentication with JWT and Google API

Tech Stack

I considered my tech stack based on one thing only:

  • Unexperienced - I wanted to try new libraries I had never used in a project before.

  • Cool - It should fulfill the cool kid's spirit inside the very bottom of my heart.

Front End

  • React
  • Next
  • chakra
  • storybook
  • React query
  • zustand
  • React-beautiful-dnd
  • D3
  • Jest
  • React Testing Library

Back End & Cloud

  • Node
  • Express
  • TypeOrm
  • PostgreQL
  • Docker
  • Droplets

Other


Final Thoughts

It was a fun experience to build an entire app from scratch, from tech stack selection and the layout and UI design, to actually the app developement. Although it really took me most of time being confused, I've not only reached the goal I set before starting:

  • Build an app with server and client sides
  • Build authentication with JWT and Google API

but I've also gone through the whole process in a web developement on my own, after leaving the first job. This really helps me rethink about how important every role playing in a project is.

Apart from things mentioned above, I highlight out few points I must do better next time:

  • Goal Setting

    Who is your target? What problem do you want to solve? How do you solve it?

    These are the most important questions I ask myselft before starting a project. I did do this time, but I gave myself too many anwsers. It was too messing. The project ended up neither fish or fowl for clients who are using it.

    I have to remind future me of making the goal more simple and more specific.

  • Design

    A great design pattern makes developement smoother and more frequent. However, there is no a pattern that fits in every situation. I have to study more cases and learn the ability to put the appropiate solution into the specific situation.

  • Comments

    A comment is helpful for other people who are reading your code to understand your logic. Even though it is my own project, it also the best practice for me to wrtie the comment. It can also make future me know what I wrote before.


What's Next

There are bunch of new things in my list, including Three.js, TensorFlow and canvas api. Also, after enrolling in Stanford - CS 253 Web Security, web security is also a part that I'm really intersted in.

I might keep digging into knowledge of cybersecurity and play around with frontend libraries recently.

About

Handle my procrastination

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published