Friday, January 14, 2011

Codemash 2011 Recap

In mid January I attended Codemash 2011. Codemash is a semi-regional software conference that, in my opinion, holds its own against any of the larger, more funded, and considerably more expensive to attend conferences that I have been to in years past. 

I say semi-regional because while the conference is mostly geared toward the mid-west attendees ultimatley come from all over the country and several are international. 

Every year a great deal of care is put in by the organizers to ensure a diverse selection of topic spanning multiple technology stacks and technical communities. I usually split my time between reinforcing the skills I find valuable in my own career and looking into new (to me) technologies that I may not have given enough attention to in the past. This year my "comfort zone" sessions were on git version control, ruby on rails and a couple talks on utilizing agile in somewhat untraditional ways. The "new" stuff for me was a fantastic talk by Gary Bernhardt that was really on the value of Bash and Unix (like i said "new"), android development and javascript BDD. 

Gary's "A Modern Open Source Development Environment" talk was the most interesting to me. His overview on the tools and utilities he uses to code efficiently brought to light a number of areas i could stand to improve in on unix, oddly identifying your inadequacies is a common trend when watching Gary code - and I say that with the utmost respect. In the talk gary cited a study that indicated the usefulness of a test suite is inversely correlated to how long it takes to run. It inspired me to go back and look at how I could make our test suite faster on a .NET project I'm on. 

Jim Weirich's session on writing and maintaining better tests brought answers to a number of questions I have about test suites in the projects I write and maintain. It also introduced a few new tools I didn't know existed in the Ruby testing space.

Jon Stahl's Agile Enterprise talk was fantastic as well. The general concept being that enterprises have started to adapt agile for their development and IT teams but a lot can be gained in applying many of the same principals of transparency, collaborative work flow and open communication to executive level management and management in general. Organizations Jon has worked with now hold standups for their managers, post information publicly including such sacred and secret information as salaries and perceived level of experience. Most importantly though he highlighted the fact that practice by itself does not make an organization agile. Agile is a combination of culture and practice and without both it really doesn't work. 

Of the best keynote presentations, thus far (there is one more to go as i write this) Chad Fowler's keynote on process, apprenticeship and offshoring was the best. A lot of the topics were taken from his book The Passionate Programmer (which I previously reviewed

Scott Chacon from Github also gave a exceptional keynote on how an open source business operates, giving examples from Github's organization and how it has helped them see success. In many way's Github is the anti-Agile shop. That isn't to say they are rigid or slow to react, quite the opposite, that respect they remain agile but they are very much not Agile. Cap-A Agile usually indicates a very specific process which in itself is designed to make change easy, but still manages projects in a careful way. Think Scrum, XP, Kanban. Github simply lacks established and firm process. They don't commit to dates, they don't follow any sort of project roadmap and they don't hard assign developers to projects, their teams are purely self-organizing. So.. github is agile, the right kind of agile without being Agile. 

Wednesday, January 12, 2011

2011 Goals

Well a week in and I'm off to a great start. Said I'd post a follow up on Wed the 5th, it's now Wed the 12th. Awesome. 

So as mentioned in my last post, in the beginning of 2010 I posted a list of goals for the coming year. That list became a guide for the year, some worked out, others didnt. Either way I found value in the post so to start 2011 it's time to do it again. 

So first off:

Renewed Goals

1) Update this blog twice a month. 
2) Seal the floor in the garage
3) Pay off the credit card(s)
4) Take a vacation outside of a border state 

All of these are pretty much the same as last year. 

Ammended Goals

1) Continue speaking, but more importantly prepare a talk that can be presented multiple times for multiple audiences.

This will probably be an intro to ruby or rails talk which I can give for work and possibly the CleRB group if we want to do another newbie night sometime soon. But If i can polish it and there's still interest in that basic of a talk I'd be happy to present elsewhere.

2) Learn some new stuff in .NET

This years list: Fluent NH or ActiveRecord NH, Dynamics and the DLR, MVC3, Cuke4Nuke or Specflow

3) Diet plan. I'm working with a personal trainer it's time to get better at nutrition. I'm terrible at it (food is kinda amazing.)

New Goals (Professional)

1) Build a series of blog posts or a mini-book on using the techniques i've learned in Ruby development and applying them to .NET

2) Be a good team lead. I have 2 guys working with me now and it's pretty new. So far it seems to be going well but theres a fine line to walk between being adamant about quality and being a jerk. Hoping I can manage the tight rope. 

3) Get serious about javascript testing. It's a first class and hugely important language and it's irresponsible of me to spend a ton of time testing c# or ruby or php and not pay attention to javascript. 

4) Get serious about ATDD. For .NET projects it will be cuke4nuke or specflow (or possibly cucumber but probably not), for ruby its cucumber. 

5) Finish and launch Dreamkumo. More about this one at a later date. 

New Goals (Personal)

1) Get a budget in order and start tracking expenses. I've tried this a couple times using mint but so far I've given up after a short period of time. Need to get the wife on board with this one cause its a bit bad to not really know where your money is going. 

2) Finish the upstairs flooring. Seriously they are plywood floors right now, kinda embarrassing if this doesn't get done in 2011 there's seriously something wrong. 

I think that's all for now. Time to get back to codemash (another upcoming post.) 

 

Tuesday, January 4, 2011

2010 Wrap Up

So at the end of 2009 I posted a list of goals I wanted to accomplish in 2010. This post serves as a recap of what I accomplished and didn't accomplish. Tomorrow I'll post my goals for 2011. Yes it's a bit cliché but it's good to have a picture of what you want to do. 

2010 Recap

1) (Partial Credit) Update this blog with a new topic at least twice a month. I managed this for about 3 months, then it vanished. As usual when the schedule got hectic this fell by the wayside. So this goal gets renewed for 2011. I just moved the site over to squarespace (and i'm loving it) and really want to keep it useful.

2) (Success) Speak at something, anything, and codemash doesn't count. I pulled this one off. I spoke at CleRB once this year about geolocation in rails and also pitched at Startup weekend. Not huge events by any means but its the start of public speaking. I need to try and get out there more this year, but its surprisingly hard coming up with interesting topics. 

3) (Success) Continue developing a Kanban approach for consultancies and apply it to my current job. Well so kinda. I didn't pull this one off at the "current job" but i did switch jobs and have moved to a company where helping establish Kanban was one of my first priorities. I'm very happy to report we now have a working process with a mostly remote team and all seems to be going well. My goal is to expand on this in 2011 and bring in more Agile techniques to our consulting practice. 

4) (Success) Learn some of the new development techniques and technologies in the .NET world. So of my original list I can say that I now have experience in NHibernate, Fluent NHibernate, WPF and an academic knowledge of MVC. I'm confident in the next few months MVC will move into the "very comfortable" stage. In addition to that I've learned quite about about MVP pattern and EF4.

5) (Success) Continue to get to know Ruby. I'm really proud of the experience I've gained in ruby this year. It's truly gone from a hobby to something I am comfortable using professionally and recommending to clients. The specific bullet points from last years list aren't necessarily all filled in yet but overall I'm happy standing in as a defacto ruby expert on projects. Goal for 2011 is simply keep going, i love the platform more and more as i use it and there are some great rubiests in cleveland to learn from.

6) (Complete, not really success) Get things squared away with Greenfield Studios. Well Greenfield Studios is no longer in use but for quite a few months i used the name Greenfield Consulting (and technically still do) for side project work. The new gig has brought a bit more intensity so I've stopped doing side work for now but things are straight on this one. 

7) (Epic Fail) Finish EventCasts and one other side project. Eventcasts was shuttered and the codebase made open source on github. Started a new project, Questering, but that too has languished. Now I'm working with a fantastic team on the project we started for Startup Weekend - Dreamkumo. This one seems to have legs, we'll see how 2011 goes.

House /Personal Goals

These didnt go so well

1) (Fail) Finish remodeling the basement Nothing has really happened in a year. The tiles up but that's about it. Too much time & month for right now. 

2) (Fail) Seal the floor in the garage - I forgot about this one

3) (Depressing Fail) Take a vacation somewhere outside of Ohio or any state that borders Ohio. This is my most depressing failure. In 2011 we are going to Boston for a friends wedding so that could serve as a kickoff for a decent vacation though, we'll see.

4) (Consistent Fail) Pay off my friends at Discover Card. Ya.... i'm going to be paying these people forever. The notion of debt reduction doesn't seem to be in my vocabulary.

5) (Shocking Fail) Figure out a "diet plan" and stick to it, lose 10 lbs a month. Ya that was sarcasm (the shocking part) this didn't happen. I did start working out with a trainer and am doing pretty well, i think, but haven't really lost much weight. 

So that's 2010. Tomorrow I'll post what I want to do in 2011 including a new blog series I want to write and some other goals. 

Sunday, January 2, 2011

New Host / New Theme

Well after a couple years hosting the site through GoDaddy I decided to move it over to squarespace hence the new look and feel. 

Sorry if this broke anyone's RSS feeds.

As for why SS. Well their editor is actually really nice, it's impressive how much control they give you over the site and still have a WYSIWYG format. Also they support some of my favorite podcasts (to be fair so did godaddy until recently) and I appreciate that. 

So here's to a year of trying out a new service. 

Monday, August 16, 2010

New Gig

Today officially marks my first day at SB Stone. I thought a post was warranted to talk about what we are trying to do and how open source, .net, mobile, all the fancy buzzwords are part of it.

I am the first full time dev in what the company is calling our "interactive" division. SB as a whole really has 4 main markets, staff augmentation, IT services, support and this new interactive group.

So what does interactive mean? Well... really all it means is we want to build a "studio" style dev wing where we do both project work for third party clients, as well as build our own products to market and resell. We're hoping the project works supports the dev time needed for our own things until those become profitable. Also as with anything some will hit and some will miss.

So why did I come over here? Mainly because the new group wants to build a new brand and image for the company, a large part of which will be participating and contributing to the dev and tech community. That means participating at and speaking at conferences, sharing knowledge through blog posts / twitter / user groups, all of it.

From a tech standpoint our group is looking at a mix of .NET and Open Source tools, specifically Ruby on Rails (although we have PHP resources as well.) We're also training up on mobile including iOS and eventually Android so a whole lot of different tools. My role from a marketing perspective is mostly going to be focused on the Rails side though. So hopefully in the near future I'll be going to more ruby conferences and events to talk to people about what we're doing and how Rails is playing in the marketplace.

The thing i'm most excited about though is building out a proper agile dev team. Earlier today we committed to following Kanban via Agile Zen for my first project, and hopefully many more going forward. We're adhering to test driven development, continuous integration and emergent design as well. The only "hot" agile practice we aren't going quite yet is pairing, and only for lack of collocated people (and remote pairing, in my opinion, sucks.)

So that's what I'm up to. If your an independent or even a full timer looking to help us out let me know. We're always looking for contractors to keep available and we'll hopefully be building up more of an in house team in the coming months. Even more importantly if you know of any small businesses looking for rails / php / .net help LET ME KNOW :-)

Wednesday, August 11, 2010

So You Want To Be A .NET Dev

Before I open the flamegates please note this post is a tongue in cheek reply to Kevin Gisi's excellent "So You Want To Be A Ruby Dev". I personally work in both platforms and they each have their pluses and minuses. Kevin's post is both scathingly hilarious and sadly true I hope this rings the same way.

So You Want To Be A .NET Dev

Fantastic, welcome aboard! The .NET community is a somewhat fractured but enormous place to be. Some of us follow test-driven development (and a library or two might have tests if your lucky), configuration over convention and the Alt.NET guys have heard of agile methodologies. We have documentation tools like... comments.... and xml comments... which means that if the devs who wrote the library your working on have read Code Complete it might not be a bunch of spaghetti code. So leave your hippy language and development stack, and come join the corporate monolith - maintaining job security by using only the best tools from Microsoft (tm).

So, let's get you started! You'll want to grab a copy of the .NET Framework. Which Framework? Well seeing as how your probably going to be building new apps and maintaining apps from 2001 you should probably just install all of them. 1.1, 2.0, 3.5 and 4.0 are all available to download on microsoft.com There's also 1.0 but we don't speak of that, and mono but no one uses that. What's the difference? Well mostly features, we have a LOT of people to support after all so each new version shoehorns more and more stuff in until we can be everything for everyone. We wouldn't want to have to rely on the community to add new things... who would support it? Don't worry you can install all of them at the same time, they play nice, but I hope you have a nice big hard drive on your PC.

Oh, you're running OSX? Hmm... well, you could try install Windows? No.. well how about VMWare or Parallels. You know those virtualization products that make your computer work like Windows. IDE? Well that one's easy you're going to need Visual Studio, but which one? Well you could install Visual Studio 2010. With that you'll be able to maintain all those .NET 2.0 - 4.0 applications, but you're also going to need Visual Studio 2003 for those old pesky 1.1 "legacy" apps. That said you better hope your whole team is on 2010 otherwise your project files will get hosed and no one will be able to open your solution. What's a project or solution? Well let's talk about that later OK? Oh and you're going to want to buy Resharper, seriously all the best .NET people use it. It adds all the stuff to Visual Studio 2010 that Microsoft will "borrow" and add for 2012. None of us really use Macs...

Ready to get started? Alrighty, well which framework do you want to use? The two big web ones are Webforms and MVC. Webforms is typically used in huge applications for massive corporations that don't know any better. It has a great designer and you can build your entire high maintenance app without writing a single line of code, isn't that awesome? MVC is our newest pet project that all the big wigs in the "community" swear by. Its a distinctly Microsoft invention, you see they broke apart data access, application logic and view rendering and introduced unit testing. It's revolutionary, we didn't borrow the concept or project layout from anyone especially not those ruby on rails blokes. For windows client dev you can use WPF or Winforms but you should really use WPF. Sure it still feels like beta software after two major revisions, but its new and shiny and we promise not to depreciate it in a week in favor of something new. Speaking of something new there's also silverlight which is kinda like webforms and kinda like wpf and kinda like flash.

OK next up is our package management app. Hahahaha just kidding we don't have one. First off why would you ever want to use a tool not made by Microsoft? If you MUST there's lots of excellent control libraries our partners like DevExpress and Telerik have built, their sales staff would be happy to help you configure them. Sometimes different versions even play nice together. We have a really nice Word doc for you to read that explains all the dependencies you need to install, by next week you should be up and running.

Oh, by the way a lot of those third party libraries are now designed for .NET 4, but don't worry you can still use the old versions, if you can find them.

As far as database persistence goes well you'll be using SQL Server for sure. Best get that checkbook back out. Oh you mean code wise, well there's Datasets, Linq to SQL (but we already cancelled that), EF1 (but its universally panned) and EF4 CTP (but even our own MVPs admit that's 3 years behind what other communities have.) You could also use NHibernate but that's not built by Microsoft so good luck getting it by your CIO or MVP Architect.

Hmmm authentication? Well you'll probably want to use the built in authentication provider, and its actually pretty good it even supports security roles. Unfortunately if you're in MVC it doesn't really follow database conventions but it'll work.

Last thing, we'll have to set you up in our TFS system. TFS is this great version control tool Microsoft gave us that's light years ahead of their old tool SourceSafe, it only screws up a merge or loses information occasionally. You need to work offline? Well.. you CAN but you'll be prompted a few times to reconnect and sometimes your code won't merge back in to the server right. It's 2010 when would you not have an internet connection? Also just to limit those pesky merges we've turned on locking checkouts, we wouldn't want people working on the same file, that would be chaos.

Anyway welcome to the team, I'll swing by in a week and see if you've gotten anything done.

Tuesday, July 20, 2010

GiveCamp 2010

This past weekend I had the opportunity to be part of something the likes of which I had not yet seen in the Cleveland area. From Friday until Sunday the folks at Lean Dog Software in collaboration with a handful of organizers and sponsors hosted Cleveland's first GiveCamp.

GiveCamp is a national program that pairs up talented software developers, designers and other technical specialists with local non-profit organizations to complete technical projects that the non-profits would otherwise be unable to afford. This past weekend was the first time Cleveland has hosted one of these events and I think we did our geek brethren in other, much larger, cities proud. When it was all said and done over 20 charities were helped by over 100 volunteer making GiveCamp Cleveland the largest first GiveCamp ever. it wasn't quite the largest of all time, but maybe we'll take that record next year.

For those curious the weekend runs like this.

Friday night we were paired up with our charities and sat down with a sponsor from the charity to talk about their needs and what our goals for the weekend were. In most cases the plan for the weekend was mapped out in advance by a business analyst that was pre-assigned to each team. However, in the case of my charity, The League of Women Voters of the Cleveland Area, we came it knowing virtually nothing. You see the organizers had anticipated having enough people to help roughly 15 charities, but come the week of the event they had enough to add 7 more. The LWV Cleveland was one of the late additions so we had to scope and plan the project on day one instead of in advance.

Our sponsor Sherece was amazing. She understood our limited time frame and was willing to compromise when needed but also did a great job of explaining the purpose of her organization so we could build out the best site for her that the time and resources allowed.

From Friday night through all day Saturday the teams went to work, in most cases this meant building out and customizing a Wordpress installation for each charity. Something like 15 of the teams used Wordpress which is really a testament to the product and how flexible it is.

Throughout the weekend stand-ups were held to make sure the teams were on track. Also breakfast lunch and dinner were provided both Saturday and Sunday.

Sunday evening we trained out charities, presented the final projects and handed over the keys so to speak. The charities all seemed quite grateful for the work that was done, but in reality it was the volunteers who seemed most upbeat. I think I speak for all of us when I say we had an absolute blast using our abilities and skills in a way that we very rarely get to. I told some friends in advance of this weekend that I don't know how to build a house, but I know how to build a website, so getting a chance to do that for a great organization like the LWV was not only fun but an honor.

Just in case anyone is curious the site we built can be found at http://www.lwvdev.com. We had some issues connecting with their hosting provider so itll be switched over to their main site, lwvcef.org in the next week or so.

Some thanks to hand out. First off to all of the organizers especially Mark Schumann who acted as MC and leader of the organizers, Andrew Craze who served as the developer lead and Jon Stahl who's company Lean Dog hosted the event on their amazing workspace (the old Hornblowers boat on lake erie.) Also thanks to the IEEE for acting as a non-profit sponsor of the event and Burke Lakefront Airport for offering up the entire terminal to be used by the campers when the number of volunteers overflowed the boat.

On a personal note I moved to Cleveland Ohio 5 years ago because of a job offer after college. When you think of Cleveland you don't really expect to find a vibrant and exciting community of software developers and tech enthusiasts. This isn't Silicon Valley or Boston or Austin. Let me just say, if you believe that like I did you couldn't be more wrong. Over 100 people showed up this weekend from dozens of companies all over Northeast Ohio. There was a range of expertise that ranged from SQL to .NET and Ruby, Coldfusion, PHP you name it and it was represented. This is a great city to live in, with great people and one hell of a technical community, and that friends is why I'm #happyincle.

Anyway Thanks again to all those involved and I can't wait to do it all again next year.