Scott Hanselman

This Developer's Life 1.1.3 - Competition

February 14, '11 Comments [0] Posted in Podcast
Sponsored By

13-Competition In this episode we talk to competitors who are also programmers. Or, programmers who also compete. Are coders pre-wired for this? Jon Skeet, David Fowler, Aaron Jensen and Danielle Banks share their stories.

Download Here

In this episode we talk to competitors who are also programmers. Or, programmers who also compete. Are coders pre-wired for this?

  • Jon Skeet shares how he stays at the top of the Stack Overflow points pile
  • David Fowler talks about TopCode and flying to DisneyWorld to watch coders code
  • Aaron Jensen quits his job to play poker professionally
  • Daniele R. Banks is just getting started but is already building competing robots

You can download the MP3 here (58 minutes) and visit our site at http://thisdeveloperslife.com.

Please consider subscribing with iTunes, or Zune. Or if you have a BitTorrent client and would like to help save us bandwidth money, as well as the bragging rights of downloading legal torrents via RSS, get our Torrent Feed at ClearBits. Also, please do REVIEW our show on iTunes.

The bandwidth and other costs for this week's show were picked up by SublimeSVN...

sublime

Easy Subversion Management for Windows

...and DevExpress and CodeRush!

DX_Slogan_350

Announcing our listener contest...This Developer's Life - Crowdsourced 1

Oh yes. We want to hear your stories. Record your best developer stories and send them to us and if we think they rock, we'll include them in the next episode of This Developer's Life.

What we need from you:

  • Your story. We don't want interviews, we want stories. Tell us about your passion, or something crazy that happened at work while solving some technical problem.
  • Keep your audio clean. Use a decent microphone or at least make sure you don't "overdrive" your microphone by talking to close or two loudly. Don't record while mowing the lawn and don't record in a giant echo chamber.
  • Be passionate. Talk to us like you're talking to a friend.
  • Don't worry about editing or music. Just share. We'll handle the Lady Gaga mashups.
  • Note we may move your audio around or change the order of stuff to make it more listenable or interesting or both.
  • Change the names of companies and people to protect the innocent (or guilty)
  • Know that by giving us your audio you're releasing it the Creative Commons and that we may or may not use it for a future show.

Send us a link to your audio file and what you're talking about and we'll do the rest. See you next time!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Hanselminutes Podcast 252 - ReactiveUI extensions to the Reactive Framework (Rx) with Paul Betts

February 8, '11 Comments [3] Posted in Learning .NET | Open Source | Podcast | Silverlight
Sponsored By

image "Scott sits down with Paul Betts and talks about extending the Reactive Framework. We currently manage our UI events as they are pushed to us. How does programming - and asynchronous programming - change if we change the way UI events are consumed? The Rx Reactive Framework extends .NET, and Paul's extended that with his Open Source Reactive UI framework. Let's see if Paul can teach Scott a new trick."

Download: MP3 Full Show

Links from the Show

NOTE: If you want to download our complete archives as a feed - that's all 252 shows, subscribe to the Complete MP3 Feed here.

Also, please do take a moment and review the show on iTunes.

Subscribe: Subscribe to Hanselminutes or Subscribe to my Podcast in iTunes or Zune

Do also remember the complete archives are always up and they have PDF Transcripts, a little known feature that show up a few weeks after each show.

Telerik is our sponsor for this show.

Building quality software is never easy. It requires skills and imagination. We cannot promise to improve your skills, but when it comes to User Interface and developer tools, we can provide the building blocks to take your application a step closer to your imagination. Explore the leading UI suites for ASP.NET AJAX,MVC,Silverlight,Windows Forms and WPF. Enjoy developer tools like .NET Reporting, ORM, Automated Testing Tools, Agile Project Management Tools, and Content Management Solution. And now you can increase your productivity with JustCode, Telerik’s new productivity tool for code analysis and refactoring. Visit www.telerik.com.

As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)

Enjoy. Who knows what'll happen in the next show?

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Review: Living, working and using the Cisco Umi personal telepresence system. All that and bag of chips?

February 5, '11 Comments [18] Posted in Remote Work | Reviews
Sponsored By

Cisco Umi Call 1The picture at right is of my Cisco Umi I have hooked up at my house in Portland, OR. My friend Vishal is in Seattle. Why is he holding a bag of chips? More on that later.

I noticed recently that I've now got a LOT of posts in my Remote Work category of my blog. Considering that I work for Microsoft in Seattle but from Portland and I have for three years now, I can say I'm officially a "Working Remotely Expert."

Important Point

There's some reviews out of the Cisco Umi (you-me) on the usual gadget blogs. They are lovely reviews by technical writers, to be clear. However, the folks that are writing these reviews don't need the product. They are smart technical product folks. However, I'm a practical pragmatist with a problem (alliteration not intended). I need to connect with my workplace without moving. Otherwise, I'll need to quit because I'm not moving. I need this product or one like it.

Let those reviewers argue about the marketplace. I'm using this thing every day and living it.

First, the background

I'm always looking for the next better way to work remotely, and let me tell you, it's not LiveMeeting or GotoMeeting. Being successful while working remotely is as much about the psychology of the situation as it is about the technology. Ultimately you have to realize that you're NOT there. Whether you're controlling a robot remotely and haunting the halls, or you've worked remotely for years as simply a voice on the conference line, you're not there.

Of course, as they say "out of sight, out of mind." The most important aspect of being remote is simply reminding folks that you exist. Sure, you can send emails and make sure you tell all the right people about what you're working on - and that's important - but there's something to be said for being present.

Many leadership and motivational speakers say "step 1 is showing up." I've written a number of posts on my experiments as a remote working attempting to show up.

Now, the Review

It's insane. Experiencing Full HD 1080p 30fps video of your friends and co-workers is the closest thing a Portal I can imagine. First, the clarity. Most video calls are 640x480. 480p is about a third of a mexapixel or 307,200 pixels and 1080p is 2,073,600 pixels. That's 6 times more pixels on the screen. That's the equivalent of thirty 2-megapixel camera photos a second. The distance between 480p and 1080p can't be accurately expressed when you use numbers like 480 and 1080. This clarity issue can't be overstated. Believe me. If you look, there's artifacting, sure, but no more than a Blu-Ray.

In fact, I'd say that a Cisco Umi call is basically a live streaming Blu-Ray of your family.

Cisco Umi Call 2

Next, smoothness of motion or frames per second. Not only is it basically 6 times clearer than your average video call, it's also has twice as many frames. It's smoothness also can't be overstated. This was the first thing that Damian Edwards noticed when we hooked it up in his living room. It's so smooth that you stop thinking about it the way you do in a webcam. You may not realize it but you expect webcams to look like crap. You expect them to drop frames and feel jerky. That's because life happens as a greater framerate than that. ;) The Umi does a great job of keeping up with the framerate.

There's an HDMI pass-through on the Umi, which came as a welcome surprise to me as I have it in my home office. However, considering that this is a consumer (or pro-sumer) product that's meant for the living room, this is a smart move. You plug the Umi in as the last device before your TV. This means you can get calls when you're watching TV and the Umi "cloverleaf" interface will pop up and allow you to answer the call. For me, this meant I could keep my Xbox and Umi on the same HDMI input on my TV. If I'm playing Xbox I can still answer a Umi call.

photo

The Cisco Umi interface is spartan in look, speed and style. In fact, to call it spartan my be unfair to the Spartans. It's basic to a fault. It's dry and uninspired. Fortunately as soon as the call starts you don't look at it again. Oddly, while the video runs at a buttery smooth 30fps, the user interface for the Umi feels very 10fps, you know? It feels underpowered and pokey. However, this is a nit as you only see it doing setup, answering and adding contacts. Both the UI and the Cisco Umi website are surprising in their lack of polish, but this isn't a deal breaker. A designer (maybe from the Xbox or PS3 teams) and a nice visual refresh of the admin website would really make a huge difference in the overall fit and finish.

Current Version: Chips and Audio Issues

Why's my buddy holding up chips? Well, there's an audio issue in the current version of the Umi. In some rooms with some TVs (not all, as I've seen it work fine in other situations) the Umi is a little aggressive with the audio noise cancelling. In an attempt to prevent feedback, the Umi software "clips audio" when two people talk at once on different sides of the call. That means if I Vishal says something or crinkles his bag of chips suddenly he can't hear me talk. Like, literally the sound is cut off completely.

It works fine if we take turns, but life isn't that convenient. People interrupt and talk over each other. Am I being too harsh? No. When was the last time you had your conference speakerphone or Skype cut someone off or mute them? Never, because it doesn't happen. Skype is absolutely brilliant with this.

Fortunately I have it on good authority from some very cool and very responsive Cisco Umi support guys that the engineers know about this audio edge case and are on it. My Umi auto-updated itself the first time I plugged it in, and I'm hoping that one day in the next few months this problem will just be solved. I'll update this post when that happens.

It's unfortunate because the Cisco Umi is supposed to have this amazing array microphone that is smart about picking up sounds and from my (and my team's) perspective, it's no better than a speaker phone, and in most cases much worse.

For now, this audio issue - in my room, given my constraints of very free-flowing conversations - is so irritating that we call the Umi then mute the audio. Then I'll use another audio channel (OC, Speaker Phone, whatever) as the audio. This works near-perfectly, and as an individual in a home office allows me also to use headphones. It'd be nice if there was an hardware option to plug in a standard USB microphone/headset into the UMI.

Rude Q&A

Here's my answers to a few of your questions.

Q. What, Skype HD to good for you? Live Messenger? Oovoo? Office Communicator/Lync?

A. Skype is stingy about HD video. They have been for four years. Four.  You used to be able to hack it (I know, because I did) but currently there appears to be a white-list of supported cameras, specifically Logitech ones. There's obviously some kind of deal going on where they don't want to allow it for anyone on any camera can has the ability. A few technical points first. Pushing HD video is hard. Cameras like the LifeCam and other HD webcams can't push 1080p 30fps through USB2. Also, there are both driver issues and hardware issues. You can use the default driver that includes some filtering, color stuff, and animated fish nonsense, or you can use a default driver that just pushes out MJPEG (Motion JPEG) as fast as possible, unfiltered. In order to get 720p 15fps (yes, 15) you'll need at LEAST a quad-core processor to squish the frames as well as at least 1.5Mbps of bandwidth. Also note that you're not actually sending or receiving HD until the receiver's video window has expended to a size that is near 1280x720p. (This is a clever optimization.)

That was a lot of info. Here's the bullets:

  • HD Video takes a LOT of CPU
  • HD Video from today's USB cameras has a limited framerate when paired with today's software. We need more cameras with hardware acceleration or the ability for my video card to help out
  • Believe it or not, 720p at 15fps isn't that great given the inexpensive sensors in today's cameras (and I've tried them all.) Once you've done a video call at 1080p at 30fps, it's hard to imagine anything else others than MOAR PIXELS!!!

Fancy chart showing that 1080p is a crapload of pixels when compared to anything else

Q. Isn't $600 per Umi expensive?

A. Sure. And so is a ticket. Or mileage, or a hotel. It's effectively $1000 for me to drive to Seattle, stay a few days, eat, submit a standard mileage expense and drive back. This whole system is about the same as one trip, except I use it daily.

I've said before, spend money and don't feel bad about it when it's something you use every day. Computer, Monitor, Bed, Chair, Car, Food. But the best quality in all these things. The Umi was a bargain. If I had relatives with decent bandwidth who lived more than 4 hours away I'd spend the money in a heartbeat so they could see my kids.

That said, there's a "Buy One Get One Free" Cisco Umi sale going on right now at BestBuy and Magnolia. So that's $600 all up for two, plus the fees. If your parents are far away and have 3 to 4Mbps of bandwidth to spare, that's a hell of a deal. This is over the 13th. Note, this is NOT an affiliate link and I don't get any money for any of this. I'm not attached to Cisco at all.

Q. What about the $25 per side monthly fee?

Ya, that is lame. It's the Umi tax. They have a cloud with support for visual voice mail, routing video calls to Google Chat, email notification, etc. I think $50 a year would be more reasonable.

Conclusion

You know those multi-thousand dollar telepresence rooms that you wish you had at your company? Well, I've got a tiny one and I'm 90% happy with it. I'm looking forward to the sound fixes. More as it comes!

Crazy Telepresence Room 

Hope this was helpful. If you have an Umi, call me sometime at 207417.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Fun with Noun Pluralization libraries and the .NET Framework

February 2, '11 Comments [15] Posted in BCL
Sponsored By

Add Entity Pluralization There was interesting discussion about noun pluralization on a mailing list today. One of the fun demos I throw into some talks is the automatic pluralization (taking something singular and making it plural) that's built into the Entity Framework design time tooling. For example, look at the screenshot to the right where a table of type "Goose" is called "Geese" as a set.

Dmitry released a nice "Simple English Noun Pluralizer" a few years back. His code is fun to read and clever for under 400 lines.

In addition to Dmitry's, in .NET 4 (Full Framework, not Client Profile) there's a little known PluralizationService inside of System.Data.Entity.Design that supports this user interface.

At this point there is only support for English and while the class is abstract, there's no proper provider model or factory. Also, personally I think service should be in the Base Class Library (BCL) and should been available as an extension method on string, and I've told them so. That said, it's still pretty cool and useful.

Create a new project in Visual Studio 2010. Right click on the project in the Solution Explorer, and from Properties select ".NET Framework 4" as the Target Framework. Otherwise you won't be able to see System.Data.Entity.Design in the list of .NET Assemblies from the Add Reference dialog. Add a reference, and go to town.

Here's some of the things I tried. I was impressed and confused when it changed Hanselman to Hanselmen. ;)

[Test]
public void AnimalsAreFunWhenPluralized()
{
var p = PluralizationService.CreateService(new CultureInfo("en-US"));
Assert.AreEqual("geese", p.Pluralize("goose"));
Assert.AreEqual("deer", p.Pluralize("deer"));
Assert.AreEqual("sheep", p.Pluralize("sheep"));
Assert.AreEqual("wolves", p.Pluralize("wolf"));
Assert.AreEqual("volcanoes", p.Pluralize("volcano"));
Assert.AreEqual("aircraft", p.Pluralize("aircraft"));
Assert.AreEqual("alumnae", p.Pluralize("alumna"));
Assert.AreEqual("alumni", p.Pluralize("alumnus"));
Assert.AreEqual("houses", p.Pluralize("house"));
Assert.AreEqual("fungi", p.Pluralize("fungus"));
Assert.AreEqual("Hanselmen", p.Pluralize("Hanselman"));
Assert.AreEqual("Hanselman", p.Singularize("Hanselmen"));
}

As I mentioned, If you wanted, you could derive from PluralizationService and create a Spanish or whatever-you-like service and plug it into the Entity Framework. Dmitry could even swap out the included service and broker calls to his own.

Note that this class was really just meant to be used from the EF Tooling, but I'd like to put gentle pressure on the Powers That Be (if this is useful) to put a little more work into it, make it a core thing, and make it work in more languages.

UPDATED: An interesting point from Jon Galloway. If you are using Entity Framework Code First, you can effectively disable the Pluralization Convention for Table Names by, ahem, removing the PluralizingTableNameConvention. Funny how that works, eh?

namespace MvcMusicStore.Models
{
public class MusicStoreEntities : DbContext
{
public DbSet<Album> Albums { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<Artist> Artists { get; set; }
public DbSet<Cart> Carts { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}

Cool.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

This Developer's Life 1.1.2 - Drive

January 29, '11 Comments [4] Posted in Podcast
Sponsored By

12-Lead In this episode of This Developer's Life Scott and Rob talk to 4 entrepreneurs about the risks they take, and what's happened as a result. Dave Neilsen, Tom Preston-Werner, and Nate and Niki Kohari.

Download Here

In this episode we talk to 4 entrepreneurs about the risks they've taken - and what's happened to them because of it:

  • Dave Neilsen tells us about working only for himself and what sleeping on a couch in a basement storeroom feels like
  • Tom Preston-Werner talks to us about founding Github and turning down $300,000 from Microsoft
  • Nate and Niki Kohari talks to us about starting up, and then selling, a tech company while being married

 

You can download the MP3 here (58 minutes) and visit our site at http://thisdeveloperslife.com.

Please consider subscribing with iTunes, or Zune. Or if you have a BitTorrent client and would like to help save us bandwidth money, as well as the bragging rights of downloading legal torrents via RSS, get our Torrent Feed at ClearBits.

See you next time!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.