My Gestalt

Understand the chaotic world by developing meaningful perception through the acquisition of seemingly disparate knowledge.

Collect information in large quantity with precise detail and connect the dots of meaning to form your own picture of the universe.

Act upon it

Knowledge and understanding without action is waste.

Be Grateful

Never underestimate the power of gratitude.

Charity

Forgiveness will make your heart happy. Forgiveness is not about someone deserving it, it's about healing your heart.

Friday
Jul102009

Silverlight3 RTW, Blend3, SketchFlow, DeepZoom Available for Download

This is awesome and exciting!

Some of the places to look might be hard to find until later today, the sites are all being updated.

Christian Schormann (Blend PM) has kindly provided a set of working links to everything available now.

Silverlight3 RTW, Blend3, SketchFlow, DeepZoom Available for Download

He also has terrific posts and demos about the Concepts and Overviews

Watch Visual Kitchen here: http://vepexp.microsoft.com/seethelight

And go visit See the Light for a nice vision of what the new versions of Silverlight and Blend can do to help your development shine.

Friday
Jul032009

dotNetDave - dotNetTips.Utility 3.5 Released

Dave McCarter has released a great package of Tips and Helpers.

After lots new coding, refactoring and upgrading to .NET 3.5, dotNetTips.Utility 3.5 is finally released! This assembly is much of the common code I have been writing for the past 8+ years all wrapped up in a nice package and easy to use.

read more: dotNetTips.Utility 3.5 Released

What’s great about this is that you will get some serious tools and the VB.Net source to see how they work.  Dave is a proponent of Standards and you can see in this library how he implements some of the techniques he talks about.

From AvailablePhysicalMemory to UsStateCollection the helpers get you from nowhere to somewhere fast.

Highly Recommended!

Codeplex Project: http://dotnettips.codeplex.com/

Wednesday
Jul012009

Tweeps List: Visual Basic Influencers

Antonio has put together a great list of VB Influencers to follow on Twitter

Antonio Chagoury - Tweeps List: Microsoft Visual Basic MVP’s

While his title says MVPs, there are some other influencers listed

Monday
Jun292009

I'm A VB (imavb.net campaign)

Who is the “typical VB.NET developer”? Is there one? There are millions of VB.NET developers in the world, and they each have their own unique story.

Here’s mine:

· How long have you been using VB?

Since V1. In 1992, I was looking for a replacement to QBasic when developing a Point of Sale Application for Windows.

· What industry do you work in?

Software Development. We are very diversified in our client base, touching Medical Records, Financial Services, Home Automation, Factory Floor Control, Online Gaming, Media and Training.

· How big is your development team?

We are a small shop in terms of size. We leverage Code Generation heavily to compensate for not having code monkeys to type in all the repetitive code that goes along most applications.

· What kind of apps do you most commonly build?

Line of Business Web Applications.

· What’s the most interesting app you’ve ever built?

That's Top Secret. :-) I am doing my most interesting app development right now! Think Silverlight, Home Automation and Green Technology. Details will come out soon.

· Please tell us about an app that you’re working on at the moment.

Currently one of my applications is a system for helping Non-Profit Organization raise funds and advertise. We built the Proof of Concept in Silverlight 1.1 and are currently re-engineering for release in Silverlight 3.

· What other technologies do you most commonly use?

Code Generation, this is a pretty broad definition... I use many technologies depending on the needs of my client. Some of those include: Silverlight, WCF, ASP.Net, ASP.Net MVC, MEF and nHibernate.

· What are some of your favorite VB features?

XML Literals, Background compiler, Linq syntax in VB, Case Insensitivity.

· What do you like most about VB as a programming language?

I like VB because I can use it everywhere I work (asp, silverlight, office) and still retain a sense of familiarity with my syntax. VB code is much easier for me to read and review than other more cryptic languages. Also pretty much EVERYONE can read and understand my code... even the perl developers. I can't really say that about any other language.

For other interviews in this series, please visit http://imavb.net.

Tuesday
Jun232009

Send a NameValueCollection ToXElement

I do lots of work with collections and one thing I tend to frequently is log all the information I can about a certain Request under certain conditions.

I found myself needing to serialize or save all the Request.ServerVariables.

Now, we could walk through the items, blah, blah, blah, this ends up being much easier with an Extension Method:

Public Module NameValueCollectionExtension
<Runtime.CompilerServices.Extension()> _
Public Function ToXElement(ByVal self As NameValueCollection, ByVal RootElementName As String) As XElement
With self
If RootElementName = Nothing Then
RootElementName = .GetType().Name
End If

Dim xel As New XElement(RootElementName)
If .HasKeys Then
For i As Integer = 0 To .Count - 1
xel.Add(New XElement(.Keys(i), .Item(.Keys(i))))
Next
End If
Return xel
End With
End Function

<Runtime.CompilerServices.Extension()> _
Public Function ToXElement(ByVal self As NameValueCollection) As XElement
Return self.ToXElement(String.Empty)
End Function
End Module

To use this in your code, save the above as a Module.


Then in your ASPX Code Behind or elsewhere applicable (like Silverlight), simply use this:


 

Dim data = Request.ServerVariables.ToXElement()

Or This:


 

Dim data = Request.ServerVariables.ToXElement("ServerVariables")

I took the consideration of allowing you to set a ROOT Element if you don’t want to use the Variable’s Type Name by providing an Override that accepts a String for the Name.



Et, voila! You have a perfectly good XML Snapshot of all the Request’s Server Variables:


<HttpServerVarsCollection>
<ALL_HTTP>HTTP_CACHE_CONTROL:no-cache
HTTP_CONNECTION: Keep(-Alive)
HTTP_CONTENT_LENGTH:7654
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_ACCEPT:image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
HTTP_ACCEPT_ENCODING: gzip, deflate
HTTP_ACCEPT_LANGUAGE: en(-us)
HTTP_COOKIE: ASP.NET_SessionId = *********************
HTTP_HOST:localhost:22318
HTTP_REFERER:http://localhost:22318/Public/MyPage.aspx
HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; .NET CLR 4.0.20506)
</ALL_HTTP>
<ALL_RAW>Cache-Control: no-cache
Connection: Keep(-Alive)
Content-Length: 7654
Content-Type: application/x-www-form-urlencoded
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept(-Encoding) : gzip, deflate
Accept(-Language) : en(-us)
Cookie: ASP.NET_SessionId = *****************
Host: localhost:22318
Referer: http://localhost:22318/Public/MyPage.aspx
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; .NET CLR 4.0.20506)
</ALL_RAW>
<APPL_MD_PATH/>
<APPL_PHYSICAL_PATH>C:\SourceCode\SomeProject\trunk\MyApp\</APPL_PHYSICAL_PATH>
<AUTH_TYPE/>
<AUTH_USER/>
<AUTH_PASSWORD/>
<LOGON_USER>DREAMSHOP\steele</LOGON_USER>
<REMOTE_USER/>
<CERT_COOKIE/>
<CERT_FLAGS/>
<CERT_ISSUER/>
<CERT_KEYSIZE/>
<CERT_SECRETKEYSIZE/>
<CERT_SERIALNUMBER/>
<CERT_SERVER_ISSUER/>
<CERT_SERVER_SUBJECT/>
<CERT_SUBJECT/>
<CONTENT_LENGTH>7654</CONTENT_LENGTH>
<CONTENT_TYPE>application/x-www-form-urlencoded</CONTENT_TYPE>
<GATEWAY_INTERFACE/>
<HTTPS/>
<HTTPS_KEYSIZE/>
<HTTPS_SECRETKEYSIZE/>
<HTTPS_SERVER_ISSUER/>
<HTTPS_SERVER_SUBJECT/>
<INSTANCE_ID/>
<INSTANCE_META_PATH/>
<LOCAL_ADDR>127.0.0.1</LOCAL_ADDR>
<PATH_INFO>/Public/MyPage.aspx</PATH_INFO>
<PATH_TRANSLATED>C:\SourceCode\SomeProject\trunk\MyApp\Public\MyPage.aspx</PATH_TRANSLATED>
<QUERY_STRING/>
<REMOTE_ADDR>127.0.0.1</REMOTE_ADDR>
<REMOTE_HOST>127.0.0.1</REMOTE_HOST>
<REMOTE_PORT/>
<REQUEST_METHOD>POST</REQUEST_METHOD>
<SCRIPT_NAME>/Public/MyPage.aspx</SCRIPT_NAME>
<SERVER_NAME>localhost</SERVER_NAME>
<SERVER_PORT>22318</SERVER_PORT>
<SERVER_PORT_SECURE>0</SERVER_PORT_SECURE>
<SERVER_PROTOCOL>HTTP/1.1</SERVER_PROTOCOL>
<SERVER_SOFTWARE/>
<URL>/Public/MyPage.aspx</URL>
<HTTP_CACHE_CONTROL>no-cache</HTTP_CACHE_CONTROL>
<HTTP_CONNECTION>Keep-Alive</HTTP_CONNECTION>
<HTTP_CONTENT_LENGTH>7654</HTTP_CONTENT_LENGTH>
<HTTP_CONTENT_TYPE>application/x-www-form-urlencoded</HTTP_CONTENT_TYPE>
<HTTP_ACCEPT>image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*</HTTP_ACCEPT>
<HTTP_ACCEPT_ENCODING>gzip, deflate</HTTP_ACCEPT_ENCODING>
<HTTP_ACCEPT_LANGUAGE>en-us</HTTP_ACCEPT_LANGUAGE>
<HTTP_COOKIE>ASP.NET_SessionId=**********</HTTP_COOKIE>
<HTTP_HOST>localhost:22318</HTTP_HOST>
<HTTP_REFERER>http://localhost:22318/Public/MyPage.aspx</HTTP_REFERER>
<HTTP_USER_AGENT>Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; MS-RTC LM 8; .NET CLR 4.0.20506)</HTTP_USER_AGENT>
</HttpServerVarsCollection>

 


Remember, this is NOT limited to HttpServerVariables, it works with ANY NameValueCollection.


This can be a huge amount of data depending on what you are doing.  You can always use Linq to get a subset of the Collection, or .Remove() some known XElements, like ALL_HTTP, ALL_RAW or All the empty nodes before persisting or displaying this.


Extension Methods offer a great solution to common problems when you don’t have access to write a Method for the Class.  They are also great for making shortcuts to common scenarios for work you do with Collections or Conversions.


Click here for another useful extension for NameValueCollection by Tony Cavaliere from which I derived this idea, Thanks for sharing Tony!

Friday
Jun192009

Misfit Geek Podcast - Does VB have a Future? … Absolutely.

Lisa Feigenbaum from the .NET Managed Languages Group about Visual Basic .NET. Does VB.NET have a future ? Does Microsoft love C# more than VB.NET? Listen and find out.

Of course it does… As Lisa says, it’s not in Microsoft’s best interest to stop moving VB.NET forward.

Yes, there is a bias about VB in general, but 99.9% of this comes from VB perception and not VB.NET.  VB.NET is completely different and people do not realize it’s only related by SOME (not nearly all) syntax.  The underlying IL is not really any different from C# when compiled.  This is a marked difference in the way VB works internally.

Overall, I think this is a good refresher for people who (quite wrongly) think VB is going nowhere.  VB is here for the long haul, bashers need to just get over it… You will see VB.Net development continue for the rest of most of our careers.  That makes me a very happy developer. 

Anyone still bashing VB is A) ignorant of what VB.Net really is and B) no different from being a racist, beating a drum that is stupid and irrelevant.

Misfit Geek Podcast

Monday
Jun152009

VB Extension Methods for Repeating Strings

I was looking for a way to create some Repeating Strings easily and I got tired of typing.

You may notice that the String() constructor will allow you to create single repeating characters, but it does not let you create repeating Strings.

For example, creating this is simple:

Dim zeros As New String("0", 10)


which results in a String of ten zeros or “0000000000”.


This is a great way to make String with a single repeating character.  So how to I repeat whole strings?


The first technique would be to use StringBuilder.Append, which is pretty efficient and apparently what most people use.


Then I saw this fairly old (2005) post from Eddie Garmon.


As a result, here is my VB version of String.Repeat()


Public Module StringExtensions
''' <summary>
''' Maximum performance for Initializing a repeating String
''' </summary>
''' <remarks></remarks>
<Runtime.CompilerServices.Extension()> _
Public Function Repeat(ByVal input As String, ByVal count As Integer) As String
If input Is Nothing Then
Return Nothing
ElseIf (input = String.Empty) OrElse (count < 1) Then
Return String.Empty
End If
Return String.Join(input, New String(count) {})
End Function
End Module

NOTE: in VB, don’t forget the {} Initializer or String uses the wrong Constructor and you get a compile error.


Now I have a really simple way to create repeated strings:


Dim repeated = "<col/>".Repeat(5)


or this:


Dim repeatThis = "<td></td>"
Dim repeated = repeatThis.Repeat(5)


which is easier to type than:


Dim repeated = String.Join(input, New String(5) {})

In addition, it’s going to handle the basic Error Trapping so I don’t have to repeat that every time too.

Monday
Jun012009

WPF Line of Business Application Training

Right on the heels of the last major Phoenix event, we are happy to have Jaime Rodriquez and Karl Shifflett presenting a FREE 2 day course on the subject.  If you can possibly get there, then you should.

Registration Link

Day One:

  • Lap Around WPF
  • WPF Tools ( Blend, Visual Studio 2008)
  • Graphics Subsystem
  • Layout
  • WPF Fundamentals and new concepts
    • Application Model
    • Dependency Properties
    • Trees (logical & visual)
    • Events
    • Threading
    • Resources
  • Controls
  • Styling
  • Templating
  • Q&A with instructors at end of day

Day Two:

  • WPF integration with Win32 and Windows Forms
  • Data binding
  • Introduction to Model-View-ViewModel
  • Commanding in M-V-VM
  • Views, Navigation and Transitions
  • Data Validation
  • Error handling, Model dialogs, Logging
  • Unit Testing
  • MVVM & LOB tips and tricks
  • Q&A with the instructor

Knowing Karl, this is going to be a really DEEP DIVE, not a simple demo of stuff we would never use in production.  I was very impressed by what Jaime presented last week and I was sorry to see him cut short.

I’ll be there helping out when I can on the Silverlight side of things and with M-V-VM the Architecture Pattern in General.

The real thing about programming in an architectural model like this is that it is a complete paradigm shift from the Winforms or Asp.Net style of programming.  The Architecture is the most important thing to understand when you are creating Applications with these new Frameworks.  Understanding the Architecture in full will help you to understand how what YOU do every day fits into that structure, making you a more valuable team member.  If you are a Team of One, then it is even more important for you as a developer to really “get this.”

Every one of these concepts also applies to Silverlight, with the possible exception of Win32 Interop.  If you think you would look more to Silverlight than WPF this tour is still going to help you in 90% of its content.


Here’s a quote from Jaime:



“Yes, joining our training and learning WPF will help you learn Silverlight. In fact, having trained both in the past, I think our training will help you much better understand Silverlight and prepare for the future. Things like Dependency Properties, RoutedEvents, are in Silverlight, but are not fully implemented yet. In our WPF training, we explain the whys and hows of all of these. Some of this goodness will continue to trickle into Silverlight over time and I have heard from people it helps to understand the design principle behind it.”


See you There!


Friday
Apr242009

AZGroups.org 2009 Scott Guthrie Event

AZGroups is pleased to present their 2009 Main Community Event featuring Scott Guthrie, Glenn Block and Jamie Rodriguez.

Here are the details and the link to register at the bottom of the post.

Sessions

ASP.NET MVC
Presented By Scott Guthrie (ScottGu)

We’ll walkthrough building an application from scratch using the recent ASP.NET MVC 1.0 release.  You’ll learn what ASP.NET MVC is, the design decisions behind it, and how to build a real application with it.  We’ll cover topics ranging from the basics of application creation through to concepts like unit testing and dependency injection.
Silverlight 3

Presented By Scott Guthrie (ScottGu)

We’ll walkthrough building applications using the new Silverlight 3 release.  We’ll cover some of the power the new SL3 release provides, and then dive into how to program applications with it.  We’ll cover how to build data applications with it, build eye popping graphic solutions, and enable out of the browser applications with it.

Building openly extensible applications in .NET 4.0

Presented By Glenn Block

Are you tired of building monolithic style apps? Are you tired of hacking your app to bits to meet just one more requirement. Do you want to enable third parties to provide add-on value to your apps?  If the answer to any of these is yes, then come learn about the new Managed Extensibility Framework which ships in .NET 4.0.  Applications built on MEF dynamically discover and compose available components at runtime. This makes MEF ideal for third-party extensibility scenarios, where the type and number of extensions are undefined. With MEF you can enable customers and third-parties to take your apps where no man has gone before. 
The Microsoft Client Continuum: Sharing code, skills and tools between WPF and Silverlight

Presented By Jaime Rodriguez

Are you wondering why Microsoft has both WPF and Silverlight?  Do they really need two technologies (given how similar they are)?  This session will walk you through the different scenarios that both Silverlight and WPF are addressing today, we will cover the similarities, and differences between the platforms, and share pragmatic advise for building applications that exploit both platforms.

Speakers

Scott Guthrie is corporate vice president of Microsoft's .NET Developer Platform, where he runs the development teams responsible for delivering Microsoft Visual Studio developer tools and Microsoft .NET Framework technologies for building client and Web applications.
A founding member of the .NET project, Guthrie has played a key role in the design and development of Visual Studio and the .NET Framework since 1999. Guthrie is also responsible for Microsoft's Web server platform and development tools teams. He has also more recently driven the development of Silverlight – a cross browser, cross platform plug-in for delivering next generation media experiences and rich internet applications for the Web.
Today, Guthrie directly manages the development teams that build the Common Language Runtime (CLR), ASP.NET, Silverlight, Windows Presentation Foundation (WPF), IIS, Commerce Server and the Visual Studio Tools for Web, Client and Silverlight development.
Guthrie graduated with a degree in computer science from Duke University.

Jaime Rodriguez is a Senior Technical Evangelist in Microsoft's Client Evangelism team. Jaime's current mission is to show customers how easy it is to accomplish both great software architecture and amazing user experiences using Windows Presentation Foundation and Silverlight. You can follow Jaime's musings at http://blogs.msdn.com/jaimer.
Glenn Block is an industry expert with broad enterprise software development experience including architecture and system design. Strong proficiency in designing software frameworks and infrastructure. Driver of technical strategy for small and large organizations. Professional speaker who has presented at both industry and community events.
Glenn Block’s Specialties:
Agile practices, Architecture, Design patterns, Driving Technical Strategy, Program Management, Product Planning

Registration: AZGroups.org 2009 Scott Guthrie Event

Thursday
Apr232009

Twitter Ticker - Visual Basic

Serge came up with a cool use of the Twitter API for his blog…

Twitter Ticker - VB

25 latest tweets about Visual Basic

sergeb.com: Twitter Ticker - Visual Basic

Nice idea to get live aggregated info from social networks that apply directly to your content