crshman's Profile Page

Archive for » 2009 «

Thursday, October 22nd, 2009 | Author:

Hey All,

So for the past few hours I’ve been reading a fantastic book that Jeff Atwood mentioned at Dev Days LA and also posted about on his blog. He’s a really cool guy and chit chatted briefly <– really briefly about http load balancers. During that conversation he mentioned that he was really a “noob” with hardware and all the underlying stuff, I was shocked and now have a much greater respect for the man. I was thinking he was going to be some snobby I know it all, TOTALLY NOT the case!

Anyways, he recommended Coders at Work: Reflections on the Craft of Programming and I figured I’d give it a shot. I’ll be honest, I “procured” this book using some unconventional methods, but 2 chapters in….and I bought it. It’s a FANTASTIC overview of what some of the most respected, and quite humble, minds in the programming world have to say. It’s really easy to connect to the different developer interviews and I feel like I’ve learned a few things just reading the first couple of chapters.

One underlying message that I feel from this book is that communication is key for successful programmers. These days you can’t be huddled up in your room coding away on your own, interaction is the way of the future and I think it’s a great thing.

Thanks for the heads up Jeff!

Category: General  | One Comment
Friday, October 16th, 2009 | Author:

Hey All,

So today I decided to ditch school and participate in Stack Overflow Dev Days 2009. I thought the conference was pretty good and the student price of $10 was amazing! The turn out was a little less than I had anticipated but I suppose that just left more room to spread out for those of us that went. I got there pretty early, 8:15am, checked in and grabbed a seat. They were serving coffee and some muffins.

There was a bit of swag available:

Stuff I liked:

  • The Python talk and dissection of the Google spell check algorithm by Mike Schiraldi of Reddit
    • This presentation was really well layed out, easy to follow and appealed to the geek in me as it ran in xterm on python haha. Pretty slick Mike…
  • The jQuery talk by Cody Lindely
    • This presentation would’ve been much better had the Internet worked. That, or had Cody saved all of his work locally to show the audience. I’m sure we would’ve been in for some really trick eye candy. He did however lead me on to two good sites, jsBin and Cody’s jQuery selector demo.
  • Most, if not all of Joel’s talks were highly entertaining. He talked about Fog Bugz and all the features that the software has, such as:
    • Not technically a feature, but ya….Fog Bugz 7
    • Fog Bugz Kiln, tight Fog Bugz integration with hg
      • I talked to Joel a little during one of the breaks and sadly support for git is not on the roadmap, and he said it probably won’t ever be….*sad panda*
    • Also not a direct feature, but part of a plugin for Fog Bugz, Balsamiq Mockups I think this app has great potential to interact with prospective clients
  • The QT (cute) presentation by Daniel Rocha of Nokia. This presentation really impressed me, he did actual coding (yes typing), compilation and a demo on 3 separate platforms and they all worked flawlessly. Kudos Daniel! This presentation also showed QT’s cross platform power, seamless migrations from one platform to another, that was pretty slick.
  • Jeff Atwood’s talk about random junk. I wished his presentation would’ve gone on longer it was pretty entertaining. He’s actually a really nice guy, I talked with him during one of the breaks and he gave me some coding horror stickers =D

Stuff I didn’t like:

  • The provided wifi was pretty crappy, I found myself tethered to my cell for most of the day. It was just unmanageable. I would have thought they would have gotten this right, especially after Joel’s writeup on conference wifi.
  • A lot of the presentations went backwards in my mind. I think the presenters should show the power of said technology first (get the fancy demos out of the way) and then talk about the code/app/etc. that powered that demo. This probably would’ve worked much better for Rory Blyth and his iPhone presentation. There were a lot of boring coding sessions that didn’t need to take place IMHO, we’re developers and we can figure out syntax on our own….rtfm.

Misc:

  • The Google Apps Engine talk by Jason A Cooper of Google would’ve been more captivating if he had spent more time talking about the product/service and less time typing code. Though he did show off some fancy gChat integration stuff that wow-ed the crowd, that was pretty neat.
  • The keynote was an interesting take on software design, I really liked what Joel had to say on Simplicity vs Power. It basically came down to: write elegant code so your users don’t have to make lots of decisions. Though I don’t think you should take elegant and make your code a giant unreadable 1 line mess. That’s a total maintenance buzz kill.

Well I think that’s it for now, see you all next year!

    Category: Development, General, Internetz  | Comments off
    Tuesday, September 08th, 2009 | Author:

    Edit–

    Oops this post got stuck in “drafts” and was supposed to go out some time ago…I’ll work some magic to the dates 😉

    Hey All,

    So I guess it’s been a month since my last post, shame shame I know, things are starting to wind down for me. ResNet is coming to an end for me and I get a much needed 1.5 week vacation before school. On the upside, development work has been kicking up in the last few weeks so I’ve been keeping busy with some really cool projects.

    I forgot exactly how I found this, probably some link in a link in a link from the Programming subreddit, but I thought it was very comical and some of it fairly true. Unfortunately I see myself as the “The Code Cowboy”, this is something I really want to change in the next few months. I have explored Unit Testing and TDD in the past and realize how powerful it can be when putting all the pieces together, but I have yet to successfully grasp it’s usage in any real application larger than doing simple arithmatic.

    Category: General, Internetz  | Comments off
    Tuesday, September 08th, 2009 | Author:

    Hey All,

    Long time no update, I know… Well I’ve been working on some projects that involve cPanel and its API so I decided to write a nifty little component for my fellow bakers. It makes extensive use of the php api library that can be found on the development forums, but I tweaked it a little bit to be more cake friendly.

    Unlike my prior posts, this component is a little too long to post here. So head over to my git hub repository to pick up your slice of goodness.

    As usual if you have any comments, concerns or questions feel free to get in touch!

    Category: Development  | Tags: ,  | Comments off
    Thursday, August 06th, 2009 | Author:

    Hey Everyone,

    So I went ahead and took up Mark Story on his challenge task and added the node deleting functionality that was missing from the original buildAcl action. I’m not sure if this was the best way to code it….but a few beers, and a lot of coding later I came up with this gem. Feel free to use this wherever you want.

    
    /**
    * Rebuild the Acl based on the current controllers in the application
    *
    * @return void
    */
    function buildAcl() {
    $log = array();
    $methods = array();
    $tempChildren = array();
    
    $aco =& $this->Acl->Aco;
    $root = $aco->node('controllers');
    if (!$root) {
    $aco->create(array('parent_id' => null, 'model' => null, 'alias' => 'controllers'));
    $root = $aco->save();
    $root['Aco']['id'] = $aco->id;
    $log[] = 'Created Aco node for controllers';
    } else {
    $root = $root[0];
    }
    
    App::import('Core', 'File');
    $Controllers = Configure::listObjects('controller');
    $appIndex = array_search('App', $Controllers);
    if ($appIndex !== false ) {
    unset($Controllers[$appIndex]);
    }
    $baseMethods = get_class_methods('Controller');
    $baseMethods[] = 'buildAcl';
    
    // look at each controller in app/controllers
    foreach ($Controllers as $ctrlName) {
    App::import('Controller', $ctrlName);
    $ctrlclass = $ctrlName . 'Controller';
    $methods = get_class_methods($ctrlclass);
    
    // find / make controller node
    $controllerNode = $aco->node('controllers/'.$ctrlName);
    if (!$controllerNode) {
    $aco->create(array('parent_id' => $root['Aco']['id'], 'model' => null, 'alias' => $ctrlName));
    $controllerNode = $aco->save();
    $controllerNode['Aco']['id'] = $aco->id;
    $log[] = 'Created Aco node for '.$ctrlName;
    } else {
    $controllerNode = $controllerNode[0];
    // Get all the children of the current controller node
    $children = $this->Acl->Aco->children($controllerNode['Aco']['id']);
    $sizeChildren = sizeof($children);
    }
    
    //clean the methods. to remove those in Controller and private actions.
    foreach ($methods as $k => $method) {
    if (strpos($method, '_', 0) === 0) {
    unset($methods[$k]);
    continue;
    }
    if (in_array($method, $baseMethods)) {
    unset($methods[$k]);
    continue;
    }
    $methodNode = $aco->node('controllers/'.$ctrlName.'/'.$method);
    if (!$methodNode) {
    $aco->create(array('parent_id' => $controllerNode['Aco']['id'], 'model' => null, 'alias' => $method));
    $methodNode = $aco->save();
    $log[] = 'Created Aco node for '. $method;
    }
    }
    
    $sizeMethods = sizeof($methods);
    
    // More Aco's than methods
    if($sizeChildren > $sizeMethods) {
    foreach($children as $child) {
    $tempChildren[] = $child['Aco']['alias'];
    }
    // Get the difference between Acos and methods
    $diff = array_diff($tempChildren, $methods);
    foreach($diff as $alias) {
    $rogueAco = $aco->find('first',array(
    'conditions' => array(
    'alias' => $alias,
    'parent_id' => $controllerNode['Aco']['id'],
    )));
    $aco->del($rogueAco['Aco']['id']);
    $log[] = 'Deleted Aco node '.$controllerNode['Aco']['alias'].'/'.$alias;
    }
    }
    }
    debug($log);
    }
    
    

    Until next time, Laterz

    Category: Development  | Tags: ,  | 3 Comments