Tuesday, November 29, 2011

I was Interviewed

Not sure if I posted my interview done by Rustici:

http://scorm.com/blog/2011/04/interview-with-dan-pupek-chief-systems-architect-at-advanced-systems-technology/

Friday, May 27, 2011

Good article on Mulit-Thread Applications in C#

I was very pleased to find this. Been using it as a reference:

http://www.albahari.com/threading/

Thursday, May 26, 2011

Make a 5 Second Video from Image using FFMPEG

Been playing with FFMpeg and Mencoder to create videos from a list of Images and an audio file.
Here is the command I used:


ffmpeg -loop_input -vframes 50 -f image2 -i foo-1.png -r 10  foo1.avi
ffmpeg -loop_input -vframes 50 -f image2 -i foo-2.png -r 10  foo2.avi
ffmpeg -loop_input -vframes 25 -f image2 -i foo-3.png -r 10  foo3.avi
ffmpeg -loop_input -vframes 25 -f image2 -i foo-4.png -r 10  foo4.avi
mencoder -audiofile foo.wav  -oac copy -ovc copy -o output.avi foo1.avi foo2.avi foo3.avi foo4.avi

Friday, April 29, 2011

Making the leap to QueryOver

So, if you are using the ActiveRecord/NHibernate stack I highly recommend switching to query over. The syntax is cleaner and it's type-safe.

Here is an example of a criterion based query:


Here is an example of the same query in QueryOver:



Unlike the Linq language for Nhibernate QueryOver is just a translation layer for Criterion.

Tuesday, April 26, 2011

Silverlight: Getting your Listbox Items to stretch

I was having some trouble getting my ListBox items to stretch across the entire ListBox. I did not want to get into the game of dropping into code to fix layout issues. Here is what I had to do.

This first attempt did not work:


I had assumed that the HorizontalContentAlignment attribute would do the trick. For most controls it does. I was wrong. Here is what I finally had to do:



Notice the addition of the container style. As far as I can tell this is a bug. I found the original answer here.

Friday, December 17, 2010

Nhibernate/ActiveRecord Lazy Loading Fails when Ignore is Set

Recently our [BelongsTo] relationships in ActiveRecord with the Lazy = FetchWhen.OnInvoke have stopped lazy loading. This caused some massive performance problems. Suddenly entities that were not supposed to be loading unless invoked were loading all of the time.  I've been struggling with this for a couple days and just now found the answer.

Here is the property definition in question:



Normally, when retrieving an instance of "SomeEntity" the HomePage property would not load until it was accessed by some code. Two days ago, using the Nhibernate Profiler, I noticed that HomePage was being loaded...all of the time.

I tried so many possible solutions and searched for a possible answer until I came across this article.

It turns out that when you set NotFoundBehaviour=NotFoundBehaviour.Ignore on a BelongsTo relationship it circumvents the lazy loading and loads the entity anyway. I also found a bug that has been posted for this as well. Although the link rarely works well.

Wednesday, October 27, 2010

Death March Values...revisited

Some time ago, I was reading a great page on the C2 Project Wiki about Death March Values. This is in no way implying that we have this problem here...but these are habits we should not fall into.

The basic concept is that some organizations have a subculture that continues to employ self-destructive values over and over again. Here are a few indicators that you may be in one of these organizations:
  •  Business Value Desicion Makers (BVDMs) want the "magic" of software without considering the work involved, "ProductWithoutProcess".
  •  BVDMs reward the guy who stayed up all night fixing a bug while the guy/gal who's code always works the first time gets little recognition. The Hero Programmer
  • Young Hotshot Programmers fall in love with a product "Project Love Affair", take little time to consider the broader picture and fail to employ the Practices.
    In most organizations you can insulate against the Death March Values by not accepting the status quo. In some organizations it's so embedded in the culture that you may never be able to fight the tide.

    Here are several things your development team can do to mitigate the Death March Values:
    • Commit to only as much work as you can do
      This is tough because most teams don't know how much work they can get done. Always track the amount of work you have done in the past so you can properly estimate in the future.
    • Set a schedule and stick to it
      Sticking to a schedule is tough, but if you only commit to as much work as you can perform then you won't have a problem. The two things that will affect your schedule the most are distracting task and scope creep.
    • Value working software over scope creep
      Inevitably, near the end of a release everyone wants to pile on "just one more feature." In these moments you must remind everyone that it's more important to get the bulk of the new features out to production rather than "creep" in new ones.
    • Accept success and failure as a team
      Simple...enough said ;-)
     See also: Death March Project