ASP.NET MVC 3 + Razor Infrastructure Update

A few quick notes about the updates on the Infrastructure Project.  For one thing, I need to give it a good name.  Any ideas?

There are sample Zen Garden CSS and jQuery UI Theme files in the overall github repo, BUT, they still need integration into the actual template project.  Again, if anyone is interested or has ideas on how to get those integrated into the Visual Studio Template, I’m all ears!  🙂

On the topic of a full vertical implementation of NHibernate or Entity Framework with a good repository pattern and related code, I’ve made zero progress over the last week or so.  I hope to remedy that between now and mid-next week.

Until later, off to code again.

Git Rid of Windows Azure and Amazon Web Services (AWS) SDKs with .NET + Git + AppHarbor Deployment Revolution

I’ve been wanting to do a quick write up on the state of cloud apps from my perspective.  What’s my perspective?  Well I’m keeping up with  the SDKs from the big players; AWS and Windows Azure.  I’m also working on several cloud applications and providing consulting for some people and companies when approached related to which stack to go with, how to apply their current stacks (such as Ruby on Rails or .NET) in migrating to a cloud service provider.  Cloud services, or really more accurately utility computing has my personal and professional interest.  Above all, I keep trying to stay informed and know what the best path is for anyone that seeks my advice for moving into hosting & working in the SaaS, PaaS, or IaaS Space.  Feel free to contact me in regards to cloud questions:  adronhall at the famous gmail dot com.  🙂

Now on to the good tidbits that have been released lately.

The latest Microsoft goodies area available.  For the Windows Azure SDK go check out the Microsoft MSDN Site.

For the latest awesome from AWS (Amazon Web Services) SDK check out the AWS .NET Site.

These two SDKs are great for customers who want to build on the bare bones X platform.  Now whatever language & stack one builds in they are tied to that.  Ruby on Rails, .NET, Java, PHP, or whatever.  But getting tied to the stack is kind of like breathing air, one has to live with what air they have.  You can’t exactly get a refund very easily on that.

The Cloud SDKs though for Azure & AWS provide a certain amount of lock in, in addition to the stack lock in you’re using.  One of the easiest ways to prevent this lock in is to use a general deployment method backed by source control on something like Git or Mercurial.  So far though, .NET has been left out the cold.  There has been almost zero support for pushing .NET via Git or Mercurial into a cloud.

Heroku

Heroku

Ruby on Rails however has had support for this since…  well since the idea popped into the minds of the people at Heroku, EngineYard, and the other companies that are pushing this absolutely amazing and powerful technology pairing.

Engine Yard

Engine Yard

Again, for .NET, the problem is it has been left in the dust.  Smoked.  It has left a lot of .NET Developers moving to Ruby on Rails (which isn’t new, this is just one more thing that has pulled more developers away from the .NET stack).

Well, that’s changed a bit.  FINALLY someone has gotten the Git + .NET Pairing in the Cloud put together!  FINALLY you can get a cloud application running in a minute or two, instead of the absolutely inane amount of time it takes on Windows Azure (15+ minutes most of the time).  So who has done something about this?

AppHarbor is the first fully deployable solution for the cloud that allows Git + .NET to get going FAST!  I don’t work for these guys at all, so don’t think I’m shilling for them.  I’m just THAT happy that .NET has been pulled out of the dust bins and the community has this option.  I am flippin’ stoked matter of fact.

Currently, because of pricing and ease of deployment, I’ve been solely using AWS.  I can have a .NET MVC app running in AWS in about 5-10 minutes.  Between that speed of setup and the pricing, I pay 2/3 as much as Azure would be and can deploy much fast with a completely traditional .NET deployment.  No special project type needed, no extra configs, just a straight deployment with full control over the server (i.e. I can RDP in with no problem).  Anyway, the list of reasons I went with AWS over Azure really deserve an entire blog entry unto themselves.

AppHarbor

AppHarbor

With AppHarbor though I can step into the realm of doing exactly the same thing a Ruby on Rails Developer would do with Heroku or EngineYard.  Fully PaaS Capable with the scalability and features without needing to port or migrate to an entirely new stack!  I’ll probably keep a number of things running on AWS (such as the pending WordPress Websites I am about to push up to AWS), but will absolutely be starting up some applications to run in AppHarbor.

If you’re a .NET Developer and you’ve been wanting, looking for, and frustrated that the .NET Community didn’t have a Git + Cloud Deployment option for .NET, wait no longer.  Give AppHarbor a look ASAP!

Anyway… off to do a little work on my infrastructure project.  Cheers!

Infrastructure Drops Entity Framework in Favor of NHibernate

I did some searches for tutorials on Entity Framework (EF) + Code First.  Most of the tutorials I found involved clicking on some design time view and right clicking to add columns, then clicking and right clicking to generate the code first SQL.  It was neat, it was clean, and it was sort of fast.  However, it didn’t beat FluentNHibernate in cleanliness.  There still ended up being some huge and nasty generated (from the design time) file and some other things that just didn’t sit well with me.  With the host of other things that are just now getting developed for EF that have been in NHibernate for ages I’ve decided to yank Entity Framework support for now and just stick to NHibernate + FluentNHibernate.  Simply, it just works better and I have more immediate support, feedback, and input into what is available with NHibernate.  For Entity Framework nobody really has any of that, one has to wait for the Microsoft machine to move forward on design decisions before something gets dropped either via a proper version or CTP.  I’ll stick to the more responsive open source solution, k thx.  🙂

HOWEVER, In the future I do intend to add Entity Framework support, I’m just not spending the time right now.  I’d be perfectly happy if someone else wants to do so, just let me know…

In other news from the UI from of the Infrastructure Project, I’ve made another decision to use the Zen Garden CSS to setup the original layouts & such.  Since it is the UI, I thought that going with something that designers are more familiar with instead of the ASP.NET MVC Themes oddities (which I don’t even really know where they’re hiding those these days) would make things even simpler from that aspect.  A clear separation of concerns for devs vs. graphic artists & layout pros.

Anyway, that’s all committed and I’ll be building a new template before the end of this week.  As always, if you’re interested in adding to the project, or just using it, I’d love any and all feedback.

ASP.NET MVC 3 w/ Razor Infrastructure Template

I decided, after poking around with Visual Studio 2010 Templates tonight, to publish a baseline infrastructure using ASP.NET MVC 3 w/ Razor, Entity Framework, and other elements using the .NET stack.  So far I’ve only got some skeleton code put together for the infrastructure project and posted it to my github repo.  I’d be open to fellow contributors or suggestions on what else I could or should fill out in the baseline template.  Give it a view and let me know what you think.

Over the next few weeks (months, etc) I’ll be updating this and filling out more of the patterns that one might use around Entity Framework, ASP.NET MVC 3, etc to enable good Test Driven Development.

-Adron, infrastructuralist.  🙂

Job Posts that Don’t Suck!

Ok, as promised, this is the post with solutions.  Job posts should get a prospective candidate excited about a possible gig.  Don’t lose top talent the second you post, don’t freak out people and load it up with a “we’re hiring so we just have to throw bait out for all you sucker programmers” type of attitude.

Here’s one group that just starts off right from the beginning.  Hackruiter, a group of hackers that recruit for startups.

Here’s another site that does it right, Stack Overflow Careers.  It puts onus on the hiring company to put up or shut up about whether its a good development shop or not.  With the Joel test criteria a prospective employee gets to find out very important things about a company.  The following job poster scored a perfect 12 out of 12.  It’s most likely one of the best shops around to work at!  This is a prime example of a dev shop that has their act together.

An Example of a Well Put Together Software Shop!

An Example of a Well Put Together Software Shop!

Let’s take a look at the actual job post, I’m assuming YouNoodle doesn’t mind if I help spread the good word by using their job posting as an example.

YouNoodle Posting

YouNoodle Posting

The post starts off with a simple, unassuming title.  This is good.  If you see rock star, or something of that sort, these days I’d be worried since it is an overplayed title.  EVERY company wants rocks stars.  However, a rock star is rare, no need to try to be one.  Most rock stars don’t try, they just are.  But I digress, the title starts off as simply, “Front End Software Engineer“.  (I’ve linked the posting, but no telling how long it will actually be live, so to mitigate I’ve posted an image of the posting to the right hand side – click it for a full size image that is more readable)

After the title the startup jumps right into wooing the prospective hire.

YouNoodle is looking for an engineer to join our tiny but ambitious product team. YouNoodle is a fun and entrepreneurial startup in downtown San Francisco. Our office is on the corner of South Park, close to Twitter and many other cool startups.

We are looking for a software engineer with solid web product experience, ideally someone who has worked in other web startups and/or hacked together websites in college. You will start off on our current PHP/MySQL setup, but you will eventually work with us on a new product in a new framework.

We are one of the most well-connected startups in the Bay Area, and with us, you will make your name in the startup world. Our office space is fun and chill, the vibe is ambitious but relaxed, and you will largely be setting your own goals.

Right from the start they talk about their fun and entrepreneurial environment in downtown San Francisco.  They obviously care about their work environment as they’re downtown, not in some lame suburb off in the middle of nowhere.  This is very important to a good company.  A good company cares about where their employees will work.  They care about the environment and whether it is awesome or in some dank dark corner of the universe.  YouNoodle obviously has insight into things.  They dive shortly after that into what they’re looking for and the awesome technology that the prospective employee would get to use.  Notice it isn’t a demand, it is a description of what fun it is.  This is software, the tech industry doesn’t need to demand, it’s a fun business to work in and companies should get a clue about that!  Don’t bore prospects, woo and excite them!  You’ll have the best before you know it.

The next thing that YouNoodle jumps into is “Extra Credit“.  They did a great job in not using the same lame “required experience” nonsense.  Nobody ever has the exact experience, it’s all about finding the developer that can contribute and get up to speed on the technology.  It’s merely extra credit for a developer to have some or most of the skills.

Extra credit: – Other web frameworks (Ruby on Rails, Python/Django, etc) – HTML5 – Mobile or Facebook app skills – JQuery – AWS systems experience – Graphic design skills – Product or project management experience

Now just to assure everyone, I have no vested interest in YouNoodle.  I literally just found out about them by looking on Joel Spolsky’s Job site to find examples of companies that put together good job postings.  I know and trust Joel’s Sites and he gets it.  I don’t always agree with the guy, but he’s definitely got his act together, and the companies that the site allows to post generally have their act together.  YouNoodle is no exception in that regard, they do indeed have their act together – at least in attracting and hiring!

So why can’t other companies and recruiters get their act together and excite people about what the job is?  I’m not sure what they can do, but they do need to check out these sites and learn from the best.  There is ZERO reason a job description should be demanding or insulting to the prospective employee.  There is no reason for the posting to paint a dire picture.  Sure the project may be in trouble, but get the postings right at least.  Talk to the candidates about that when things are put together.

But then of course if the project is in really bad shape, I hope developers also start learning how to read the crappy job descriptions and create an even greater shortage for those efforts.  Maybe the market can straighten out those poorly lead projects then – it created the awesomeness that is the tech sector in the first place and I’m sure it can straighten it out again!

Cheers, to better posts and more truth and better effort in the whole hiring process!