Monthly Archives: October 2015

Reading – Programming Phoenix

Just completed reading through the B2.0 of “Programming Phoenix” book during the weekend. I hadn’t been able to use phoenix some time since pre-1.0, but this book was a good material for catching up the latest features.

The book starts with the strong statements about the benefits of phoenix and underlying elixir, as in the subtitle – Productive |> Reliable |> Fast. Then, the main content explains the features by gradually building up simple and concise application called Rumbl. Building up standard CRUD operations to user models backed by Ecto with postgreSQL DB, and implementing authentication using the model didn’t take long and it was a good exercise.

Definitely looking for the remaining part to complete, which includes the web-socket channel.

Watching – Elixir Conf 2015 Videos (1)

I’ve started watching the session videos of elixir conf. I really wanted to join the conference if possible, but it’s good that I can watch every session online.

Keynote Рfrom Jos̩ Valim

Recent history of extended elixir capability, and coming future enhancements.

The recently added mix profile.fprof provides nice and easy interface for profiling. The fprof of erlang is somewhat cryptic and difficult to start using. The new ex_doc styling is getting nicer, along some other improvements.

Also, the coming future features like pipeline parallelism and GenRouter will be more extending the capabilities in parallel and distributed system, which sounds promising.

Keynote: Elixir Should Take Over the World – from Jessica Kerr

It might be one of the best talk with insightful ideas and encouraging statements. It introduces the power of elixir by comparing with historical progress in physics. It’s an insightful talk about how progress is being introduced, and how it relates to computer and programming architecture. The history shows always new ideas are coming and we need to keep thinking about what’s coming next.

Elixir has strong powers of

  • Functional Programming : Immutability with data flow through actors
  • Object Oriented : Independency in processes and message communication between actors
  • Errors : Isolation with crash and recovery mechanism

which is enforced by the related ideas and technologies coming in this age. One remaining part is the People to spread the idea to the world, which elixir is improving at the moment. Elixir is providing different paradigm and it imposes certain difficulty, and sharing various types of experiences at different levels helps new-comers to improve themselves.

Reading – Soft Skills: The Software Developer’s Life Manual

A well-written and well-covered guidance book for software engineers. Putting some distance from technical topics, it focuses on general productivity and career-developments useful for software engineers. Set of small chapters are providing good starting points for variety of topics. Also, essences are extracted from many good books (Rework, The Power of Habit, The Willpower Instinct, etc.) which guides you to further details.

Some of my notes are,

  • Employment and Career
    • One viewpoint is considering your employer as customer and think on what you’re offering to them. Also, market your offerings to the current employer or other possible future employers.
    • In many cases hiring managers make decisions based on the social aspects of candidates rather than the technical aspect of the sill itself. Blogging and social media presence or referral from other engineer is important.
    • Freelancing is one way to gain controllable career, but normally you need to earn twice as your salary as employee, considering the extra cost for your own business. Standard hourly rate in U.S. can be 50 dollars per hour and you may charge 100 dollars for example.
    • It’s important to specialize. If you have specialized skill-set, it’s easier to sell. For example, the author has experience in building automated-testing framework, and selling a cost-benefit compared with building from scratch without specialized knowledge.
  • Professionalism and Improving Skill
    • Consistency is a key for professional work. Making a habit makes difference.
    • Professional needs to identify when to say no. The client and software engineer can be like doctors and patients. The doctors don’t just do what patients asked to do. Analyze the issue and propose appropriate methods.
    • Teaching and mentoring someone is a good method for learning which provides reorganizing process of your understandings. Don’t be too afraid to tell your knowledge confidently even when you’re not sure if it’s correct or not.
    • Becoming accountable to yourself without relying on external trigger of motivation. Having a internal trigger provides more consistent and controllable behaviors.
    • Breaking down tasks into smaller chunks makes it easier to start working on it, as represented as the structure of this book.