Showing posts with label tdd. Show all posts
Showing posts with label tdd. Show all posts

Monday, May 23, 2011

Teaching Myself C.




Once upon a time, near a clothing drop box in a place far far away, I found an orphaned book, sitting lonely atop a stack of sad faced abandoned clothes and whatnot.
It's Title: Teach Yourself C: Second Edition
Awesome!!
It was, apparently abandoned from some hapless former student's appartment, maybe a roomate had the decency to take the student's clothes/material possessions to a donation box, as opposed to merely throwing them into the garbage. For what I know, a sad mother may have dropped off her child's things after an untimely death. However it got to being there, in a box by a clothing donation drop off, I took it up, and looked it over. A smile graced my face.

I avoided The C Programming Language in Highschool. The closest I came to ever messing with it was with a one week crash course in tcsh in a systems administration class. I thought that C was too much for me. It was for the real 1337 haxx0rs. I'm just an idiot who loves Jesus, making omelettes, and (although not then) coding in Ruby...
I picked the book up even though at the time, i had no way of even compiling any code I would write. I thought to myself "Surely there is something open source for C on Windows XP" I hadn't had my 'I see the light' moment with operating systems. That was about 6 months away. At that time, my mind was absorbing a vast array of everything going on in the world. I was becoming a father soon. I still felt newly married. I had just sold my favorite radio in preparation for paying bills. My inner nerd needed a challenge. Time for me to program once again!

I never did find an open source C compiler that I liked for windows XP at that time... It did however, get me searching for something else, a way to hack around using SOMETHING, ANYTHING, which lead to me discovering "Learning to Program" by Chris Pine, and began a long love affair with ruby. Ruby lead me back to Linux, and Linux has given me the tools I need to create/compile C code.
Back to Teaching Myself C!
I've made several starts at learning what's in this book, but various things (including a class in C++ that I didn't want to get sideways in in the nuance differences between the languages) always kept me from getting past the first chapter. Well, I finally started learning it forealz, and am on Chapter 2.
Hot Dawg!
I'm having a lot of fun with this book, partly because it's old, the second edition has a copyright of 1994, and partly because programming has changed so much since Herbert Schildt first wrote this. I'll try to keep you posted on my C-Adventures, and I leave you with the following quote from the preface:

C is the most popular computer programming language in the world. The reason for this is simple: programmers like it. Once a person learns to program in C it is very uncommon for him or her to switch to another language (except, of course, by moving on to C++, C's object-oriented relative). C combines subtlety and elegance with raw power and flexibility. It is a structure language that does not confine. C also is a language that puts you, the programmer, firmly in charge. C was also created by a programmer for programmers. It is not the contrived product of a committee, bur rather the outcome of programmers seeking a better programming language.

Thursday, October 1, 2009

Ruby Foo and the Art of Application Development

Hmmmm,
I'm thinking about what it takes to write really good programs. I'm thinking about this a lot lately, because I want to earn a living writing really good, useful, soul searching programs. So let's talk about cucumber. I discovered cucumber about 10 months ago, right when it was starting to become usable. The team I was working with used cucumber for writing stories in their development cycle. The whole BDD/TDD development process was new (and still is new) to me at the time, but I was having fun, and it seemed to me that this cucumber thing was great fun. I had no idea what it really did.

I suppose you should be making fun of me, it's not after all, very reasonable to use a tool you understand nothing about, but I am a jump then look kinda guy when it comes to some things, and learning is one of them (sometimes). I did what any reasonable person does after discovering something shiny and nifty, I bought a book about it.

Actually, what I bought was a promise for a book, at a special discount. The simply named The Rspec Book is a great lil' book. It's not released yet, but it's in 'beta' mode. That means I get regular updates when Dave, or Aslak, or whoever updates the book. I got it round about version 4, it's on version 10 and set to release in it's final version in December of this year. I'll get a hard copy of the book once it's officially released too. Personally, I think that this is a great way to do publishing. Since this book was first announced/released, there have been several changes to the methodology of running cucumber and rspec. There have been minor syntax changes, new habits for namespacing, etc. The book remains current. I mean, it is seriously Agile (must be Italian)! It's easy to read if you are a n00b or if you are a wannabe (like me), and the support the guys give with the Rspec and Cucumber groups online is outstanding.

The book takes you on a journey through the methodology of Acceptance test driven planning, Domain Driven Design, and Test Driven Development. This triad forms the basis for Behavior Driven Development (BDD), a system by which good software 'emerges' from the process by writing the code that answers the questions users ask.

I'll leave you with that for now.
I :heart: you guys.

G. Brandon Hoyt