OJSpec Matchers

After some teasing, tugging and pulling I finally got my head around what OJSpec was up to. After understanding what was going on, I stripped it bare and integrated the essential parts of the framework into OJTest. OJSpec matchers are now available for use! I am actually really enjoying writing tests using it and I will probably use OJSpec matchers in my tests from now on (not something that I expected!). OJSpec Before we dive into how to use the new matchers in OJTest, we should talk a little history. OJSpec was around before I even started using Cappuccino and... More

Personas

Note: This post deals with personas as a tool for developers to communicate outside of the project. I am not referring to personas that are used in business analysis. There are different software development personas that have been floating around for a while. These personas are great tools for communication when all parties involved know who they are and what they represent. In this post, I want to catalog some of the personas that I've come across and give some meaningful description to them. Of course, this catalog is not comprehensive but rather a starting point for introducing personas into... More

Node.js Patterns

Choice selections from wtfjs! max vs the infinite @pbakaus points out that Number.MAX_VALUE is close to infinity, but not too close. Number.MAX_VALUE*1.0000000000000001 === (1/0) // false Number.MAX_VALUE*1.0000000000000002 === (1/0) // true ie cursed recursion @tlrobinson of 280 North, Cappuccino, Narwhal and CommonJS points out some lovely IE behavior in this great blog post. window.recurse = function(times) { if (times !== 0) recurse(times - 1); }; recurse(13); // stack overflow at: 0 messing with the number prototype @rcanine shows us this interesting this coerce behaviour within the prototype of Number. Fun! (1) === 1; // true Number.prototype.isOne = function () {... More

Roman Numerals

At the office today we did a coding dojo and the kata that we used was Roman Numerals. We actually did the kata in Java because that was what everyone was familiar with but I decided to work on doing it in Ruby. After after 20 minutes I got a working solution. However, that's when the fun starts! I spent some time trying several refactorings on the code and didn't really get anywhere. The code that I was refactoring looked roughly like this @value_map = { 1 => "I", 4 => "IV", 5 => "V", 9 => "IX", 10 =>... More

Feedback Loop

I have just finished school. Graduation is in one week. I am really excited about that. This next week should be a flurry of hanging out with my college friends, doing one last round of stupid college stuff and relaxing. After that, my life will become a very exciting for a few weeks and then I'll settle into some sort of routine (I can only assume). However, despite the fact that I will be leaving school, I still have a lot to learn. I will be soaking up as much knowledge as I can when I go off to Chicago... More

Javascript Mix Ins

When writing our compiler, Chandler and I had to go through several phases of development. Each of these phases were adding one or two methods to our node objects in our abstract syntax tree. When we need to add typechecking, we had to write a method for each node type that would know how to typecheck itself. Unfortunately, this meant that we were constantly modifying the node classes. This breaks the open/closed principle and just feels bad. We didn't want to keep changing the class to extend it. Additionally, by adding these to the existing classes, we were muddying the... More

Introducing CuCapp

CuCapp is Cucumber for Cappuccino. Yep. And, this time, its real cucumber. It's not the weaksauce I started with Barista (I'm discontinuing Barista development--it was a great learning experience and very tough; CuCapp should be a better and more fully featured replacement now). I should mention that Daniel Parnell started the project and that I just forked it on github and put some elbow grease into it. CuCapp from Derek Hammer on Vimeo. Pretty, right? OJUnit, OJMoq, OJAutotest, OJCov, OJSpec and CuCapp. I'm pretty sure we're getting somewhere with testing. I'm going to be constantly improving all of these tools.... More

Collaborative Teamwork

The following is an excerpt of an essay that I had to write. I thought it expressed how I felt about my current team and that it may be useful to people forming their own teams. The Collaborative Team On our project, Project OSL, we are working on a project that outstrips the level of experience each of us has attained individually. At the beginning of the project, we were faced with a daunting project but through sharing ideas, supporting, teaching, learning and communicating with each other, we were able to create a successful experience for the whole team. Sharing... More

HOWTO : Write Objective-J Tests

I have recently been writing about big theoretical discussions. While I think that those are important, the other part of writing blog posts is to give back to the community. This post is about discussing the best practices of testing Cappuccino and other Objective-J projects. I have been doing this for several months now and (hopefully) can write something pretty authoritative on this subject. I hope this helps those new to Cappuccino and/or testing! The culture of testing in the Cappuccino community has been pretty weak. However, the mindshare in the testing culture has been slowly but steadily increasing. Writing... More

One Year Goals

Several people state that defining long term goals is a good thing. I tend to believe them and so I'm going to create a list of long term goals. By April Fools' Day, 2011, I want to achieve the following goals. These goals may be out of reach but hopefully by reaching a little I can actually surprise myself and meet my goals! Professional I am going to start off with professional goals. This is the start of my professional life and I am very excited. I feel that I am starting in a great place; I am beginning life... More