on
Weekly Recap 1527/5000, where I learn a new programming language for the first time in four years.
On the 1527th week of my life, I:
- Read: Crushing It, by Gary Vaynerchuk.
- Read: The Obstacle Is the Way, by Ryan Holiday.
- Reading: Programming Elixir, by Jose Valim.
- Reading: Programming Phoenix, by Chris McCord.
- Reading: Your Brain at Work, by David Rock.
- Wrote: Just drafts of articles. I should have!
- Biked: 186km.
- Coding:
- Habits One, Elixir project. I have authentication and authorization working now, as well as the basic CRUD functionality.
- Consulting: I worked with my homies re: consulting on an all-around inventory/payroll system.
- I spoke with programmers more this week. With my friends, I spoke with them on how I’d be able to get high salary in my new job. As I suspected, it’s about skills. Okay. I just need more skills.
- Tool adjustment: I create a Spotify playlist of Deadmau5 songs. These get me super pumped to code shit.
- Tool musing: At some point I need to know Docker, if only to optimize my working processes with my future team.
Life updates
My main objective for this week was to learn the Elixir programming language and make something productive with it. All the cool Rails developers seem to be migrating to Elixir. Plus, I haven’t learned a language in three years.
I’m enjoying it. It’s easier to learn a programming language if you know others already. I can draw upon my Ruby and Rails experience to help me learn Elixir and Phoenix. Much of the first few days has been “how do I implement <insert Ruby command>
in <insert Elixir command>
. I know that this limits my development to “Elixir language features that are also implemented in Ruby”, but for now, it’s okay. I’ll get to the Elixir-specific features later.
My app for Elixir is Habits One, a habit tracking app. A user can put in their habit, then every day they can manually flag if they do the habit or not. That’s the core of the app. I’ll show a screenshot when I have a prototype up.
My tactics on learning Elixir:
- I learn fastest by reading a book, so I got a copy of both Programming Elixir and Programming Phoenix. Since my goal is to create an application, I also needed to learn the Phoenix web framework.
- Write my sample project. I hate writing code that I won’t use. I really wanted to make a habits tracking app anyway, so I might as well do it in the language I want to learn. Elixir also has a language feature which makes it easier to send notifications/updates to users. I imagine that this would be very important in the app that I’m making.
- I spent a few hours working on mechanics via Elixir Koans.. Koans are a set of exercises designed to burn language features in your brain. It’s like flashcards for developers. It’s a way for me to be more familiar and comfortable with the language.
- Reading other projects. Reading how code is structured. Looking at a sample project so I can have a basis on how things work and I can do the code comparison thing when I have a bug. This is the project I’m basing my work on.
- After each day, I write TILs (Today I learned). That way I can marinate the ideas in my head.
- Try not to get sidetracked. This is my problem: I keep on getting sidetracked by reading documentation and blog articles. I get to know some other features of the language, but I fall in a rabbit hole and I still haven’t finished the book!
- Just grind it out. I don’t care if other people are faster than me or are better than me. For example, there’s a chapter in the book about concurrency. I don’t really understand everything at first pass but I know I can get back to it later. Or I can browse a screencast, or muck around and try to make my own.
Okay, see you. I need to write my speech!