July 3, 2009
Just recently watched Greg Young’s presentation on Command Query Separation I have been lurking on the Domain Driven Design Yahoo group for a bit, and had seen back and forths about CQS but hadn’t fully followed the concept until seeing this presentation. It was quite eye opening.
The presentation is here, I would highly recommend watching it.
Leave a Comment » |
Technology, ddd, dotNet | Tagged: dotNet, enterprise architecture, ddd |
Permalink
Posted by davidphenry
May 30, 2009
My company uses a version of the CheckPoint SSL VPN for all its remoting needs. Basically, you open Internet Explorer and browse to the VPN address. The first time this loads up, an ActiveX is installed that checks for virus scanning software, and then you log in. Once logged in, it installs a Service which does some virtual networking through SSL.
Unfortunately, this seems to barely work with Vista and I haven’t gotten it to work with Windows 7. Instead of the hours it most likely would have taken to try to get it working on Win7, I decided to take an alternate approach, and use the XP mode to connect. After enabling virtualization under the OS Security in my BIOS, XP mode was installed and ready to go. I browsed to the SSL VPN address, installed it, and was able to remote into my work desktop. Hooray.
Next, I wanted to use the more seamless integration of XP mode, so I created a folder in the Start Menu for my virtual user, and created a IE Shortcut. Once XP hibernated, I was able to launch the XP IE directly from Win7 and VPN in.
The current bug-a-boo is that the VPN connectivity is local from my virtual XP machine, and I want to develop on my Win7 desktop while connecting to TFS at work. I’m thinking I’m going to install a TFS proxy on the XP virtual machine, and connect to that from my home machines. That way I can kick up the SSL VPN seamlessly from Win7, and then route my development activity through the XP Machine using the TFS Proxy. Fun, fun.
Leave a Comment » |
Uncategorized | Tagged: TFS, Windows7 |
Permalink
Posted by davidphenry
April 28, 2009
Adding some auditing events to nHibernate through its new event system. A particular requirement of the auditing implementation needs the component types be unwrapped and audited along with the parent object. As a first entry into the nHibernate metadata, I found that calling GetClassMetaData() for a component type would return a null reference, since the component is not an entity.
Instead, if you use the Property’s IType for the component, you can cast it down to a NHibernate.Type.ComponentType. This will then allow you to access the Propery names and values for a component object.
Fun stuff.
Leave a Comment » |
Technology, dotNet, nHibernate | Tagged: dotNet, nHiberante |
Permalink
Posted by davidphenry
March 27, 2009
Just a quick post about something neat discovered with MSBuild.
I have a task that is building an ItemGroup which contains a whole bunch of paths that point to different kinds of projects to build. These files contain dotNet sln and VB6 vbproj files. I want to build the sln files with MSBuild and use a MSBuild extension task that wraps the VB6 IDe to build the vbproj files. To do this, I set a condition on each build task that checks the extension like so:
<MSBuild Condition=”@(FilesToBuild->’FilePattern%(Extension)’) = ‘FilePattern.sln’” …/>
<VB6 Condition=”@(FilesToBuild->’FilePattern%(Extension)’) = ‘FilePattern.vbproj’” …/>
And Voila! When the build script runs, VB6 projects are built using the VB6 task, and dotNet projects are built using the MSBuild task.
Leave a Comment » |
Uncategorized | Tagged: dotNet, msbuild |
Permalink
Posted by davidphenry
March 25, 2009
Been working with CruiseControl.Net to connect to our CMSynergy source control for some continous integration goodness. While configuring CCNet, I’ve had the oppurtunity to spend some more time with MSBuild - which always makes for some interesting times.
I plan on posting more info once this round is over, but I wanted to make a note about custom tasks from MSBuild. The setup for this, is that I am using a custom task to parse some input files based on how the release is being defined – and then output the files that should be included in the final install package. Without going too much further into detail, the intial condition was that if this is a .0 release, all files are returned.
The task xml looked like:
<CustomTask SourceFiles=”@(SourceFiles)” Release=”$(ReleaseCondition)”>
<OutPut TaskParameter=”PublishFiles” ItemName=”OutFiles”/>
</CustomTask>
The interesting bit to note here, was that just setting the output property to the input property (PublishFiles = SourceFiles) – ended up with the MetaData RecursiveDir on PublishFiles being reset once the output was set to a new variable OutFiles. To get around this, I ended up setting a new custom metadata on the PublishFiles property that copies the RecursiveDir property from SourceFiles.
Leave a Comment » |
TFS, ccnet, dotNet, msbuild | Tagged: ccnet, dotNet, msbuild, TFS |
Permalink
Posted by davidphenry
January 20, 2009
In a recent project, the application utilized a custom Data Access Layer that provided an API for managing connectivity to the database. The API had an abstract definition that business logic would call into in order to define the explicit Unit of Work boundaries that were being performed. This forced the business logic to create an abstract transaction object to begin, create or rollback the unit of work. The concrete implementation had connectors for both MSSQL and Oracle that manipulated the respective ADO.Net libraries.
The Transaction class for ADO.Net has a property for a connection reference. When an abstract transaction was started, the concrete implemalentation would create a new OracleConnection or SQLConnection and then grab a transaction from that. Once, the transaction had ended the connection property would be checked if still available, and if it was – it was closed.
At a client site, we started noticing connection leak messages were appearing in the application. When checking the open sessions for the user, it was found that the connections would quickly reach the default maximum of 100. I managed to narrow it down to the fact that the concrete implementation of the transactions was the cause. Upon further investigation, I found that when an ADO.Net transaction is committed, it will lose its reference to the connection, and since the connection was not being garbage collected fast enough within this tight loop, the pool limit would be hit. Once this was resolved by holding an explicit reference to the connection, the open connections went down drammatically and all was right in the world.
Leave a Comment » |
Technology, dotNet | Tagged: dotNet |
Permalink
Posted by davidphenry
October 15, 2008
In my last post, I was unable to get QAM working with Vista Media Center. The reason seemed to be due to the fact that Vista Media Center did not support QAM out of the box. Although Hauppauge does have a plug in for media center that has been able to provide QAM support to some people - this was not working for me. So instead of trying to figure out what the problem was, I went for the Vista Media Center TV Pack update.
Once the update was installed and I rebooted, I ran through the TV Signal setup. Everything seemed to be going good – as in my system was corrupted – but Media Center had detected my tuner as analog. This would just not do.
I have a Hauppauge HVR-1250 hybrid analog/digital tuner, and noticed on forums that the updated Media Center will only detect it as analog. I really hoped that this wasn’t still true, so I decided to keep digging around and was rewarded. Apparently there are some registry keys that can be set to custom tune the TV Pack. I added the registry key for AllowQAM_PowerToy as mentioned in this post, and after a reboot was able to manually configure a digital tuner for Cablevision. Note: The forum post contains registry keys for Huappauge tuners that may cause different results depending on your configuration, so make sure you have backed up your system before changing your registry.
One my tuner was configured, Media Center ran through a channel scan, which seemed to go on forever, and I was finally able to pull the digital channels for the basic networks. Hooray. So my now my Media Center PVR is temporarily complete, until I can think of something more to add.
Leave a Comment » |
Media Center | Tagged: Media Center, QAM, TV Pack, vista |
Permalink
Posted by davidphenry
October 1, 2008
This fall season for network television has brought about an interesting phenomenon: Monday night seems to be overloaded with some of the best shows! Now, this isn’t really a problem for pvr geeks – more of a challenge waiting to be overcome.
My cable DVR that I am forced to rent due to cablecard “issues” (I’m slightly bitter here) just can not handle the notion of wanting to record more than two shows at a time, what to do?
I thought about just using the awesome streaming service Hulu, but I really wanted a seamless viewing experience in the living room – and I want to watch it on my flat panel TV. So… I decided that a fun thing to do would be to put my Vista Ultimate box to work, and dive into Media Center. After a playing around with it, I am pleasantly suprised – and am in almost disbelief that this is an Out Of The Box Microsoft solution.
Here was my trip:
- Purchased a Tuner: I was thinking about going with the HDHomeRun (the network attached dual tuner from SiliconDust), but I decided to start out slow, and build out my Media PC a brick at a time. Starting out slow for me, meant going with the Hauppauge1250 PCIe card. It is a digital/analog hybrid tuner that came with a non standard Media Center remote- and I figured I would add more as I need them. (Currently only have 3 shows that I want to record during the same time slot – as this grows, I’ll add more tuners. Note: Media center only supports 2 of each type of tuner. IE: 2 analog or 2 digital)
- A non Media Center Remote in Media Center: I had read on some forums, that using the Hauppauge remote would not work within Media Center, and at first it seemed that was the case. After making sure the IR received was fully inserted into the tuner card, I installed the IR Remote utility that comes with the Hauppauge WinTV software. Once installed, and after a reboot, I was able to hit the power button on the remote, and start Media Center! All the buttons were working, and it even had a home button which mapped to the Media Center Green Button.
- Tried to get QAM going, got OTA instead: So I have Cablevision/Optimum where I am located and thought I could pull QAM through. The first snag is that QAM is not supported in Vista Media Center, which sucks, but it is coming with the currenlty-only-oem-release TV Pack. Luckily Hauppauge does have a Media Center plugin for QAM support. I have not been able to get this working. I’m thinking that it may be due to the signal strength of the cable input – but as an interesting side effect, I managed to get over the air ATSC signal by accidently touching the CAT9 cable to my metal desk. Woohoo, a poor mans HD atenna…
- Tested recording and playback: With my accidental OTA signal, I decided to schedule a recording of a show- while having Media Center closed, and Vista in sleep mode. When I woke up the next morning to check the recordings, I was pleasantly surprised to see that the HD recording was flawless, and that the recording service had awoken the PC to do its thing.
- Purchased a DVI to HDMI cable: Now that the recording test passed, I decided to head over to MonoPrice and pick up a cheap/awesome DVI to HDMI cable. For those who don’t know, MonoPrice is carries some of the best equipment with the best prices bar none – as long as you arn’t looking for instant satisification. So, after a couple of days of anxiously waiting, my cable arrived and I was finally able to connect my Media Center PC to my Panasonic Plasma TV. After changing the resolution to 1920X1280 – I was watching my HD recording and very, very happy.
The final verdict, is that I have had the cable-provided-DVR-solution-blindfold removed from my eyes, and am now able to see what competition can give the consumer – a compelling user experience, that just works (seems like a good slogan, maybe I’ll trade mark it).
1 Comment |
Media Center | Tagged: Media Center, PVR, QAM, TV Pack, vista |
Permalink
Posted by davidphenry
September 10, 2008
Today marked the officially move of our TFS 2005 server to TFS 2008, including SP1. This time the results were more favorable, as TFS is actually running, and people are checking in and out. (The previous attempt I ran into a time crunch, and couldn’t afford the down time for the upgrade and -more importantly- the testing).
Our new TFS server is running Windows Server 2008 – which looks awesome – and SQL Server 2008 – which is great because TFS2008 couldn’t run against it before. We also have a build machine running Windows Server 2003.
The upgrade was pretty painless thanks to a few forum pointers, this post, and having run through the drill of trying to upgrade our TFS databases on a test domain.
Our process was as follows:
- Disconnect the TFS 2005 server from the network
- Install SQL Server 2008, including Reporting Services on top of new Windows Server 2008.
- Run the TFS 2008 install using the SP1 Slipstream trick documented in the updated install guide and Etienne’s post. Note: I had to run the install from the ATIntegerated folder instead of rebuilding the ISO, as for some reason running it from the updated ISO would run the previous install.
- Chose to update my TFS 2005 databases.
- Start the install again after an error from Sharepoint, and installing the Sharppoint Web Services.
- Got past an error where Reporting Services couldn’t initialize. Had to create a new database in Report Services configuration that connecting with the TFSSetup users’ creds.
- Installed!
- Uninstalled TFS 2005 Build from the Build Machine
- Installed TFS 2008 Build on to the Build Machine
- Checked out, checked in, and built successfully.
The install went pretty smoothly, and the developers are able to do their thing just as before. Sign of a good install.
Leave a Comment » |
TFS, Uncategorized | Tagged: TFS |
Permalink
Posted by davidphenry
September 9, 2008
The entity framework, Microsoft’s current effort to bring object-relation mapping to the non open source world, is currently in version 1 release. However, one of the short comings is the lack of POCO support.
POCO, being Plain Old CLR Object, is the thought that your domain objects should not have any knowledge of persitence or infrastructure. Your domain objects, should just be worried about what they know best: interaction with your domain logic. Make sense, right? Unfortunately the Entity Framework does require some infrasture logic within your domain logic by requiring inheritance from some of the base classes.
Anyway, this limitation that is planned to be included in later releases, has some silver lining as a POCO adapter has been created for the Entity Framework, which can be found here.
Leave a Comment » |
dotNet | Tagged: dotNet, Entity Framework, POCO |
Permalink
Posted by davidphenry