Changes

There are several changes taking place. The main change is I am leaving my position at Pick Programmer’s Shop to take a job with Vitals.

The way this came about was by being active in the local developer community. These include the Tulsa Agile Practitioner’s group and the Tulsa Web Devs group. I would encourage you to be active in your local user groups. Not only will you learn, you will also get to know new people. This is the most important thing. People will help you grow and expose you to new ideas. By interacting with people at the TAP group, I learned about this opening.

I will be starting the new job in early June and I am looking forward to the new challenges it will bring.

Programming Katas

I have been doing some programming katas lately to help me learn more about unit testing. Kata is a term taken from martial arts where they would repeat a drill to perfect a technique. In programming, a kata is the same. It is some task that you repeat to learn how to do something better. I have been using cyber-dojo.org to do my katas. That is a website that has been setup for this purpose. The advantage it provides is you don’t have to do all the setup to prepare for learning. It has about 25 languages and about 40 exercises you can choose from. It also has different unit testing packages available depending on which language you select. I have been using this to help learn about other languages as well as learn more about unit testing. I have found that I learn better by doing than just reading about things and cyber-dojo helps me do that. When I am also trying a new language for the first time, it does take more time to learn the testing tool as well as that language syntax, but that is the purpose of doing the katas. It does get quicker the more you do it.

E. M. Bounds

We had a guest speaker at church a couple of months ago that made a passing comment about E. M. Bounds and a book on prayer. I finally got around to following up on it.

E. M. Bounds is a Methodist preacher from the late 1800’s and early 1900’s. He wrote seven books on prayer. I chose “Essentials of Prayer” since it was the first one in the list. It reads exceptionally well considering it was written over 100 years ago. There are parts where he is discussing what is going on in the church that seems like it was written within the last year. I have gained a better insight into prayer and my prayer life has definitely improved as a result of reading this book. I would highly recommend this book and I intend to read the rest of his books as well.

I know that this post isn’t technology related like most of my posts have been, but I think this can make an impact on your life as well. I will be returning to more technology oriented posts next week.

Exploring Ruby

I spent some time exploring and playing with Ruby this last week. I used Google to help with some of the items I was testing. I wish there was some type of accuracy score Google could assign web pages because I ran into some with inaccurate information. The following are some random comments from my testing.

“rspec” (Ruby’s test runner) does not provide informative error messages when Ruby fails. The info provided when a test failed was okay, but not when Ruby failed. I kept getting an error about an unexpected end statement, but it didn’t make sense. I finally figured out that it didn’t like the beginning class line because I had spelled it “Class”. I didn’t realize Ruby was case sensitive. From my time with JavaScript, I capitalized “Class” because you capitalize other keywords in JavaScript like “Object” or “Array”. Once I changed the spelling to be “class” the error went away, but I had chopped up my code by then trying to figure out the error.

I found differing ways of handling classes with inheritance on Google. I changed it around before I fixed the class spelling so I am not sure if either way will work. I saw examples like this:

class BaseClass

   class DiffClass < BaseClass

   end

end

where the class inheriting from the base class was within the base class definition. I also saw it where it was outside of the base class definition. I ended up with it outside the class, but I was still getting the error from the class misspelling so I don't know if the above technique would work, but it seems wrong to me.

I also saw a couple of ways of handling class properties. I saw references like "self.property" and "@property". I tried the "self.property" first since it was similar to the JavaScript technique of "this.property". I didn't get any syntax errors, but I did get errors from rspec showing that the tests failed. When I switched to "@property", everything passed. I still don't understand why, but I will keep playing around with it to try and figure it out.

Overall, I enjoyed exploring Ruby and intend to spend some more time with it.

Coderabbi Wisdom World Tour Talk in Tulsa

Yitzchok Willroth, better known as coderabbi, spoke at the Oklahoma PHP/Tulsa Web Devs user group Monday night as part of his Wisdom World Tour. He is sharing principles he learned studying the Torah that have helped him as a developer. I think the things he shared are just good real life principles that apply to every day life. If you get a chance to hear him, I highly recommend making the time for it. Highly recommended.

Here are just a few of the points that he shared.

  • “Cultivate a Mentor, Find a Colleague” – A mentor will help you grow and learn quicker. To find a mentor, you should “identify, interact and initiate”. Identify someone that you would like to learn from. Then start Interacting with that person by talking, email, asking questions. After you have developed a relationship, Initiate the idea by asking if they would mentor you. People are an important resource which is you need colleagues in your life. Colleagues can learn from each other by their interaction. This can be through pair coding, code review or just talking. Another way is via websites. doyou.computer and exercism.io are two places where they use group coding challenges to help you learn and grow. I haven’t used either yet, but I am planning on it.
  • “Do not separate yourself from the Community” – People grow by interacting with other people. In the tech world, it is easy to isolate yourself. You need to make an effort to join a community and interact with it. Proverbs 27:17 – As iron sharpens iron, so one person sharpens another. Different ways you can interact with the community is by user groups, conferences, IRC, twitter. There are numerous ways. Another way is by contributing to open source software. The key thing is to start and then continue.
  • “Verbalize” – Sometimes you can help yourself find a solution by talking about the problem and solution with someone. You can talk to yourself is no one else is available. Another option is to whiteboard the process. Creating the explanation will help you clarify the solution.
  • “The timid does not learn” – Ask questions. Don’t be afraid to fail. Don’t quit. The key is to start.

His ending was a quote (I don’t remember the Rabbi’s name he quoted): If I am not for myself, who is for me? If I am only for myself, who am I? If not now, when?

One of the things he stressed at the beginning of the talk was to take one point and start to implement it in your life. There were a lot of good things presented, but it is easy to get overwhelmed by trying to do everything, so you don’t do anything, so start with one item. My item from the talk was to improve my interaction with the community. I have often fallen into the trap of isolating myself just because it was easier. Some of the ways I am going to reach out to the community is blogging, twitter and user groups. I have been blogging, but the quality of what I have blogged has not always been the best. I am going to strive to improve the consistency and quality of my blogging. I am also going to start to use twitter. I am going to continue going to user groups, but I am going to expand my circle of contacts. It is easy to just talk to the 1 or 2 people I already know. I am going to reach out and start interacting with new people.

Once again, if you get the chance to hear Coderabbi talk, make the effort to attend. You will not be disappointed.

Now mobile friendly

I just changed themes on my WordPress blog. Google has announced that they are going to start prioritizing search results to mobile friendly sites first. I used this tool from Google to test my website and it came back with bad results. So I switched to another theme that was similar to the one I had been using that was advertised as mobile friendly. After making the switched, I passed the test. Let me know what you think of the new theme.

mvTest

I have been interested in starting to use unit tests to validate development. In my current job, we do a lot of green screen development for the Multi-Value database environment. There did not seem to be any good options for implementing unit tests in this environment. At work, we just had a presentation on mvTest by Brian Leach. Brian has developed a tool for doing unit tests in green screen environments. It is similar to how Selenium uses a web driver to drive a browser through a site and look for output in a web page to confirm the processing except this encapsulates a telnet session and looks for screen changes. It is an effective way of implementing unit tests in a green screen environment. I am looking forward to getting the chance to work with it.

April TAP Meeting

I went to the April TAP meeting earlier this week. Floyd May and Jason Knight did a wonderful job with a TDD workshop. Most of the attendees had only read about TDD, but had not actually practiced it. This was an opportunity to get your hands dirty and actually code tests and meet them in the traditional red/green/refactor process.

For me, the catch has always been how to write the test. In the workshop, we were using Jasmine as the test engine. I realize now that the key is the end of the test where you write the EXPECT statement. The only code before that in the test should just setup the data and invoke a function. The EXPECT should then test a value in the data returned from the function to see if it returned the expected value (hence the name EXPECT). It really wasn’t very difficult. It is just getting into the habit of writing tests.

Kudos to Floyd and Jason for a great meeting.

Happy Easter

I hope everyone enjoys a good Easter weekend. Just remember there is more to Easter than eggs and bunnies. This is the time to remember the price that Jesus paid for us to have eternal life. Let’s remember that while enjoying the other activities.

If you are in the Owasso area and do not have a place to go, consider joining us at Discovery Bible Fellowship. We would love to see you there.