Log: 202112
· 7 min read
Achievement
- Programming TypeScript / Boris Cherny / O'Reilly
- Responsive Web Design with HTML5 and CSS / Ban Frain / Packt
- Effective TypeScript / Dan Vanderkam / O'Reilly
In Progress
- Essentials of Programming Languages / Daniel P. Friedman, Mitchell Wand / The MIT Press
- Pragmatic Programmer / David Thomas, Andrew Hunt / Pearson Addson-Wesley
- The Unix Philosophy / Mike Gancarz
- Database Internals / Alex Petrov / O'Reilly
Review of My 2021
Learned about
- CS
- Systems
- Clean Architecture
- Algorithms
- AtCoder
- Green
- Cracking the Coding Interview (6th Edition)
- C++
- Python
- AtCoder
- Math
- Number Theory
- Logic
- Computation Theory
- Linear Algebra
- Statistics
- Graph Theory
- Machine Learning / Deep Learning
- TensorFlow
- Keras
- Database
- Database Internals
- Systems
- Languages
- C++
- Python
- Pytest
- JavaScript/TypeScript
- React
- Next.js
- React Testing Library
- Node.js
- Jest
- React
- Functional Programming
- Haskell
- Scala
- Scheme
- JavaScript
- React
- AWS
- SAM
- Lambda
- Lambda Layers
- API Gateway
- S3
- CloudFront
- CloudWatch
- log
- watch
- DynamoDB
- Route53
Programming Languages
JS/TS
it was soooooooooooo big for me to have learn about JavaScript/TypeScript deeply.
- JS/TS is the best language for me so far.
- i can write code easily.
- i can write both frontend and backend in just JS/TS only.
- i knew that it's hard so much to keep learning and using some languages in practice.
- rich syntaxies and language features
- array function
- this is a very big feature to those who like functional style.
- spread syntax, object destruction, promise, await/async etc
- array function
- transpile
- always work in the newest JS/TS version
- JS has many pitfalls that are awkward and surprise novices.
- new syntaxies or language structures have been released to replace them although old ones will remain in the future for backward-compatibility.
- but we can always write program safely and comfortably in the newest JS/TS version, then transpile it to a target older version so we don't worry about the old language features.
- prototyping or tracer bullet
- i can ignore compile errors from TS and emit the build product anyway.
- this flexibility is useful for prototyping or tracer bullet
- in early stage, implement roughly to think of specification details
- then gradually get it strict for realistic system
- always work in the newest JS/TS version
- static analysis
- i can catch bugs not at runtime but at compile time
- type safe
- TS gives me useful infomation about a variable, funciton, or so when i'm writing code
- TS notifies me even typos by using String Union
- structural type
- it's more flexible and useful for web development than nominal type
- i can write both frontend and backend in just JS/TS only.
- it's popular
- someone said that googlability is preferable to language goodness. it's one of truths
- supported by many services and platforms
- AWS
- a lot of frameworks and libraries provided by communities
- i can write code easily.
- demand to master JS
- JS is popular but i feel that those mastering JS is less than i expect
Python
- i still think that Python is a good language
- simple syntax
- useful language features and built-in functions
- we can run an implementation anyway because of dynamically interpreted.
- we can add type infomation using typehint.
- popular
- many books about Python
- many services and platforms support Python
- many libraries and platforms published by communities
- but i feel that it might not satisfy strictness to develop a production.
- type system is insufficient
- VSCode often doesn't show up type information even when using typehint
- these is no compile time error; just all occur runtime
- less maintainancibility
- there is no constant variable in Python
- type system is insufficient
- for my preference
- the syntax is not for functional sytle
- not type safe
- lambda function can be written in only one line
- it's difficult to chain functions
- the syntax is not for functional sytle
Haskell/Scheme
- writing programs in Haskell and Scheme was very good excercise to implement logics in functional programming style.
- i got familiar with the recursion.
Development
Test
- i wrote tests right for the first time.
- i spent a lot of time to learn how to write tests, and implement actually and run tests properly...
- Pytest
- Jest
- React Testing Library
- not easy to use...
- GUI test is more difficult than tests for backend.
- i don't know React design pattern to make tests easy.
- i can't divide a form component into API fetching and renderer.
- i knew that writing test take more time than implementing features.
- it makes me to consider testability while implementing features.
- i got to be to prefer functional programming style.
- it makes me to consider testability while implementing features.
Algorithms
- AtCoder and Cracking the Coding Interview was very good practice to implement algorithms.
- when i'm in trouble to implement logics in ordinal development declined.
- i can easily modify an existing data structure or implement a new custom data structure if needed
- search algorithms such as DFS and BFS is most useful for me.
- i can manage to implement so many logic using DFS if i can ignore the time complexity.
- to constrast, i've had no chance to use algorithms regard to the number theory in app developement.
AWS
- i was astonished by the number of services and configurability at first.
- examples in official docs are too few so i had to had so many trials and errors to deploy properly.
- i knew that each service has the depth to experiment and configure options to optimize the perfomance.
- but i could know the convinience of cloud service and the power of infrustructure as a code.
- i implemented a web app backend in a template file.
- we can manage infrustructures in VCS
- we can copy it and create the same another environment easily
- we can deploy and delete it easily
- i implemented a web app backend in a template file.
- i didn't take exam for Certified Solution Architect finally.
- i want to use time for other things to learn and i feel that it's better to work actually rather than memorize details including possibly unnecessary knowledge
English
-
i've read about 20-30 books written in English this year.
-
i've bought Japanese books about math or programming no longer.
- i noticed that when there are things difficult to understand in English, they are also difficult in Japanese.
- why it's difficult to understand them is not because the English texts are difficult, just because they themselves are complicated.
- if the difference is little, it's better to read and learn about them in English because i can learn and practice English at the same time.
-
my English skills are reading >> writing > listening > speaking.
- reading was improved so much.
- i'm no longer in trouble when i read refarences or manuals in English.
- vocabulary is still poor.
- there are so many words i can't read.
- i can't understand jokes or parables.
- i don't know about casual or daily English at all
- i'm now just specific to programming or math.
- writing
- writing is still slow but i feel it get to be better.
- i became to be able to write documents about sysmtes or tools.
- i can't write casual English.
- i can't chat by chat apps.
- listening, speaking
- it's stil not good but improved by
- watching youtube videos, explaining programming launguages, frameworks, algorithms or so, with CC feature.
- reading books aloud
- it's stil not good but improved by
- reading was improved so much.
What Next?
- i want to implement a middle or large system
- i want to make apps
- my blog
- i want this to be a platform to exhibit my implementations
- not only interesting but also entertainable or artistic
- i want this to be a platform to exhibit my implementations
- study app
- like izanami jinja i made before
- my blog
- i want to read
- Essentials of Programming Languages
- Computer Organization and Design MIPS Edition: The Hardware/Software Interface
- The Linux Philosophy
- about computer network
- about functional programming in practice
- about software architecture
- about system architecture