I like Jimmy Bogard. A lot. He seems really cool. We’ve never met, and besides maybe an occasional cross comment on blog posts, I don’t think I’ve ever talked to him.
But he seems cool, and he seems to be a really good developer, much better than I am (though a sick hamster with some JQuery skills is probably a better developer than I am, but I digress).
Anyhoo, he had a recent post about some presentation he gave in various places like Dublin and Kiev and Guam and Haiti and Narobi (okay, I’m exaggerating), and posted about it here. I do not like the word “polygot” much but the idea that I could get a codebase from a really good developer that “showed how to build a single application that combined relational, key/value, document and graph databases, without resulting in a huge mess” was pretty appealing to me at this point in time, for various reasons.
I have always believed that you should be able to download a codebase and have it immediately compile. Well, to a point. If you have to have a database server installed, you can’t really enforce that with a download, but you get the idea.
So, I went to Github to get the code, but since I don’t have Git installed at the moment (yeah, yeah, I know. I’m using Team Foundation Service at the moment. Yeah, yeah, I know. Bite me.), I had to download his entire presentation zip, which is actually pretty cool, a lot of good stuff to look at.
So, I unzip and try to compile. Not a chance. Missing references all over the place. Okay, that’s understandable, he uses large numbers of nuget packages (here’s an example):
No problem. You can tell Visual Studio to get missing Nuget packages on build, nice feature, right? Here it is:
Pretty awesome, right? So when you build, it will download all of the……huh. No, it won’t. What the hell?
Having forgotten this, it took me 10 minutes or so to remember that you have to actually tell the Visual Studio solution that you really mean it (what the fuck) by right clicking on the solution and choosing the “yes, I really fucking mean that I want you to manage Nuget packages.”
Okay, that was annoying, but now at least as I build it is managing all of the dependencies and at least I will get a clean……build failed. What?
Hmm, let’s try to manage the packages through the little gui thing. It says there are packages missing, would you like to update? Yes, I would. Oh, that didn’t work, it is saying the same thing, but no error message. That is so totally useful.
What it was, was that Jimmy was using an alpha build of the next version of the Entity Framework, but guess what, they don’t actually keep all of the alpha builds in Nuget, just the most recent (I guess), so it couldn’t find the alpha1-1123blahblahblah package and bombed out. So, we can just go into the packages.config and change the build number right? No, apparently not, it gets confused, so you have to go into the gui package manager thingy and remove the missing version, and then go to the command line so that you can indicate you want the latest –pre build.
Of course, I still can’t run the app after successfully building it, as the database is missing, or I can’t find it, or whatever.
Sorry, this just sucks. If you have a lib directory with all of your dependencies in your source and reference that, you will never have problems downloading source code and building it. You miss all the ‘nice’ Nuget features, but, somehow life still goes on when you don’t use.
It is really good code to read though, so I’m glad I downloaded it.