class: center, middle # Ship it! ## Building an elixir web app from first commit to Live A software tale by Franka @franschm --- ## Part 1 : Ship it! - The Why ## Part 2 : How I built 'delete-your-tweets' - The What & How ## Part 3 : Take-aways --- ## Part 1 : ### Ship it! - The Why --- # Wait, what is shipping? ### to ship [in software development]: ### ... means "to publish or distribute software" --- ## Taking on ownership of a full project (product, design, dev, ops, marketing, ...) can force you to fill in those "grey areas" and force yourself to overcome fear of new things. --- ## Self-reliance: I can do this!* ... or find the resources from someone who does. --- # Picking a "thing" It doesn't have to be a web app. You could build: * a mobile game * a vegan recipe blog * an online resistance reading club * ... a small, completable thing --- ## "I want to learn all the things!" vs ## "I want to become really great at this one thing!" --- ## The (problematic) myth of # The "full-stack" wizard  --- ## The (problematic) myth of # The lonely software wolf
.center[] --- ### Part 2 ## How I built 'delete-your-tweets' - What & How ### An experience report ---  --- # [ ] Why deleting tweets? * I like tweeting * I like privacy * I could use a thing that deletes tweets idea: build an app that can delete tweets! --- # [ ] Picking a tech stack * do you want to learn a new (to you) technology? * do you just want to build a thing? --- # Elixir Lang * functional language that runs on the Erlang VM * Erlang known for high concurrency & performance * Ruby-style syntax .right[] --- class: middle ``` def hello_world do IO.puts "Hello World!" end ``` --- class: middle ``` def handle_tweets do fetch_tweets |> filter_for_date |> delete_tweets end ``` --- # Phoenix Webframework * a framework to write web applications in elixir * heavily inspired by Rails  --- # "I am _____________ on Twitter." --- ### extwitter: elixir client library for Twitter #### provides a handy abstraction over the Twitter REST api e.g.: ``` ExTwitter.user_timeline ExTwitter.destroy_status ``` --- class: middle # Drawing a design --- # Drawing a design .center[] --- # Drawing a design .center[] --- # Implementing the design .center[] --- # Implementing the design .center[] --- class: center class: middle # brief interlude: a note on side projects --- ## Now let's deploy it! #### Choose a provider [ ] #### Deploy it! [ ] --- ## Now let's deploy it! #### Choose a provider [✅] ===> Heroku #### Deploy it! [ ] ===> let's take a look!
.right[] --- ## Steps ### Create Heroku application ### Add phoenix buildpack ### Make the project heroku-ready #### Taken from https://phoenixframework.org/docs/heroku --- ## Continuous Integration with Travis CI ### next step: continous *deployment* with travis? ---  * configuring this is fiddly at best * there are good docs that help --- ## Closer look at a travis yml .center[] --- ## A note on tests * No unit tests. That's ok though. * I do have a great twitter test account: @do_u_like_trees  --- class: center # brief interlude: a note on motivation .right[]
### What helps you to get stuff done? --- class: middle # Domain setup --- ## Domain setup * choose your domain [ ] * choose a provider [ ] * read up on zone files! [ ] --- ## Domain setup * choose your domain [✅] ==> franka.tech * choose a provider [✅] ==> gandi.net * read up on zone files! [ ] ====> let's have a look --- ## my zone file  pro tip: `dig google.com any` to look at other people's configuration! --- ## a caveat on zone file versions  --- ### Feature Requests ## User feedback (reminder: ... http://delete-your-tweets.franka.tech) --- ### Feature Requests ## SSL support * Let's Encrypt let's you generate certificates *for free*! .right[] --- ## Part 3 # Take-aways ### aka what's actually important? --- ## Is it shipped? # Demo time! --- class: middle ### you are smart and you can learn things! --- class: middle ### shipping a thing will make you feel productive & expose you to new things! --- ### Go forth and build cool things! .center[] --- class: center, middle # thank you! <3 http://delete-your-tweets.franka.tech Code is at https://github.com/vsmart/delete-your-tweets Email me at hello@franka.tech! PS: I'm looking for a job.