Wednesday, August 19, 2009

Learning the Importance of Knowledge Sharing

As what happens to a lot of people, my computer's hard drive died a few weeks ago and I lost everything. I do mean everything. Some small pet projects were lost completely because I refused to upload my code base to github. Why didn't I? Because I was afraid to show what I don't know.

This may be one of the hardest lessons for me to learn in my journey. Growing up as the perennial whiz kid, to not have the best way to do something or to not have the right answer was a personal failure, and I would rather sit and rehash on a problem for a long time before I would ask a question. So of course, I'm in an industry where what is right or best changes rapidly and can be different from one person to another and in an ideology where one can't and shouldn't sit and stew by themselves.

What I'm slowly learning is that I have to be willing to expose myself in order to grow. Be willing to ask one too questions and to treat each setback not as a downfall but as a learning experience. I should be able to put my work out there for all to see and comment. Knowing me though, it will be a process. But even now, I've started to ask more questions allowing me to start minimizing personal frustration and stewing. Though I do still greatly struggle with wanting bottle up my work. But I have to be able to put it out there so that I'm not limited to my own experience and ideas, but have to access an industry's experience and ideas.

Writing this, I realize what may be the issue. I wish to to be able to give at least as much input as I'm receiving. But still being a relative beginner surrounded by those with more experience and more insight, I can't legitimately see this ideal being reached. In the end though, I have to willing to go in the red with input before I can move forward into the black in the future. I just have to take a confident foot forward with that investment.

Friday, May 8, 2009

The Next Chapter

I'll be entering what I consider the next chapter of my career here at Obtiva when I move on-site on Monday. It's interesting to think that I just walked in the door nine months ago. I have learned a lot in that span. I came in as new college graduate whose primary language was basic Java (w/Swing) with a dabbling in C++ and C#. In nine months, I've added Ruby (on Rails), Perl (CGI), Objective-C, some Javascript, and an update to my HTML/CSS knowledge. I've also been learning practices to programming that were never really touched upon in my formal education. Which in some ways makes me wish that my college classes were structured differently so that maybe I would have learned some of these practices/languages before the start of my apprenticeship. At the same time though, I know that I've always learned best by doing, and I don't usually like to toot my own horn (except in the eleven years I played trumpet, yeah, I know, bad joke), but I've done a lot since I've arrived, and I'm excited to move forward when I trade my 3 minute walk to Studio (from the train station) for a 15-20 minute walk to the on-site client. Here's to the knowledge of the past, the vigilance of the present, and the challenges of the future. Cheers.

Friday, April 24, 2009

Radiant, CMS

The past couple of weeks I've had a change of pace and have been spending some working on content and css for the company website. I say change of pace because it involves a new technology that I haven't used before, a plugin called Radiant. Radiant is a Content Management System which means that the content which would normally be in views in a normal rails app are stored in the database. This system is convienient for sites that have a lot of content, but less going on the backend. The only hiccup that I've hit with Radiant is that since the content is the database, it becomes hard to put in source control. So, if you have made a bad change to content and want to revert it, you better remember what it was. (If anyone knows a way to remedy this, it would help) Radiant also has a lot extensions which add functionality similar to rails such as pagination and extensions that add new features like permanent redirection. Another question I've ran into while working on the site is where does the CSS files belong in this kind of structure. Does it belong in the CMS with the rest of the content or in the repository which contains the radiant plugin? I'm starting to be more convinced that maybe it belongs with latter (after working with the former). Unlike the rest of the content, the CSS files are more prone to change and tweaking than the other content files and would have more benefit being part of source control. However this does cause the developer to have two seperate environments open, the CMS for page content and a text editor or IDE for the CSS, additionality I don't know how this would work Radiant's page caching. At this point, if starting from scratch I would choose to put CSS in source control. However, if mid-flight, I don't think source control adds enough to demand the time for a switch over.....but then again I may be converted yet. I had been wondering for a while if there was a Ruby option for content-based sites and have found that Radiant is overall a good solution.

Wednesday, April 15, 2009

Searching for the Answer

It's remarkable how much time as a programmer I spend scouring the web for answers to problems or for some sort of example of the use of a function due to under-documentation. Which always brings to mind how to adequately search for solutions. The two stages are choosing your keywords carefully, and trying to find relevant results. This occurred to me today while I looking for uses of Cucumber involving seeing whether or not with_tag could take a regular expression as an argument.

The first part is trying to choose keywords. Obviously, I didn't want use just Cucumber otherwise I'd a hundred salad recipes but nothing to do with testing. (As it turns out a search for Cucumber wields links to the github repository at 2 and 4 with an article about it at 3) so to narrow my search I added the method I was looking for. After a few tries of various combinations of keywords (including Rspec, regex, :text, etc.), I found a set of results that I could search through for the answer I was looking for. Using the small blurbs of the websites included, I had to make sure that all my keywords were found within the same portion of text. In the end, after several searches I found that with_tag ('td', /#{regex}/) was possible and was able to go green with my tests.

This is a process that many of us go through at least a couple times each day, and most of the time we don't really think about what we are actually doing. We just go through the actions that we believe will get us to the most viable and relative answer the fastest. But underneath, there is a certain level of practice and skill needed to make sure that our time is not spent wasting away through piles of unrelated content, but rather quickly finding that nugget of knowledge needed to move forward.