This is the second post in a series of posts about the IPTV project.

In the previous post I introduced the IPTV project that we built at Nez Perce County. Today I’m going to talk about the Video Signal Path. Basically, how we route the video signals to the individual television sets that are scattered throughout the jail.

We begin with four DISH Network receivers located in a climate controlled server room environment. The output from each DISH Network satellite receiver is taken to a port on the Osprey-450e Video Capture Device. The ports on the back of the Osprey accommodate standard RCA video cables. The audio RCA cables are attached to a squid on the Osprey.

The Osprey-450e is located on a Windows XP box that we built. This is where our server-side application (written in C#) resides as well as an installation of open source VideoLAN (VLC) software package. Our C# server application utilizes VLC processes to perform transcoding and streaming of the DISH network signals that are coming in off the Osrprey-450e. What we’re doing here is taking the signals that the Osprey is providing and we’re transcoding them into MPEG-4 format and then multicasting them via UDP over the internal network.

The streams then travel over CAT-6 cable throughout the jail facility. The streams are broadcast as multicast UDP, so any device that is listening on this internal network can receive the signal. The Tornado Set Top Boxes receive these streams via the plugged in network cable and transmit the signal to the television sets via HDMI cables. By issuing commands to the Set Top Boxes, we can instruct the STB on which stream to display to the television.

In the next post we’ll cover how we control the DISH receivers remotely without the use of hand held remote controls.

It’s that time again: time to move on. I’m officially looking for a new job.

To get an idea of what I have done and what I can do, check out my resume or my CV on Careers.StackOverflow.com. Also, browse this blog :-)

Why am I looking for work?

For the past five years I have had the privilege of working for Randy Buttenhoff at Nez Perce County. It’s been one of the best jobs I’ve ever had, and the best job I’ve had as a software developer. I work for a great boss who gives me all the tools I need to be successful. At various points in time our team has passed most of The Joel Test. I’ve been able to work with great coworkers who are really good human beings. I’ve also been given the ability to continue to grow as a software developer: to attend conferences, read blogs, experiment with new technologies and tools and keep up with the rapidly changing pace of this profession. I have enjoyed growing as a software developer.

But life has a way of throwing surprising events at us. Sometimes those events are laced with sorrow; sometimes they are good; and sometimes, if we’re lucky, they’re wonderful. Recently, I became engaged to the most amazing woman I’ve ever met. She has plans for her immediate future and I support those plans, and so that means I will be moving to her. Hey, I’m a software developer, or as I like to say, a professional problem solver – I can write software anywhere in the world. It’s a scary thing to pick up your life and move across the country, but for the right reasons, and the right people, it can be worth it. It can even be easy.

I am specifically looking for work in or near the Kingsport, Tennessee area. I will be moving to Gate City, Virginia, just across the border from Kingsport, and Kingsport seems like the most likely place to find my kind of work. I am, however, also very open to the idea of working remotely or in a consultation capacity, which is something I’ve done in the past.

What kind of work am I looking for?

My preference is work with the .NET platform (C# variety). It is where I have spent the most time in the last decade and where I am comfortable. I really like a lot of the tools and technologies and feel like I can solve problems pretty quick with my currently favored technology stack (C#.NET, SQL Server, NHibernate, FluentNhibernate, NUnit, StructureMap, etc.). That is not to say that I am opposed to new tools or technologies – far from it. If an employer thought I would be a good fit for a position as a Ruby on Rails developer, by all means, talk to me.

Most of my current work takes place in WinForms development, but I also enjoy ASP.NET development and have done some very basic WPF work as well. I especially like what I am seeing out of the ASP.NET MVC camp and the FubuMVC stuff from Jeremy Miller, Chad Meyers, et. al.

I would like to work somewhere where I have the same freedoms that I have now to continue to learn and grow as a software developer. The landscape of computer programming changes so rapidly; we owe it to our profession and our customers to stay up-to-date, continue to learn new technologies and tools and grow as problem solvers. I would like to work somewhere much like where I work now: where I am given the tools and hardware to be successful and given the time and support to continue to grow. It would be especially nice to work somewhere where there was a budget for developers to attend conference such as Agile Austin and the PDC. I attended the first Agile Open Spaces conference in Austin a few years ago and met many of the people in the C#.NET world that I admire. I also learned a lot and grew quite a bit from that conference.

At any rate, I’m on the market and openly looking for a new job. I would like to have a new job lined up by August at the latest. My current employer supports my decision and knows the reason for my move, so references from him are available on request. If you know of anyone near Kingsport, TN who needs a talented .NET developer, send them my way, eh?

-Chris

I thought this was really cool, especially considering I want to dig more deeply into the ASP.NET MVC world: ASP.NET MVC 2 Sample Application & Tutorial.


Index:

IPTV #1: Introduction
IPTV #2: Video Signal Path
IPTV #3: DISH Command Signal Path

One of the cool things about being a software developer is that occasionally you get to work on some really neat projects.

Last year, the taxpayers of Nez Perce County, my employer, authorized the construction of a new jail facility. As part of the construction of this facility we were tasked with implementing an IPTV system for the inmates (I’m not much for giving prisoners access to television, but this is a legal requirement).

There are IPTV solutions on the market, but our research found them to be really expensive. As a county government we’re funded by taxpayers, of which I am one. So in a way, I work for myself, as do many of our employees who hold residence in Nez Perce County. Taxpayers like to keep costs down, so we looked at building our own IPTV solution.

The project was really fun and one of the most interesting projects I’ve worked on as a professional developer. Mainly because of the disparate technologies involved and the process of bringing all of these different pieces together into a cohesive and working solution. Several people in our department contributed to the success of the project; we did a ton of research into hardware solutions and worked hard to find the right mix of hardware and software so that we could achieve our goals and yet still succeed on a relatively small budget. The result of our effort was a combination of hardware and software that allowed us to multicast DISH Network satellite streams over an isolated internal network and to remotely control the television sets with a client-server software package written entirely from scratch in C#.Net.

With the system we created, the control of the televisions (channel changing, volume, power) was taken out of the inmates hands. Thus, the inmates do not have access to small, plastic remote controls that can be easily broken (and cost money to replace) and used as weapons. Instead, our jailers control the televisions remotely through a Windows application:

IPTV Main Client Screen

To build this system we had to utilize a lot of different technologies:

Hardware:

Software

  • C#.Net Client and Server applications
  • NHibernate
  • SQL Server 2005
  • Fluent NHibernate
  • WCF Duplex Channels
  • VideoLAN (Open Source Media Player)

In future posts I’ll detail how we pulled all this together.

Very cool: http://should.codeplex.com/