Virtual Brown Bag Recap


I haven't posted a recap lately, because the Virtual Brown Bag recordings weren't being uploaded for a while. That was fixed two weeks ago, so I had a lot of meetings to catch up on. Here's an all-you-can-eat brown bag buffet…

March 3

Guest presenter Jim Christopher - creator of StudioShell, a deeply integrated PowerShell host available inside of Visual Studio 2010 and 2008.

StudioShell exposes many of Visual Studio’s extensibility points in a simple and consistent way, and it makes the Visual Studio DTE interactive and discoverable.  What an add-in does in a compiled binary, StudioShell can accomplish with a one-liner.

https://sites.google.com/site/vbbwiki/main_page/2011-03-03

March 10

Topics:

  • Options for uploading files to a Rails/MongoDB site
  • Chrome developer tools
  • George Mauer shares some useful extension methods

https://sites.google.com/site/vbbwiki/main_page/2011-03-10

March 17

Jonathan "JB" Birkholz shows off his "CodeMav" site

https://sites.google.com/site/vbbwiki/main_page/2011-03-17

March 24

Alan Stevens: "KickAss Ruby" - Rails development on Windows

https://sites.google.com/site/vbbwiki/main_page/2011-03-24

March 31

Topics:

  • Rails authentication & authorization
  • S#arp Architecure / Templify
  • Git branching

https://sites.google.com/site/vbbwiki/main_page/2011-03-31

April 7

Topics:

  • CleanCoders & code school - online video learning
  • "What the hell was I thinking?"
  • JavaScript design patterns
  • We discuss some &%$#'s blog post: "Why I don't hire .NET Programmers"

https://sites.google.com/site/vbbwiki/main_page/2011-04-07

April 14

Topics:

  • object mappers: ditto & AutoMapper
  • Mono for Android
  • Rails / web development help sites

https://sites.google.com/site/vbbwiki/main_page/2011-04-14

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Saturday, April 16, 2011 7:29 PM | Feedback (0)

Virtual Brown Bag: Ruby Newbies, Mockups, There *is* an I in SOLID, fuv


At this week's Virtual Brown Bag meeting:

  • Claudio pointed us to Try Ruby! and Rails For Zombies, two sites to educate Ruby newbies
  • We looked at the free version of Balsamiq, and other online mockup sites
  • George walked us through a refactoring to isolate roles and adhere to the Interface Segregation Principle (the "I" in SOLID)
  • We laughed at fuv, the code editor for "real programmers"

For detailed notes, links, and the video recording, go to the VBB wiki page:
https://sites.google.com/site/vbbwiki/main_page/2011-02-10

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Saturday, February 12, 2011 11:49 AM | Feedback (0)

Virtual Brown Bag Recap: JB's New Gem, Patterns 101, Killing VS, CodeMav


At this week's Virtual Brown Bag meeting:

  • JB showed off his new SpeakerRate Ruby gem
  • Claudio alerted us to the Refactoring Manifesto
  • We answered the question "How do I get started with Design Patterns?"
  • Ever had to kill a frozen instance of Visual Studio? Yeah, I thought so. Claudio showed us how to do it with PowerShell. (It's faster)
  • JB previewed his new CodeMav web site, which will be a social network for developers (integration with Speaker Rate, slide share, github, StackOverflow, etc.)

For detailed notes, links, and the video recording, go to the VBB wiki page:
https://sites.google.com/site/vbbwiki/main_page/2011-01-06

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Sunday, January 09, 2011 7:50 AM | Feedback (0)

Virtual Brown Bag Recap: FancyHands, CanCan, 1KB XMas Tree, YouTube Yuks


At this week's Virtual Brown Bag meeting:

  • Claudio has some one-month Evernote premium accounts to give away
  • Claudio & George talked about FancyHands, the 4-hour work week, and paying people to do the stuff you don't want to
  • JB shared more Ruby gems: cancan and open and talked about insert and other Ruby Enumerable functions
  • We looked at the winner of the 1KB JavaScript Christmas contest and some fun YouTube videos

For detailed notes, links, and the video recording, go to the VBB wiki page:

https://sites.google.com/site/vbbwiki/main_page/2010-12-23

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Thursday, December 23, 2010 10:38 PM | Feedback (0)

Virtual Brown Bag Recap: NuGet, PoshCode, Code Templates


Roving tuba brawl

"Virtual Brown Bag" anagrams:

  • Roving Tuba Brawl
  • Lawn Bug Vibrator
  • Rubbing Two Larva
  • Vulgar Rabbi Town
  • A Vibrant Grub Owl
  • Blurting a Bar Vow

At this week's Roving Tuba Brawl Virtual Brown Bag meeting:

  • Claudio Lassala asked "What does your work environment look like?" He and several others shared pictures.
  • George Mauer talked about NuGet, .NET's answer to Ruby Gems, and PoshCode, a PowerShell code repository
  • Claudio showed how he uses CodeRush templates to quickly generate unit test code
  • Alan Stevens showed how to do the same thing with Resharper templates

For detailed notes, links, and the video recording, go to the VBB wiki page:

https://sites.google.com/site/vbbwiki/main_page/2010-12-02

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Saturday, December 04, 2010 8:50 AM | Feedback (0)

Better keyword than "await" - How about "async"?


My late contribution to a debate that was raging almost a month ago now…

Regarding the upcoming C# 5 asynchronous programming improvements, Eric Lippert blogged about how Microsoft is aware that the "async" and "await" keywords, as shown below, imply the opposite of what they really mean:

async void ArchiveDocuments(List<Url> urls)
{
  Task archive = null;
  for (int i = 0; i < urls.Count; ++i)
  {
    var document = await FetchAsync(urls[i]);
    if (archive != null)
      await archive;
    archive = ArchiveAsync(document);
  }
}
 

Regarding "await", Lippert said:

The “await” operator used twice in that method does not mean “this method now blocks the current thread until the asynchronous operation returns”. That would be making the asynchronous operation back into a synchronous operation, which is precisely what we are attempting to avoid. Rather, it means the opposite of that; it means “if the task we are awaiting has not yet completed then sign up the rest of this method as the continuation of that task, and then return to your caller immediately; the task will invoke the continuation when it completes.

It is unfortunate that people’s intuition upon first exposure regarding what the “async” and “await” contextual keywords mean is frequently the opposite of their actual meanings. Many attempts to come up with better keywords failed to find anything better. If you have ideas for a keyword or combination of keywords that is short, snappy, and gets across the correct ideas, I am happy to hear them.

My suggestion (which probably has been suggested by someone else - there was a ton of discussion on this, and it would take days to read all of it): Why not just use "async" instead of "await", e.g.:

var document = async FetchAsync(urls[i]);
 

I don't have a better suggestion for "async" for the method declaration keyword (I don't have a problem with it either). I also don't think it would be confusing to use "async" for both the method and statement keywords. We're "using" the same keyword in different contexts elsewhere in C# without confusion.

My other suggestion: Just make up a new word that doesn't imply any unwanted meaning. "asdf" is easy to type. Smile

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Thursday, November 25, 2010 6:59 AM | Feedback (1)

Virtual Brown Bag Recap: Rhino Mocks, Hg-Git


NelsonMocksRhino

At this week's Virtual Brown Bag meeting:

  • Claudio alerted us to his blog post "You Have Been Deleted!", expounding on our DDD/CQRS discussion from a couple of weeks ago
  • Mark talked about / demoed Rhino Mocks
  • George told us about an Hg (Mercurial) / Git syntax comparison cheatsheet, and the Hg-Git plugin
  • Mark hipped us to iconizer.net

For detailed notes, links, and the video recording, go to the VBB wiki page:
https://sites.google.com/site/vbbwiki/main_page/2010-11-18

I'm trying out a new style for the wiki meeting notes pages. The video recordings are now embedded in the wiki, with bookmarks to specific topics in the video, and the notes are in a scrolling div below so you can more easily see the video and the notes together:

image

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Friday, November 19, 2010 5:21 AM | Feedback (1)

How to pronounce "IE"


The gentleman below demonstrates the correct pronunciation…

TheBrowserThatWouldntDie

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Saturday, November 13, 2010 9:36 AM | Feedback (0)

Virtual Brown Bag Recap: 42goals, Evernote, MVVM, More Cuke


At today's Virtual Brown Bag meeting:

  • Claudio introduced us to goal-tracking site 42goals.com
  • …and shared tips for getting started with Evernote
  • We talked about MVVM 101
  • JB continued his discussion of Cucumber

For detailed notes, links, and the video recording, go to the VBB wiki page:
https://sites.google.com/site/vbbwiki/main_page/2010-11-11

Happy Veteran's Day!

image

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Thursday, November 11, 2010 1:23 PM | Feedback (0)

Visual Studio tips for working with whitespace


As George Costanza might say, this is a post about nothing.

…or what looks like nothing, anyway. I’m talking about “whitespace” (spaces, tabs, line feeds, etc.).

I probably spend more time than I should obsessing over the appearance of my code, including whether statements are more readable with or without line breaks.

For example, I might decide that instead of this:

image

…I want to format the statement like this:

image 

(The term “whitespace” is a bit weird with a dark color scheme. You can think of it as “dark matter” for the rest of this post if you prefer.)

In the past, to make the change described above, I would start by positioning the cursor after the opening parenthesis on the first line and pressing the delete key, which would move the second line of code up with the first:

image

Then, I would either select the whitespace between the parenthesis and opening quote mark and hit the delete key, or just position the cursor after the parenthesis and hold down the delete key until, Pac-Man style, I gobbled up all of the unwanted whitespace characters (and usually gobbled up more than I wanted to and had to hit Ctrl-Z a few times to restored accidentally deleted text).

I knew there was probably a keyboard short to do what I wanted, but I was too lazy to look it up. I finally did. the shortcut is:

Edit.DeleteHorizontalWhitespace

CTRL + K, CTRL + \

Collapses white space in the selection, or deletes white space adjacent to the cursor if there is no selection.

In the example above, I would just position the cursor after the parenthesis and press the Ctrl-K,\ “chord” to zap everything between the parenthesis and the opening quote mark.

But wait, there’s an even faster way. If instead of pressing the delete key to bring the second line up to join the first, I had pressed CTRL+DELETE, that would have immediately zapped everything between the parenthesis and the quote mark (including the line feed characters):

Edit.WordDeleteToEnd

CTRL + DELETE

Deletes the word to the right of the insertion point.

If you ever have a need to make whitespace visible (for example, to see if indenting is done with tabs or spaces), you can use the Edit -> Advanced -> View White Space menu (keyboard shortcut: CTRL + R, CTRL + W):

image

  • Share This Post:
  • Share on Twitter
  • Share on Facebook
  • Share on Technorati

author: Brian Schroer | Posted On Wednesday, November 10, 2010 1:35 PM | Feedback (1)