Sunday, April 29, 2012

The Next Step

The two year experiment is over.

Did I learn C?

I think so. Maybe. It's complicated. In hindsight it was foolish to set out learning C. I should have started out simply learning to program with C as the medium for doing so. I spent way too much time getting involved in the particulars of C programming. I don't regret doing so, but I've found that programming is not a matter of language only.

Did I learn to program?

Yes, but I have a long way still to go. I'm at a point where the language isn't in my way anymore. Any language. For example, I'm currently struggling with finding a way to talk to my Arduino over the serial port using C. There's already a Python module for doing this that knocks out the hard part of that process in a few lines. I want to do it in C because I want to learn the internals, but it's not C that's giving me fits - it's the UNIX API for serial communication, termios. It's just a matter of reading the documentation and tutorials while bringing it all home with some test programs. Again, it's not the language I struggle with, it's reading other people's code and plowing through documentation. I have a feeling like that struggle is what programmers at any level do a lot of!

I have a dozen projects to tackle, two dozen if I count non-programming projects.

To that end I've started a new online journal at www.chrisheydrick.com so that I can have a place to document all of my hobbies. That's where I'll be from now on. I've been a Blogger user since before it was bought out by Google. I'm going to try Wordpress out for a while just for a change of pace. I might be back, who knows.






Wednesday, April 11, 2012

Work stuff will be dominating my time for the next few weeks.

The refactoring of the case reporting library was successful. The whole project was successful, actually - it proved that more elaborate case reporting and analysis tools were needed, and now I'm looking into commercially available options. I guess once the higher-ups got a taste of what's possible it opened up the option to spending money. I'm more than happy to put this project behind me. It was a valuable learning experience, but extremely dull.

Now I'm looking towards what's next. I started this journal to keep a record of my progress in learning to program in C, but what wound up happening is that I laid a foundation for learning to program in anything for whatever reason.

I've spent some of this evening researching microcontrollers. There has been several times in the past few years where I've almost purchased an Arduino, but I didn't go through with it because I was worried that it was too high-level to be a good taste of real microcontroller programming. Now that I have a better understanding of the tool chain (as well as what being an Arduino really means) I realize that's not necessarily the case, so I might pick one up soon.

I started reading Charles Petzold's Code. It's absolutely brilliant. I picked it up because I wanted to learn more about assembly programming (specifically for the fictional DCPU-16 that will be featured in Notch's Ox10c game). The book starts with things like Morse code and Braille, telegraph machines, and relays. It then bridges those concepts with (I believe it's called) set theory, and then on to combinatorial logic and gates (AND, OR, NOT, XOR, etc). That's where I am right now - right at the part where all these gates are combined to make half and full-adders. It goes into a decent amount of detail about how to use these to add and subtract binary numbers, but I'm afraid I'm getting a bit lost with the subtraction and I'll need to work it out on paper before moving on. I think that soon the book will transition to flip-flops, memory, and then eventually how it all combines into something that can be programmed.

I have a good idea for a next project to stretch myself, but I need to plow through more of the Objective-C book first.