Knowledge gaps and ideas for Proof of concepts
- Tsoding videos on Youtube
- static vs singletons
- Classloaders in Java
- Go through the reading material from the nodes - Multi threading and Concurrency
- Research about Cloud API Developer
- Kinesis streams - producing and consuming messages
- Why would teams use Elasticsearch in java applications?
- Springboot thymeleaf
- Spring concurrency model todo links
- Do a POC for d3.js to implement a force directed graph using some sample data
- Spring batch
- Notes about RBAC and ABAC and practical use cases and scenarios and implementations
- Write your implementation for SUDOKU game (do this in multiple languages - java, rust, haskell)
- Get a good understanding of the word “idempotent”. In what context is the word used in programming?
- GWT
- Learning about Inversion of control
- User registration application
- A nice article about what sort of problem a DI Container solves
- When to use a DI Container
- Better understanding of Factory patterns family
- Better understanding of inheritance.
- Thread - in-depth understanding
- Understanding Composition Root
- API Keys vs OAuth
- Locks
- Apache Zookeeper
- Write your own explanations for searching and sorting in your own words in the programming website
- Projects that I want to implement in the short term
- Understand CDI
- Converting from using Singletons to using Dependency Injection
- backpressure in reactive programming
- The Complete Guide to the ELK Stack
- Functor, applicative, monad, map, flatmap and other Haskell concepts
- http-client
- Factory pattern in springboot
- Fight ambiguity and improve your code with Java 17’s sealed classes
- Multipart upload
- Optimistic locking
- Spring security
- Why do POCs at all?
- What is the end goal?
- Resources to POC applications
- java 8 spliterator
- api versioning
- spring security
- javax mail
- Springboot
- Spring and Kubernetes:
- Spring Cloud Sleuth and Spring Cloud Zipkin
- Elastic stack
- JSON parsing
- Event based architecture
- Concept of Sharding in databases
- AWS ALB vs ELB
- Need further explanation on durable queue notes from Spring cloud stream
- Concurrency and parallelism
- Reading list
- Need architecture research
- gRPC and AppMesh vs RESTful calls
- OpenTelemetry
- aws to do list
- Find solutions for these use-cases
Tsoding videos on Youtube
static vs singletons
- https://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern
- https://stackoverflow.com/questions/3532161/what-is-the-difference-between-a-singleton-pattern-and-a-static-class-in-java
- https://softwareengineering.stackexchange.com/questions/437609/how-do-singletons-differ-from-static-variables
- https://www.baeldung.com/java-static-class-vs-singleton#bd-singleton-versus-static-utility-classes
- https://www.geeksforgeeks.org/java/difference-between-singleton-pattern-and-static-class-in-java/
- The table
- https://stackoverflow.com/questions/3532161/what-is-the-difference-between-a-singleton-pattern-and-a-static-class-in-java
- https://stackoverflow.com/questions/8387989/where-are-static-methods-and-static-variables-stored-in-java
- https://softwareengineering.stackexchange.com/questions/235527/when-to-use-a-singleton-and-when-to-use-a-static-class
Classloaders in Java
Go through the reading material from the nodes - Multi threading and Concurrency
Research about Cloud API Developer
- Job openings
- Salaries
- https://www.cloudflare.com/learning/security/api/what-is-a-cloud-api/
Kinesis streams - producing and consuming messages
- How to consume messages from a Kinesis stream?
- How to produce messages to a Kinesis stream?
Why would teams use Elasticsearch in java applications?
Springboot thymeleaf
Do a POC and common interview questions regarding this topic.
Spring concurrency model todo links
Do a POC for d3.js to implement a force directed graph using some sample data
Spring batch
Spring batch:
- https://www.baeldung.com/spring-batch-testing-job
- https://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/test/context/SpringBatchTest.html
Notes about RBAC and ABAC and practical use cases and scenarios and implementations
Write your implementation for SUDOKU game (do this in multiple languages - java, rust, haskell)
Get a good understanding of the word “idempotent”. In what context is the word used in programming?
GWT
What is it?
Learning about Inversion of control
TODO
https://martinfowler.com/articles/injection.html
- Using Service Locator to implement IOC.
- How it compares with using Dependency Injection?
- Service Locator vs Dependency Injection
- Constructor versus Setter Injection
User registration application
Things it will teach:
- front end
- working with JSON web tokens
- handling authentication in the backend
- sending password reset emails
- How does “verification SMS” work? What concepts are used in implementing it? How is it implemented? Write a small POC for it in java.
- I managed to build a user registration application that I was pretty proud of. It had a React front end, an Express/Node.js server back end, a MySQL database, it used Passport.js and JSON Web Tokens to handle authentication, the Sequelize ORM to perform CRUD operations on the database, a password reset feature through Nodemailer, Swagger endpoint testing on the REST endpoints, a docker-compose.yml file to spin up all three pieces of the application simultaneously in a virtualized container environment, etc., etc. Have you had enough technologies thrown at you, yet?
A nice article about what sort of problem a DI Container solves
When to use a DI Container
https://blog.ploeh.dk/2012/11/06/WhentouseaDIContainer/
Better understanding of Factory patterns family
- https://prasadct.medium.com/factory-method-design-patternfactory-method-design-pattern-with-real-world-example-4ee909a24ab6
- https://blog.devgenius.io/seven-popular-use-cases-to-apply-factory-pattern-in-your-software-project-6d1d6b57f5a5
- https://softwareengineering.stackexchange.com/questions/200647/why-is-the-factory-method-design-pattern-more-useful-than-having-classes-and-cal
- https://eluminoustechnologies.com/blog/case-study-factory-design-pattern/
Better understanding of inheritance.
- Go through the discussions in this link: https://stackoverflow.com/questions/49002/prefer-composition-over-inheritance and understand the intricate details of inheritance.
- This will give us a better understanding of the topic “Composition over Inheritance”.
- Implement this in a java application called composition-vs-inheritance: https://www.digitalocean.com/community/tutorials/composition-in-java-example
Thread - in-depth understanding
Inter-thread synchronization
- wait()
- notify()
- join()
https://www.baeldung.com/java-thread-join https://www.baeldung.com/java-wait-notify https://www.java2novice.com/java_thread_examples/thread_join/ https://www.java2novice.com/java_thread_examples/thread_sleep/ https://www.java2novice.com/java_thread_examples/thread_yield/
Understanding Composition Root
- https://freecontent.manning.com/dependency-injection-in-net-2nd-edition-understanding-the-composition-root/?utm_source=freecontentcenter&utm_medium=website&utm_campaign=book_dependencyinjection_ppp&utm_content=article_07
- https://blog.ploeh.dk/2011/07/28/CompositionRoot/
API Keys vs OAuth
Add the points to “Security” node in programming mindmap.
- https://www.google.com/search?q=api+keys+vs+oauth&oq=api+keys+vs+oauth&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQLhhA0gEINDMxOWowajGoAgCwAgA&sourceid=chrome&ie=UTF-8
- https://stackoverflow.com/questions/38047736/oauth-access-token-vs-api-key
- https://cloud.google.com/endpoints/docs/openapi/when-why-api-key
Locks
- https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html
- https://www.geeksforgeeks.org/reentrantreadwritelock-class-in-java/
- https://www.geeksforgeeks.org/difference-between-readwritelock-interface-and-reentrantreadwritelock-class-in-java/
Apache Zookeeper
Write your own explanations for searching and sorting in your own words in the programming website
Projects that I want to implement in the short term
- https://highscalability.com/zookeeper-a-reliable-scalable-distributed-coordination-syste/
- Database transaction isolation levels: https://www.geeksforgeeks.org/transaction-isolation-levels-dbms/
- How to test gRPC services from terminal?
- https://jenkov.com/tutorials/java-concurrency/index.html
- https://jenkov.com/tutorials/java-functional-programming/functional-composition.html
- Write REST clients in spring applications
- retry mechanisms
- testing
- integration testing
- Event driven architecture
- Spring cloud config server POC
- Service registry and discovery with Eureka
- Testing in-depth
- API Gateway with spring - POC
- Distributed logging and tracing - with spring applications
- Why would teams use Elasticsearch in java applications?
- Mockito vs Powermock
- Using wiremock for integration testing in spring
- https://medium.com/@bubu.tripathy/integration-testing-using-wiremock-afc93f18bb62
- https://medium.com/@bubu.tripathy/simulate-slow-responses-in-a-spring-boot-application-bf7ce14d3aa4
- https://medium.com/@bubu.tripathy/simulate-network-failures-in-a-spring-boot-application-60e2ecb7daab
- https://www.baeldung.com/integration-testing-in-spring
- https://www.e4developer.com/2019/03/26/java-9-to-12-all-the-language-modifications/
- A project to show how to handle various kinds of errors
- What is the point of delegate pattern?
- https://www.e4developer.com/
- Multithreaded Programming Guide: https://docs.oracle.com/cd/E19455-01/806-5257/index.html
Understand CDI
Converting from using Singletons to using Dependency Injection
backpressure in reactive programming
- Chapter in Vinoth Udemy course
- https://www.baeldung.com/spring-webflux-backpressure
- https://www.google.com/search?q=backpressure+in+reactive+programming&client=firefox-b-1-d&sca_esv=be16b17cae58a747&sca_upv=1&ei=znKlZu6LC66giLMPw7Pl8Q8&oq=backpressure+in+&gs_lp=Egxnd3Mtd2l6LXNlcnAiEGJhY2twcmVzc3VyZSBpbiAqAggAMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABDIFEAAYgAQyBRAAGIAEMgUQABiABEioR1DYDFjvN3ABeAGQAQCYAXOgAcMIqgEEMTEuMrgBA8gBAPgBAZgCDqAC5QnCAgoQABiwAxjWBBhHwgILEAAYgAQYkQIYigXCAgoQABiABBhDGIoFwgIREC4YgAQYsQMY0QMYgwEYxwHCAgsQLhiABBjRAxjHAcICCxAAGIAEGLEDGIMBwgIOEC4YgAQYsQMYgwEYigXCAgsQLhiABBixAxiDAcICCBAAGIAEGLEDwgIOEC4YgAQY0QMY1AIYxwHCAg4QLhiABBjHARiOBRivAcICEBAAGIAEGLEDGEMYgwEYigXCAg4QABiABBixAxiDARjJA8ICBhAAGBYYHsICCBAAGBYYChgewgILEAAYgAQYhgMYigXCAggQABiABBiiBMICBxAAGIAEGAqYAwCIBgGQBgiSBwM4LjagB-ti&sclient=gws-wiz-serp
The Complete Guide to the ELK Stack
https://logz.io/learn/complete-guide-elk-stack/
Functor, applicative, monad, map, flatmap and other Haskell concepts
- https://medium.com/beingprofessional/understanding-functor-and-monad-with-a-bag-of-peanuts-8fa702b3f69e
- https://www.adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
- https://www.adit.io/index.html
- https://www.adit.io/posts/2013-05-15-Locks,-Actors,-And-STM-In-Pictures.html
- https://www.adit.io/posts/2013-05-11-The-Dining-Philosophers-Problem-With-Ron-Swanson.html
- https://www.adit.io/posts/2013-04-15-making-a-website-with-haskell.html
- https://www.adit.io/posts/2012-03-10-building_a_concurrent_web_scraper_with_haskell.html
http-client
https://www.baeldung.com/httpclient-guide
Factory pattern in springboot
https://kh-yiu.blogspot.com/2013/04/spring-implementing-factory-pattern.html https://stackoverflow.com/questions/6390810/implement-a-simple-factory-pattern-with-spring-3-annotations
Fight ambiguity and improve your code with Java 17’s sealed classes
https://blogs.oracle.com/javamagazine/post/java-sealed-classes-fight-ambiguity
Multipart upload
https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html What is the difference between this and single uploads?
Optimistic locking
- https://stackoverflow.com/questions/2572566/java-jpa-version-annotation
- https://stackoverflow.com/questions/27961402/how-to-resolve-optimisticlockingfailureexception
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/dao/OptimisticLockingFailureException.html
- https://github.com/spring-projects/spring-data-relational/issues/1337
- There is an example for this in
/home/explorer436/Downloads/GitRepositories/programming-playground/java-playground/spring-cloud-examples/spring-cloud-stream/saga-choreography/order-service/src/main/resources/data.sql /home/explorer436/Downloads/GitRepositories/programming-playground/java-playground/spring-cloud-examples/spring-cloud-stream/saga-choreography/order-service/src/main/java/com/my/company/order/application/entity/PurchaseOrder.java
Spring security
- https://www.milanwittpohl.com/projects/tutorials/full-stack-web-app/the-backend-with-java-and-spring
- https://www.baeldung.com/rest-api-spring-oauth2-angular
- Go through the reading material from the nodes - Spring security
- sync -> programming and other tips -> Spring Security -> move the content from this into the mindmap
Why do POCs at all?
Helps with confidence. When someone asks you if you know something, the confidence with which you will answer the question when you really worked on it in the past really shows in the answer. If you really did not work on it, and if you try to lie to the person that is asking the question, they will be able to tell that something is wrong.
Another advantage is increased knowledge. You will be able to connect the dots easily when you have firsthand knowledge about a topic.
What is the end goal?
The endgoal is to get to a point where I can think of a problem in my mind and be able to easily translate it into a solution on paper and implement it using a language. And then expand upon the problems. Plus, it is fun to solve puzzles.
When looking at new problems online, resist the urge to solve them right away. Instead, focus more on where the question is coming from. What is the pattern? Are there more questions there? Do you have an in-depth understanding of the topic? If not, spend time on it.
After getting a deeper understanding of the concept, see step below.
Whenever you read about an algorithm or computer science concept, implementing a solution for it in Java or any of your favorite languages will help remember it in the future.
Note: Solving problems using pen and paper seems way more easier than tring to write code for it first. The free flow of thoughts is very helpful.
Resources to POC applications
- https://fullstackdeveloper.guru/spring-boot/
- https://howtodoinjava.com/series/spring-boot-tutorial/
- https://www.baeldung.com/full_archive
- TODO Some very good examples: https://www.javaguides.net/p/spring-boot-tutorial.html
- TODO Do a POC on this topic: https://www.baeldung.com/spring-boot-feignclient-vs-webclient
java 8 spliterator
api versioning
create an api with an initial version and change the contract. See how versioning comes into play for the implementation.
spring security
javax mail
Springboot
- Springboot DynamoDB
- https://spring.io/guides/gs/spring-boot-docker/
- Topical guide on Docker: https://spring.io/guides/topicals/spring-boot-docker
- https://spring.io/reactive
- https://spring.io/guides
- https://spring.io/guides*topical-guides
- https://spring.io/guides/gs/accessing-data-mongodb/
- https://spring.io/guides/gs/spring-cloud-stream/
- https://spring.io/guides/gs/gateway/
- https://spring.io/guides/gs/routing-and-filtering/
- https://spring.io/guides/gs/service-registration-and-discovery/
- https://spring.io/guides/gs/authenticating-ldap/
- Springboot graphql POC - producer and client
- Spring Cloud Contract Tests - what value do they provide to the producer application? Write a small POC for this.
- sending email from a springboot application https://medium.com/@ankithahjpgowda/send-mails-from-springboot-application-a5a83132c92b
- spring-data-redis
- spring-session
- Spring Expression Language
- Spring with Akka - actor and service models
- Eureka - service registration and discovery
- asciidoctor
- spring-restdocs
- spring-restdocs-asciidoctor
- spring-auto-restdocs-json-doclet
- gradle jsonDoclet task
- org.json:json
- org.webjars:json-stringify
- groovy springboot integration
- dealing with JSON inside a springboot application (you can use gson library for this)
- https://stackoverflow.com/questions/31288810/spring-scheduled-task-running-in-clustered-environment How to deal with batch jobs or scheduled jobs in a cluster or multi-instance setup?
- Is there a way to do hot-reloading for changes when we are working on a spring-boot application in local computer? So that the developers don’t have to stop and start the servers when they make changes. The answer is YES. Look at springboot dev tools. https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/html/using-boot-devtools.html#:~:text=The%20spring%2Dboot%2Ddevtools%20module%20includes%20an%20embedded%20LiveReload%20server,and%20Safari%20from%20livereload.com.
Spring and Kubernetes:
- https://web.archive.org/web/20210414191759/https://spring.io/guides/gs/spring-boot-kubernetes/
- https://spring.io/guides/gs/spring-boot-kubernetes/
Spring Cloud Sleuth and Spring Cloud Zipkin
- https://spring.io/blog/2016/02/15/distributed-tracing-with-spring-cloud-sleuth-and-spring-cloud-zipkin
- https://www.baeldung.com/tracing-services-with-zipkin
- https://www.baeldung.com/spring-cloud-sleuth-single-application
- https://howtodoinjava.com/spring-cloud/spring-cloud-zipkin-sleuth-tutorial/
- https://dzone.com/articles/spring-cloud-amp-spring-bootimplementing-zipkin-se
Elastic stack
JSON parsing
Tsoding JSON parser
(Add this to the list of things to remember when learning a new programming language) Whenever I set out to learn a new language, the first small program I try to write is a JSON parser, which converts a data format commonly used for web applications into a structure that can be manipulated by the computer.
Event based architecture
Read about these two. See if you can do POCs on them.
- Apache Nifi (https://aws.amazon.com/blogs/database/stream-time-series-data-into-amazon-timestream-using-apache-nifi/)
- Apache Flink
Concept of Sharding in databases
AWS ALB vs ELB
Need further explanation on durable queue notes from Spring cloud stream
Concurrency and parallelism
What are the differences? Need to do more research about this.
-
Scheduling
-
Deadlock
-
Starvation
-
Concurrent or parallel programming
Concurrency vs Parallelism vs Multi-threading
Reading list
Uber engineering blog: https://eng.uber.com/
https://en.wikipedia.org/wiki/HATEOAS
https://stateless.group/hal_specification.html - this is related to HATEOAS
Spring Data REST takes the features of Spring HATEOAS and Spring Data MongoDB and automatically combines them together. Look at the POC `spring-data-mongodb-rest/`
Spring Data REST also supports Spring Data JPA, Spring Data Gemfire, and Spring Data Neo4j as backend data stores.
https://walkercoderanger.com/blog/2014/02/javascript-minefield/
-
The OWASP Top 10 is a standard awareness document for developers and web application security. It represents a broad consensus about the most critical security risks to web applications.
-
What tech stacks are used in other companies? https://stackshare.io/stacks
Need architecture research
https://dotnet.github.io/orleans/
- https://medium.com/@kritner/getting-started-with-microsoft-orleans-882cdac4307f
- https://devblogs.microsoft.com/dotnet/orleans-3-0/
https://www.microsoft.com/en-us/research/project/orleans-virtual-actors/
https://www.baeldung.com/spring-security-kerberos
gRPC and AppMesh vs RESTful calls
OpenTelemetry
How is this done in a springboot application?
aws to do list
localstack
- https://localstack.cloud/
- See how you can use it in your POCs.
- See if you can do AWS POCs without having to create as AWS account.
- S3 presigned urls
- How to create a S3 pre-signed URL?
- How to upload files using S3 pre-signed URLs?
- This is done in Prudential projects. Refer to it if necessary.
- Reading and writing from DynamoDB tables.
- This is done in Prudential projects. Refer to it if necessary.
- Reading and writing from SQS queues.
- This is done in Prudential projects. Refer to it if necessary.
- Sending emails using SCS or the AWS service that lets you send emails
- How to scale a docker service in AWS ECS? Using auto scaling. This can be set in the console. How to do it using CloudFormation template?
- Integration with Alexa API - Can we do a small POC for this?
POC idea
- AWS Lambda - Employee database - DynamoDB in local docker or in localstack
- Employee lambda integration with MongoDB or a NoSQL database. Don’t care too much about the language in which it is implemented - although it would be nice to do it using java.
Find solutions for these use-cases
Handling slow responses from backend services
How can we do this?
- You triggered a call to a backend service from your application.
- You waited 90 seconds but did not get a response from the backend service yet.
- You want to stop waiting and give a 201 ACCEPTED message to the application that is waiting for your response.
- But still keep waiting fro the response from the backend service.
- After receiving response from the backend service, do the house-keeping tasks (like inserting or updating rows in database, writing logs, etc.)
priority based processing of requests
- priority based processing of requests when we have asynchronous processing implemented
- e.g. If we have SQS or a streaming solution in place, but we want to assign priority to the requests that need to be processed based on certain criteria like the client application or the type of the message. How to implement this?