The Education of a Programmer (Me)

Just another WordPress.com site

Month: July, 2014

Book Review – Becoming Functional

I’ve recently been reading Becoming Functional by Joshua Backfield. As usual, the disclaimer is that I received a copy of the book for free in return for the review.

I was interested in this book, primarily because I have always been of the opinion that some of the code I’ve written for a couple of programs I’ve developed could be better written using a functional model as opposed to the traditional declarative programming model I learned in school. After reading this book, I’ve realized my instincts are better than I thought and that I’m right in that belief.

Mr. Backfield does a very good job stepping the reader through a fictional company where, as a developer, you’re trying to make some of their back end programming more efficient and more responsive to the user. He starts by walking you through the company’s code and then refactoring it step-by-step to more and more functional paradigms. Along the way, he does a good job of explaining functional programming in brief and how factoring the functions can make everything work more efficiently.

When I read the book for review, I only had the first six chapters available, but the chapters on immutable variables and recursion were enough for me to be sufficiently impressed and to have some ideas on where to take my own code. I am certainly going to go back and finish the book and work my way through the code.

Even though the code examples are in Java and Groovy, it’s not difficult to see how to change them over to C# and possibly F#. (For programmers like myself in the ASP.NET world.) With this in mind, it won’t be hard at all to work out the refactoring method by method.

Overall, for an experienced declarative programmer, this is a great introduction and a good guide to adding in functional concepts where they are called for. For less experienced programmers, this is a great way to look at a new paradigm while gaining a good understanding of how it can work in the real world. I heartily recommend the book for anyone interested.

Step by step in Vim

I kept reading Ben McCormick’s blog entries about Vim and am going over other tutorials and books I have in my collection and I felt comfortable enough working on a file to never take my hands off the keyboard and NOT go into insert mode as the default way of doing things. For me that’s a bit of a win. I did a few significant updates to a behind the scene page so now I feel safe enough going from there to start building and having more fun with things to see just how comfortable I can get. 

I know it’s always one day at a time and that’s how you learn. It’s just fun to make some progress and remember the ways to do something more efficiently and go from there. (Yes, I’m a geek and things like v18ld to pull a piece of a string out of a url is pretty cool to me!)

 

Next step in the evolution and education

I spend a lot of time in front of a keyboard. That’s the nature of programming. Since I also write websites, I also spend a lot of time on the web, reading about programming and the like. 

Recently, I ran across a wonderful series of articles by Ben McCormick on Vim. Here is his first post in the series. He made me think about a few things, including the fact that though I have a couple of editors I love and use a lot in the Windows world, I have never mastered Vim myself. (Now, for those of my readers who are Emacs fans, I’ve never mastered it either, but in trying to use either one, Vim seemed easier to me, so I’ve tried several times to learn it as opposed to Emacs. No flame wars here please!) 

So I’m going to use his posts as inspiration and the resources I have available to me so I can really make an effort to learn Vim and learn it well. The truth is, it should not matter what computer I am at, I should be able to sit down, fire up Vim, and be able to work on a file regardless. I can’t do that right now and that bothers me. It’s not about programming chops or anything like that. It’s really about the ability to go where I need to go and be as productive as I can me. Yes, I know that I have Visual Studio or Sublime Text available on my normal rigs and I have sublime and Vim both on a flash drive, so for a Windows OS, I’m relatively well set. However, I came from the Linux world. (Yes, I actually have worked with Linux as a primary desktop OS since a 1.2 kernel and the fact that I have not mastered Vim and LaTeX do make me hang my head some days. I had more success with joe and nano.)

So the goal for the second half of the year is to learn both Vim and LaTeX well enough for every day usage. I know that I need to learn them and I know they will be beneficial for me to learn and master. 

My question for you my readers, if you are out there, is what other resources do you know of which might help? I know about vimtutor and I have a few eBooks on PDF which will help me. From there, it’s time to get cracking and any resources are fantastic.