.NET Developers Blog An aggregated blog of .NET developers. Bookmark and Share

Welcome to the .NET Developers Blog

This is an aggregated blog of .NET developers.

If you have a blog about Microsoft, .NET, XAML, WPF, Silverlight, etc... development add your blog here. Email me for any suggestions and feedback.

Minh T. Nguyen

Syndication & Stats

Blogs - 417
OPML (list of bloggers)
RSS (list of posts)



Bloggers

.NET User Group Frankonia
   (10/20/2008 12:22 PM)
A Henry P. Erich III
   (7/21/2008 1:14 AM)
Aaron Junod
   (7/21/2008 1:14 AM)
Adam Beal
   (8/12/2006 11:05 AM)
Adam Kinney
   (7/21/2008 1:15 AM)
Adam Kinney
   (2/16/2007 2:37 PM)
Adam Weigert
   (5/26/2010 8:37 PM)
Adolfo Marinucci
   ()
Adrian Florea
   (5/21/2009 2:22 AM)
Adron Hall
   (9/12/2008 3:37 PM)
Adron Hall
   (7/28/2010 11:16 PM)
Adwait Ullal
   (7/2/2005 9:38 AM)
aharvey
   (10/27/2009 7:18 AM)
Akshay Luther
   (3/6/2005 3:57 AM)
Alex Campbell
   (7/23/2009 12:13 AM)
Alexander Zeitler
   (5/19/2007 7:39 AM)
Alexandre Gomes
   (7/27/2010 11:50 AM)
altaf Hussain
   ()
ALTERthought
   (4/13/2010 1:23 PM)
Amanda
   (7/29/2010 8:40 PM)
Anand M.
   (3/26/2005 3:12 PM)
Anand Patel
   (7/25/2010 9:49 PM)
André Obelink
   (4/6/2008 2:42 PM)
Andrea Saltarello
   (7/16/2010 12:34 AM)
Andrei Hetel
   (4/29/2010 1:19 AM)
Andrej Budja
   (3/26/2005 3:12 PM)
Andres Aguiar
   (6/25/2010 11:47 AM)
Andrew Whitten
   (8/21/2007 8:08 PM)
Andy Smith
   (11/16/2006 10:54 PM)
Angry Hacker
   (7/21/2010 5:27 PM)
Anjana Ram
   (7/21/2008 1:19 AM)
Anna
   (8/27/2009 12:24 AM)
Armand du Plessis
   (7/21/2008 1:19 AM)
arshly
   (3/14/2010 9:44 PM)
Ashraful Alam
   (4/10/2009 8:44 AM)
Ashvil
   (8/9/2005 5:20 PM)
Avner Kashtan
   (2/10/2009 8:08 AM)
Axinom
   (6/30/2010 2:40 AM)
Barb Bowman
   (3/26/2005 3:14 PM)
Bartek
   (4/24/2010 2:39 AM)
BCS
   (8/29/2009 12:05 PM)
Ben Hall
   ()
Ben S. Stahlhood II
   (1/3/2009 2:36 AM)
Bertrand
   (10/19/2006 12:03 AM)
Bil Simser
   (7/27/2010 11:37 PM)
Bill Christenson
   (7/24/2010 11:28 AM)
Bill Evjen
   (5/7/2010 5:33 AM)
Bill Evjen
   (11/25/2007 5:34 PM)
Bill Wagner
   (12/12/2008 6:53 PM)
Bob Swart (aka Dr.Bob)
   (5/29/2010 2:26 PM)
Bojan Resnik
   (10/28/2009 5:56 AM)
Brendan Tompkins
   (5/29/2005 10:23 AM)
Brian Button
   (8/24/2009 4:30 AM)
Brian Desmond
   (11/16/2006 10:58 PM)
Brian Nantz
   (10/25/2005 7:31 AM)
Brian Nantz
   (10/6/2005 6:53 AM)
Brian Scott
   (7/31/2008 6:45 PM)
Bryan Reynolds
   (8/9/2008 3:11 PM)
Bryant Likes
   (1/18/2010 8:58 PM)
ByteMyCode CSharp
   (3/23/2010 8:09 PM)
ByteMyCode VB.NET
   (7/6/2009 12:16 AM)
Carl Franklin
   (5/21/2006 7:33 PM)
Carsten Unterberg
   ()
Chris Hammond
   (7/22/2010 2:21 PM)
Chris Hammond
   (11/25/2008 11:41 PM)
Chris McKenzie
   (9/12/2006 4:12 PM)
Chris Stewart
   (5/13/2010 7:23 PM)
Chris Thomson
   ()
Chris Woodill
   (2/13/2010 10:20 AM)
Christian Engel
   (2/15/2009 6:05 AM)
Christian Nagel
   (5/21/2006 7:34 PM)
Christian Weyer
   (8/27/2006 11:54 PM)
Christoph Wille
   (6/9/2009 1:59 AM)
Christophe Lauer
   (6/5/2006 1:29 PM)
Christophe Menet
   (3/19/2009 3:44 AM)
Christopher Frazier
   (5/25/2007 1:41 PM)
cialis
   ()
cialis
   ()
Claudio Perrone
   (10/10/2006 1:16 AM)
Clint Caraway
   (7/19/2007 10:32 AM)
Clinton Ruivivar
   (11/23/2006 1:36 AM)
Colt Kwong
   (7/11/2010 5:12 AM)
Courtois Sébastien
   (6/14/2010 2:33 PM)
Craig Nicholson
   (12/4/2008 4:58 PM)
Craig Roffers
   (7/28/2008 8:41 AM)
Damian Barrow
   (5/21/2006 7:35 PM)
Damir Tomicic
   (7/3/2010 8:03 AM)
Damir Tomicic on Architecture
   (5/17/2010 2:50 AM)
Dan Bright
   (5/21/2006 7:36 PM)
Dani Meier
   (12/1/2007 6:42 AM)
Daniel Cazzulino
   (3/18/2007 11:42 PM)
Daniel Zeiß
   (4/14/2008 2:24 AM)
Darrell Norton
   (7/1/2005 9:17 PM)
Darren Neimke
   (5/21/2006 6:49 PM)
Dave Balzer
   (5/13/2008 7:46 PM)
Dave Bettin
   (5/23/2005 11:58 PM)
Dave Burke
   (5/21/2006 6:50 PM)
Dave Donaldson
   (9/6/2006 5:12 PM)
Dave Konopka
   (12/23/2009 8:23 AM)
David Brabant
   (1/22/2009 5:12 AM)
David Cumps
   (9/17/2008 5:10 AM)
David Douglass
   (7/4/2010 10:53 AM)
David Godwin
   (8/17/2007 10:34 AM)
David Truxall
   (1/9/2009 7:29 AM)
Dboy Smith
   (6/30/2005 12:41 PM)
Derek Hatchard
   (1/3/2009 2:49 AM)
Devdutt Patnaik
   (1/3/2009 2:49 AM)
devel.oping.net
   (4/24/2006 9:19 AM)
DevPinoy.Org
   (6/9/2010 4:40 PM)
Dion Hinchcliffe
   (12/14/2009 12:35 PM)
DnnCart.com
   (11/7/2005 12:18 AM)
DnnCart.com
   (8/25/2005 12:03 AM)
dodned.de (Damir Tomicic)
   (10/20/2008 11:42 AM)
Don Browning
   (5/21/2006 6:52 PM)
Donald Hughes
   (3/29/2010 12:22 PM)
DonXML
   (3/26/2005 3:20 PM)
DonXML Demsak
   (5/22/2006 2:29 PM)
Doug King
   (11/16/2006 11:07 PM)
Doug Seven
   (3/30/2006 3:59 PM)
Douglas Reilly
   (6/17/2006 8:01 AM)
Duane Laflotte
   (1/27/2007 12:03 PM)
Dusty Davidson
   (10/14/2009 12:13 AM)
Edgar Sánchez
   (7/29/2010 3:27 PM)
Elliott Nash
   (6/7/2010 11:44 PM)
Emerging Technologies Group
   (8/21/2005 8:39 PM)
Entrance Software
   ()
Erik Porter
   (2/16/2009 1:28 PM)
Ernst Kuschke
   (2/21/2009 11:40 PM)
Eugene K
   (9/21/2009 7:00 AM)
Fabrice Marguerie
   (7/4/2010 4:56 AM)
Famil Jones
   (1/3/2009 2:58 AM)
fengzhimei
   (1/3/2009 2:58 AM)
Fergal Reilly
   ()
Fons Sonnemans
   (7/22/2010 3:06 AM)
Forest Blog
   (2/6/2009 5:39 AM)
Frank Hileman
   (7/27/2010 8:47 AM)
Frans Bouma
   (5/29/2010 7:04 AM)
Fredrick J Sahaya
   (4/26/2010 4:39 AM)
Freek Leemhuis
   (5/5/2010 10:20 AM)
G. Gnana Arun Ganesh
   ()
Gareth
   (7/21/2010 8:34 PM)
Gaston Milano
   (4/22/2010 8:57 PM)
Gavin Donoho
   (8/27/2006 1:11 PM)
Gavin Stevens
   (4/26/2004 3:48 PM)
Giorgio Sardo
   (2/17/2009 12:43 AM)
gojko
   (7/26/2010 12:52 PM)
Grant Killian
   (6/11/2005 3:23 AM)
Greg Hurlman
   (3/23/2007 10:31 AM)
Greg Robinson
   (6/4/2010 5:53 AM)
Greg Shackles
   (7/26/2010 9:56 AM)
hammett
   (2/2/2006 9:57 AM)
hannan
   (2/21/2010 9:20 PM)
Hannes Preishuber
   (5/26/2010 11:32 AM)
Hernan Garcia
   (7/8/2010 10:20 PM)
Hieu Pham
   (3/21/2009 6:04 AM)
Holly Styles
   (3/1/2010 9:11 AM)
Huang
   (7/11/2010 10:09 AM)
Huw Collingbourne
   (7/23/2010 1:02 PM)
Igor Milovanovic
   (9/14/2004 9:01 AM)
Igor Milovanović
   (4/13/2010 3:44 AM)
Issam Elbaytam
   (1/3/2009 3:06 AM)
Iwan Taljaard
   (1/30/2005 9:42 AM)
J. Ambrose Little
   (5/21/2006 6:57 PM)
J. Frank Carr
   ()
James Avery
   (9/18/2009 6:37 AM)
James Steele
   (10/22/2009 10:32 AM)
Jan Tielens
   (6/16/2010 7:52 AM)
Jan-Cornelius Molnar
   (4/14/2007 10:41 AM)
Janiv Ratson
   (5/25/2010 3:18 PM)
Jason Alexander
   (1/3/2009 3:07 AM)
Jason Gorham
   (1/7/2007 6:27 PM)
Jason Haley
   (7/7/2005 12:48 AM)
Jason Nadal
   (1/3/2009 3:07 AM)
Jason Olson
   (12/19/2009 10:46 AM)
Jason Row
   (6/4/2009 1:44 PM)
Jason Salas
   (5/21/2006 6:59 PM)
Jason Stangroome
   (4/28/2007 10:00 PM)
Jason Stangroome
   (4/22/2010 12:11 AM)
Jay Kimble
   (7/6/2005 2:47 AM)
Jeff Julian
   (6/29/2010 9:06 AM)
Jeff Key
   (1/3/2009 3:09 AM)
Jeff Perrin
   (4/21/2007 7:35 PM)
Jeff Putz
   (7/25/2010 11:47 PM)
Jeroen van den Bos
   (8/2/2007 8:56 AM)
Jerry Coder
   (6/16/2005 1:18 AM)
Jerry Dixon
   (6/22/2005 7:13 AM)
Jesse Ezell
   (5/4/2010 6:12 PM)
JetBrains, Inc.
   (7/27/2010 9:09 PM)
Jim Cheseborough
   (8/22/2006 11:59 AM)
Jim Martin
   (5/10/2005 11:00 AM)
Joe Sroczynski
   (1/26/2009 8:37 PM)
Joel Jeffery
   (7/22/2010 5:32 AM)
Johan Danforth
   (7/5/2010 5:15 AM)
John Papa
   (5/22/2008 7:40 AM)
John Qin
   (6/30/2005 1:21 AM)
John Sheehan
   (6/22/2010 2:26 PM)
John Tobler
   (10/24/2009 9:39 PM)
Jon Galloway
   (7/14/2010 12:28 AM)
Jon Yates
   (11/13/2009 2:53 PM)
Jonathan McCracken
   ()
Jørn Aakre
   (2/22/2007 9:55 PM)
Jose Lamas Rios
   (2/21/2007 5:27 AM)
Joseph Cooney
   (3/29/2005 9:02 PM)
Josh Evitt
   (11/16/2005 2:17 PM)
Josh van Eikeren
   (4/8/2009 11:10 AM)
Joydip Kanjilal
   (4/13/2010 6:55 AM)
Juozas
   (3/2/2009 1:58 PM)
Justin Rogers
   (11/13/2009 2:55 PM)
Juval Lowy
   (2/16/2007 3:01 PM)
K. Scott allen
   (7/25/2010 9:04 PM)
Kathy Nguyen
   (7/19/2010 2:48 AM)
Keith A. Barrows
   (2/25/2010 2:25 PM)
Keith Oliver Rull
   (5/18/2005 2:38 PM)
Keith Oliver Rull
   (6/9/2010 3:31 PM)
Ken Brubaker
   (7/25/2008 2:45 PM)
Kent Tegels
   (2/14/2007 12:26 PM)
Kevin Blakeley
   (7/6/2005 9:32 PM)
Kevin Daly
   (1/3/2009 3:15 AM)
Kevin Harder
   (12/23/2007 4:24 PM)
Kevin Potgieter
   (8/21/2005 11:17 AM)
Kiran
   ()
Kiruthik Nandha Kumar
   (7/13/2010 8:59 AM)
Klaus Aschenbrenner
   (4/12/2006 9:20 AM)
Kouroushi Bros Ltd
   (7/13/2010 11:25 PM)
Krishna Kumar
   (7/6/2005 9:32 PM)
Kyle Hebb
   (1/3/2009 3:17 AM)
Laimonas Simutis
   (2/4/2005 11:06 AM)
Laimonas Simutis
   (2/9/2009 4:21 PM)
Lamont Harrington
   (6/21/2005 3:00 PM)
Lance Hunt
   (5/4/2010 10:03 PM)
Lance Robinson
   (3/23/2010 6:14 AM)
Loren Halvorson
   (6/29/2010 9:16 AM)
Lorenzo Barbieri
   (11/13/2009 2:58 PM)
Luke Woodard
   (3/8/2007 7:09 PM)
Mack D. Male
   (8/17/2009 7:37 PM)
Mack D. Male
   (8/20/2005 9:53 PM)
Marcie Robillard
   (4/1/2010 1:28 PM)
Marco Russo
   (7/15/2006 1:59 AM)
Marcus Mac Innes
   (10/7/2008 9:57 AM)
Mark Brown
   (8/14/2004 7:22 PM)
Mark Frantz
   (4/25/2007 6:40 PM)
Mark Levison
   (6/10/2005 6:50 AM)
Mark Nilsen
   (2/19/2007 12:04 AM)
Marlon Ribunal
   (7/8/2010 5:26 PM)
Marlon Ribunal
   (3/9/2009 8:50 AM)
Martin Hey
   (7/28/2010 7:51 AM)
Martin Jarvis
   ()
Martin Spedding
   (5/21/2006 7:08 PM)
Mathew Nolton
   (5/15/2009 11:49 AM)
Matt Davey
   (5/21/2006 7:08 PM)
Matt Hawley
   (4/13/2010 8:36 AM)
Matt Watson
   (1/2/2010 8:50 AM)
Matthew Deiters
   (3/2/2006 2:30 PM)
Matthew Marksbury
   ()
Mauricio Scheffer
   (7/28/2010 4:42 PM)
Mehran Nikoo
   (7/7/2009 9:07 AM)
Memi Lavi
   (5/21/2006 7:09 PM)
Michael Ceranski
   (7/15/2010 7:23 PM)
Michael Freidgeim
   (7/23/2010 4:34 PM)
Michael Herman
   (11/2/2007 5:42 AM)
Michael Mello
   (9/15/2004 7:52 AM)
Michael Palermo
   (12/30/2009 8:44 AM)
Mickey Gousset
   (7/28/2009 7:45 AM)
Mike Diehl
   (6/1/2010 1:23 PM)
Mike Griffin
   (7/25/2010 9:15 PM)
Mike Kolitz
   (3/26/2005 4:04 PM)
Mike Richardson
   (3/13/2006 5:01 PM)
Milan Negovan
   (6/23/2010 9:06 PM)
Minh T. Nguyen
   (3/10/2010 9:53 PM)
Mitch Denny
   (7/25/2010 4:41 AM)
Mohammad Ashraful Alam
   (3/19/2010 3:48 AM)
Mohammad Hajjar
   (5/5/2008 9:26 PM)
Morten
   (9/17/2009 9:08 PM)
Morten
   (8/2/2006 4:58 PM)
Morten Abrahamsen
   (12/10/2009 3:54 AM)
Morten Christensen
   (8/8/2006 1:36 PM)
Morten Nielsen
   (1/30/2008 10:51 PM)
Mugambar
   ()
Nards Ocampo
   (6/23/2008 3:58 AM)
Nathan Maffeo
   (10/25/2006 11:00 AM)
Natty Gur
   (2/21/2010 8:41 AM)
Neno Loje
   (2/6/2009 10:06 PM)
Nick Grattan
   (5/5/2006 3:33 AM)
Nik
   (2/16/2007 5:37 AM)
Nikhil Kothari
   (7/11/2010 10:37 PM)
Notorious N.E.R.D
   (3/11/2010 11:20 AM)
odalet
   (10/25/2006 7:04 AM)
odalet
   (2/14/2010 10:14 AM)
Oddur Magnusson
   (1/3/2009 3:28 AM)
Oisin Grehan
   (7/26/2010 3:11 PM)
Oliver Sturm
   (7/21/2010 6:05 AM)
Ondrej Svacina
   (6/6/2010 9:06 AM)
ozba
   (5/26/2010 8:21 AM)
P.J. van de Sande
   (2/24/2009 2:16 AM)
pablo
   ()
Paschal L
   (1/26/2010 8:10 AM)
Pasi Heinonen
   ()
Patrick Steele
   (6/18/2010 12:13 PM)
Patrick Tisseghem
   (1/3/2009 4:59 AM)
Patrik
   ()
Patrik Hägne
   (4/21/2009 3:21 PM)
Paul Bartlett
   (4/25/2007 6:24 AM)
Paul D. Murphy
   (6/26/2006 10:35 AM)
Paul Edwards
   (4/21/2006 10:20 AM)
Paul Fallon
   (10/24/2009 4:07 PM)
Paul Irwin
   ()
Paul Laudeman
   (6/15/2005 8:09 AM)
Paul Litwin
   (3/30/2009 9:54 PM)
Paul Louth
   ()
Paul Mendoza
   (10/17/2008 9:28 PM)
Paul Mooney
   (5/31/2009 2:12 PM)
Paul Wilson
   (8/9/2009 10:27 AM)
Peter Jausovec
   (4/25/2006 7:15 AM)
Peter Koen
   (5/21/2006 6:25 PM)
Peter Van Ooijen
   (5/16/2005 2:16 AM)
Phil Winstanley
   (5/10/2010 1:01 AM)
Philip Rieck
   (6/11/2009 2:21 PM)
Pierre Greborio
   (4/4/2007 7:01 PM)
Pieter Germishuys
   (9/5/2009 12:08 AM)
Ralfs Sudelbücher
   (7/27/2010 1:32 AM)
Randy Holloway
   (3/26/2005 2:56 PM)
Ravikanth
   (4/28/2009 9:38 AM)
Raymond Lewallen
   (1/3/2009 5:06 AM)
Razor
   (7/6/2005 9:43 PM)
Reed Copsey, Jr.
   (7/19/2010 6:46 PM)
Reggie Burnett
   (7/27/2010 3:31 PM)
Reggie Burnett
   (3/4/2008 1:24 PM)
Richard Jonas
   (12/24/2006 12:21 AM)
Richard Jonas
   (10/17/2007 3:26 AM)
Rick Minerich
   (7/23/2010 1:37 PM)
Rick Smit
   (10/29/2004 12:46 AM)
Rickard Lindberg
   (5/7/2004 2:48 PM)
Rob Chartier
   (7/21/2010 11:05 AM)
Rob Tillie
   (2/2/2006 8:33 AM)
Robert Baiumann
   (5/7/2007 9:55 AM)
Robert Hurlbut
   (9/17/2009 12:30 PM)
Robert Lair
   (6/21/2008 4:08 PM)
Robert McLaws
   (1/3/2009 5:11 AM)
Robert McLaws
   (1/25/2008 11:37 AM)
Robert Sharp
   (2/16/2007 3:57 PM)
Roland Weigelt
   (7/4/2010 7:30 AM)
Ron White
   ()
Roy J. Salisbury
   (3/4/2006 4:38 PM)
Roy Osherove
   (7/23/2010 10:48 PM)
Russ Nemhauser
   (6/22/2005 11:03 PM)
Russell East
   (3/13/2010 11:55 PM)
Ryan Dawson
   (10/31/2007 12:45 PM)
Ryan Farley
   (5/6/2010 1:56 PM)
Ryan Rinaldi
   (3/29/2010 5:53 AM)
Sahil Malik
   (8/24/2006 7:42 PM)
Sam Gentile
   (7/16/2006 12:43 AM)
Sam Gentile
   (5/24/2010 1:03 PM)
Sanjeeb Sarangi
   (11/16/2006 10:40 PM)
Scott Cadillac
   (10/5/2006 9:52 AM)
Scott Cadillac
   (10/12/2007 6:34 PM)
Scott Kuhl
   (3/1/2010 11:51 AM)
Scott Munro
   (1/3/2009 5:16 AM)
Scott Sargent
   (7/17/2007 3:02 PM)
Scott Schecter
   (7/1/2010 3:45 PM)
Sean McCormack
   ()
Sebastian Weber
   (5/21/2006 6:31 PM)
Senkwe
   (5/17/2006 4:04 AM)
Senthil Kumar B
   (7/26/2010 9:35 PM)
Serg
   (7/30/2009 8:21 AM)
Sergey Zhikharev
   (10/22/2008 7:36 AM)
Simone Busoli
   (8/6/2007 10:23 AM)
Softwaremaker
   (5/30/2010 11:05 PM)
Srila Technologies
   (7/2/2010 7:29 PM)
Sriram Vaidyanathan
   (3/30/2010 12:54 PM)
Steele Price
   (10/10/2009 2:25 PM)
Stefan Cullmann
   (5/22/2005 4:27 AM)
stefan demetz
   (5/5/2009 9:02 AM)
Stefano Demiliani
   (6/16/2005 1:43 AM)
Stephen Kinsey
   (7/16/2008 2:53 AM)
Steve
   (7/10/2010 3:24 PM)
Steve Eichert
   (6/20/2005 10:03 PM)
Steve Kapsinow
   (5/21/2006 6:33 PM)
Steve Schofield
   (7/29/2010 8:28 PM)
Steven M. Cohn
   (6/21/2007 6:00 PM)
Stuart Radcliffe
   (1/3/2009 5:19 AM)
Stuart Radcliffe
   (5/27/2004 12:17 AM)
StuartGunter
   (6/23/2005 9:36 PM)
Sudhakar Sadasivuni
   (5/21/2006 6:34 PM)
sumit gupta
   ()
Suresh Behera
   (5/22/2010 2:22 AM)
Sushila Patel
   (5/26/2007 11:02 AM)
Sven Cipido
   (6/1/2010 11:11 AM)
Team System Blog
   (10/7/2008 6:38 AM)
Tejas Patel
   (2/4/2005 3:45 AM)
Thea Burger
   (9/19/2008 7:00 AM)
Thom Allen
   (10/13/2004 2:15 PM)
Thomas Skovsende
   (5/15/2010 3:49 AM)
thomas woelfer
   (4/9/2010 3:12 AM)
Tim Hibbard
   (6/21/2010 12:30 PM)
Tim Murphy
   (3/6/2007 5:45 AM)
Tim Murphy
   (7/21/2010 9:54 AM)
Tim Weaver
   (6/4/2008 5:57 PM)
Timur Fanshteyn
   ()
TK's Blog
   (1/6/2009 5:01 AM)
TOM_MUE
   (1/19/2008 9:28 AM)
uber
   (1/3/2009 5:24 AM)
Udi Dahan - The Software Simplist
   (7/24/2010 2:03 PM)
Vasanth Dharmaraj
   (11/9/2005 5:31 AM)
Victor Garcia Aprea
   (2/4/2009 4:39 PM)
Vijay
   (1/16/2005 10:18 PM)
VSTSBlog (by Neno Loje)
   (7/21/2010 9:56 AM)
Wallace B. McClure
   (7/29/2010 10:11 AM)
Warnar Boekkooi
   (1/3/2009 5:26 AM)
Wes Haggard
   (2/24/2010 1:55 PM)
Willem Odendaal
   (6/24/2005 12:38 AM)
Willy David Jr
   (7/25/2008 2:35 AM)
woaychee
   (2/11/2010 6:38 AM)
XAML Blogs
   (11/13/2004 11:20 AM)
Yezdaan Baber
   (6/9/2008 7:16 PM)
Yuri Gorobets
   (3/27/2005 5:06 PM)
Yves goeleven
   (7/14/2009 9:46 AM)
Zeeshan Umar
   ()



 
SUS or WSUS 70-291? Can anyone tell me if ... (3579 views)
Amanda - Posted 7/29/2010 8:40 PM
[1.] SUS or WSUS 70-291? Can anyone tell me if the 291 exam questions relate to the old redundant SUS or the new WSUS or will I have to cover both to be safe? (3579 views)

Poshnet DNS CMDLet and DNS lookup script
Steve Schofield - Posted 7/29/2010 8:28 PM

I was recently tasked with writing a script to resolve a few domains.  I hit the internet and found the perfect cmdlet posted by Joel Bennett.   The original code was posted on www.codeproject.com  which Joel converted to a cmdlet.  Thanks for having smart people willing to share stuff like this.  My script is an attempt to give back and how I used it. 

My script accepts a domain, resolves the IP(s) used in DNS, runs an HTTP Get on the host name and / or hostname with WWW.  It returns a status code, the AbsoluteURI.  This is handy when you are processing 100's of domains trying to determine if they are valid.  PS - One of my favorite features is the EmulateDig option.   DIG is my favorite tool for DNS stuff. Thanks Joel!

#Here is the script

param
(
# [String] $DNSConfigFileList = $(throw "Please specify the external text file of domain names to lookup"),
#Sample Syntax

 #.\Get-DNSLookup.ps1 www.iislogs.com C:\Temp\Log.txt 192.168.1.40
 [String] $Domain = $(throw "Please specify the domain to lookup"),
 [String] $DNSLogFileAndPath = $(throw "Please specify the path where you want results logged"),
 [String] $DNSServer = $(throw "Please specify the DNS Server used for performing external queries. i.e It has to be an ip address, not server name")
)

#Example of using a text file of domain names
#$DomainList = Get-Content C:\Temp\CompleteList.txt

function Log-Information
{

 param
 (
  $Information
 )

 Add-Content $DNSLogFileAndPath $Information
}

function Get-DNSRecords
{
 param
 (
  $Domain,
  $DNSQueryResult
 )
 if($DNSQueryResult.Error.Length -ne 0)
 {
  Log-Information "There was an error with $($Domain)"
 }
 
 $DNSPublicationCount = $DNSQueryResult.Answers.Count
 if($DNSPublicationCount -eq 0)
 {
  $IsProblem = $true
  Log-Information "$($Domain):DNSPublicationCount is zero"
 }
 else
 {
  $arrIPs = "$($Domain)"
  for($i=0; $i -lt $DNSPublicationCount; $i++)
  { 
   
   $DNSIPA = $DNSQueryResult.Answers[$i].Record
   $DNSIPB = $DNSIPA.Address.IPAddressToString
   
   if($DNSIPA.Address.IPAddressToString -ne $null)
   {
    $arrIPs += ",$($DNSIPB)"
   }  
  }
  
  $WebResult = Get-WebResponse $Domain
  Log-Information "$($arrIPs),$($WebResult)"
 } 
}

function Get-WebResponse
{
 param
 (
  [string]$URL
 )

 #Try the host name first
 try
 {
  $Request = [System.Net.WebRequest]::Create("http://$URL")
  $Response = $request.GetResponse()
  $RequestStream = $response.GetResponseStream()
  $ReadStream = new-object System.IO.StreamReader $requestStream
  $Results = $readStream.ReadToEnd()
  $ReadStream.Close()
  $Response.Close()

  $AbsoluteUri = $Response.ResponseUri.AbsoluteUri
  $StatusCode = $Response.StatusCode.value__
  return "$($StatusCode),$($AbsoluteUri)"
 }
 catch
 {
  #Try with the WWW domain
  try
  {
   $Request = [System.Net.WebRequest]::Create("http://www.$URL")
   $Response = $request.GetResponse()
   $RequestStream = $response.GetResponseStream()
   $ReadStream = new-object System.IO.StreamReader $requestStream
   $Results = $readStream.ReadToEnd()
   $ReadStream.Close()
   $Response.Close()

   $AbsoluteUri = $Response.ResponseUri.AbsoluteUri
   $StatusCode = $Response.StatusCode.value__
   return "$($StatusCode),$($AbsoluteUri)"
  }
  catch
  {
   return "$($StatusCode),$($AbsoluteUri)"
  }  
 }
}

function Clear-DNSCache
{
 $command = "c:\Windows\System32\dnscmd.exe /clearcache"
 Log-Information "running command:$command"
 Invoke-Expression $command
}

#Load the PoshNet Get-DNS snapin
#Make sure to download Poshnet CMD from
#
http://huddledmasses.org/powershell-dig-nslookup-cmdlet/ 
#You need to install before running this script

Add-PSSnapIn PoshNet

#Clear DNS Cache on the server, assuming it's local to the machine running the script
#The DNS service is assumed to be run local

Clear-DNSCache

#Loop through the domains on the
#foreach($Domain in $DomainList)
#{
# $DNSQueryResult = Get-Dns -Name $Domain -DnsServers $DNSServer
# Get-DNSRecords $Domain $DNSQueryResult
#}


#Run a single query against one domain

$DNSQueryResult = Get-Dns -Name $Domain -DnsServers $DNSServer
Get-DNSRecords $Domain $DNSQueryResult

Write-Host "Done"


A quick and dirty implementation of Excel NORMINV function in C#
Edgar Sánchez - Posted 7/29/2010 3:27 PM

We are piloting the implementation of some financial risk models in F#, it so happens that the models are already implemented in Excel, so I was slowly digging out the formulas in the cells and translating them to F#. Everything was going fine until I found out that some formulas used the NORMINV function which doesn't exist in the .NET libraries. I started to look for F#, and then C#, implementations without luck (as we are just in the lets-see-if-this-have-any-chance-of-flying stage, we can’t afford any of the excellent but paid numerical libraries for .NET). The closest thing I found was a C++ implementation. The code looked really weird to me (my fault, not the coder's), so I decided to do the translation in two steps: first from C++ to C#, then on to F#. The C# translation seems to be working now, and you can download it from SkyDrive:

Please be aware that:

  1. I am not an expert in statistics by any stretch of imagination
  2. Ditto for numerical methods
  3. I have made only a handful of very basic tests

Having said that, the function *seems* to be working so I hope it will help somebody Sonrisa.


MonoTouch Book is out
Wallace B. McClure - Posted 7/29/2010 10:11 AM

MonoTouchOur MonoTouch Book is out.  It was great working with Chris Hardy, Craig Dunn, Martin Bowling, and Rory Blyth on this book.  With this book, you'll be able to use your existing knowledge of .NET to target the Apple iPhone.


What .NET C# developers need to enter the hot field of iPhone apps

iPhone applications offer a hot opportunity for developers. Until the open source MonoTouch project, this field was limited to those familiar with Apple’s programming languages. Now .NET and C# developers can join the party. Professional iPhone Programming with MonoTouch and .NET/C#is the first book to cover MonoTouch, preparing developers to take advantage of this lucrative opportunity.

This book is for .NET developers that are interested in creating native iPhone applications written in .NET/C#. These developers want to use their existing knowledge. While .NET developers are always interested in learning, they also recognize that learning Objective-C and the specifics of the iPhone can be overwhelming. Those developers interested in MonoTouch will recognize that the cost of MonoTouch is easily made up by the ability to quickly target the iPhone using a language that they are already familiar with.

This book is designed for .NET developers that want to target the iPhone. It is designed to help you get up to speed with the iPhone, not to really teach you about the .NET Framework or C# language, which we assume you already know.

This book is designed with introductory material in Chapters 1 thru 4. You should read Chapters 1 thru 4 sequentially. These chapters introduce the MonoTouch product, the basics of developing with MonoTouch and MonoDevelop, and finally, the basics of presenting data to a user with screen and data controls and how to develop a user interface for the iPhone. Once you are comfortable with these concepts, you can typically move from one chapter to another and not necessarily have to read the chapters sequentially.

  • Chapter 1 "Introduction to iPhone Development with MonoTouch for C# Developers"This chapter looks at how the largest segment of developers can target the smartphone with the highest mindshare, and that the smartphone is growing faster in marketshare than any other device.
  • Chapter 2 "Introduction to MonoTouch"gives you a firm foundation in MonoTouch, MonoDevelop, Interface Builder, debugging, and deploying.
  • Chapter 3 "Planning Your App's UI: Exploring the Screen Controls"teaches you about creating your application's UI and specifically how the UI on the iPhone can differ from UIs that you might have created before. You also explore the Input & Value objects from the Interface Builder Objects Library.
  • Chapter 4 "Data Controls" shows the Interface Builder Objects Library Cocoa Touch classes for Controllers, Data Views, and Windows, Views, & Bars.
  • Chapter 5 "Working with Data on the iPhone"looks at the SQLite database engine as well as strategies to store data off the device on a central server through SOAP and REST (using XML and JSON) without tying up the user interface.
  • Chapter 6 "Displaying Data Using Tables"looks at displaying information in a table, using tables for navigation, taking advantage of UITableView's built-in editing features, and adding a search bar to a table.
  • Chapter 7 "Mapping"covers CoreLocation and MapKit, using Location Services, and adding maps and geocoding to your application.
  • Chapter 8 "Application Settings"focuses on application settings, and looks at two aspects of settings for your MonoTouch app: the Info.plist and your settings bundle. It covers what settings you might want to set in your Info.plist and why, and then looks at what code it takes to read and use the settings that you save in the settings bundle. And it also takes you through the building of the settings that you might have in a social media-type application. Going through each step, you will examine the Root.plist inside the Property List Editor and see the settings dialog that will result from it.
  • Chapter 9 "Programming with Device Hardware" covers accelerometer device orientation, and proximity detection support, networking, and developing with battery life in mind.
  • Chapter 10 "Programming with Multimedia" discussing integrating images and the image picker, watching and recording videos, playing and recording audio, and using animation
  • Chapter 11 "Talking to Other Applications"discusses the ways you can use MonoTouch to talk to other applications on the iPhone, both Apple-built applications and those downloaded from the App Store. It also provides helpful ways of accessing the iPhone's Address Book and the iPod music library.
  • Chapter 12 "Localizing for an International Audience" first defines internationalization and localization, then shows displaying translated text and images, formatting dates, times, and numbers, then extracting text for translation.
  • Chapter 13 "Programming the iPad" the capabilities of the iPad are, what new APIs and controls have been introduced that you can use in iPad-specific applications, and how to build applications that can work on both iPad and iPhone devices.
  • Chapter 14 "Just Enough Objective-C" provides you with a reference and introduction to Objective-C that will help you acquire an ability to comprehend Objective-C which is something that will come in very handy.
  • Chapter 15 "The App Store: Submitting and Marketing Your App"discusses all things App Store. First, it talks about the process that you need to go through before you are ready to submit - this includes final testing with Ad-Hoc builds and a presubmission checklist. Next it addresses actually submitting to the App Store, and then finally what to do with your app after it's in the App Store. This chapter also touches on alternative monetization strategies such as ads or in app purchases.

A Word About Apple SDK License #3.3.1

There has been a lot of discussion about Apple's SDK licensing restrictions and how they effect MonoTouch.  As of the time of this writing, Apple has not rejected any apps that are written in MonoTouch for inclusion in the Apple App Store.

Blue Moon Burgers >> Nerd Lunch
Adron Hall - Posted 7/28/2010 11:16 PM
Tomorrow (Thursday) at Blue Moon Burgers in Fremont will be a nerd lunch. If you're interested you should definitely head over that way and introduce yourself.

Compiling LaTeX without a local LaTeX compiler
Mauricio Scheffer - Posted 7/28/2010 4:42 PM

 

I recently started working on my (long long overdue) master's thesis, and naturally I came to LaTeX for typesetting. As a LaTeX newbie*, I was pleased to find out that compiling LaTeX is just like compiling any program: there's a bunch of source code files (.tex) and resources (.bib, .sty, images) which you feed to preprocessors and compilers to yield a dvi/ps/pdf document. TeX is actually a turing-complete language, and LaTeX is a macro collection and a preprocessor for TeX.

There's even an online package repository!

And since writing LaTeX has so many similarities with writing code, even if you're just writing text and using existing LaTeX macros and not developing your own, some of the development practices can be applied here as well, like a build system, refactoring to keep the document manageable, version control, and continuous integration.

Continuous integration is nice not only because it asserts that the document is valid (yes, you can screw up TeX documents), but also you automatically get the resulting PDF as a build artifact. You could even hook a diff step in the process, to make reviews easier.

But finding a public continuous integration server is hard, not to mention one with a LaTeX distribution installed. Luckily, LaTeX compilation can be delegated to a remote server, thanks to CLSI (Common LaTeX Service Interface). So all the integration server has to do is forward a compilation request to the CLSI server when it detects changes in the VCS.

clsi (1)

The arrow directions in the graphic indicate information flow, and the numbers order the actions.

How you implement this depends on what the integration server supports. For example, if it's Windows you can send a manually assembled compilation request (it's a simple XML) with a JScript script.

You can also use a CLSI server as a replacement for a local LaTeX installation. In that case you have to send the actual .tex file contents instead of just an URL, wrapped in a CLSI XML compilation request. I wrote a simple CLSI client in F# to do this, so a compilation script looks like this:

I'm using git and github for version control and ScribTeX's CLSI server, which is the only public CLSI server I have found so far. Kudos to ScribTeX for that! It's very fast (even faster than compiling locally!) and open source.

If you just want an online editor with integrated revision control and preview, check out ScribTeX's editor.

Also worth checking out is LaTeX Lab, a very cool open source, online LaTeX editor for Google Docs, by the same guy that developed CLSI (Bobby Soares).  It's currently on a preview release but it's very usable.

* Actually, I did use LaTeX several years ago, but I did so through LyX, which combines LaTeX with WYSIWYG, so I didn't really learn LaTeX.



Erstellung einer StartRemoteProcess-Build-Activity
Martin Hey - Posted 7/28/2010 7:51 AM
Die neuen Build-Workflows für den Team Foundation Server sind ein cooles Feature. Und wenn man Standard-Projekttypen verwendet funktioniert das auch alles super, da in den meisten Fällen Copy&Paste-Deployment ausreichend ist.
In meinem Anwendungsfall war es notwendig, am Ende des Builds eine Activity auszuführen, die auf einem Remote-Server (z.B. Integrationssystem) einen Prozess startet. Eine solche Activity habe ich im Standard nicht gefunden. Daher hab ich selbst eine geschrieben.
Eine eigene Activity zu erstellen ist gar nicht so schwer. Einen guten Einstieg geben die Posts von Jim Lamb und Ewald Hofman. Bei der Entwicklung der Activity hat sich die Projektaufteilung von Ewald als sehr praktisch erwiesen. Nur so war es mir möglich, die selbst erstellte Activity dem Workflow dann auch hinzuzufügen.
Um einen Prozess zu starten, sind folgende Informationen notwendig:
  • Name oder IP-Adresse des Remote-Servers
  • auszuführendes Command
  • Credentials (abweichend vom TFS-Service-Account)
Daher erhält die Activity in Summe fünf Input-Argumente: Command, RemoteMachine, Domain, UserName und Password. Damit sieht der Rumpf der Actitvity wie folgt aus:
[BuildActivity(HostEnvironmentOption.All)]
public sealed class StartProcessOnRemoteMachine : CodeActivity
{
[RequiredArgument]
public InArgument<string> Command
{
get;
set;
}

[RequiredArgument]
public InArgument<string> RemoteMachine
{
get;
set;
}

[RequiredArgument]
public InArgument<string> Username
{
get;
set;
}

[RequiredArgument]
public InArgument<string> Password
{
get;
set;
}

[RequiredArgument]
public InArgument<string> Domain
{
get;
set;
}
}
Bei der Implementierung sollte man sich überlegen, so sensible Daten wie Credentials ggf. anders abzubilden als per Input-Parameter - für dieses Beispiel soll diese Lösung aber ausreichend sein, damit es nicht zu komplex wird. Die eigentliche Arbeit übernimmt dann die im folgenden dargestellte Methode ExecuteProcessOnRemoteMachine, die per WMI einen Prozess auf einem anderen Rechner startet. Dazu ist es notwendig, die Assembly System.Management zu referenzieren.
private static void ExecuteProcessOnRemoteMachine(string remoteMachine, string username, string password, string domain, string commandLine)
{
ConnectionOptions connectionOptions = new ConnectionOptions();
connectionOptions.Authority = "ntlmdomain:" + domain;
connectionOptions.Username = username;
connectionOptions.Password = password;
connectionOptions.Authentication = AuthenticationLevel.Default;
connectionOptions.Impersonation = ImpersonationLevel.Impersonate;
connectionOptions.EnablePrivileges = true;

ManagementScope managementScope = new ManagementScope(string.Format(@"\\{0}\ROOT\CIMV2", remoteMachine), connectionOptions);
managementScope.Connect();

ManagementPath managementPath = new ManagementPath("Win32_Process");
ManagementClass processClass = new ManagementClass(managementScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = commandLine;

ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
}
Der Rest ist trivial: In der Methode Execute werden die Input-Parameter entgegengenommen und an die Methode ExecuteProcessOnRemoteMachine übergeben.
protected override void Execute(CodeActivityContext context)
{
string startProcessCommand = context.GetValue(this.Command);
string remoteMachine = context.GetValue(this.RemoteMachine);
string username = context.GetValue(this.Username);
string password = context.GetValue(this.Password);
string domain = context.GetValue(this.Domain);


ExecuteProcessOnRemoteMachine(remoteMachine, username, password, domain, startProcessCommand);
}
Die Activity wird nun in den Workflow eingebunden und die notwendigen Daten bereitgestellt.
Am Ende des Builds werden nun die Dateien aus dem DropFolder genommen und mittels der Standard-Activity CopyDirectory auf den Integrationsserver kopiert. Die neu erstellte Activity führt dann die Installation durch.

SharePoint 2010 Site Templates – A Detailed Journey (Part 1)
Bil Simser - Posted 7/27/2010 11:37 PM

A tweet came up tonight that I thought I would get my lazy butt doing something about:

image

I pointed @tareqsartawi to @toddbaginski’s post Which SharePoint 2010 Site Template Is Right For Me? and while Todd does go over the templates and gives a brief rundown of them, there’s not a lot of meat to what you get with each template.

So for Tareq (and anyone else who’s out there) here’s a more detailed breakdown of the site templates in SharePoint 2010.

This is part 1 of a four-part post as I got past the 2 hour mark and decided I would call it quits with the initial templates. I’ll follow it up with additional posts to complete all of the template descriptions and notes (and link everything together to make it a happy-happy-joy-joy world we live in).

Note, this is a list of the templates you get with SharePoint Server 2010. For SharePoint Foundation 2010, you’ll only find a subset of what you see here (but there’s nothing Foundation has that Server doesn’t). Also there are some templates that will only appear after activating certain site or site collection features. I’ll cover some of those in a bonus post later. Clear as mud?

Creating Sites

When you create a new site you’ll see the new create dialog like the one below (there’s a regular HTML version but you really want to install Silverlight on your client to get the rich UI experience).

image

Each category along the site lets you filter down the template selections and selecting any template gives a brief description to give you an idea of what the template is about.

Here’s the rundown on what’s available out of the box (and what is covered in what blog post):

  • Blank & Custom
    • Blank Site (This Post)
    • Personalization Site (Part II)
  • Collaboration
    • Team Site (This Post)
    • Document Workspace (This Post)
    • Group Work Site (This Post)
    • Enterprise Wiki (This Post)
  • Content
    • Document Workspace (This Post)
    • Blog (This Post)
    • Document Center (Part II)
    • Publishing Site (Part II)
    • Publishing Site with Workflow (Part II)
    • Enterprise Wiki (This Post)
    • Visio Process Repository (Part II)
  • Data
    • Records Center (Part II)
  • Meetings
    • Basic Meeting Workspace (Part IV)
    • Blank Meeting Workspace (Part IV)
    • Decision Workspace (Part IV)
    • Social Meeting Workspace (Part IV)
    • Multipage Meeting Workspace (Part IV)
  • Search
    • Basic Search Center (Part II)
  • Web Databases
    • Assets Web Database (Part III)
    • Charitable Contributions Web (Part III)
    • Contacts Web Database (Part III)
    • Issues Web Database (Part III)
    • Projects Web Database (Part III)

There’s some duplication above in the categories but out-of-the-box you get 23 templates (3 new site templates, 5 new site templates based on Access databases). For more details about what’s been added, removed, and updated as far as templates go please see Todd’s original post.

Select a template, enter a title and a url, and click Create and you’re off to the races. If that’s all you need you can be creating sites in no time. Each template has it’s share of not only a look and feel, but also what content is pre-loaded on the site and in some cases, what features are activated as a result of creating that site which light up the site and offer the user some options. For the most part any feature on the system can be applied to any site so it almost doesn’t matter what template you start with, but there are some exceptions and we’ll note them as we go along.

If you want a little more control when you create your site, clicking on More Options brings up a second dialog that lets you enter, well, more options:

image

The options are the same no matter what template you choose and I couldn’t find any way to build something that would you let amend options here. Would be nice in the future. The only real advantage here is that you can break permissions on the site before it gets created and use the top link bar from the parent site (which is turned off by default for new sites). Any of these can be done after the site is created anyways.

Note that these dialogs appear in a popup when you select Create Site from the Site Actions menu. If you go the route of Site Settings > Site Administration > Sites and Workspaces then click Create you’ll see this screen in the browser (not a popup):

image

This is the more traditional screen you might be used to from 2007. The templates and choices are all the same and this screen offers changing all options, much like the More Options dialog from above. How you create your sites is up to you, typical SharePoint there are just several routes to get to the same path.

Alright, let’s get down and dirty with each template.

Blank Site

“A blank site for you to customize based on your requirements.”

image

The core of any SharePoint site, the blank site. So simple and elegant yet devoid of any content. Basically a site you can turn into anything by lighting it up with features. Personally when we build “applications” in SharePoint this is the template we start with. The big difference from the “Blank” site template you got in 2007 is that this one really is blank and doesn’t come pre-loaded with a SharePoint logo dropped on your “blank” site like 2007 did.

Team Site

“A site for teams to quickly organize, author, and share information. It provides a document library, and lists for managing announcements, calendar items, tasks, and discussions.”

image

This template is perhaps one of the most used since SharePoint started using templates. Most everyone uses SharePoint for collaboration so this is one of the original collaboration tools out there. In 2010 many things are the same as they were in the 2007 Team Site template. You still have a Shared Documents library, a Calendar has been created, a Task list and a Team Discussion discussion board is here. With 2010 there are some major changes though that make it arguably a better collaborative environment it ever was.

First off everything is a wiki. Keep remembering that. Everything is editable. Remember when you created that first Team Site in 2007 and you wanted to start editing the page but found out you had to drop a content editor web part on the page, open up the right text editor, type something in, then click a few buttons to see what it all looked like? That’s not collaboration. That’s just plain painful.

The Team Site template, along with others, treats any page as a content page. Just click edit and start typing content. Want a picture on your site? Drop a media web part on it and upload it to the automatically created Site Assets library while you edit. Collaboration has never been as simple as this.

Getting back to the template itself, you’ll notice a few new libraries created. There’s a new Site Assets library which allows you to upload media (pictures, video, audio) to the site and use it on pages via the Media Web Part. There’s a Site Pages library that contains all your pages (including the home page) so as you create new content, just drop it in here. The Announcements, Calendar, Links, Tasks, and Discussions you got in 2007 are still created, they’re just not visible on any page so you’ll have to either add them yourself or use the Quick Launch to access them.

Note that the Getting Started section that’s added to the site is just content. It’s not a list behind it, it’s just HTML content that you can edit, delete, or use.

Document Workspace

“A site for colleagues to work together on a document. It provides a document library for storing the primary document and supporting files, a tasks list for assigning to-do items, and a links list for resources related to the document.”

image

The document workspace is pretty cheesy and basically a carry-over from 2007. It was always intended to be a site where you would collaborate around a single document (aggressively) and I always thought it would well in a publishing environment. Create the document, everyone works on it, there are discussions around it and tasks assigned to take care of parts of it.

There were even facilities in Word to attach the document to a workspace (or create the workspace) when you saved the document. However say in the last 5 years I have yet to create a site with this template, other than demos (and this blog post). Perhaps it could still work for say a manuscript with multiple authors or a manual or training guide but I think 2010 has more to offer with Document Sets than to use this aging template.

At least they got the Announcements web part on the home page.

Group Work Site

“This template provides a groupware solution that enables teams to create, organize, and share information quickly and easily. It includes Group Calendar, Circulation, Phone-Call Memo, the Document Library and the other basic lists.”

image 

If you remember 2007, there was an after-market release called Group Workspace Board. It was a Microsoft template and offered the ability to essentially create an in/out board site. Trouble is that it didn’t work very well, service packs sometimes broke it (or the server) and it was never upgraded. Well, it’s back (although I’m sure they rebuilt it from scratch so pay no attention to the comments above). Basically the Group Work Site is a uber-enhanced blank site with some content added (after all, isn’t that what *all* sites are?).

The Group Board is a pretty slick template and centers around a group calendar, which is really just a normal calendar but the regular Event content type has been removed and replaced with two new content types for 2010, Schedule and Reservations and Reservations. Basically if you’re looking to use SharePoint for a reservation system (reserving fleet vehicles, meeting rooms, books, or anything you want to track) then this template might work for you. At the very least, create one to see how the Group Calendar is setup and you can rebuild your own in your own site. It’s a nice Content Type that probably deserves its own post as there are a lot of great features you can get out of it.

Note that because the Group Calendar is really just a Calendar, you can connect it to Outlook but if you’re looking to use SharePoint as a meeting reservation system tied into the resources available in Outlook (like you might today) you’ll be out of luck. The two are not connected but they use the same terms so you might get confused over using them for the same purpose.

Enterprise Wiki

“A site for publishing knowledge that you capture and want to share across the enterprise. It provides an easy content editing experience in a single location for co-authoring content, discussions, and project management”

image

Remember everything is a wiki? Good. You’re still reading. Well, everything is a wiki but there’s still a template with the name Enterprise Wiki. I guess sticking “Enterprise” in front of something makes it that much more important?

The Enterprise Wiki is pretty much what you got in 2007 when you created a Wiki site. The old Wiki site template is gone and this stands in it’s place. Even though you can edit any page on a site, this template is specifically setup for building a wiki. While it can’t compete with Wikipedia, Confluence, or any of the *real* enterprise wiki’s out there it’s a nice place for putting together group notes about a subject. You could put together a blank site and just keep creating pages but then there’s the navigation element and having to deal with inserting hyperlinks onto pages, etc. The Wiki template stays true to the (albeit weird non-standard) Wiki mark-up SharePoint established in 2007 and lets you cheerfully link pages together with a simple [[My New Page]] mark-up.

In addition to what we already had in 2007, there are some new features that light up the Enterprise Wiki template. Namely ratings and categories. The rating system is the same that’s built into 2010 but it’s embedded on each page template along with a category picker. This allows you, after adding content to a larger site, be able to navigate content by popularity or categories (configured through the managed metadata services).

While the mark-up hasn’t changed much, a wiki page is just like any other page in SharePoint so you can embed pictures, video, tables, web parts, and SharePoint lists right onto the page. This makes the experience of building out a knowledge base using the Enterprise Wiki a more palatable experience and lets you be a little more creative without being overly constrained.

Blog

“A site for a person or team to post ideas, observations, and expertise that site visitors can comment on.”

image

Blogs are like wikis in SharePoint. They’re just OK and better than editing content editor web parts, but still fall short of a full blown blogging engine like dasBlog or WordPress. However in 2010 things have got a little better (don’t get too excited, I said a “little” better).

Overall the presentation is cleaner, looking more like a blog like we traditionally know it. Permalinks are native now and overall the blog template sucks a little less than 2007. Instead of editing the blog page right on the site, you’re forced to edit in a popup window with a diminished rich text editor. You can still insert images and video but it’s a little less seamless when you edit blog posts this way. Still the basics are there, categories and comments, RSS feeds and the ability to edit your blog from a blogging tool like Windows Live Writer or even Microsoft Word (and publishing from Word while giving an uneasy odd feeling, sucks a little less than it did).

While things are better than their 2007 counterparts you might still want to look at the Community Kit for SharePoint – Enhanced Blog Edition or customize the existing blog template if you want to focus on blogs in your organization. There are a lot of features in SharePoint 2010 that are native that really should be stock with the blog template. Why can’t I rate blog entries? Where are the tagging features? These things can all be done relatively easy even from the browser with no coding required. Just remember to save the template and make it available to your users (time for an Enterprise Blog template anyone?).

Wrap-up

Well, that’s it for now to get the ball rolling. Let me know your thoughts. Hope that gets things going and helps out. More templates to come later! Enjoy.


Running Code Coverage from the Console with dotCover
JetBrains, Inc. - Posted 7/27/2010 9:09 PM
As of the beta* of dotCover, we included a Console runner to run coverage using the command line, allowing for instance, setup of dotCover in a Continuous Integration environment. Let’s see how it works. *To get all these features in this post, you need to download the latest nightly build   Console Runner The Console runner is located under [...]

MySQL Connector/Net 6.3.3 (beta 2) has been released
Reggie Burnett - Posted 7/27/2010 3:31 PM
MySQL Connector/Net 6.3.3, a new version of the all-managed .NET driver for MySQL has been released. This is a beta release and is intended to introduce you to the new features and enhancements we are planning. This release should not be used in a production environment.  It is now available in More >

Disabling multitasking on iOS 4 apps
Alexandre Gomes - Posted 7/27/2010 11:50 AM
If you’re using the iOS 4 SDK then by default your app will be assumed to support multitasking even though you actually need to add support for it and you might not have done that (e.g. updating an old application). While multitasking seems nice it isn’t always the best scenario for your app, specially when [...]

VG.net 6.2 Released
Frank Hileman - Posted 7/27/2010 8:47 AM

VG.net designer in Visual Studio 2010

Today we released Version 6.2 of the VG.net vector graphics system. Changes include:

  • Visual Studio 2010 support.
  • The new Center Selection button, in the Drawing Toobar, pans the designer surface to center the selected Elements.
  • Double-clicking on a Group makes it the Active Group. When a Group is active, double clicking on the background deactivates the Active Group.
  • You can now make a nested Group the Active Group. The Group can be nested to any depth. Formerly, you could only make a top-level Group the Active Group.
  • Keyboard shortcuts for zooming and panning.
  • Use the new PixelSnapMode property, in the RenderAppearance class, to increase the clarity of thin lines, or the edges of rectangles, by snapping points to pixel coordinates. PixelSnapMode values:
    • None
    • Absolute: points are snapped to pixels by rounding absolute coordinates.
    • VectorCenter: a new, unique type of snapping. The Element's Center is snapped to a pixel point. Vectors from the Center to each point are then snapped to a pixel boundary. By snapping vectors rather than points, a small Shape improves its clarity and symmetry.
    • BoundsAbsolute: the upper left and lower right corner of the Element's Bounds are snapped by rounding their absolute coordinates. Interior points in a Polyline or Path are not snapped.
  • Visual Basic versions of some samples.
  • The ThemedRobot and ThemedRobotVB samples, in the Extras package, demonstrate how to use Groups, Rotation transformations, and TransformationReference settings to create a segmented robot arm.
  • Bug fixes.

Below are screenshots illustrating PixelSnapMode for small Shapes. First we created Shapes, all the same dimensions, then we zoomed out so the Shapes were no longer naturally aligned on pixel coordinates. From the left to the right, the following PixelSnapMode values were used: None, Absolute, Vector Center. Blown-up versions of the same images are on the second row.

PixelSnapMode None PixelSnapMode Absolute PixelSnapMode VectorCenter

PixelSnapMode None Zoomed PixelSnapMode Absolute Zoomed PixelSnapMode VectorCenter Zoomed

Notice how the VectorCenter PixelSnapMode keeps all small shapes at a consistent size, even though they are positioned at fractional pixel distances from one another. PixelSnapMode has no real benefit for Ellipses or Arcs; it is best for Shapes containing some straight lines. It is useful for larger Shapes as well. Below we show the effect of PixelSnapMode on larger Shapes. On the left is None, on the right is VectorCenter:

PixelSnapMode None PixelSnapMode VectorCenter


Event-Based Components – For Easier Software Design Say Goodbye to the Usual Object Orientation
Ralfs Sudelbücher - Posted 7/27/2010 1:32 AM
Have come to feel very uneasy with the usual object orientation. It simply does not deliver on its promises. That´s of course not the fault of object oriented languages like C# or Java or C++. It´s the fault of those who use them in a way that leads their...(read more)

Yahoo Open Hack India 2010 Winners
Senthil Kumar B - Posted 7/26/2010 9:35 PM

Here's the List of Hacks that won the awards in the 2010 edition of the Yahoo Open Hack India . 1. Best in show award Hack Name : FlickSubz Team Name : NaturalBornCoders Team Members : BabuSrithar , Sudeep Nayak,Parashuram Description : A Hack with the Flickr and Language translation API and Twitter..............



PowerShell Script Provider
Oisin Grehan - Posted 7/26/2010 3:11 PM

Write your own PowerShell provider using only script, no C# required. Module definition is provided by a Windows PowerShell 2.0 Module, which may be pure script, binary or a mix of both.

Debugging is as easy as any ordinary ps1 script file:

image

All functions in backing module reflect the same signature as those found on MSDN. This means that you go to MSDN documentation on providers to learn about how to write the corresponding script.

Current Release PSProvider 0.4

Samples and Templates

Roadmap

0.1
  • ContainerCmdletProvider support through "ModuleBoundProvider" provider
  • Demo provider included navigating a Hashtable
  • Can be debugged in the debugger of your choice: console, ISE, PowerGUI.
0.2
  • NavigationCmdletProvider support
  • Providers rename to ContainerScriptProvider and TreeScriptProvider
  • Container Sample & Tree Template modules
  • Supports: Clear-Item, Copy-Item, Get-Item, Invoke-Item, Move-Item, New-Item, Remove-Item, Rename-Item, Set-Item
0.3
  • IContentCmdletProvider support
  • New Commands: New-ContentReader, New-ContentWriter implement IContentReader, IContentWriter
  • Adds support for: Add-Content, Clear-Content, Get-Content, Set-Content
0.4 (Current Release)
  • IPropertyCmdletProvider support
  • Adds support for: Clear-ItemProperty, Copy-ItemProperty, Get-ItemProperty, Move-ItemProperty, New-ItemProperty, Remove-ItemProperty, Rename-ItemProperty, Set-ItemProperty
0.5
  • Dynamic Parameter support
0.6
  • Security Interfaces
  • Adds support for: Get-ACL, Set-ACL

http://psprovider.codeplex.com/


Clean Acceptance Tests, August 3rd, central London
gojko - Posted 7/26/2010 12:52 PM
The next meeting of the UK agile testing user group is on the 3rd of August in central London. Here are the details of the talk: Dan Leong on Clean Acceptance Tests This presentation discusses how our agile team renewed our focus and understanding of our acceptance tests when the team members changed. Our group [...]

Introducing WindowHerder: Take Control of Your Windows
Greg Shackles - Posted 7/26/2010 9:56 AM
Recently I’ve been working on a small utility to help scratch a particular itch I had with managing the placement of windows on my screens. More specifically, I found that I would arrange everything how I wanted it in order to be the most productive, and would then have to keep redoing that every [...]



July preview of POP Forums v9 posted to CodePlex
Jeff Putz - Posted 7/25/2010 11:47 PM

Get it while it's hot and juicy, my friends. The second preview for the ASP.NET MVC forum is available at http://popforums.codeplex.com/.

The release notes show what's new, so I won't repeat that here. Overall, I'm feeling pretty good about how it's coming along. I spent a lot of time fleshing out admin functionality, which is about the least exciting thing, but it's a lot easier to exercise the app when you can change stuff via the UI instead of poking around a database.

I would like to have a beta version out in September, and if my spare time continues to be available at the same rate, and my baby boy is happy and healthy (and sleeping in the evenings), I think there's a reasonable shot at it happening. I can see an RC even coming shortly after even. Remember the goal is to get to feature parity with v8.x first, and then go further.


NET Framework 3.5 & NET Framework 4.0
Anand Patel - Posted 7/25/2010 9:49 PM
The .NET Framework is an integral Windows component that supports building and running the next generation of applications and XML Web services. The .NET Framework is hearty of development now & tomorrow for business applications.

Our dot.net consultant hides technical complexity & ensures deliver of better application. Radix has started development on net framework 4.0 to influence best technology for client projects.

Explore technical verticals of Radix consulting & development services from following sections.

EntitySpaces 2010.1.0726.0 Available for Download
Mike Griffin - Posted 7/25/2010 9:15 PM

This is a minor release, there is no need to upgrade unless you need one of the fixes below. The fixes are as follows:

  • The WCF Client Side Proxy Patch is included (it was not included with 2010.1.0720.0)
  • The namespace "Proxies" was hard coded in the client proxy template, this was fixed.
  • The “char” modified column count error has been fixed.
  • The case sensitive bug when returning columns with a different case than defined in the actual table error has been fixed.

The Trial version is still 2010.1.0720.0

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net


Notes on Templates and Data Annotations in MVC 2
K. Scott allen - Posted 7/25/2010 9:04 PM

Brad Wilson has an excellent series of 5 blog posts on model metadata and templates you can use to get started with templates and metadata in ASP.NET MVC 2. Here are a couple notes I've made around some of aspects that commonly confuse developers (including me, it seems).

1. Although most of the metadata attributes live in the System.ComponentModel.DataAnnotations namespace, there are a few exceptions. If you aren't seeing something you need in Intellisense, then try adding System.ComponentModel (for the popular DisplayName attribute) and System.Web.Mvc (for the popular HiddenInput attribute).

2. Some of the confusion around data annotations exists because the MVC runtime doesn't recognize every data annotation attribute built into .NET. For example, using [Editable(false)] is tempting, but you'll find it doesn't have any impact in model binding, validation, or templating. The built-in templates respect 7 data annotation attributes:

  • DisplayColumn
  • HiddenInput
  • UIHint
  • DataType
  • DisplayFormat
  • ScaffoldColumn
  • DisplayName

3. There are two additional attributes the default model metadata provider will consume:

  • ReadOnly
  • Required

However, the built-in templates do not make use of the information from these attributes. For example, you can apply [ReadOnly(true)] to a property, but you'll find the default templates in use by helpers like Html.EditorForModel will still show a textbox input for the user to enter a value. If you want to get rid of the input with EditorForModel you'll need a custom template, or you'll need to use [ScaffoldColumn(false)].

Note the default model binder does respect the ReadOnly attribute, so it won't move a value into a property with [ReadOnly[false)]. Also, the built-in validation logic respects the Required attribute. These attributes definitely have value in an MVC app, but they won't influence the UI rendered by the default templates.


A disappointing Windows Marketplace (mobile developer) experience.
Mitch Denny - Posted 7/25/2010 4:41 AM
Microsoft is going to market late this calendar year with Windows Phone 7, a completely revamped mobile platform set to take on the likes of Apple’s iPhone and Google’s Android platforms. From a technical perspective I’m excited about the platform and I think that it could easily be the technically superior option on the market. [...]

Course Update
Udi Dahan - The Software Simplist - Posted 7/24/2010 2:03 PM
Just wanted to let you know that there is a scheduling change for my upcoming courses. This is due to some minor issues internal to Skills Matter, the company that hosts my training in the UK and manages the France location as well. Anyway, these issues have been resolved but the scheduling changes remain. The courses [...]

SQL 2008 FILESTREAM
Bill Christenson - Posted 7/24/2010 11:28 AM

The FILESTREAM feature of SQL 2008 allows more effective storage and retrieval to BLOB data.  It accomplishes this by utilizing both SQL 2008 and the NTFS file system.  In the past, most developers stored BLOB data in the SQL Server using varbinary(max).  This has some drawbacks including:  you had a 2GB max, streaming performance was awful, and recovery from fragmentation was poor.  The FILESTREAM can hold up to the size of the NTFS volume size, streaming performance is excellent, and it can recover from fragmentation on disk nicely.

The one drawback that I can see is when the client needs to perform small & frequent BLOB updates.  Rather than writing to SQL Server data files, FILESTREAM writes to the file system.  Locating, creating, updating, deleting files outside of the SQL Server data files do come at a cost.  So some consideration as to the size & frequency of BLOB data would need to be made.

There are a few ways to enable FILESTREAM (SQL Server Configuration Manager, SQL Server Management Studio properties of the connected instance, and via TSQL scripting).  Personally I was only able to get it to work by using the SQL Server Configuration Manager.  Apparently installing Visual Studio/SQL 2005 can screw up FILESTREAM features of SQL 2008…  Anyway, here’s the basic FILESTREAM access levels which you’ll need to understand when enabling it.

FILESTREAM access levels:
a) 0 = Disables FILESTREAM support for this instance.
b) 1 = Enables FILESTREAM for Transact-SQL access.
c) 2 = Enables FILESTREAM for Transact-SQL and Win32 streaming access.

I created a script which enables FILESTREAM for the SQL Instance, then it enables it for my “testdb” database.  It auto-detects where your database’s data/log files reside and then creates a directory in there for FILESTREAM objects.

 

   1:  USE [master];
   2:  GO
   3:  DECLARE @filestream_access_level SMALLINT;
   4:  SELECT @filestream_access_level = CONVERT(SMALLINT, SERVERPROPERTY('FilestreamEffectiveLevel'));
   5:   
   6:  IF @filestream_access_level <> 2
   7:  BEGIN
   8:      EXEC sp_configure filestream_access_level, 2;
   9:      RECONFIGURE WITH OVERRIDE;
  10:  END;
  11:  GO
  12:   
  13:  USE [testdb];
  14:  GO
  15:  IF NOT EXISTS (SELECT * FROM sys.filegroups AS fg WITH (NOLOCK) WHERE name = 'testdb_FILESTREAM')
  16:  BEGIN
  17:      --add a file group and indicate that it will contain FILESTREAM objects
  18:      ALTER DATABASE testdb ADD FILEGROUP testdb_FILESTREAM CONTAINS FILESTREAM;
  19:  END;
  20:  GO
  21:  IF NOT EXISTS (SELECT * 
  22:      FROM sys.filegroups AS fg WITH (NOLOCK) 
  23:          INNER JOIN sys.database_files AS df WITH (NOLOCK) ON fg.data_space_id = df.data_space_id 
  24:      WHERE fg.name = 'testdb_FILESTREAM'
  25:          AND df.name = 'testdb_FILESTREAM')
  26:  BEGIN
  27:      DECLARE @path NVARCHAR(MAX), @sql_statement NVARCHAR(MAX);
  28:      SELECT @path = mf.physical_name FROM sys.master_files AS mf WITH (NOLOCK) WHERE mf.name = 'testdb' AND mf.type_desc = 'ROWS';
  29:      SELECT @path = SUBSTRING(@path, 1, LEN(@path) - CHARINDEX('\', REVERSE(@path))) + '\testdb_FILESTREAM';
  30:   
  31:      --tell the file group where the FILESTREAM objects should be stored
  32:      SELECT @sql_statement = N'ALTER DATABASE testdb ADD FILE (NAME = ''testdb_FILESTREAM'', FILENAME = ''' + @path + ''') TO FILEGROUP testdb_FILESTREAM;';
  33:   
  34:      EXEC sp_executesql @statement = @sql_statement;
  35:  END;
  36:  GO

 

At this point I was ready to design a table in SQL Management Studio with a FILESTREAM column.  A FILESTREAM column is actually a varbinary(max) column with the FILESTREAM attribute.  Well, the table designer in SQL Management Studio does not support specifying the FILESTREAM attribute.  You have to script it.

Here’s some rules which you’ll need to adhere to when creating FILESTREAM columns.
1) The table can have multiple FILESTREAM columns, but they must all be in the same FILEGROUP.
2) If you don’t specify the FILESTREAM_ON clause, the default FILEGROUP will be used.
3) The table must have a uniqueidentifier column with the ROWGUIDCOL attribute.  It cannot contain NULL values and must have either a UNIQUE or PRIMARY KEY single column constraint.

 

   1:  USE [testdb];
   2:  GO
   3:  IF NOT EXISTS (SELECT * FROM sys.tables AS t WITH (NOLOCK) WHERE t.name = 'Document' AND t.type = 'U')
   4:  BEGIN
   5:      CREATE TABLE dbo.Document (
   6:          DocumentID INT IDENTITY PRIMARY KEY,
   7:          DocumentGUID UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL UNIQUE DEFAULT NEWID(),
   8:          Document VARBINARY(MAX) FILESTREAM NULL
   9:      )  ON [PRIMARY];
  10:  END;
  11:  GO

 

In my next post, I will show .NET streaming capabilities with the new FILESTREAM features in SQL 2008.


Notes from a TDD masterclass
Roy Osherove - Posted 7/23/2010 10:48 PM

another TDD masterclass is done, and this time it was Munich! Lovely people, and smart programmers :)

made a few changes this time – had an excersice about doing automated builds and CI, removed rhino mocks and added a bunch of other frameworks (FakeItEasy, JustMock and others) and various other small things.

at the last day of the course, I asked each person on the most important thing they learned, and something that surprised them during the course.

 

here’s the list we made:

 

•How to practice TDD

•Isolation frameworks abilities, differences and categories

•Difference between test and production code standards

•Pay attention to requirements

•TDD is doable, also in legacy

•Simple tests

•Legacy code refactoring is hard

•Better unit tests

•It’s not hype

•Reviewing is easier than thought

•Pair programming is productive

•How to refactor and test legacy

•Power of manual fakes

•Tdd makes testable code

•Tests as specs

•How to write fast tests, productively with tdd

•RTM tests are harder than you think

•Spec and Interface based development

•Code gets written differently

•Incremental work, simply

•Lots of different ways to do the same concept

•How to handle statics

•Different people are different

•Brownfield is tough to tdd


Extension method to find root Parent Workflow of current activity
Michael Freidgeim - Posted 7/23/2010 4:34 PM
Below is an extension method  to find root Parent Workflow of current activity
  /// <summary>
  /// Get root Parent Workflow of current activity
  /// <param name="activity"></param>
  /// <returns></returns>
  public static Activity FindRootWorkflow(this Activity activity)
  {
   List<string> list = new List<string>();
   Activity act = activity;
   while (act != null)
   {
    if (act.Parent==null)
    {
     return act;
    }
    act = act.Parent;
   }
   return null;
  }
 
It was  asked in MS Connect Suggestion "Activity to access Parent workflow or Root Workflow"
 


 


F# Discoveries This Week 07/23/2010
Rick Minerich - Posted 7/23/2010 1:37 PM

One of my favorite things about the F# community is that its members tend to build things that are a bit more interesting, and think about concepts that are a bit deeper.  This week is no exception.  Come on in and see what’s been happening in the F# world.

A quick note to those giving F# talks or running events: If you would like listed here please don’t hesitate to contact me via the email link at the top of the page.  I’d love to help you help others to learn F#.

 

Events

Nashville Geek Lunch 11:30 AM Next Tuesday (7/27/2010)

 

 

Articles

Tomas Petricek’s The Duality of Object and Event references

In this article, I'll talk about an interesting example of duality that (to my best knowledge) wasn't described by anyone before. The two dual structures are references between objects in a normal program and references between events in a reactive application.

 

Marius Bancila’s Resources for the F# Presentation at Ronua Roadshow

The program that I shown exhibits traits of both functional (for computing the fractal) and object oriented (for displaying the fractal) paradigms.

 

Neil Carrier’s A Two-Instruction Virtual RISC

One of my favorite hobbies is building really tiny virtual computers. The experience has even paid off a time or two when I needed to create a compact domain-specific language (DSL).

 

Neil Carrier’s F#'s Little-Known (?) and (?<-) Operators

These two operators work similar to the C/C++ “stringizing” pre-processor operator. That is, they convert non-string code (limited to simple identifiers in the case of F#) into strings according to the following translation patterns:

 

Julien Ortin’s Arbitraging bookmakers with F#

The principle is rather simple.  Take the best quotes for each outcome, and process.  If the sum of 1/quote_i is less than one, an arbitrage opportunity exists.  The amount to bet on each outcome is 100/quote.

 

Vladimir Matveev’s Tricky late binding operators

F# Dynamic and DynamicAssignment operators are not as simple as they appear ex facte. Most popular sample of their usage is something like this:

 

Vladimir Matveev’s Playing with WebSharper

As a sample we’ll make simple StickyNotes application. Web design is not my primary and favorite skill, so I'll omit cross-browser compatibility and bind all styles to Firefox.

 

Naveen Srinivasan’s Using F# to Automate Reading–The Morning Brew

I like to try and automate most of the stuff . So I thought why not write a script that reads the Morning Brew feed, filter the excluded content that I am not interested in and open the urls before I come in.

 

Steve Gilham’s Building PartCover 4 on Vista

Following on from earlier in the week, I pulled the current trunk from SourceForge, and set about building it then putting it to work on some F# code which had caused an earlier version (the most recent available at the end of last year) to balk.

 

Gert-Jan van der Kamp’s Using a DataReader like a list in F#

This article demonstrates a technique how you can write recursive algorithms in F# using a Reader instead of a list, so you don't have to load all your data into memory first.

 

Steve Jenson’s Building F# on Mac OS X

Joe says his team at Microsoft runs into these issues often with users and was kind enough to walk me through the steps to get F# running on the mac.


Debugging Multiple SWFs
Huw Collingbourne - Posted 7/23/2010 1:02 PM
One of the neat features of the Amethyst 'Clylon' debugger is its ability to 'listen and attach' to SWFs across multiple projects and even running in multiple applications. This gives you the ability to debug two, three, four or more SWFs simultaneously. This is a real advantage when building complex applications or web sites in which many separate SWFs communicate. Debugging them one at a time only gives you part of the picture. Multiple SWF-debugging lets you set (...)

Free DotNetNuke Training now available
Chris Hammond - Posted 7/22/2010 2:21 PM
When I started up here at DotNetNuke Corp. in March, I spent quite a bit of time planning and tweaking our plan in regards to the DotNetNuke Training that we would be offering. The initial phase launched when we started offering our paid DotNetNuke Training...(read more)

Microsoft Azure Cloud Services and Mobile Applications
Joel Jeffery - Posted 7/22/2010 5:32 AM
I’ve just come across another great video from Jason Zander at the UK Tech Days event in Reading. This time it’s about mobile applications and the Azure platform. I’ve been following the Microsoft cloud service offerings for a couple of years since the Microsoft Architect Insight Conference 2008. What started as SQL Server Data Services [...]

Sudoku for WP7 on YouTube
Fons Sonnemans - Posted 7/22/2010 3:06 AM

I have placed a movie of my Sudoku for the Windows Phone 7 on YouTube. I have build it using the new Beta bits. It uses the same Model and ViewModel code as my Silverlight implementation.

I'm almost finished. I only have to implement the 'Notes' and 'Import from Camera' features. I can't test the Import/OCR yet because the emulator doesn't support the WebCam, bummer. I hope i can test it on a device soon.

Cheers,

Fons


SQLite 3.7.0 Released – WAL is now available
Gareth - Posted 7/21/2010 8:34 PM
The official release information can be found [SQLite Release 3.7.0 On 2010 July 22 (3.7.0)]. The summary is that this is a pretty large change compared to previous releases. WAL (Write Ahead Logging) support – this means: Generally faster More concurrency Better disk performance when processing the WAL logs. Cant use network shares or different computers for writing to the [...]

How to get rid of flicker on Windows Forms applications
Angry Hacker - Posted 7/21/2010 5:27 PM

Windows Forms apps have a well known issue that when you have a bunch of controls on your form (not to mention any 3rd party controls), the app flickers, there is UI tearing – it's just not pretty.  The problem most seems to impact the startup of the app when everything is being loaded.

Simply setting the form and any controls to be Double Buffered doesn’t do the trick because the .DoubleBuffered property works at a control level, not the form level. 

There is a fix for this that automatically enables double-buffering at the form level and on down.  This works by setting the WS_EX_COMPOSITED flag in the Form.CreateParams.ExStyle property.  Just drop the following code into form:

protected override CreateParams CreateParams
{
    get
    {
        // Activate double buffering at the form level.  All child controls will be double buffered as well.
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
        return cp;
    }
} 


This fix works relatively well, but WS_EX_COMPOSITED flag causes a couple of side effects:

  • The Maximize, Minimize and Close buttons don’t animate on Windows XP.
  • Resizing a control-heavy form feels very laggy because everything is being double-buffered.

The trick to fix both issues, it turns out, is the same, though very hacky.  The idea is to turn off the WS_EX_COMPOSITED flag right after the form is loaded and thus turning the form-level double-buffering off. So replace the above code with the following:

int originalExStyle = -1;
bool enableFormLevelDoubleBuffering = true;
 
protected override CreateParams CreateParams
{
    get
    {
        if (originalExStyle == -1)
            originalExStyle = base.CreateParams.ExStyle;
 
        CreateParams cp = base.CreateParams;
        if (enableFormLevelDoubleBuffering)
            cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
        else
            cp.ExStyle = originalExStyle;
 
        return cp;
    }
} 

 

So the pieces are in place: when enableFormLevelDoubleBuffering is set to false, we’ll have to get the System.Windows.Forms.Form object to call the CreateParams method and, in doing so, reset the ExStyle flag.  But how can we get the app to call CreateParams

For reasons I don’t know, simply calling the following does the trick:

this.MaximizeBox = true;


Yes, did I mention, it was hacky?  So let’s create a method that does all the work:

private void TurnOffFormLevelDoubleBuffering()
{
    enableFormLevelDoubleBuffering = false;
    this.MaximizeBox = true;
}


And we should call this method after the form has loaded in the Shown event:

private void frmMain_Shown(object sender, EventArgs e)
{
    TurnOffFormLevelDoubleBuffering();
}

And that’s how we roll.


Introducing… Dynamo – A Scriptable DotNetNuke module
Rob Chartier - Posted 7/21/2010 11:05 AM

Introduction

Imagine, for a second, you have a server sided JavaScript interpreter built right into a Content Management System. It should have full access to the entire Server sided API’s, depending on security requirements of course. You could literally treat source code as content. That is what this post is about.

If you have ever created a module for DotNetNuke you probably have spent (wasted) countless hours mucking around with Visual Studio, IIS, the file system, packaging, deploying, etc. It didn’t matter if they were the most complex modules, or a simple Hello World module. In the end you probably have come to the conclusion that there just has to be an easier way of doing this.

Enter Dynamo.. (Sorry for the lame name…)

Essentially Dynamo is a DotNetNuke Module which uses Jint under the covers.

Dynamo allows you to completely skip Visual Studio, the debugger, IIS, deployment, packaging, etc... Install this single module and open your DNN installation to the world of dynamic language interpretation.

Since DotNetNuke is a content management system, Dynamo brings your source code directly into the DNN UI. It allows you to create code, on the fly, and manage that code within DNN itself.

A screenshot might help clarify…

image

As you might not be able to interpret from the above screen shot, this is a server sided scripting language built right into DotNetNuke. In the Scripting Window you edit your script and either Preview or Save it. Notice the fancy syntax highlighting, just no intellisense. When viewing the module it will interpret and render the script at the server side. So the above example produces:

image

 

The echo method will emit text to the output container directly. Anything return’ed out of the function will also get slapped into the output container automatically. So you can either use a StringBuilder to append up your content, or just echo content directly. Watch out for Page.Response.Write, it will emit the content at the top of the page; which is consistent with ASP.NET’s rendering.

Examples

Another real world example would be to reproduce (at a very rudimentary level) the Feedback Module which ships with DotNetNuke. Here is the code block:

   1:  echo("<div valign='top'><fieldset><legend>Provide Feedback</legend>");
   2:  echo("Your Email:<br /><input type='text' name='fromemail'><br />");
   3:  echo("Subject:<br /><input type='text' name='subject'><br />");
   4:  echo("Body:<br /><textarea name='body' rows='10' cols='50'></textarea><br />");
   5:  echo("<input type='submit' value='Send Feedback'><br />");
   6:  echo("</fieldset></div>");
 
   7:  if(Page.IsPostBack) {
   8:  var fromemail = get("fromemail");
   9:  var subject = get("subject");
  10:  var body= get("body");
  11:  if(fromemail!="" && subject!="" && body!="") 
  12:  return DotNetNuke.Services.Mail.Mail.SendMail(fromemail, "toemail@localhost", "", subject, body, "", "", "", "", "", "");
  13:  else
  14:  return ""
  15:  }
  16:  else {
  17:  return "";
  18:  }

 

So you should first notice that Dynamo does not support context switching between plain HTML and Code Blocks. Everything is a code block. If you want to emit HTML, you must do something like:

echo("<div valign='top'><fieldset><legend>Provide Feedback</legend>");

Mixing HTML and code is a nice-to-have in the ole product roadmap for the project.

Next you will notice the code itself is a slight mix with JavaScript syntax and .NET Types. The interpreter has the ability to mix each and interpret it accordingly. This also includes being able to call into the DotNetNuke API library as well. It’s important to note that we are using an interpreter and NOT using Reflection.Emit(). Thus we are just fine within Medium Trust.

What else can Dynamo do? Here is a short list of tested scenarios:

  1. Consumes RSS Feeds (uses RSS.NET)
  2. Full Database CRUD
  3. Full Access to the DNN API, including but not limited to Portals/Tabs, Modules, Users, etc..
  4. Emitting custom JavaScript and CSS (into the Head tag, or CSS inline)
  5. Detecting PostBack’s
  6. File I/O
  7. Rendering files (into the interpreter, and getting the results)
  8. Twitter Timeline
  9. Page caching

Your options you have are literally limitless.

Debugging

Since DotNetNuke is Web Based it would be extremely hard difficult to get stuff like intellisense and full step by step debugging working. I don’t have the time right now, but you never know with a future version of the product.

For now, I have the ability to “Show Debugger Details”, in the Edit Script control, when you hit Preview. It literally will emit debug information at each step of the code as it interprets it. I did a simple dump of the Current Statement and the locals available.

With that said I don’t block any exceptions and do bubble them up to the UI, so if you do have issues they will very obvious.

Source Code Versioning

Most professional software developers do use some sort of Source Control software. Right now the tool does NOT have anything built in to help with this. I would love to add this at the very least to the product backlog. Eventually I would love to get to it…

Security

The source code itself contains the line of code which completely disabled all security validations. You can do some serious damage with this. If this bothers you, you should do one of two things:

1. Find the line: JintEngine.DisableSecurity(); Remove it, recompile and redeploy to your server

2. Don’t use this package version in production.

Getting started

There are two methods for you to get started; the easiest method would be to use the prepackaged module installation file here. Download it, and install it into your Development DNN Installation site. The module’s name is “Dynamo” and should be available for you to drop on a page.

The more difficult method would be to grab the source code, and compile it. This would be the method you would need to take in order to re-enable the Security (See the Security section above). This is what I use when building/testing the module itself. So if you need to make other fundamental changes you will need to do this as well.

I would recommend you reset your references to the DotNetNuke specific DLL’s out of your actual bin folder for DotNetNuke. Once you have it building, I personally just use xcopy deployment to the website’s bin and DesktopModules folder and refresh the browser. Debugging can easily be done by setting the breakpoint and attaching VS.NET to w3wp.exe.


Microsoft releases Visual Studio Scrum 1.0 process template
VSTSBlog (by Neno Loje) - Posted 7/21/2010 9:56 AM

Scrum

As announced here. From the description:

This template includes:

  • Work Item Types
    • Sprint
    • Product Backlog Item
    • Bug
    • Task
    • Impediment
    • Test Case
  • Reports
    • Release Burndown
    • Velocity
    • Sprint Burndown
    • Build Success Over Time
    • Build Summary
    • Test Case Readiness
    • Test Plan Progress
  • SharePoint Project Portal

Below are screenshots of the Sprint Burndown and Release Burndown reports included with the template.

(All images in this blog post: Copyright by Microsoft Corp.)



Current PST time: 7/30/2010 3:12 AM
.NET Developers Blog - Add your blog