Brains-On-A-Stick Progress Report

Just wanted to post a quick update on my progress.

At this point I have the following working, or mostly working:

  1. Subscribe to a podcast
  2. Download the episodes to the hard drive
  3. Add devices, specifying their root directory for podcasts
  4. Walk the directories under the root and show a list of all files and their paths
  5. Persist library and device data to the hard drive using JSON serialization
  6. Query objects using Linq to Objects

Here's what's NOT finished:

  1. Synchronize podcasts to the device
  2. Connect to a device that doesn't appear as a drive

That last one is a big sticking point right now. I have two devices from Creative and one from Transcend. The Transcend shows up as a drive. That's nice. The Creative devices show up as Windows Media Devices. That's not nice.

To communicate with such devices (mp3 players, cameras, etc.) you have to use the Windows Media Device Manager APIs. Unfortunately they are NOT implemented in .Net. That means you got some pInvoking to do.

This is the bit I'm working on now. I've never worked with this particular API before (I didn't know there was such a thing before yesterday...), so it may take a bit of fiddling to get moving forward again.

It is a pain in the posterior, but once I get a handle on the API, I'll be back in business.

In the meantime here's a screenshot of the UI. Not pretty, but not entirely WinForms like. Not all super-de-duper WPFy, but functional.

image

Eventually I'll try to make it look a bit more like that famous fruit inspired music site...

Posted on 5/17/2008 11:32:00 PM by jeffa

Permalink | Comments (4) | Post RSSRSS comment feed |

Categories: .Net

Tags: , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

New Project, New BlogProcessor?

This weekend I've begun a new project to both scratch an itch I have and to learn some of the new bits of the 3.5 .Net Framework. More on that in a bit.

As a side note, this is my first post from Microsoft's Windows Live Writer. W00t! First post!

I think Live Writer is a step in the write direction (ba-dump-bump). It is a very small program (less than 3 MB) and it doesn't do very much. But what it does do, it does very well. It is a word processor for blogs. It is also free. That is free-as-in-beer for the FOSS crowd, and free-as-in-you-don't-pay-money-for-it for everyone else.

I could use Word 2007 to write my blog entries. I could also buy an RV to cruise around town and pick up my dry cleaning. The point is that 99.93% of the features of Word 2007 are unnecessary for writing this blog post. I don't plan to mail-merge and print envelopes nor do I need fancy macros. Nope, I just want to write, insert links and the occasional picture and have spell check watch my back for crap like spelling occasional as "occassional " or "ocassional " (not that that would ever happen to me).

The web is all around us and that is a good thing, but for some things HTML makes for a poor interface even with AJAX, Achilles, Odysseus or any of the other warriors of the Trojan war. For some things you just need a good old fashioned application running on your computer. The trick is for that application to interact with the mighty Internet and its hordes of servers.

Live Writer is a very good example of doing this and doing it well (he said confidently having never actually tried that big, beautiful "Publish" button).

Enough of that for now, on to the Project. Hmm. I guess I need to give it a secret Code Name to use to speak about it until I decide to release it to the world with a boring name that doesn't mean much (Revolution becomes Wii?). How about this: Brains-On-A-Stick. Since it's a temporary working name, who cares, right? No chance that name could stick. With brains. Man, that was bad.

Here's the annoying-problem-I-want-to-solve: my son, daughter and I all have MP3 players (neither iPods nor Zunes) and we all like podcasts. Keeping up with syncing all those devices with podcasts is a pain in the 'cast. Oh, and I want to try out all the neat new stuff in the 3.5 Framework...

My first thought was to use one of the various podcast feed-readers to pull down the shows and write an app to sync them up. After reading about Microsoft's new MESH and its RSS/Atom use, I decided that it was time to bone up on using .Net to work with syndication feeds. I found several good blogs that talked about syndication and started hacking around with it.

I now have  a rudimentary feed reader that uses the following new bits:

1) WPF (Windows Presentation Foundation). Uses XAML (Extensible Application Markup Language) to describe the presentation. This XML file is parsed and the UI is built on the fly both at design time and runtime. We've all talked about separating presentation from behavior for a long time, and this is one swell way to do it. Why do I find it exciting? You can FINALLY rely on DirectX and your 3D processing video card to handle the graphics (good-bye, GDI, well, mostly). This means your windows (and elements inside the windows) can be 3D and not 2D, even though they look 2D most of the time. This means you can spin a window around and stack them up. More about WPF and XAML in future posts.

2) Expression Blend. If you have the ability to separate presentation from code, then why not make a tool for designers so they can make really cool looking graphics? I'm not a designer, so I'm not going for cool looks yet, but as I get things working, I'll spend more time tinkering with the looks.

3) JSON. JavaScript Object Notation. I'm using this to serialize objects to disk. XML would work just as well, but JSON is all hip and trendy. All the cool kids are using it.

4) LINQ. Language Integrated Query. I'm using this to query the objects in memory. Much more on this later.

5) Syndication. RSS and Atom feeds are how you get your podcasts. The System.ServiceModel.Syndication namespace objects help you work with them.

I'll write about all the little bits as I work through the project.

Posted on 4/27/2008 9:50:00 PM by jeffa

Permalink | Comments (12) | Post RSSRSS comment feed |

Categories: .Net

Tags: , , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET and Godaddy, part 3

Sweet! Got everything working.

As I mentioned in the last post, I dropped back to square one and rebuilt the app one piece at a time to see where the problem was.

I got the login and register pages working first, then went to the data entry page.

Once I built my Linq objects, but before I referenced them, I uploaded everything one more time. I did a diff on the old and new web.config files to see what had changed. There were only two changes: 1) added new connection string and 2) added assembly info for Linq.

A quick check that everything worked well, then I added the code-behind to use the Linq objects to write the data to the database. 

Once everything was deployed, I hit the page and... 500 Internal Server Error.

This time I thought about the new App_Code directory where the Linq objects live. Since I did a website instead of a webapp, everything has to compile on the fly when it runs the first time... hmm. Think maybe that directory needs write permissions?

Added write permissions and, hey presto! Now the Linq data entry page works!

It was literally five more minutes to get the data view page working using a Grid View that uses a Linq object as its source.

One thing I did differently this time was change the name of the Linq datasource to something other than the default.

Now I move on to making things pretty. I'll also write up a more detailed set of instructions and post them. 

 

Posted on 4/22/2008 10:48:00 AM by jeffa

Permalink | Comments (20) | Post RSSRSS comment feed |

Categories: .Net

Tags: , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5