70 lines
3.3 KiB
Org Mode
70 lines
3.3 KiB
Org Mode
|
#+Title: Programming experiences and choices
|
||
|
#+Author: Yann Esposito
|
||
|
#+Language: English
|
||
|
#+Select_tags: Programming, culture
|
||
|
|
||
|
* TODO Introduction
|
||
|
|
||
|
Why each programmer tend to prefer some programming language to solve its problems.
|
||
|
How are we creating our preferrences?
|
||
|
Why one use vim and the other one can use a specialized IDE?
|
||
|
|
||
|
* Preferences depends on experiences
|
||
|
** Hard to understand
|
||
|
** Goals
|
||
|
* Back Story
|
||
|
** At first
|
||
|
|
||
|
- Logo when I was 10yo at school
|
||
|
- Basic when I was 11yo, with a book trying to draw lines and make games
|
||
|
- Basic with Amtrad CPC 6128, trying to write games from magasines
|
||
|
- Compiled Basic with Atari STe, write a game you are the hero in it.
|
||
|
- Take some courses of beginner Pascal at school, sort algorithms
|
||
|
** Math Background then Computer Science
|
||
|
- Pascal for algorithmic
|
||
|
- C, for basics, system and network
|
||
|
- C++, Eiffel for Object Oriented Programming
|
||
|
- A little bit of CaML (write a mathematical expression simplifier making big
|
||
|
usage of pattern matching)
|
||
|
** Ph. D. In Machine Learning
|
||
|
- Give courses of Logo, C, etc...
|
||
|
- Write lot of complex HMM related algorithms in C++ with quite complex ML algorithms
|
||
|
- Discover Java and its promises, play a bit with it
|
||
|
- Have friend that use CaML for its Ph.D. and its hash-maps are said to be
|
||
|
faster than C. I remember this.
|
||
|
** No Love for Machine Learning in 2005 :/
|
||
|
- Write a Java program with an User Interface in my Post Ph. D. 1/2 of the work
|
||
|
in the UI, the other half in the algorithm.
|
||
|
** Still no love for ML in 2006 Find a job just to eat
|
||
|
- Go find a job to eat, have a *lot* of time to learn new things
|
||
|
- Discover HN, /r/programming, etc...
|
||
|
- Web Applications are all the rage
|
||
|
- DCVS is still a thing, people argue between git, mercurial, bazaar, etc...
|
||
|
- Write a tremendous number of zsh scripts to handle a huge number of files, use Perl, etc...
|
||
|
** First try at startup
|
||
|
- Decide with a friend to make a product, choice of technology with them is _very_ hard.
|
||
|
- git for example was a question
|
||
|
- using FB connect instead of classical, name / password bullshit is refused
|
||
|
because they still live technically in 2000
|
||
|
- Design decisions are hard to make
|
||
|
- Programming language, I heard good things about OCaML as the fastest high
|
||
|
level language. Can't even talk about it.
|
||
|
- A guy need technicians to make its product and is willing to pay.
|
||
|
- OK good first thing to try ourselves.
|
||
|
- The other guy know Ruby, so let's go with Ruby (no rails)
|
||
|
- Write our own framework, many technical frictions, but in the end a PoC is
|
||
|
made full ruby, deployed on heroku. The product is an end-to-end personal
|
||
|
electrical power consumption system.
|
||
|
- Guy explain, I want "real time"!!!! ???? WTFBBQ!! Real time is way harder than
|
||
|
just drawing dashboards!!!!
|
||
|
- Have performance problems! Start looking into other frameworks, stumble upon
|
||
|
snap, an Haskell framework stating that it is _very_ fast.
|
||
|
- Start looking further into Haskell from there.
|
||
|
** Haskell learning
|
||
|
- Learn Haskell from web programming perspective, the goal is not to _learn_
|
||
|
Haskell but to _use_ Haskell to write as fast as possible a web application
|
||
|
with batteries included. After trying a bit, I choose to use Yesod.
|
||
|
- Lot of time lost due to Yesod difficulties to handle correct package version coherence!!!!
|
||
|
- cabal freeze, etc... to the rescue, not perfect but ok, able to deploy on heroku
|
||
|
- Learn Haskell in the process.
|