My speciality skills
- Have a view for design which concerns about programming, testability, maintainability, security, and operability.
- Know what kind of lacking knowledge will cause what kind of system problems.
Make things right
As simple as I can, an application system composes following three important aspect of skills:
- Knowing how to match your design with specifications, protocols, frameworks etc.(JSON Schema, HTTP, SpringFramework)
- Knowing how to test your code.(From unit tests to maintainable integration tests)
- Knowing how to use databases with best practices.(least indexes for acceptable performance. least cost for correct transaction)
Development for Micro-sevices/Saga Pattern/Event sourcing
- Language:
- Java(over 10 years): SpringBoot, Spring WebFlux/WebMVC, SpringSecurity, SpringData(JPA/Hibernetes, Cassandra), Reactive Programming(Reactor), BeanValidation,
AspectJ, CGLib, SLF4j, LogBack
- GoLang(3 years): Gin, GORM, Go-Resty
- Meta-Programming:
- Experienced with PEG(Parsing Expression Grammar)
- Paradigm:
- Familiar with Reactor(framework of Reactive Programming)
- Deployment:
- Kubernetes(on GCP), Minikube, 4 years
- Language Tools:
- Testing:
- Java: JUnit(Jupiter), JMockit
- GoLang: Ginkgo, Gomega
- Minikube: In personal or shared environment for development team
- Parser generator:
- Java: ANTLR
- GoLang: pointlander/peg
- Queueing: RabbitMQ, Kafka
- Lightweight Markup Language:
- Markdown, AsciiDoc, Creole(used by Trac mainly)
Other languages
Perl
(15 years ago), TypeScript
(for nvim/vim plugin, recently), lua
(for nvim, recently)
vimscript
(I’ve been using VIM for 20 years, turn to NVIM recently)
fish
(as I change my development environment of terminal)
Architecture
- Experienced on reactive programming
- Expert on IoC/DI pattern
- Expert on domain driven-design
- Expert on aspect-oriented programming/declarative programming.
- Expert on test driven-design.
- Expert on event sourcing/offline transaction/Saga pattern design.
Refactoring systems
With TDD principals, I am good at refactoring/simplifying existing system.
- Experiences on refactoring from monolith system to micro-services.
- Expert on test-driven for reliable software quality while refactoring.
Experienced on NoSQL Databases: Cassandra, MongoDB
- Expert on Pre-optimized design for schema/index
- Expert on query optimization
- Expert on databae evolution(Liquibase, CassandraMigrate)
CI/CD
- Experienced on modern CI/CD(GitLab CI, GitHub action)
- Experienced with Docker/Kubernetes/Kustomized
Cloud
- Experienced on AWS(EC2, ElastiCache, RDS, ECS)
- Experienced on GCP(SQL, GKE, Logging, Monitoring)
Knowledge system
Expert on usage of Trac/AsciiDoc writing.
- Experienced on Confluence/JIRA