Quick Update: March 23rd
Hey all! Just wanted to share some tidbits. A week before new years I set a goal for myself to blog about every other day, but I later changed my mind and switched to 3 times a week. I don’t kick myself if I miss it (like I did last week) but I move forward and keep focussed on just getting things done. I am less than a week away from active blogging for 90 days! Yay!
The purpose of my writings isn’t specific to Ruby and Rails alone. My intention for this blog is to be “helpful” to many people. So that includes personal development, life lessons, and even spiritual discussion. I’m very passionate about programming and want to help people with that so that has been my primary topic. I’m looking into separating the blogs to keep them categorically sound. At the moment you may see a /allyourdev/ or /danielpclark/ in the url. I want those to be programming and non-programming blogs but I’ve accidentally written some posts under my name and the main page doesn’t differentiate between “authors”.
I’ve been learning a lot lately and writing a lot of code. I’ve started learning algorithms with the book “Introduction to The Design & Analysis of Algorithms by Anany Levitin” and I’m writing/translating the algorithms into Ruby. Here’s the github where I keep them at https://github.com/danielpclark/algorithm_practice. If you do, or are learning, algorithms I would very much like to discuss them with you and learn more in the process.
Recently I’ve added a few more useful tools of knowledge to my programming arsenal. I’ve got the concept of “closures” understood and I know that both lambdas/procs and define_method are closures that “absorb” the current scopes variables when they’re instantiated and can be sent with “send” into another scope and have access to all those new variables as well. I learned that by skimming a book at the store and it had an excellent example. The online tutorials don’t come anywhere near as good of an explanation as the book. Sorry I don’t remember the title.
Another thing I’ve added to my arsenal is the “Set” standard library Object. It keeps a unique array of items and has tons of useful methods such as :add? which will both add the item to the set (if it doesn’t exist) and return either true or false in response to whether it was added or not. This was a huge help for my PolyBelongsTo gem for keeping track of records to duplicate while avoiding circular database hierarchies. Danny Gunther helped me brain storm for solving this while we were going over PBT’s tail recursive method and pointed me to Set as well as other great insights. You should follow his blog, he writes really meaty programming insights.
Also I’ve recently learned of Postgresql’s support for Array’s and Rails supporting it as of version 4! This is quite awesome as I happen to need it. I’ve been refactoring things in my main Rails project into uniform objects/resources and reducing coupling. I’ve been on this project for many months now and the launch feels like it’ll be here soon. I’m looking forward to it.
I really want to start pair programming! I’ve looked up websites for it and there are a couple, but it looks like they’re not getting as much TLC as they deserve. I may add the Pair With Me badge on my site soon. Twitter recommended me to Camille Baldock and I saw that she’s also a programmer and blogger so I checked out her website and found she has a pair programming badge on there “Pair with me”. Now that’s either some pretty snazzy timing or the internet knows… O.o (that metadata X.x)… In her latest blog post I see she tackled a card game hand ranking challenge in her pair programming session and she demonstrates very good practices. I’ve written card game code in the past and have done rankings as well so I’m happy to see this blog: http://camillebaldock.com/notes-on-poker-ranking/ on which I can both compare my work and learn from the insights she’s given. So follow her blog! She’s another great blogger/programmer.
I really want to work with people on open source projects. I’ve started opening issues on some of my own projects just to give a clear definition of what the plan going forward is so anyone may join in. I highly recommend you feel free to open issues on your own projects and encourage others to join in. When I find a project on github the issues section is practically the first place I go to get an idea of what’s going on. I can most often tell if it’s just issues raised by people who either don’t know what they’re doing or want something the project wasn’t design for. Or if the project just isn’t being properly maintained, or has some big issues. Github issues aren’t something you avoid, it’s community and communication at its best for Github projects (Next to http://gitter.im ).
I’m considering moving my Rails Cheat Sheet link to a github.io page where anyone can help in designing it. I get work done on it when I hear some one wants to “learn” rails and is in a hurry. Rails takes doing to learn. And what I mean by that is type the generator commands and run the thing. “Just Do It” as Nike says (which is my favorite saying by the way).
So a lot of good things are going on! Please feel free to share any insights with me, contact me on twitter for pair-programming, and feel free to hop on-board on my Github projects. Please feel free to comment, share, subscribe to my RSS Feed, and follow me on twitter @6ftdan!
-Daniel P. Clark
Image by Yvonne Larsson via the Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Generic License.