- outline of article
- code to generate cycles from TreeMap
[ ] CANCELLED: write code to draw graph just before loop detected (too many race conditions)- draw it using graphviz
- add colours
- sample stacktrace
- link code to article
- simple experiment
- printing out cycle
- executor experiment
- grpc experiment
- come up with a bigger example that will produce a prettier graph
[ ] CANCELLED: animation for red-black tree deep dive[ ] CANCELLED: solid 2 thread code interleaving that generates the loop?[ ] do it by hand[ ] generate it with logging[ ] wouldn’t logging with synchronized make the issue less likely to happen due to locking introduced?
[ ] CANCELLED: simple diagrams that demonstrate the concurrent rotation issue- spring-rest/grpc realistic example
- get grpc protobuf generating
- implement service
- implement client-server main method
- write up situation in blog post
- threadpool with swallowed stack trace realistic example
- look into GRPC NPE. I thought NPEs make it to the logs. not sure what happened in my example. i’m not seeing NPE in standard out.
- high level why it happens with two threads executing and tree rotation pseudo code hint is the NPE
- different languages that also have the issue (as long as you can catch NPE)
- research
- javascript
- python
- typescript
- java
- C#
- C++
- PHP
[ ] C- Go
- Rust
- kotlin
- Ruby
- implement the ones that are possible
[ ] javascript[ ] python[ ] typescript- java
- C#
- C++
[ ] PHP[ ] C- Go
- Rust
[ ] kotlin- Ruby
- research
- easy solution: locking/monitors
- controversial solution using lg(N) extra memory
- high level description
- drawbacks
- implementation
- re run experiment with safe TreeMap
- Add diff viewer somehow
- conclusion
- related work
[ ] include source code under a detail tag in addition to a link the repojekyll wasn’t liking detail tags- include source snippets with link
- Experiment: SimpleRepro
- Experiment: Generate Graph
- Real: Executor
- Real: gRPC
- Languages: Java
- Languages: C#
- Languages: Ruby
- Languages: Go
- Languages: C++
- Languages: Rust
- fix link in related worked
- Fix language table
- clean up article
- first skim expand existing content
- Intro
- Experiment
- Related Work
- Realistic
- How
- Other langs
- Easy fix
- Controversial fix
- Layered
- Conclusion
- spell check
- proof read 1
- Intro
- Experiment
- Related Work
- Realistic
- How
- Other langs
- Easy fix
- Controversial fix
- Layered
- Conclusion
- proof read 2
- Intro
- Experiment
- Related Work
- Realistic
- How
- Other langs
- Easy fix
- Controversial fix
- Layered
- Conclusion
- first skim expand existing content
- send for review
- determine commands to transfer to public repo ``` cd java-by-experiments git remote add private ../java-by-experiments-private/.git git fetch private git checkout private/main -b private-main git checkout main git merge private-main git branch -d private-main git remote remove private git push
cd josephmate.github.io git remote add private ../josephmate.github.io-private/.git git fetch private git checkout private/main -b private-main git checkout master git merge private-main git branch -d private-main git remote remove private git push ```
- push to public repos
- test links to public experiment repo
- SimpleRepro
- java
- C#
- C++
- Go
- Rust
- Ruby
- Link to ProtectedTreeMap
- report bug to jekyll about using detail tag. for now just include source snippets with link
- already reported: https://github.com/jekyll/jekyll/issues/9297