Every revolution needs a martyr (ALT.NET) Part 2

The first time I listened to Scott Bellware’s interview on the Alt.Net podcast #17 “The State of Alt.Net” I was a little off put by Scotts dissatisfaction with the community…

The Meeting

I walked into this so called “concerns” meeting with nothing but uncertainty. How would it all play out? Would I be challenged about the implementation? Would I be required to do "forms over data”? How would the vendor be considered in all of this? How would these decisions effect the project scope?

The one outcome I did not consider, nor did anyone who commented on the last post, is probably the saddest. Not caring. The the lead developer nor the highly touted (project manager) PM and my PM could give a carp less about the implementation.

The one outcome I did not consider, nor did anyone who commented on the last post, is probably the saddest.

I was not questioned about the implementation. The meeting revolved about two main points. First; would I be following our standards and how would using these principles effect the project.

Since, even though we have a committee, we have almost no-implementation principles I was able to answer Yes in regards to using our trivial “standards” and “framework”. Discussion of other projects never came up. I was not challenged; I was able to keep my mouth shut and keep my job.

My PM asked one very good question to which I tried to respond in a manner that would ignite the conversation. She asked if using these principals would make increase her projects timeline and/or make it harder to support. To which I responded something alone the lines of “I am trying to ensure maintainability and save project hours”. I guess if I was actively trying to get fired I could have said “I am trying to ensure this project does not end up like your projects” in reference to the other PMs projects. But that was not the goal; just the expected outcome.

The Outcome

I was instructed to make a list of 10 development “things” that we can tell the vendor about how to create the application. I actually think this will be very beneficial for this project and hopefully for this organization. If these 10 principles are followed and the project is successful it could go a long way.

New Thoughts

If developers don’t care the community effort is futile. As such I am beginning to think that its not the developers Alt.Net needs to reach but the managers, the C level individuals. Acting less like a gorilla movement and more like business.

I’m covered from head to two with Tattoos, I come in late and leave early. I ride a Harley and listen to large headphones all day long. I am far from the ideal person to make this suggestion. Also, I’m sure its not new…

Our industry is still young and our implementation and tooling is ever evolving. I think its fair to say that by using the best of what we have today that path to success (or failure) is shortened. I feel like; in either case ROI is something tangible that we can hang our hat on. From the methodologies to the tooling ROI can be found, documented and presented like a product.

The Future

The last few days have been very busy. I’ve been meeting with the vendor to architect the application. As expected we are very much on the same page. Since the development is going to happen offsite I wont be privy to most of the project management related goodness but here are the highlights.

  1. Agile – Scrum
  2. 3 Week Sprints
  3. Sprint Planning Meetings (involved)
  4. Weekly Code Review (involved)
  5. OOP – Entities, Models, Services, Repositories, and more… :)
  6. WCF Services – non-iis hosted
  7. WCF Services – iis hosted
  8. ASP.NET MVC
  9. IoC/DI – Unity
  10. Logging – Nlog
  11. Validation – xVal
  12. DAL – SubSonic

The next few days will be spend writing justifications documents for items 9-12. FAIL

Also, while the vendor can “do either” they are more conformatable with C#…but oddly enough we dictate VB. FAIL

I can’t write anymore; I’ve got justifications documents to write. FAIL

Related posts:

  1. Every revolution needs a martyr (ALT.NET)

read more

How you found me June 2009

These are the top 10 search terms used to bring people to my site over the past 30 days.

  1. asp.net mvc sitemap
  2. mvc sitemap
  3. renderusercontrol
  4. html.renderusercontrol
  5. mvc view content page
  6. linq update row
  7. dijit.byid
  8. eric polerecky
  9. ie8 max-width
  10. jquery ajax onclick

No related posts.

read more

Every revolution needs a martyr (ALT.NET)

Note: I like to use lots of analogies. I understand that my situation is nothing like that of those who die for their respective causes. Also; I use the term “OOP principles” to generalize all the methodologies/tools/practices used in today’s application development.

Introduction

I work in a what is, too me maybe, a unique development environment. Our current organization structure does not have a technical architect. The developer position ladder ends at lead developer. Without a TA we are attempting to run the development process through a committee. With close to 30 developers spread across to 5 different “teams” and with multiple project managers and each development team in a “silo”; its not an easy task and its going as well as you might expect.

I have asked repeatedly to be excused from the committee with no luck. You see the committee’s mission statement is to create standards documents. We spend countless hours discussing process and other red tape that should simply be automated.

Until now the meetings have had little effect on my development. My development team and I simply code away following OOP principles, POEA, etc, blah blah blah. I have my own CI and SVN server and I’m (on my own personal time) automating as much of the deployment process as I can via my new project AutoDeploy. Simply; I have to act under the radar in an attempt to create “good” software.

Background

My employer is outsourcing the initial design and development of a series of applications (web and web services) which I will eventually be responsible for extending and supporting. The vendor has discussed, with my employer, using an agile mythology, specifically Scrum, for managing the project.

The vendor will be on-site all next week. At that time I am responsible for introducing them to our framework. Think dumbed down version of Sharp Architecture. So dumb in fact that most of the OOP principles have been removed! I recently committed unit testing projects; but no other team is yet to use them, in fact they have not been blessed by our “.NET standards committee”

At this point I know who the vendor will be, how they will mange the project, what my roll will be during the development and after. I don’t know what methodology the vendor will use to translate the requirements into a deliverable. I don’t know what, besides the application, consists in the deliverable. I don’t know what metrics will be used beyond end user functional testing for acceptance testing.

It is with all these question in mind I fired up outlook and set off this email. Please keep in mind that I have been on a soapbox for 3+ years pushing for answers to these questions and I’m a little frustrated at this point. Also; I’ve never been able to be tactful.

 

From: Polerecky, Eric [mailto:polereckye@xxx.com]
Sent: Tuesday, June 16, 2009 10:56 AM
To: My Project Manager, Department Manager
Subject: Portal Development

PM -

It’s no secret that my development methodology is, let’s say, different then most other [Redacted Employer name] developers. There is a lot of documentation that supports using the methodologies. Microsoft, Every college computer science curriculum, High profile community members and countless books all suggest that using these methodologies build better software. Better in this case means:

  • More maintainable
  • Requiring less hours to develop
    • I’d put lots of money on it.
  • Flexible to change to the clients changing wants and needs
    • See [Redacted Current Large Project]

With all that said, I’m not sure how you would like me to approach [Redacted Vendor name]development effort. Personally, after one short conference call, I feel these methodologies are much more inline with what [Redacted Vendor name] then with [Redacted Employer name]. I am pretty confident that [Redacted Vendor name] would happily develop the [Redacted Project name] portal using these methodologies. I am also confident that the software produced would be “better”.

I could write an entire novel about how this approach to software development is unlike [Redacted Employer name]. I’m available if you would like to talk more about these topics…I like talking about computers :)

Here is a list of links to information about these methodologies and tools used to support them.

Object Oriented Programming

http://en.wikipedia.org/wiki/Object-oriented_programming

http://www.cse.secs.oakland.edu/courses.php?CourseType=CSE&IDLow=100&IDHigh=300

- OOP is a level 200 course……

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Test-driven development

http://en.wikipedia.org/wiki/Test-driven_development

http://bradwilson.typepad.com/blog/2009/04/its-not-tdd-its-design-by-example.html

Behavior-driven development

http://behaviour-driven.org/

Domain Driven Design

http://behaviour-driven.org/DomainDrivenDesign

DRY

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

SOLID

http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx

Patterns of enterprise application architecture

http://www.martinfowler.com/books.html#eaa

As many of the agile mythologies as I can in the current environment

Fail Fast – http://www.martinfowler.com/ieeeSoftware/failFast.pdf

Release Early – http://toc.oreilly.com/2008/06/release-early-release-often-ag.html

Continuous Integration

http://en.wikipedia.org/wiki/Continuous_Integration

Static Code Analysis

http://en.wikipedia.org/wiki/Static_code_analysis

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

And on and on….

At this point there are some back and forth emails about project management methodology and application architecture implementations which ends with this email.

From: Project Manager
Sent: Tuesday, June 16, 2009 11:42 AM
To: ‘Polerecky, Eric’;
Subject: RE: Portal Development

Let’s get a couple people together to discuss your concerns with how the [Redacted Vendor name] methodology/technology could impact our ability to support this application longer term.  I will set a meeting.

Thanks,

Project Manager

At this point I’m at a loss for words. A meeting to discuss my concerns? I have no concerns. I am pretty confident that the vendor will be following OOP principles and I am very happy about it. I just want to ensure that they are.  I want unit tests and code coverage to be part of the deliverables. I want separation of concerns and n-tier. I expect these things based on the limited interaction I’ve had with the vendor. I just want conformation!

Also I want to ensure my employer understands the code delivered will be unlike that of most other projects in this organization

Another meeting? Isn’t this what we have the “.NET standards committee” for? I bite my tongue and wait with bated breath for the meeting request.

Next up in my inbox is a meeting request. The attendees of this meeting include my PM, another PM which we will call PM2, and a lead developer from another department. I don’t know the agenda of this meeting or how these two individuals can help discuss my “concerns”.

PM2 – 10 years ago PM2 was a DBA and for this PM2 is looked upon by the other PM’s as the most technical. It says a lot about the technical knowledge of our PM’s.

Lead developer – toes the party lines. A Java developer that had a very bad experience trying to build a large application using OOP principles. As such; Lead developer is a big opponent when I request to use DI/IoC, OR/M and any other tool that would help support my development using OOP principles. Webforms, ADO.NET, HTML, CSS is the way to build web applications.

Today

I’m pretty sure I am going into a meeting where I am going to be asked to try and convince 2 people that are opposed to my view points as to why I want to require, hopefully just ensure, that the vendor will build these applications the way I would. Since I build software this way for my employer; I also feel like I am going to be challenged about the architecture for every piece of software I build.

I’ve been on my soapbox for far too long. I’m stood in front of the entire department doing demos too many time. I’ve held lunch time developer meetings. I’m tired of fighting the fight. If I’m going to be backed into a coroner I don’t think I can hold my tongue anymore. I’m stubborn as hell and there is no way I am going to be asked to support, maintain, extend an application that is not designed and developed using OOP principles.

I woke up today ready to die. Ready to sacrifice myself for a cause.

I woke up this morning expecting, but not hopping, that today would be my last day with this employer. I woke up early, very unusual for me, to the sound of the rain. I went downstairs and looked out windows and thought “today would be a good day to die”.

I got dressed and gave my wife a kiss good by. On my way out she yell “Give’em hell” and I pumped my first in the air.

Sitting in my car, with the rain pouring down around me, I plugged in my Ipod and fired up the podcast where I left off. Scott Hanselman – Silverlight 3 with Tim Heue. I drove off to war…an odd feeling.

Possible Outcomes

I can’t say for certain how the meeting is going to go but I do know there are only four possible outcomes…and two of them involve me being fired.

Outcome One

I do not manage to bite off my tongue before this meeting. I criticizing most other projects to the point of getting fired.

Outcome Two

We speak with the vendor, and they are going to use OOP principles and my employer is going to allow it.

Outcome Three

We speak with the vendor, and they are going to use OOP principles and my employer wont allow it. And I am not on the project.

Outcome Four

We speak with the vendor, and they are going to use OOP principles and my employer wont allow it. And I am required to still be on on the project…at which time I quit.

Tomorrow

More updates to come. Meetings the rest of today….would have liked to write more before the event.

Related posts:

  1. Every revolution needs a martyr (ALT.NET) Part 2

read more

Jaunty Ubuntu Netbook Remix via Apt

I’m not sold on the ubuntu netbook remix just yet. I want to keep my current desktop incase I get sick of it but the only way to install UNR under jaunty is via img.

  1. Edit Sources List:
    1. In terminal type: sudo gedit /etc/apt/sources.list
    2. add the jaunty repo, add these lines at the end of the file.
      1. deb http://ppa.launchpad.net/netbook-remix-team/ubuntu jaunty main
      2. deb-src http://ppa.launchpad.net/netbook-remix-team/ubuntu jaunty main
    3. Save file and exit.
  2. Install UNR
    1. In terminal type: sudo apt-get update && sudo apt-get install window-picker-applet go-home-applet human-netbook-theme maximus netbook-launcher

This is where most of the other, and many are there thousands, of instructions stop…here are the steps I took and some important notes.

  1. Use the desktop switcher to start UNR. Preferences –> Switch Desktop Mode.
  2. Add the go-home and window-picker applets to the top panel.
  3. Remove the applications, system and pretty much everything else from the top panel.

I did not want UNR to start at boot but if you do…

  1. Open Preferences –> Startup Applications
  2. Add netbook-launcher
    1. I don’t know if you need the full path…if you do can you please post it in the comments. Thanks.

Update:

during the dorpbox install the top panel “went way”…its a tech term…but once the daemon was configured everything worked again. Make sure you finish the entire install and setup your account.

Twitter

Gwibber seems nice so far.

No related posts.

read more

Installing mono 2.4 on unbuntu jaunty

there are no native installers for ubuntu jaunty. you need to install from source. I found a nice shell script that does all the steps.

http://www.nabble.com/attachment/23469480/0/install-mono-2.4

No related posts.

read more

Updated RSS Feed

Sorry everyone that uses RSS to read my blog, both of you listen up. I updated the feed url after all that google move stuff.

http://feeds2.feedburner.com/ericpolerecky

No related posts.

read more

AutoDeploy Rework

Tonight I reworked in workflow, persistence, mapping, and entities in AutoDeploy. The fire draft consisted of a single entity type with long descriptive janky attributes. The new core goes something like this

Deployment has a list of tasks. Tasks can be have a task type.

Example 1 Creating a new deployment:
   1:  var dep = new Deployment()
   2:  .AddTask(
   3:     new FluentTask()
   4:       .Source("")
   5:       .Destination("")
   6:       .Type(Task.TaskType.Subversion)
   7:       .Save())
   8:  .AddTask(
   9:    new FluentTask()
  10:       .Source("")
  11:       .Destination("")
  12:       .Type(Task.TaskType.AspnetBuild)
  13:       .Save()
  14:  );
 
Deployments and Tasks can be scheduled or interval execution. I’m thinking right now that Task level interval settings will override deployment settings. This will allow you to schedule an entire deployment at X with a single task happening outside of that window. For example; you might want your working copy updated every 10min but have trunk moved to the dev server, an tag created and an email sent off at the end of the day.
 

Related posts:

  1. AutoDeploy – Dogfood
  2. Introducing: AutoDeploy
  3. AutoDeploy.NET to GitHub

read more

Introducing: AutoDeploy

A class library to help automate simple deployment tasks.

Warning: pre-alpha.

AutoDeploy has 2 main components; deployment objects and a deployment controller. A deployment object holds n+1 deployment tasks. The deployment controller is responsible for executing scheduled, interval and on demand deployment tasks.

AutoDeploy is complete enough for me to start dog fooding it this week. I’ll have a road-map soon after.

Features
  1. Deployment Controller
  2. Scheduled Deployments
  3. Interval Deployments
  4. SVN Checkout
  5. SVN Commit
  6. ASP.NET Build
Example 1: Fluent Interface, SVN Checkout, Interval
   1:  var deploymentController = AutoDeploy.Controllers.DeploymentController.GetInstance;
   2:  new AutoDeploy.Mappings.FluentMapping().Named("TestMapping")
   3:  .FromSvnHttpRepositoryUrl("URL")
   4:  .UsingSvnCredentials(new System.Net.NetworkCredential("UID", "PASS"))
   5:  .SvnCheckoutToDirectory("C:/Temp")
   6:  .AtTime(6)
   7:  .Save();

First, or last, or never..we create a controller. The controller will check every minute for interval and scheduled deployments. In this example we checkout every day @ 6am.

Example 1: Fluent Interface, Compile, Publish, One Time
   1:  new AutoDeploy.Mappings.FluentMapping()
   2:  .SvnCheckoutToDirectory("C:/Temp")
   3:  .BuildAndOutputToDirectory("C:/TempCompiled")
   4:  .Execute();

shhh..I know the source directory name is horrible…

Related posts:

  1. AutoDeploy.NET to GitHub
  2. AutoDeploy Rework
  3. AutoDeploy – Dogfood

read more

PC Rebuild – Check, Clean PC…Fail

I got back my shiny, rebuilt PC. After putting in a detailed build request for just Visual Studio, Visio and nothing else. No frameworks, tools, .NET stuff, nothing I fired it up. I am not shocked to see a workstation filled with so many programs, SDKs, runtimes, it looks like someone vomited up the results from a Microsoft downloads search for “.NET”. I never expected my request was not honored, I figured I would get the standard “developer” build, what I am shocked with is that the development leadership group (that I am part of) directed workstation services as to what software needs to be included in the image! FAIL!

Here is my post PC rebuild task list.

  1. Install
    1. Windows Live Writer (& msn messenger) so I can blog about it…im a dork.
    2. Firefox
  2. Outlook setup, painless.
  3. Uninstall:
    1. Windows Mobile 5 SDK R1 – Not developing for mobile.
    2. Windows Mobile 5 SDK R2 – Not developing for mobile.
    3. Microsoft .NET Compact Framework 2.0 SP2 – Not developing for mobile.
    4. Microsoft .NET Compact Framework 3.5 – Not developing for mobile.
    5. Microsoft Device Emulator Version 3.0 – Not developing for mobile.
    6. Microsoft SQL Server Compact 4.5 Design Tools – Not developing for mobile.
    7. Microsoft SQL Server Compact 4.5 – Not developing for mobile.
    8. Microsoft SQL Server Compact 4.5 for Devices – Not developing for mobile.
    9. Microsoft SQL Server Database Publishing Wizard 1.2 – Don’t have access to DB Servers per client standard.
  4. Reopen the ticket to ask for the tech’s to install IIS (or provide me with a copy of i386). They did both! :)
  5. Install (Using the Web Platform Installer):
    1. ASP.NET MVC 1.0
    2. .NET Framework 3.5 SP1
  6. Install
    1. Visual Studio 3.5 SP1
    2. Microsoft SQL Server 2005 Express Edition SP3
    3. Microsoft SQL Server Management Studio Express

Now the workstation is how I would have expected it. From here I can spend the rest of the day installing all this software

No related posts.

read more

Loading DLLs at runtime

Use DllImport from using System.Runtime.InteropServices

No related posts.

read more
Page 1 of 212