Pages

Tuesday, February 28, 2012

Entity Framework: Error migrating datetime fields

Using the Entity Framework with MVC3 backed by SQL Server, I need to change the name of one of my model's properties that is a DateTime type. Normally, I would just change the name, then use the console to generate a migration script and run it; however, this time the migration script throws an error The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.What's going on here?

Wednesday, February 22, 2012

Hickory Smoked Bacon Wrapped Pork Roast


Prep time: 15 minutes
Cooking time: 45-60 minutes per pound
Total time: Varies, depending on roast weight
Makes: ~1lb roast feeds a family of four.

Ingredients (amounts vary based on size of roast)
Lean pork roast (e.g. pork sirloin roast)
Thick cut bacon (about 4-6 pieces for a ~1lb roast)
Heinz 57 sauce (about 1/2c for a ~1lb roast)
Minced garlic (about 1T for a 1lb roast)
Olive oil (about 2T for a 1lb roast)
Salt
Pepper

Other stuff
Wood toothpicks
Charcoal
Hickory wood pieces or chips
Drip pan (I use cheap throwaway aluminum pans)

Steps
1) About an hour before hand, start soaking your wood blocks or chips
2) Start a chimney full of charcoal
3) Coat the roast with a thin layer of olive oil, then season with minced garlic, salt and pepper.
4) Wrap the roast with thick cut bacon, using toothpick pieces to secure the bacon to the roast.
5) Coat the bacon-wrapped roast with a layer of Heinz 57 sauce.
6) When the coals are ready, arrange them in your grill for indirect heat (pile all the coals on one halfof the grill).
7) Fill the drip pan about halfway with water, then place it in the grill on the side without the coals (it goes next to the coals, under the grilling grate).
8) Remove the wood pieces/chips from the water, shake excess water off of them, and put them on the coals.
9) Put the grilling grate in the grill and place the pork roast above the drip pan (not above the coals).
10) Cover the grill and adjust the vents to about half closed. You're trying to maintain an internal grill temperature of around 225F.
11) About half-way through the grilling time, reapply a coating of Heinz 57 sauce and turn the roast over (Keep it over the drip pan, never directly over the coals). If needed, add a few more coals to maintain temperature (I usually add 4-5 new coals at this point, if needed).
12) Roast is done when it reaches an internal temperature of 160F (or 170F if you're paranoid about pork).
13) Remove from the grill and let rest for at least five minutes.
14) Slice and serve, share and enjoy! (Remember to tell people to watch out for the toothpick pieces; or not, if you're feeding people that you don't like)

Five Whys - Getting to the root cause

Anything that happens, happens. Anything that, in happening, causes something else to happen, causes something else to happen. Anything that, in happening, causes itself to happen again, happens again. It doesn't necessarily do it in chronological order, though.
- Douglas Adams
Basic causality, cause and effect, is one of the cornerstones of addressing a problem. When something is broken, it makes sense to find out why it was broken so that you can fix the cause and not just this single instance of the problem.

Tuesday, February 21, 2012

Get started in "The Cloud" with Amazon Web Services (AWS)

A lot of us have heard about the wonders of "the cloud" and all of the ways that it can benefit us and our businesses, but until you take those steps to see how you could apply it to your situation its hard to really understand what it could do for you. I'm not here to sell any particular cloud service, nor am I preaching that "the cloud" will solve all of your problems and make you a better person. I just wanted to document my personal experience with setting up some web services in the cloud, hopefully it might help someone else who is trying out the cloud for the first time. So, here we go.

Monday, February 20, 2012

Beverage Review: Samuel Adams Alpine Spring



Bottle says: A bright citrusy unfiltered lager.
Brewer's description: Brewed especially for the season, this bright citrusy unfiltered lager is both satisfying and refreshing. It’s the perfect transition from winter’s heavier brews to the lighter beers of summer. Borne of our brewers’ many trips to Germany, Alpine Spring features a unique blend of lager attributes: the balanced maltiness and hoppiness of a Helles, the smoothness and slightly higher alcohol of a traditional spring bock, and the unfiltered appearance of a Kellerbier. The beer is brewed with Tettnang Noble hops to add a unique, bright orange-citrusy aroma and flavor.
Website: http://www.samueladams.com/

Alcohol content: 5.5% by vol.

Appearance: Golden and slightly cloudy

His opinion: Light, crisp 'beer' flavor with definite citrus notes and no serious aftertaste. Not a lot to say about this beer other than that it has a very good taste and that it feels very much like the kind of beer that I'd drink on a summer afternoon.

Her opinion: Like it a lot, light and refreshing. Definitely tastes the citrus flavors in it, very pleasant. A beer that you would want to drink on a hot day. Sweetness isn't noticeable while drinking, but the aftertaste leaves a very slight sweetness in your mouth. One of my favorites.

Overall verdict: We both enjoyed this beer a great deal and will be buying it again!

Monday, February 13, 2012

Easy Cheddar Biscuits

You know the ones I am talking about, the ones made famous by that popular restaurant named after a brightly colored crustacean...

Prep time: 5 minutes
Cooking time: 10-12 minutes.
Total time: 15-20 minutes
Makes: 12-15 biscuits

Ingredients (biscuits)
4 cups baking mix (e.g. Bisquick)
1 1/3 cups water
4 oz shredded sharp cheddar cheese

Ingredients (butter topping)
1/2 cup butter, melted
1/8 tsp garlic powder
1/8 tsp onion powder
1/2 tsp dried parsley
1/8 tsp salt
dash of black pepper

Steps
1) Preheat oven to 375F
2) In a medium mixing bowl, combine all biscuit ingredients until mixed through. Dough will be very sticky.
3) Using an ice cream scoop (or other large spoon), evenly space scoops of the biscuit mixture on a lightly greased baking sheet.
4) Bake at 375F for 10-12 minutes or until golden brown.
5) While the biscuits are baking, combine all butter topping ingredients in a small bowl (or in the pan that you melted the butter in).
6) When the biscuits are done, remove from the oven and brush with the butter topping.

Serve warm. Share and enjoy!

These also reheat pretty well in the microwave.

Friday, February 10, 2012

Effective communication: The importance of a common vocabulary

A key aspect of a delivering high quality software is effective communication between team members. In order for communication to be effective the sender and receiver have to be speaking in common, well understood terms. Creating a defined common vocabulary fills the role of definining domain and project specific terms unambiguously.

As software developers, we know the importance of accurately naming things. We give names to source files, libraries, namespaces, classes, variables, etc. Names have intrinsic value to us, they are one of the core elements of how we work our craft. Names to programmers are exact and precise, misspelling a name even by a single character (or case, depending on your language of choice) will generally cause an error. The contract between a programmer and his compiler demands clear, unambiguous communication. Humans, on the other hand, frequently attempt (with varying degrees of success) to communicate using less than exact terms.

In software projects we usually come up with informal names for the distinct pieces of the project. This allows developers to effectively communicate with each other quickly and unambiguously. This system generally works great when the need to communicate about aspects of the software stays within the development group; however, where it breaks down is when the stakeholders outside of the development group need to communicate about the project or the data it produces. Without a well defined, documented project vocabulary they are left to come up with their own terms which may not accurately reflect the actual implementation, or worse yet a term may be used by outside stakeholders that means something different than the meaning to the internal development team. As one can imagine, this causes confusion and needlessly wastes time.

Without well defined meanings for your software components and the data it produces, it becomes extremely difficult for those without specific domain knowledge to communicate about the system. Producing accurate reports from the data becomes nearly impossible when the meaning of a data point is not specifically known. Well documented names and definitions also have a big impact on the maintainability of an application.

Taking the time to come up and document meaningful names for the components, functional areas, and data of a project will help facilitate accurate communication about a project, both inside and outside of the team. It will make your meetings shorter and more productive, will increase the maintainability of your application and data, and will reduce bugs.

Project definitions don't have to be anything fancy, they should just clearly and unambiguously define specific key terms relevant to the project. When someone reports that the "MonthlyWidgetCount" doesn't appear to be correct, there should be no question as to what they are talking about or what the definition of that data point should be. The project dictionary should clearly state that the "MonthlyWidgetCount" is the total number of widgets there were produced between the first date of the month and the last date of the month, inclusive, including all defective widgets that were discarded.

Tuesday, February 7, 2012

Game Review: Triple Town

Title: Triple Town
Developer: Spryfox
Genre: Puzzle
Review Platform: Asus Eee Transformer Pad (Android)

TL;DR Review: Great puzzle game that does a solid job of combining existing mechanics into something fresh and fun.

Friday, February 3, 2012

Leadership

True leadership lies in guiding others to success. In ensuring that everyone is performing at their best, doing the work they pledged to do and doing it well.
-Bill Owens

Welcome to my blog

I've finally decided to take the plunge and set up a blog. I've seen many people that I respect who have started their (successful) blogs with the opinion that no one would be interested in reading what they have to write. They believe that they aren't good writers, that their opinions aren't important or that the subjects that they'd write about are already covered ad nauseam. The excuses are many and varied, but in the end, just excuses.

They say that the hardest part of doing something is just getting started. So here I am, getting started. What will I blog about? It makes the most sense to me to stay true to myself and just be me, so I will blog about the things that interest me or that I enjoy. The title of the blog pretty much sums it up: Games, Code, Food (and Beer!). Though it doesn't quite fit in the title of the blog, I also have some plans for articles about general software development processes.

So, there it is. Welcome to my blog, I hope that you find some of my ramblings interesting.