package main
import "fmt"
type Developer struct {
Name string
Role string
Location string
Languages []string
Interests []string
}
func (d Developer) String() string {
return fmt.Sprintf("%s — %s from %s", d.Name, d.Role, d.Location)
}
func (d Developer) CurrentlyLearning() string {
return "Always something new in distributed systems"
}
func main() {
me := Developer{
Name: "Joel Teodoro",
Role: "Backend Engineer",
Location: "Spain 🇪🇸",
Languages: []string{"Go", "Java", "Python", "C"},
Interests: []string{
"Scalable microservices",
"Event-driven architectures",
"Making things faster",
"Breaking things to understand them",
},
}
fmt.Println(me)
// Output: Joel Teodoro — Backend Engineer from Spain 🇪🇸
}backend:
primary:
- go # current obsession
- java # spring boot ecosystem
secondary:
- python # scripting & automation
- c # when i need to go low-level
frameworks:
- spring-boot # enterprise stuff
- gin # fast & lightweight
- grpc # service communication
infrastructure:
containers: [docker, kubernetes]
messaging: [kafka, rabbitmq]
databases: [postgresql, redis, mongodb]
practices:
- clean-architecture
- domain-driven-design
- event-sourcing
- test-driven-development@@ current focus @@
+ Building microservices with Go — obsessed with performance & simplicity
+ Deep diving into Kafka internals — event streaming is beautiful
+ Kubernetes patterns — making deployments boring (in a good way)
+ System design — preparing for scale before it's needed
@@ actively avoiding @@
- Premature optimization (learning to resist)
- Writing code without tests (never again)|
Building utilities that automate the boring stuff. If I do something twice, it becomes a script. If I do it three times, it becomes a tool. |
Experimenting with consensus algorithms, event sourcing, and everything that can go wrong in distributed environments (spoiler: everything). |
|
Designing APIs that developers actually enjoy using. Documentation included, because past me hates undocumented APIs. |
Random experiments, proof of concepts, and "what if I try this?" projects. Most fail, some become real tools. |
{
"email": "joel.teodoro.software@gmail.com",
"linkedin": "linkedin.com/in/joel-teodoro-gomez",
"portfolio": "joelteogom.github.io",
"status": "open to interesting conversations"
}
// TODO: write better commit messages