Archive for category Virtual Brown Bag
Another great Virtual Brown Bag last week.
Conferences, Speaking, etc.
Right at the start Alan brought up the fact that PDC 2010 was going on, with live streaming and all of that, but several of us decided to join the VBB instead. The idea of learning something useful, which you can start using immediately, over watching marketing conferences, seems to appeal to some of us.
That conversation reminded me as to one of the reasons why I decided to take a break from speaking: I have no interest in speaking at big conferences anymore. In the past, I’ve been asked to speak at some conferences where I was given the topic, content, the script, etc., and in both cases, I didn’t care about the things I was talking about. Several people have told me that they enjoy my talks because I’m very passionate. Well, it’s kind of hard to be passionate about something I don’t necessarily care about.
Also, several conferences are only interested in topics about whatever “the latest tools or technologies” are, regardless as to whether those things have been tried out in the real world or not. They favor those topics over things that people actually need on a daily basis.
I’ve submitted session proposals to some conferences and heard back things like “we don’t want talks on object-oriented programming, patterns, or that kind of stuff; we want talks on whatever thing that has just come out as a beta…“. Sometimes those things don’t see the light of the day, or are phased out after one or two releases.
The interesting thing is that my most popular talks are usually the ones that big conferences don’t care about. There’s a *huge* number of people out there who needs help with OOP, patterns, writing clean code, refactoring, etc. That’s why I’ll probably just focus on speaking at some selected user groups, CodeCamps, etc., where I know the organizers, they know me, and we both agree on what topics are of interest to the attendees, as opposed to this or that vendor.
Speaking of user groups, the Houston C# User Group is currently looking for speakers. I’ve presented there before, and it looks like I’ll be there again early on next year.
There were some other topics we covered at the meeting, but I’ll save details for another post. For instance, I shared something around Liskov Substitution Principle, Interface Segregation Principle, etc., but I plan on blogging about it in the next couple of days.
JB also share some stuff around Cucumber that looked cool. I’ll have to investigate more into that.
Another Thursday, another fun Virtual Brown Bag. JB shared some more Rails/Heroku love today, and how he’s implemented the registration/login feature of http://www.virtualbrownbag.com. The more I hear and see things about Rails/Heroku, the more I like it. I need to find me some time to start messing with those things.
We had a special request from Mark, one of our frequent VBBers: he wanted to see a little example of MVVM, and maybe have a little talk on MVC.
I showed a very simplistic sample of a WPF app, where we started with having most of the code in a code-behind for a window, and then moving the code out into a ViewModel. We’ve covered the core differences between MVC (Model-View-Controller), MVP (Model-View-Presenter), and MVVM (Model-View-ViewModel, or also known as Presentation Model). The idea bein g that they’re all “presentation patterns”, aimed to better structure the code that sits closer to the User Interface.
So why so many different patterns just for that? Well, each one has a slight different structure to cater for the scenario have at hand. In MVP, the Presenter takes care of providing behavior to the View. The View does nothing more than delegating things to the Presenter. This allows the Presenter to be reused independently of the View, and it’s also testable.
In MVVM, the ViewModel gives shape to the data coming from the Model, tailoring it to the View needs. For instance, the Model may have separate properties for Address, City, State, whereas the View calls for just a single property representing the Full Address; the ViewModel will handle just massaging of the data. ViewModels fit in nicely with WPF/Silverlight due to their data binding features.
In MVC, the Controller is usually the one responsible for executing behavior, and in web applications the Controller is usually the point of entry for the user to execute operations: when the user either enters a URL in the browser directly, or clicks something on the page that sends a request to the server, there’s a Controller intercepts the call and takes the appropriate action.
ViewModels are commonly used in MVC applications as well, but different than in WPF/Silverlight applications, they only provide the “data reshaping” aspect of it.
Even on a MVVM WPF/Silverlight application you may find “Controllers”, usually helping out with the way the application flows through menus and screens.
MVP is usually the best bet for WinForms and WebForms applications. So why not use MVVM in a WinForms application? Because MVVM leverages the WPF/Silverlight data binding capabilities, which in WinForms aren’t that great.
As with all design patterns, there isn’t one presentation pattern that’s the silver bullet to all applications. Depending on context, requirements, etc., a single application may mix and match these patterns: have a Login screen implemented using MVP, whereas an order placement screen may be implemented using MVVP, whereas a more complex composite screen may be using MVVM with a Controller added to handle the flow between the different parts of the screen.
This post isn’t supposed to be nothing more than a brain dump as to what we’ve discussed at the Virtual Brown Bag this week. Please make sure to take the time and go do some research and experimentation on your own.
I’ve enjoyed Scott Hanselman’s “two must have tools for readable web” post, and have been following that kind of workflow for sometime now. I’ve tried Instapaper, but decided to just stick with Evernote for that as well. I use the Readability bookmarklet to get rid of the noise, and send the whole page to Evernote. I then apply a “read later” tag to it, and usually read things later on on my iPad.
I’ve incorporated Posh-Hg in my setup. It gives nice tab completion in Powershell for the Mercurial commands, and it also customizes the command prompt to display some useful information (such as what branch I’m currently on, how many files added/changed/deleted, etc.)
Favorite Things, according to the VBBers
I asked attendees about their favorites things they’ve either learned or shared at the Virtual Brown Bag. This is the kind of things I got:
- Productivity Tools (we’ve covered a good number of tips and tricks overtime on tools such as CodeRush, ReSharper, Executor, etc., and we’re certainly going to continue doing so).
- Feeling I’m on the right track with development
- Knowing I’m not alone in my questions concerning development
- I appreciate the help of those of us less experienced in development (great, we’ll certainly continue covering things for all levels)
- Pomodoro Technique
- LINQ tips and tricks, like the .Any(x => x.Condition) instead of the .Count(x => x.Condition) > 0
- I love what you did replacing a switch using a Dictionary<DayOfWeek.Action>
Things that I’ve personally learned/enjoyed since we started:
- How people step up and help us keep the VBB’s going:
- Zach Young: who allowed us to use the Virtual Alt.Net LiveMeeting room to host the VBB, as well as processing the recordings, posting it to Viddler, and listing it at the VAN site.
- JB: who’s helped out being the host several times when I couldn’t make it (usually because I’m travelling). Not to mention the tons of things he’s shared, besides bringing www.VirtualBrownBag.com to life.
- Ed Evans: who’s taken the initiative to create a wiki page for the VBB
- Jared Lobberecht: who’s stepped up and automated the process of processing the videos, so they become available online just a few hours after the meeting has ended.
- Brian Shroer: who’s been updating the wiki live during meetings, with timestamps, notes, links, etc.
- At one of the VBB’s over a year ago, I was showing SlickRun, and then somebody showed Executor, which I’ve switched to and can’t live without.
- A few weeks ago, somebody asked me if I could do an intro to Mercurial/Branch by Feature. That was fun. Even though I’m a total beginner with Mercurial, I think I was able to do it, which proves the point that Mercurial is such an easy source control system to use.
- Sharing both Evernote and the Pomodoro Technique have been fun for me, and I’ve noticed people on Twitter talking about it, so that’s great.
The Live Virtual Brown Bag session at the Houston TechFest 2010 was well attended, and I hope we’ll be getting more and more attendees every week now. At the TechFest we’ve launched t he official site for the Virtual Brown Bag, containing information on what the VBB is all about, links to the Wiki and Recordings, and a place for people to post their suggestions on things we could talk about. Make sure to check it out!
I’ve had a great time presenting at Houston TechFest 2010. The sessions I’ve paired with JB and George went really well, and the Virtual Brown Bag session worked out great. Thanks everybody who attended to those sessions.
We’d really appreciate if you could take a minute or two and rate the sessions, along with giving us some feedback, so we can improve them in the future. You’ll find the material to be downloaded at those links too!
And now I’m off to go see Nevermore (my favorite metal band) here in Houston! 🙂
Here’s a quick summary of last week’s meeting:
- The Art of Unit Testing book: great one! I goes from the very basics (what unit tests are? How to use test runners? etc.), though more advanced topics. Highly recommended for anybody writing tests.
- SOLID series for the VAN (Virtual ALT.NET): starts on September 9th!
- Visual Studio tips:
- Hit F8 to navigate through compiler errors
- Add blocks of code to the Toolbox by dragging them from code editor
- On Toolbox, one can easily expand/collapse all tabs by pressing / or *, respectively
- Interesting comment from our buddy Ben: “You know what hurts WPF and Silverlight? Most of the UIs are gross. Gradient explosion.”. We’ve discussed a little bit about that. I’m trying to get Markus to swing by and share how we’ve been working with WPF and Silverlight in the sense of creating great UIs.
- JB talked a little more about Monads, and more specifically, the Reactive Framework. He pointed us out to this video.
- Ben also pointed us out to this cool site. You have to try it out. It’s really cool.
- Buddy Craig Berntson talked a little bit about his talks at DevLink, more specifically the one on Continuous Integration. He’s co-writing a book about it. He also has presentation material and articles about it here.
- There’s a two part podcast on Herding Code on “Presentation Patterns”, with a lot of smart people. Definitely worth checking out.
We’ve also discussed that it’d be great to have a meeting focused on an IoC Containers comparison. It’d be awesome if we could get the people behind the main containers on the meeting, and have them answer questions such as “what has made you write your own framework? What’s so special about it that you couldn’t use the other frameworks?”. Let’s see if we can pull that off.
Heck, I’m running behind with my follow-up posts again…
My buddy JB helped us out again and took care of the meeting on August 6th. He’s posted a followed to his blog here. If you’ve heard about the Virtual Brown Bag Meetings from me and end up joining a meeting that I’m not there, don’t panic: JB will likely be there for you. 🙂 Seriously, this is how these meetings go: sometimes I just can’t make to it, but that doesn’t mean we aren’t having the meeting: whenever JB is available, he’ll take care of it, and if both of us aren’t available we’ll certainly find some other buddy who’ll make sure the meeting does happen.
So here’s also a quick summary of the meeting on August 13th:
- We’ve mentioned about DevLink 2009, since I was going to be speaking there. There was a great conference, as I’ve blogged about it the other day.
- Windows 7 tip: Ctrl-Shift+Click on any shortcut on the TaskBar runs that program “as admin”
- Executor: Shift+Enter runs the program as Admin
- Visual Studio: if the “project templates” get messed up somehow, run the “Visual Studio Command Prompt” as admin, and then run this command: devenv /installvstemplates
- Good blog with WPF stuff: http://www.tanguay.info/web/. The author posts his notes on things such as free training videos online, which is a great way for you to decide whether or not you want to take the time to watch the whole video.
- CodeRush Express (Free): here’s a video that lists out the main features available and how to use them: http://perseus.franklins.net/dnrtvplayer/player.aspx?ShowNum=0143
- Great Herding Code podcast episode with Greg Young: http://herdingcode.com/?p=189
- Cool series on refactoring: http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/01/31-days-of-refactoring.aspx
- M Grammar: msdn.microsoft.com/en-us/oslo/default.aspx. We’ve seen a quick demo on creating DSL’s, given/when/then tests.
- Good resource for learning about M and DSL’s
- Good website with free screencasts: http://www.pluralsight.com/main/screencasts/default.aspx
This meeting was great. My buddy Jared Bienz demoed Silverlight 3 Out of the Browser experience, and also made himself available to answer miscellaneous questions regarding Expression Blend, WPF, styles, etc.:
- We’ve seen a quick presentation on Silverlight 3 Out of the Browser experience
- This link has been mentioned as a good resource on Silverlight
- It was recommended watching the Silverlight “Visual Kitchen” video
- There’s a book on “Dynamic Prototyping with SketchFlow in Expression Blend” in the works. Preview chapters can be downloaded here.
- Interesting managed API for interacting with Windows 7 features (such as the taskbar) from with .NET apps
- Virtual Earth Silverlight Map control CTP: very interesting control for adding maps to Silverlight apps.
Jared also sent me an email with his own notes to links and other things he had mentioned during the meeting. Thanks a lot, Jared!
Tim Heuers’ original video that I “borrowed” from to present today:
Tim’s sample code:
Application Skinning in WPF and Silverlight:
Virtual Earth Map Control for Silverlight
Note that you’ll need to sign in to connect and apply for access, but anyone can join.
Below you’ll find information about the Front Runner program. If you join the Front Runner program or are interested in logo certification, please let Jared know (email@example.com). Jared can serve as your sponsor and can also act as a local resource here in Houston should you have any issues.
Once you’re in and answered a couple of questions you can go to the Expert Support tab:
From there you can get free e-mail support and even live phone call support from our Windows 7 / Server 2008 R2 compatibility engineers.
Front Runner provides other benefits as well, including some pretty valuable marketing resources when you’re compatible and a logo you can display to show that you’re early adopters. Front Runner is separate from the Windows Logo program, though, which has benefits of its own and is now free to complete. The Windows 7 logo program includes partner points, for example, so we’re really hoping ISVs will choose to do both.