Wednesday, August 05, 2009

Tech Dinner Meetup with Jeffrey Palermo tonight!

Bit of a late notice, but Jeffrey Palermo is in town tonight unexpectedly and is interested in having a casual tech dinner meetup with us locals.  We will be meeting for dinner at Q restaurant in Old City, Philly at 6:30 PM.  All are welcome, bring your questions or .NET topic ideas and your appetite!

Please RSVP if you plan on attending:
http://palermo.eventbrite.com

Friday, June 19, 2009

MVC - The Anti-Controller Revolution Heats Up!

In February of last year, I posted my thoughts on current MVC abstractions in Rails, and .NET, and how I felt that Controllers were really just glorified namespaces, where related action methods sit.  This leads to a lot of pain in separating concerns, routing flexibility, action reuse, etc.  In JP Boodhoo's course (the first time I got to attend, in October 2007) he showed a simple example of a "FrontController" model where a single application controller handled all requests and routed them to an appropriate command object.  In that scenario, "Actions" are separate classes, and therefore become first-class citizens.  This really appealed to my Object-Oriented aesthetic, because if a Class is supposed to be a cohesive unit, even the most cohesive Controllers are only bound by the "resource" they represent, such as a ProductController and its associated CRUD actions.  Each action on a controller can (and often does) have its own set of dependencies and concerns.  Why not just group by folder or namespace or some other way of grouping related Action classes, rather than as methods on a controller?

Recently, several folks that are smarter than myself have started thinking about this.  I first noticed Jimmy Bogard making a few comments on Twitter about it that echoed my thoughts very closely.  Then, this ringing endorsement from Jimmy must have prompted Chad Myers to write a nice summary of the idea on his blog.

I’m really looking forward to what the community comes up with here, and hopefully I may even be able to contribute something.  FubuMVC, Chad and Jeremy Miller's (and other contributors now) open source MVC framework has a lot of incredible ideas in it, though it’s still in progress, and perhaps too architecturally advanced for even the mainstream ALT.NET community (there are a lot of advanced C# techniques and some very academic-sounding naming strategies that I could see frightening away all but the most ambitious of programmers/teams).  I’ve been toying with the idea of building my own controller-less framework, and have taken a couple stabs, and often used FubuMVC as a reference for some pieces.  So far, I haven’t really fleshed out my ideas to be useful enough for anyone else though.

What I had come to believe is that unlike JP’s model (at least as I last saw it in November 2008), it seemed that mapping a request to one action was still not an optimal abstraction.  I based this on two basic scenarios, though I’m sure there are more.  First, requests with the same url and/or post data may require different responses dependent on whether the client was a browser, a mobile browser, an API call (expecting JSON/XML), etc.  In this scenario, you could use the same command to return the ViewModel data, but any number of "Response Commands" could be used to render the data in the appropriate way for the client.  Secondly, there may be distinct view logic that needs to occur, for example, when rendering a view for a browser, permissions, localization, and other user-specific customization may need to occur, where as returning pure data to an API call may not require any of that logic.  It seems to me if you include all this rendering knowledge along with the actual "business" of the request into a single command, you’ve only taken a baby step beyond the Controller/Action paradigm.

In Chad’s post (read it now, if you haven’t yet!) he talks about mapping requests to a group of commands, or command chain.  This takes my idea of separate Request and Response commands a step further, and I think it is probably a better idea, and could open up a huge opportunity for very succinct commands that are triggered by a request, of which some could be asynchronous, synchronous, etc.

I’ll be watching this closely as it progresses, and hope that we can make writing web apps easier, cleaner, and more testable for all of us soon!

Thursday, June 11, 2009

Foundation Series Is a Hit!

Last night, we held our 4th and final (for now) workshop in our Foundation Series.  The response from the community has been fantastic, and we averaged almost 40 developers at every session!  I received a ton of help in putting this series together, and I’d like to thank some of the folks that were involved.  If I miss anyone, feel free to slam me in the comments :)

  • Dani Diaz - Our local Microsoft Developer Evangelist.  Dani’s a huge supporter of our group, offering ideas, encouragement, and sponsorship for several of our meetings and workshops.  (@danidiaz)
  • Bill Wolff - Leader of Philly.NET - our huge Microsoft User Group.  Without Bill’s inclusion of Philly ALT.NET in Philly.NET events, Code Camp, etc, we never would have met the number of developers we have, or even conceived of the Foundation Series.  All the Philly.NET leadership (Andy Schwam, Marc Ziss, to name just a couple) have been incredibly helpful and generous with their support. (@billjwolff, @schwammy)
  • Bob Bunson, Steve Eichert, Brian Frantz, Jon Graves, Erik Peterson - These longtime Philly ALT.NET members took the time to develop content and lead sessions during the Foundation Series.  They did the bulk of the hard work of making this series happen (@steveeichert, @cerikpete, @jon_graves)!
  • John Pharo - As our "Chief Swag Officer," John has been getting some great books and other giveaways for our meetings which takes a good bit of effort off my plate.  In addition, he’s a dedicated, core member, actively involved in planning, and coming up with ideas for the group.
  • The rest of the Philly ALT.NET and Philly.NET community for your questions, suggestions, and feedback that led to creating this series and giving us ideas for many other events we hope to bring to fruition in the future!

Philly ALT.NET will be slowing down over the summer.  We’ll likely get together for a pub night or similar social gathering to review the year so far and talk about what we want to do next.  Follow our discussion list (web | email)  to be notified of any future events. 

In the meantime, your feedback is incredibly important to the future direction of the group, so we’ve set up two suggestion/feedback sites on UserVoice.com to hear your thoughts.  Please, please take a minute to submit ideas or vote on suggestions!!  You can do so anonymously, or register so we know who you are. 

Use the site below to comment on the Foundation Series - what you found most valuable, what wasn’t as valuable, what you wished has been included, etc.  We will use this to not only revise the content for any future presentations of the 4 sessions, but possibly we will create new sessions based on your feedback:

http://foundationseries.uservoice.com

For general Philly ALT.NET feedback/suggestions, use the following site.  Here is where you can give any feedback on events, past or future.  Suggests topics you would like to see covered, workshops or tutorials, volunteer to speak/help, or suggest anything related to the .NET software community that you think we could help out with.  Definitely take a minute to vote on the ideas that are already posted there!

http://phillyaltnet.uservoice.com

This has been a great year so far for us, and I look forward to pushing the envelope even farther in the second half of the year.  Thanks to everyone for your dedication to growing a strong community of software developers that are always striving to improve and help each other do the same!

Tuesday, June 02, 2009

Surprise Philly ALT.NET Meeting With Scott Bellware!

Scott Bellware is in town holding two workshops, and has graciously offered to speak to the Philly ALT.NET group on Wednesday night at Indy Hall’s "Classic" location.  Scott is a dynamic speaker with a huge amount of knowledge in this area - you won’t want to miss it!

Register now (free)!  http://tddmvc.eventbrite.com

Test Driven Web Development with Model-View-Controller
(But maybe not ASP.NET MVC!)

Scott Bellware
Wednesday, June 3rd, 2009
6:30 PM - 9:00 PM

Indy Hall "Classic"
Second Floor
32 Strawberry Street
Philadelphia, PA 19106
(map)

6:30 PM - Greetings and Eatings (Hopefully - need a food sponsor! Email me!)
7:00 PM - Scott Bellware - Test Driven Web Development

Register now (free)!  http://tddmvc.eventbrite.com

Abstract:
Scott has promised an end-to-end discussion of building web apps test-first.  Designing your app for "provability" using a context/specification, behavior-driven approach.  Learn from someone who has been doing TDD with MVC long before ASP.NET MVC, in both .NET and Ruby and Rails.

More about Scott: http://ampgt.com/about

Monday, June 01, 2009

Foundation Series, Session 4, Wed June 10th

Our next installment in Philly ALT.NET's Foundation Series is on Pragmatic Architecture.  Another friend and fellow Philly ALT.NETter, Robert Bunson, will review help us take what we’ve learned so far and piece it together into an application architecture.  It will again be at DeVry University in Fort Washington and registration is open now!

Foundation Series Workshop 4
Pragmatic Architecture
Robert Bunson of Munich Re America

Wednesday, June 10th at 6:00 PM
DeVry University - Room 141, Fort Washington, PA

Food and beverages sponsored by G2 Interactive!

The Foundation Series, put together by Philly Alt.Net, seeks to present the fundamentals of software development.  For enterprise applications these fundamentals include the principles and practices of software architecture.  There is no best architecture, but there is an optimal architecture that fulfills the functional and non-functional requirements and addresses the forces and constraints on that architecture.  This session will discuss the process of creating and documenting a software architecture, and how that software architecture looks in code.

Register now!

Thursday, May 21, 2009

Prices Lowered for Bellware Workshops in Philly!

It was short notice, and budgets are tight these days, so in an effort to make his workshops happen in Philly on June 2nd and 3rd, Scott has lowered the price to $200 for one and $300 for both!  This is an awesome deal and he only needs a handful more folks to register to make it happen. 

Tuesday, June 2nd, 2009: Good Test, Better Code - TDD/BDD in C#/.NET
Wednesday, June 3rd, 2009: Web Application Testing with rSpec and Selenium

Note: Due to the way Eventbrite works, to get the $300 price for both, you must purchase a seat in each workshop using the discounted ticket option of $150 for each.  If purchasing only one workshop, you must buy the regularly priced $200 ticket.

For more info on the workshops, see my previous post

Monday, May 11, 2009

Workshops! Foundation Series and Scott Bellware coming to Philly!

UPDATE: Scott has lowered the price for the workshops!  See below!

First, a reminder that the next Foundation Series session is this Wednesday, May 13th at DeVry.  The topic is Design Patterns.  If you saw Erik's talk at code camp, this will be a chance to dig in a little deeper, ask questions, and also to take a look at how some of the new features in C# 3.0 can help make your patterns code simpler and cleaner.

Register for free here: http://foundationseries.eventbrite.com/

Also, through the wonders of Twitter, I was able to invite Scott Bellware to come up to Philly to offer two workshops on June 2nd and 3rd.  They will be held at IndyHall's training space (which used to be Indy Hall’s main space before they moved to a new, larger space earlier this month).  The first is a C# workshop on Test Driven and Behavior Driven Development (TDD/BDD).  Scott is a pioneer in this area, particularly in regards to the .NET space.  He has been speaking, writing, and teaching about BDD for several years and was a huge influence on my interest and understanding of it.  If you have been interested in learning - or struggling to learn a test-first approach to coding - I think you’ll take a huge step forward by spending a day learning from Scott.

The second workshop is on Web Application Testing using the Ruby test framework rSpec and the Javascript browser testing tool Selenium.  At first glance this may not seem relevant to .NET, but Selenium is just a browser driving tool that can run a browser against any web app written on any platform.  rSpec is used to execute the selenium tests and report results.  The result is a very effective means for writing customer focused acceptance tests that ensure your  web app is functioning as specified.  And while Scott will be using rSpec and testing a Rails web app, you will learn techniques that can easily be replicated in a .NET only environment (you can drive Selenium from any test framework, including NUnit or MSTest). 

The cost for each course is $300 $200, or $500 $300 for both!  There are only 18 seats available for each workshop, so don’t wait too long!

Register for one or both here: http://www.eventbrite.com/org/139992133?s=1192466

Monday, May 04, 2009

Foundation Series, Session 3, Wed May 13th

Our next installment in Philly ALT.NET's Foundation Series is on Design Patterns.  My friend and fellow Philly ALT.NETter, Erik Peterson, will review some of the more common and useful design patterns, with a lot of inspiration drawn from the great book Head First Design Patterns.  It will again be at DeVry University in Fort Washington and registration is open now!

Foundation Series Workshop 3
Design Patterns
Erik Peterson of VertMarkets

Wednesday, May 13th at 6:00 PM
DeVry University - Room 141, Fort Washington, PA

We’ve talked about writing clean, readable code and keeping it maintainable by following the SOLID design principles.  Another big step in building your programming foundation is to start learning and recognizing software Design Patterns. The value of understanding design patterns is two-fold; In some cases we will find new ways to think about common problems we face in our application designs, in other cases, the patterns give us a common language to explain and discuss some of the designs we are already using.  Design patterns can help us reduce complexity in our applications by isolating logic that is subject to change and allowing future extensibility.

Register now!

Wednesday, April 29, 2009

Philly ALT.NET Meeting: Mobile "i" for the .NET Guy

Next Tuesday, May 5th, Alex Hung is coming down to Philly to give an intro to iPhone development for the Philly ALT.NET group.  While this is an intro to the tools and languages used for iPhone dev, we are assuming that you have programming experience as well as some experience with a Mac and an iPhone.

Register here:  http://phillyaltnet.eventbrite.com

Mobile "i" for the .NET Guy - iPhone Dev
Tuesday, May 5th, 2009
6:30 PM - 9:00 PM

Drexel University
Rush Building Room 009 (Basement Level - *New Room*)

30 N 33rd St.
Philadelphia, PA
(map)

6:15 PM - Greetings and Eatings
6:30 PM - Mobile "i" for the .NET Guy - Alex Hung

Abstract:
Are you a .NET developer with an iPhone? Do you have a great idea for an iPhone application but are afraid of Justin Long and the cult of Mac? As a .NET developer since 2004 and Mac user since 2002, I will show you what is required to start developing for the iPhone platform: the hardware, and the software. I will recount the joy and the pain I came across, compare and contrast Xcode/Objective-C against Visual Studio/C#. And we can discuss why it is a good idea to dip your toes into mobile development.

Speaker Bio:

Alex Hung is a senior consultant at ThoughtWorks, a global IT consultancy specializing in custom application development. He has been working in the .NET space since 2004, developed both WinForm and WebForm applications. He is also passionate about software building and deployment process. He coaches enterprises on agile development practices and is a certified ScrumMaster. Alex is the co-fonder of NY Alt.NET user group.

Tuesday, March 31, 2009

Foundation Series, Session 2 - April 8th

The Foundation Series is a Philly ALT.NET initiative to re-focus and emphasize some of the fundamental practices and principles that are  Last month’s Foundation Series kickoff workshop was a blast.  I spoke about Software Craftsmanship, and Steve Eichert talked about what "Clean Code" is and why it’s important.  But don’t worry if you missed it - there will be at least one more chance to catch our talks again - more info on that coming soon!  Brian Frantz and Jon Graves of The Neat Co. will be presenting.

Clean code is the first step to creating flexible, maintainable software, but without strong object oriented design, you can still create a mess.  The S.O.L.I.D. design principles (acronym coined by Robert "Uncle Bob" Martin) provide a core framework to follow as you write your code, to ensure that you are following best OO design practices, and that your code is readable and maintainable.  When the pressure is on to deliver, design principles are often the first thing thrown out the window.  But learning these principles, and some simple rules and techniques to follow can help you deliver quality software even when the pressure is on.

Registration is now open at http://foundationseries2.eventbrite.com

Foundation Series Workshop 2
S.O.L.I.D. Design Principles

Brian Frantz and Jon Graves

Wednesday, April 8th at 6:00 PM
DeVry University - Room 141, Fort Washington, PA