Here I explain why we need to more think about problem before jumping into the solution and how we should value innovation even when there is a working solution in place.
6. The High Wheel bike was the first machine
to be called a "bicycle".
It was popular in the 1870s and 1880s,
with its large front wheel
providing high speeds and comfort.
… but , is it really “comfortable”?
- Wikipedia
7. 20 years of suffering and NOT reinventing the wheel!
8. The REAL evolution of wheel
Stone Wheel iPod Wheel
Let’s call software a “wheel” for now!
9. In today’s word most of the softwares are really bad!
iPhone X
4 GB RAM
2490 MHz CPU
IBM System/360 Model 75
256 KB RAM
0.043 MHz CPU
10. Your iPhone is
X 1,000,00 more RAM
X 100,000 faster CPU
than Apollo 11
11. “Same same, but difference!”
vs.
Macbook Pro:
CPU: 16-Core 3.3GHz Intel Xeon
RAM: 32GB
Playstation 4:
CPU: 8-Cores 2.75GHz AMD
RAM: 8GB
22. Professor Andrew S. Tanenbaum
- Computer Scientist
- Creator of Minix
Linus Torvalds
- Creator of Linux
Tanenbaum to Torvalds:
“Be thankful you are not my
student. You would not get a
high grade for such a design”
23. … but Professor Tanenbaum was wrong!
Server Operating System Worldwide (2020)
28. So, should we reinvent the Java?
Yes, we should, with Kotlin, because:
- Kotlin comes from industry, not academia
- Kotlin works existing Java frameworks and libraries
- Kotlin can be learned in a few hours
- Kotlin enforces no particular philosophy of programming
- Google adopted Kotlin as the first choice for Android
Yes, we should, with Scala, because:
- Scala combines oop and functional
- Scala is concise and high-level
- Scala’s static types help avoid bugs in complex apps
- Scala has access to huge ecosystems of Java libraries
- Big Data ecosystem adopted Scala as the first choice
29. What about JSON / YAML?
Filter: filename:*.json size:>10KB => Result: 66,602
Filter: filename:*.yaml size:>10KB => Result: 4,124
Number of large json and yaml files in a Spotify open-source repositories
30. JSON / YAML Problems:
- Not Modular
- No Type System
- No Prototyping System
- No Bitwise / Arithmetic Operation
- No Variable
31. Confee notation files can be compiled
to JSON, YAML or other config
notation files.
data-type.confee
data-info.confee
data-info.yaml
Confee
Compiler
32. Closer look at Confee!
Every value can be
reused like a
variable
Custom-typed objects can
be reused as a prototype
Primitive types such as String,
Integer and Boolean supports basic
operations by + - * / % & |
operators
data-type.confee
data-info.confee
Confee files can be imported
like a module
Types should be defined for
every value