mike hodnick

Point your browser to www.hodnick.com for Mike's latest content.

Notice:

You are viewing Mike's old, archived site. For new content, navigate to hodnick.com

Latest From Twitter...

The Blog

October 2009 Entries

The slide deck and c# code demos from my talk on Silverlight Audio Synthesis are available for download:

With my release of HodsAudio.net a while back, I completely overlooked the fact that I released a new track with the Robots Stole My Computer compilation.  

I present to you: Defragmentation: FAIL, by Parser.  

As usual, I don’t know how to classify this tune.  Geekcore?

The tune is a canvas of excessively hyper glitches and blips, underscored by some solid beats and soft textures.  Of everything I’ve ever worked on, I put more time into this track than anything else.  There’s just a lot of content. 

Enjoy.

I’ve been seeing many variants these days in high-level architecture diagrams concerning where Silverlight apps are placed.  Often they look something like this:

NotBetter2

Now, this is just a picture.  As they say in football, you can look at lineups and stats all you want, but football isn’t played on paper, it’s played on the field (or as I believe Don Cherry said of hockey, it’s not played on paper – it’s played on television sets [1]).  Similarly, the picture above is just a picture.  Anyone writing a Silverlight app knows that it does not execute on the web server [2].  When you make an async web client call from Silverlight to some service to get data, it goes through the internet over HTTP.  Silverlight apps are written in code, not in an architecture diagram.

However, the above diagram is invalid and should be changed – despite how obvious it is that a dev will not write Silverlight code to run on the web server.

You may say, “but your diagram says ‘UI Tier’ and Silverlight is definitely a part of the UI”.  That may be true – but then why are the Browser and Internet cloud in the diagram at all?  In that case you’re making the Browser just a dummy terminal, and the Internet is… well…  just a bunch of H20 in a gas state.    Still, the diagram above is invalid as soon as the Silverlight app has to do anything useful and get data.

The diagram becomes even more obscene (yes, obscene) when you consider that Silverlight could run in its “sandbox mode” outside of a Browser. Silverlight really is a client app running on the desktop (by way of the Browser, usually).  Would you put a Windows WPF app in the Web Server box?

wpf

A much better diagram would be to put Silverlight where it is actually executing: in the Browser.

Better

Now things actually make sense.  It is clear where the physical and trust boundaries are.  Plus, it’s just the truth.  I’ve extended the diagram to include other code executing in the Browser, such as Javascript. 

I’m not a big architecture guy, but it makes sense to do enough architecture to make sure your project team all agrees on how you will write code.  Misplacing a key part of the architecture could result in confusion for junior developers and an absolute mess among more experienced developers who may not challenge the architecture.  In any case, make sure that Silverlight app is on the Browser side of the picture.

[1] I couldn’t actually find the Don Cherry quote to reference.

[2] I’m sure there are devs out there who don’t know that Silverlight is not executing on the web server, and for that I am truly scared.  I hope you’re reading this, unknowing Silverlight dev!

Earlier this weekend when I posted my Robots Stole My Computer compilation, I realized I didn’t have all of the ID3 tag information set on the mp3’s in that collection.  The ID3 tag data has now been updated to include all the appropriate artist, song title, and album title information.  Feel free to re-download if this is important to you. 

Tags: ,,

For those of you familiar with me and/or my web site, you probably know that I’ve hosted all of my own music that I’ve recorded over the years on kindohm.com.  Things are changing for a few reasons:

  1. Coming out of the closet with artist names
  2. The old app needed a technology overhaul

If you just want to go check out the new site, feel free: http://HodsAudio.net.  But if you want to learn more about my motivation for creating the new site, read on.

So first, what is this “coming out of the closet” business about?  I’ve been semi-secretly maintaining an alternate identity as another band named The Skill Druids.  Right now, you can check out http://www.skilldruids.net and see what that is all about.  In short, I’ve grown tired of maintaining this Skill Druids alternate reality.  What’s sad is that I barely even did much with that alternate reality. 

I had big plans for The Skill Druids: a phony band, phony web site, band bio and back story, blog, viral internet marketing campaign, Twitter account (twitter.com/skilldruids), MySpace page, Facebook page, etc, etc, etc.  I pulled off a few of those things, but it was hard to keep anything current because of my real life. 

The positive side is that I actually succeeded in producing one album, The Drow, by the Skill Druids.  I’ll let skilldruids.net and hodsaudio.net speak for that work, but I do like how it turned out.  I manufactured a few CD’s, complete with artwork, by hand.  I think I have a few left if anybody wants one… 

In any case, the “fake” Skill Druids is no more.  skilldruids.net will die when the domain name expires.

There are a few people out there who I know want to collaborate with me musically. For keeping the Skill Druids a secret and working selfishly on my own music - I am sort of a little kind of sorry.  Sort of.  Going forward I see musical collaboration at this point in my life as being a challenge anyway.  I had big plans to get a lot of people involved with playing instruments on The Drow, but it got to the point where it was going to take a lot more time to accomplish and I was starting to experience some project fatigue.

There is also a mix of electronic and rock music I’ve done under the “Kindohm” moniker in the past.  These days I’m doing quite a bit of electronic composition, and I wasn’t happy with spreading the Kindohm name so thin with everything from grungy rock to 200 BPM breakcore.  It was difficult navigating through all the Kindohm stuff even without introducing the Skill Druids to the mix.

With the launch of HodsAudio.net, I’m also launching a new identity for my electronic endeavors: Parser.  In fact, the first Parser compilation, Robots Stole My Computer, can be viewed here: http://hodsaudio.net/Album/Details/12.  It’s a small set of the best electronic stuff I’ve put out to date.  I’m not planning on making a physical CD.

So I have Kindohm, The Skill Druids, and Parser.  Is this getting more confusing?  Hopefully not. 

  • Kindohm – all my old stuff
  • The Skill Druids – any new rock music I do from this day forward
  • Parser – any new electronic music I do from this day forward

Next, what about this “technology overhaul”?  My old music library app couldn’t support three “artists”.  It would have needed some big feature upgrades to be able to re-categorize all of the mp3’s on my site.  The old app was also created with some database and programming conventions I wouldn’t use now for this type of an app (ASP.NET web forms and GUIDS for unique identifiers are two examples). 

I decided to just re-write the app and migrate data from old database tables to the new ones.  I wrote the app in small chunks of time over a period of two weeks.  It uses ASP.NET MVC 1.0, jQuery, and has a brand new database table schema.  I thought it was funny when Jake told me earlier today, “welcome to 2004 with MVC on the web”.  I had no comeback.

I’m actually using LINQ-to-SQL for data access – and before any l337 programming geeks laugh about that:

  1. It’s a very simple database schema (Artist –> Album –> Song)
  2. It’s a small amount of data (the Song table is a few hundred rows)
  3. If you really, honestly think the site is slow then too bad for you
  4. I have a day job, 4-yr old, and two dozen other hobbies calling my name and wanted to get this done as quickly as possible
  5. We’re not talking about an enterprise app here, nor a site that gets that much traffic.

I’m utilizing Yahoo’s Media Player to allow music playback directly on the site.  Yahoo’s player has been good to me.  I considered some Silverlight-based players but they just aren’t as simple and dynamic as Yahoo’s. 

I also considered implementing my music library 100% in Silverlight as a “RIA app”.  What a bad idea that would have been.  I wouldn’t want to put that kind of pain on users by forcing them to download a plugin when all I want them to do is quickly hear my music.  There are also users out there (some good friends of mine, as a matter of fact) with older operating systems that aren’t supported under Silverlight yet.  Most of all, developing a RIA app just would have taken more time.

So, that’s the story.  In closing, I want to address an issue that I know most of you are hugely concerned about.  Simply stated: Get On Your Knees and Bark Like a Dog is included in the music library:

http://hodsaudio.net/Song/Details/204

Enjoy.