9/5/2008 5:04:00 PM

Pendulum

I just discovered a band named Pendulum. Makes me ask the question "where was I?" again. As if that question isn't getting old....

Update: I do know this band. Just heard a song by them I once owned on vinyl. Not the original, but a remix of it. The electronic music world is so huge and cantankerous. 

 

Kick it! | del.icio.us | Comments (0) | Permalink

9/4/2008 4:17:00 PM

Twitter Censor?

There's no mood to be inferred via this post but I noticed something today. I submitted a tweet via twitter. It contained a bad word (not that bad really, but whatever). The tweet did not show up in my "status" area in the sidebar. Just being curious I changed it and omitted the bad word. Poof! It appeared. Am I crazy or does Twitter censor posts or use profanity filtering when it decides what to put or not put in your public status sidebar. Me curious.

Kick it! | del.icio.us | Comments (0) | Permalink

8/26/2008 10:52:00 PM

Brian Hitney's Enterprise Guild MVC Presentation

Tonight I attended the local Enterprise Guild's ASP.NET MVC presentation by Brian Hitney. I don't know if I've ever given a review of a colleague's presentation (so this might suck) but I feel one's in order.  Brian's doing his best in this area for Microsoft to spread this and other information and I want to take a moment to recognize, suggest some critique of, and applaud his efforts.

Brian's an excellent speaker and a major contributor to the .NET and Microsoft community in the southeast. He was patient, careful, and did his best to keep things on track without pandering to or disregarding the audience when they requested more information be given to specific areas of interest. He has a way with any collection of subject matter; he adds humor to the presentation, keeps the pace moving along, and overall seems to feel really cozy in front of a crowd. A truly good presenter knows the value in saying something akin to "I don't know, dude, that's an interesting point you bring up," and Brian's not afraid to do just this thing. I think that may be his biggest strength as a developer evangelist - he doesn't preach and he isn't a know-it-all.

I got the impression that most of the people in the audience tonight benefitted from the presentation, which covered some fundamental aspects of the MVC "idea," rather than focus on some of the lower-level points concerning the actual execution of a coding experience using the ASP.NET MVC framework. So when Brian made it clear that the presentation would be covering the "why's" and not the "how's," I have to admit my colleague and I had a mutual eye-roll. MVC isn't an easy concept to grasp, I know. It took me about 3 years to really understand how it's supposed to work. Even now I still struggle with some of the innerworkings of the approach. So that portion of my review is, I admit, somewhat selfish in nature. I would've like to have seen more low-level discussions of the technicalities. 

During the initial chat, Brian brought up Inversion of Control and Dependency Injection. I think a better approach for Brian when dealing with these more complex and abstract concepts would've been to defer to the audience's willfullness to learn more on them; maybe say something about them being important ideas that are "outside the scope" of the presentation (because, well, they are outside the scope of a presentation like this). Instead, Brian gave a few examples of IoC and/or DI. One in particular was to use the event model - a button-click event handler, to be precise - as an example of IoC. I don't claim to be a guru at IoC, but I am positive that I can't think of how IoC could be represented via such an example. I really can't, and I tried. My co-worker agreed with me on this matter, too, so I know I'm not nuts (or that I have a partner in my misunderstanding of something). That's my one major "you didn't capitalize the 'N' and the 'E' and the 'T' when you put '.NET' on your resume'"-type complaint with Brian's presentation. My guess is that Brian understands all of these ideas quite well and could discuss them rather fluently under the appropriate context. In that, when he put them on the slide he had excellent intentions that completely escaped him when he was in front of a crowd of geeks. It happens. 

There were a few technical items of note during the presentation. The first was when Brian created an ASP.NET MVC project in VS2K8. When the "do you want to create a test project" screen was presented and the MS Test the only option in the "what type of test project do you want to create" drop-down, Brian said "If you install NUnit you'll see it in here too." I have both VS2K8 installed and NUnit, and I don't see an NUnit option. So I conclude that there's some additional schnizzle that I need to download and install to tie NUnit to VS2K8, that I haven't yet read that particular blog post (note no link, feel free to hook me up in the comments), or that his statement was incorrect. Brian? Bueller? Anyone? What is it? How do I get NUnit to appear in that list?

Later occurred what I think was the only major and potentially heinous blunder of the presentation. A question was raised about the variance between ASP.NET MVC's behavior on IIS6 and IIS7. It was late in the presentation when an audience member asked about the differences between the two server versions. The meeting was in a new room, started late, and had a huge crowd, so I'm sure Brian was exhausted and ready to call it quits. So, when this question was asked, Brian's answer was simply to state that there was no difference in the way the routes had to be set up and that it'd all work just fine under either version. I'd been bitten by this variance myself (and I have a complete lack of being able to keep my trap shut) so I raised my hand and commented that this wasn't the case. For the record, I said this not to call Brian out and make him look like a dimwit but rather to make sure the correct information was given to the audience. I mean, that's why we're all there, and it is called a community group so I figure that's the best thing one could do in the situation. I specifically mentioned the approach taken in the Kigg framework, and how it seemed to accomplish this for both versions pretty elegantly. The crowd seemed generally cool with this and we moved on, Brian relatively unscathed. No harm, no foul, but I urge (read: plead with) Brian and the rest of the evangelists - don't forget that many of us in the community hinge on most of the things you say. If you tell me it works, I think it works, and when it doesn't work I think it's something I did. When I find out it's something you guys did and that I've wasted many hours trying to make something work that just isn't supposed to work, I want to forget I ever loved coding I get so irritated - nothing plagues a coder like time lost on poor documentation, so just keep doing your best to keep the facts straight. The whole with great power comes great responsibility speech is implied here. 

My favorite moment during the presentation was when Brian talked about the collection of form data in the "new MVC way." He specifically mentioned getting back down to basics and dealing more directly with the Request object. I'm a huge fan of this, and of removing a lot of the gunk between me and my HTTP protocol, so I was all about this commentary. Additionally helpful was his code example demonstrating form-collection using the BindingHelperExtensions class. This has been one of the things I've not yet learned how to do with MVC - dealing with forms. I've been more focused on link-based approaches using MVC and on JSON transmission, so the traditional forms approach had been something that'd eluded me. Brian's example of this was great. 

Brian did mention Phil Haack's ASP.NET Routing Debugger during his presentation, which I'm so downloading tomorrow it's not even funny. Thanks for that, Brian and Phil

Overall, a good presentation. I would like to see a round two of this presentation (or to provide it, as sometimes the requirement of teaching something enables/forces you to learn it pretty well) or to be provided something comperable to Brian's presentation on a more technical, "how-to" level. I look forward to his evolution as a DE, his upcoming travelling show with some of the other guys in his squad, and to learning more about ASP.NET MVC. 

Kick it! | del.icio.us | Comments (4) | Permalink

7/28/2008 10:42:00 PM

TuneTweeter v.0.0.1

Seems a weird revision number, but this thing isn't anywhere close to done yet. At least I don't think so.

I've changed some things around. My main aspiration for TuneTweeter wasn't to overload Twitter and drive everyone bonkers but to provide the music-addicted user access to information about their playlists and to share - in potentially not the most productive venue - their playlists, too. This release accomplishes the first step towards the main goal, which was to learn more about the bands you're checking out in iTunes. The first step in this process was to make it quick and easy to access one of my favorite destinations into the auto-research process. With that, I give you a thumbnail view of TuneTweeter, running with the Wikipedia BrowserLink plugin. The screen shot below demonstrates this view. It is, quite simply, a direct link to an artist's Wikipedia page. As you're listening, the browser auto-finds each artist's corner of Wikipedia. If you like what you hear and you're not too familliar or have a few minutes to spend procrastinating, you can learn more quite quickly.

Architecturally, the introduction of the Wikipedia plugin brings a lot of [intended yet not implemented in the original announcement] changes to TuneTweeter. Primarily, from here on out most elements of functionality will provided via individual [loosely-coupled] plugins, each providing their own teensy piece of functionality [think:mashups, people]. I'll welcome any requests to augment the functionality with any of your own ideas. For now, I'll add plugins as time allows. I've got a lot of ideas, and a teensy little window of time each day... Oh the life of a one-man ISV. 

Lucky for you, if you're brave enough to keep up with the development of this little product, I'm experimenting with ClickOnce deployment right now, and in doing so I'm making TuneTweeter an auto-updating app. You can install it by heading over to the TuneTweeter Installation Page

Kick it! | del.icio.us | Comments (1) | Permalink

7/21/2008 11:10:00 PM

TuneTweeter

I've been putzing around with WPF for a few months and haven't really committed myself to anything worth discussing until recently. I'm really excited about WPF now and what I can do with it, and I'm using this project to learn some more of the GUI-specific WPF stuff from which I've previously balked away. Anyway, I'd like to announce the result of my most recent coding for fun project, TuneTweeter.

My goals were as follows: play with the Twitter API, learn some WPF GUI stuff, and hopefully build something interesting in the process. I'm pretty sure I've accomplished those tasks and have envisioned a few more I'll try to implement (or recruit help) over the coming weeks. 

The idea is simple - Monitor iTunes. Whenever the song iTunes is playing changes, post some information about that song to the user's Twitter account. Not too difficult, really, but as usual I assume if I think it might be nifty there's got to be someone else who may think so as well.

The result is the window you see below, when you're running TuneTweeter and iTunes at the same time.

The navigation bar allows you to move through the two [current] views, which gives you the ability to enter your Twitter username and password. In addition, there's a "Now Playing Prefix" field. This field allows you to specify the text that appears right before the name of the song you're playing. A little something extra, I guess. 

Requisite Public Service Announcement
Of course, you may generate quite a few tweets using this app, especially if you're like me and you can't work without some tunes. I'm not sure the nice people at Twitter will be huge fans of this whole idea, in fact, because it could generate a heckuva lotta tweets. You might not be either if you're sending your tweets to your phone via SMS and a whole bunch of people like this idea and all the people you're following decide to start TuneTweeting. So just be responsible. The screen shot below shows a snapshot of the Twitter account I've been using for testing, which of course is TuneTweeter. All of those problems are, of course, good ones for an independent software developer like myself to have, and none of this verbiage could possibly be designed to subconsciously suggest that you should be a beta tester for the product because what could be more fun than telling everyone about your music library via your impending tweet flood. No. Of course not. 

Feel free to download TuneTweeter and let me know what you think. It's just a pet project right now, but I've got some ideas I think might make it a little more interesting and I'd love some suggestions. Use the comments form below or my contact page. Keep watching this area for updates and news. 

Important Note: Make sure you have iTunes running before you open TuneTweeter. Otherwise it'll crash - TuneTweeter, not iTunes, I don't mess with iTunes at all. There might be a few other bugs in there, but that's what beta testers help with, right? [sheepish grin]

Privacy Note: TuneTweeter doesn't save any of your information, either, aside from your tweets into your own Twitter account. I don't get anything from you and I don't infect you with any computer viruses. No data collection of my own at all. 

Thank You Note: Thanks to the people at Twitter for adding my application name to the list of source applications. And to you, because you are most certainly compelled to be an excellent TuneTweeter beta tester!

Kick it! | del.icio.us | Comments (11) | Permalink