Yippie! Scott Hanselman has posted the 3rd annual Tools list! If you are not familiar with it, you should be, if you are a programmer at least! Scott has published what amounts to a detailed review of the tools and utilities he uses on a daily basis on his blog for 3 years running now. It’s a fantastic resource for the rest of us.

I have no idea where he finds the time to do all he does, but he has saved me enormous amounts of time and energy just with this list. I also listen to, and highly recommend, his weekly podcast, Hanselminutes which is also a great resource for developers.

Find a quiet spot, get comfortable and go read it!

Cheers,

Robert Porter


 
Categories: Programming | Rave | Reviews | Tools and Toys


I have finally completed my development environment for dasBlog and managed to update my own site from source without destroying it. (I think!).

Daslogo

 

 

 

 

 

Cheers,

Robert Porter

 


 
Categories: dasBlog


August 24, 2006
@ 09:16 PM

A recent article on eWeek by Darryl Taft has that as the title. Not sure the fight is over, but the signs are definitley pointing towards .NET being the current darling of the Enterprise development crowd.

The following is a quote from Bob Muglia, Microsoft’s senior VP of Server and Tools business.

Five years ago we had problems with J2EE [Java 2 Platform, Enterprise Edition]," Muglia said. However, "We've grown from having a quarter of the market to, now, 60 percent," he said. Microsoft displayed the FAM presentations via Webcast.

"J2EE has run its course," Muglia said.

The same article quoted Gartner group as showing that IBM’s Rational is the current front runner for team tools. Microsoft’s Team System is in hot pursuit in that market as well.

What I believe we are seeing is a move back away from the ivory tower approach to software development. Just two years ago the UML was all the rage, and Patterns, Gang of Four style, were what separated the developers from the wannabe crowd. Now even the original authors of the UML have been focusing on using subsets of the specification, in other words the same approach Microsoft took as opposed to the one that Rational took.

And agile techniques have introduced concepts like refactoring to or away from patterns as opposed to attempting to implement patterns from scratch. In other words productivity is again in the driver seat and time to market has trumped design paralysis.

Does this mean Java or J2EE is going to go away? No! Far from it, however Java will probably begin a steady decline and end up with a fate similar to COBOL, e.g. still around, still in use, but only in a fixed and dwindling market segment.

Java is suffering from the same fate that has plagued Linux and the *nixs as a whole. Balkanisation. Remember the write once run anywhere claim that Java proponents made? Try it. Anything beyond the simplest hello world application takes a lot more than a simple recompile. Even on the same platform! If you switch from one application server to another you will most likely break your application.

Now while .NET has never made that particular claim, .NET and Mono has actually come closer to Java’s claim than Java has! No I don’t pretend that .NET is cross platform in all of it’s depth and breadth yet. It may never be, but Microsoft learned from Java, and wrote in essence a better Java than Java. What comes next? I don’t know, but tools and languages have come a very long way since I started programming. And I love every bit of it! I can’t wait for what's next that makes me more productive and more capable!

Cheers,

Robert Porter


 
Categories: .NET | Programming | Ramblings


August 24, 2006
@ 03:21 PM

If you have installed Office 2007 you have been nagged to install the new Desktop Search engine version 3.0. Until recently I had held off doing so because Desktop Search 3.0 was an engine only install, no UI. Since I use MSN Desktop Search frequently, (I prefer it over Google Desktop), I did not want to loose my UI for Desktop Search 2.5.

But I checked again and now Windows Desktop Search 3.0 Beta 2 is available and it includes the full UI! So I have downloaded and installed it and will let you know what I think about it as I begin to experiment with it.

UPDATE: After playing with the new version for the last several days, I have found no issues or problems. I love it! It seems faster and searching inside Outlook was incredible compared to the older search functionality.

I frequently use it to search Source Code as well as standard documents on my hard drive, indeed, I can’t imagine life without it, so if I run into snags with this version I will let you know fairly quickly.

Cheers,

Robert Porter


 
Categories: Office | Reviews | Tools and Toys


August 24, 2006
@ 02:23 PM

I noticed that IBM has recently announced plans to acquire Internet Security Systems, Filenet, and Webify among others. I have worked on several projects over the years using Filenet, but have no experience with the SOA Webify. ISS makes security “appliances” and network security software.

Content management is hot, and likely to remain so, Filenet’s acquisition will help IBM balance against EMC’s acquisition of Documentum and Legato last year.

It is also a market area that Microsoft has not made much of a move into. Which only makes me wonder what their strategy will be to enter the content management arena with? I doubt they will stay out of the market, it’s a boom market and should be capable of generating significant revenue streams for some time to come, so I imagine they will have an offering soon.

Any ideas?

Cheers,

Robert Porter


 
Categories: Misc


August 24, 2006
@ 01:54 PM

Internet Explorer 7 RC1 is now available for download. This version will automatically un-install prior Beta versions for you. I had installed and used Beta 3 with few issues, then was able to un-install it and return to IE6, again with no issues. Ie7logo

I would advise that you install IE7 in a VM and preserve your current browser until you have decided you can use IE7 with any browser add-on’s you may have installed etc. After all, it’s still not release code.

From the “What’s New” page:

We are excited to announce the public availability of the Internet Explorer 7 Release Candidate 1 (RC1). With this release, we're strongly encouraging web developers, enthusiasts, and IT professionals to finalize their testing and ready their environments for the final availability of Internet Explorer 7. We are confident that websites and applications that are optimized with this build will be compatible with the final version when it is released later this year. For an easy path to compatibility, we encourage technical audiences to download the free Readiness Toolkit.

Internet Explorer 7 RC1 is available for download on Windows XP SP2, Windows XP Professional x64 Edition, and Windows Server 2003 systems. This build is available today in English, and all localized versions of Internet Explorer 7 RC1 will be available in September, including Arabic, Finnish, German, and Japanese; French and Spanish versions will also be available for the first time in September.

The Internet Explorer 7 RC1 build includes improvements in performance, stability, security, and application compatibility. With this build, Microsoft has also made enhancements to the fit and finish of the user interface, completed CSS platform changes, added language support, and included an auto-uninstall feature in Setup, which automatically uninstalls prior betas of Internet Explorer 7, making installing the new build even easier.

As previously announced, to help our customers become more secure and up to date, Microsoft will also distribute Internet Explorer 7 as a high-priority update via Automatic Updates soon after the final version is released for Windows XP later this year.

Be sure to download Internet Explorer 7 RC1 today and keep the feedback coming as we get ready for the final release later this year.

Thanks again to all of you who downloaded the previous beta versions and provided us with valuable feedback to help improve the web experience.

The Internet Explorer team

YMMV.

Cheers,

Robert Porter


 
Categories: Tools and Toys


Julia Lerman started it! And the Bill McCarthy jumped in, and it was all good! “It”, is a description about VB.NET’s Shared definition which equates more or less directly to C# and Java’s Static keyword. VB.NET already had used “Static” for quite another purpose historically.

Both posts do an excellent job of explaining the usage of Shared in VB.NET.  It’s not a new concept, but it throws lot’s of VB’ers because of the holdover baggage from Basic 1,2,3,4,5,6,7 and VB1,2,3,4,5,6 days, not to mention, QuickBasic and all of it’s incarnations.

So if you are ever struggling to understand the differences, or explain them to someone else, either or both of these posts would be a great reference.

Bob Porter


 
Categories: .NET | Programming | VB.NET


There are literally dozens of articles on how to retrieve images from a database and display them in a web page.  The vast majority use one of two variations.

Variation 1

Retrieve the image data, save it to a temporary file and then use the file as the image controls ImageURL or src.

Variation 2

Use an .aspx page with its content type set to an image/xyz type and retrieve the image within the ‘loader’ page and use that page as the image controls ImageURL or src.

I can’t use Variation 1 because I don’t want to create temporary files for a variety or reasons. Variation 2 works for individual images but I need to be able to quickly pull back up to 12 images and I experienced problems using this method within a loop from the calling page.

So here comes Variation 3. I am still not 100% satisfied by this but it works. As an aside since I can retrieve the image as a byte array directly from the database I would love to be able to do something like:

PageLoad Event

Go get image from DB and return it as either a Byte Array or a memorystream

Image1.ImageURL.LoadFromStream(ms)

Alas even though I wish it to be true it does not appear to be possible. However in the Wrox Book “ASP.NET 2.0 MVP Hacks and Tips” I stumbled on what turned out to be my solution in chapter 17 the part titled “Compositing Images with an HttpHandler” which was written by Scott Hanselman

So my solution was a variation on Variation 2, I created a HttpHandler class that in essence does the same thing, it retrieves the image data and then writes the image directly to the output stream and so I can now call my handler and pass in some parameters like this:

Using the html img tag:

<img src="GetImages.ashx?RecID=90&Size=Small">

Or using the server side model:

Image1.ImageUrl = "~/GetImages.ashx?RecID=90&Size=Model"

This method works like a champ even in a loop, and seems to be much faster than the .aspx page method. Not sure why, perhaps an HttpHandler does not have the overhead a full .aspx page does, but it sure works well.

The full code for my solution is below: Note: this was test code, I would NOT recommend using dynamic SQL like I do below in a production application, instead use parameterized sql.

<%@ WebHandler Language="VB" Class="GetImages" %>

    1 Imports System

    2 Imports System.Web

    3 Imports System.IO

    4 Imports System.Drawing

    5 Imports System.Drawing.Imaging

    6 

    7 Public Class GetImages : Implements IHttpHandler

    8 

    9     Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest

   10         'Create the request object and retrieve the QueryString Parameters

   11         Dim req As HttpRequest = ctx.Request

   12         Dim iRecID As Integer = CType(req.QueryString("RecID"), Integer)

   13         Dim sPicSize As String = CType(req.QueryString("Size"), String)

   14         Dim img() As Byte = GetData(iRecID, sPicSize)

   15         ctx.Response.ContentType = "image/gif"

   16 

   17         If (Not (img) Is Nothing) Then

   18             Dim m As MemoryStream = New MemoryStream(img)

   19             Dim image As Image = System.Drawing.Image.FromStream(m)

   20             image.Save(ctx.Response.OutputStream, ImageFormat.Gif)

   21         End If

   22 

   23     End Sub

   24 

   25     Public Function GetData(ByVal iRecID As Integer, ByVal sPicSize As String) As Byte()

   26 

   27         Dim cnn As Data.SqlClient.SqlConnection

   28         Dim cmd As Data.SqlClient.SqlCommand

   29         Dim msTemp As New MemoryStream

   30         Dim strSQL As String

   31 

   32         Select Case sPicSize

   33             Case "Large"

   34                 strSQL = "SELECT LargeImage FROM cyb_Frames WHERE RecID=" & iRecID

   35             Case "Small"

   36                 strSQL = "SELECT Thumbnail FROM cyb_Frames WHERE RecID=" & iRecID

   37             Case "Model"

   38                 strSQL = "SELECT ImageWithModel FROM cyb_Frames WHERE RecID=" & iRecID

   39             Case Else

   40                 strSQL = "SELECT LargeImage FROM cyb_Frames WHERE RecID=" & iRecID

   41         End Select

   42 

   43         Dim connString As String = Web.Configuration.WebConfigurationManager.ConnectionStrings("xyz").ConnectionString

   44         cnn = New Data.SqlClient.SqlConnection(connString)

   45         cmd = New Data.SqlClient.SqlCommand(strSQL, cnn)

   46         cnn.Open()

   47 

   48         Return cmd.ExecuteScalar

   49 

   50     End Function

   51 

   52     Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable

   53         Get

   54             Return False

   55         End Get

   56     End Property

   57 

   58 End Class


 
Categories: .NET | ASP.NET | SQL | VB.NET


August 10, 2006
@ 10:34 AM

I am slowly getting up to speed with dasBlog, and I have to say I am impressed… and confused! However the confusion is correctable. It stems mostly from not yet being able to get my development environment up to speed. ( I use VS2005 exclusively and dasBlog was and remains written for and in VS2003 and .NET 1.1 )

There are some posts that help with setting your development environment up for VS2005 such as the one here as well as reading through some of the forums and of course just plain hitting Run and seeing what blows up.

What I am impressed by is the fact that unlike several other open source projects the current developers seem to encourage contributions and patches. I can’t say the same for efforts like an unnamed blog engine I used before, where a submission goes unacknowledged and posts to their forums disappear after a day or two with no explanation.

And from what code I have seen, it looks in way better shape than most, so that is hopeful. Some of the rest of my confusion stems from the fact that dasBlog uses flat files for content storage as opposed to a database. And category lists seem to be driven by use not a stored list.

This makes it sort of difficult for someone using an external tool to blog with. I use BlogJet myself and am very happy with it, however either it or dasBlogs implementation of the Blogger interface do not yet support Categories that it does not obtain from the blog engine. In other words the category must exist already before you can use it in BlogJet. So the solution (Clarification: The solution was provided to be my Scott Hanselman not my own discovery, after I sent an email asking about the issue.) was to create a placeholder post and assign it every category I thought of (and periodically have to edit it to add new ones) just so I can use them in my external tool.

But as I get more familiar with the engine and the code, I should begin to learn the reasoning behind these decisions and be in a better position to comment on them then.

Cheers,

Robert Porter


 
Categories: ASP.NET | dasBlog


August 9, 2006
@ 04:47 PM

Just ran into another interesting gotcha with ASP.NET 2.0, if you are using any form of DotNetNuke don't install it in the root of your website! When I test posted my current project to my own hosting server to work with, I got some very strange behaviour. After a fair amount of digging I stumbled on a post having to do with DNN and other apps having difficulties existing together if DNN was at the root level.

Reinstalled DNN as a vDir and put a redirect page up and everything came back to life!

Cheers,

Bob Porter


 
Categories: .NET | ASP.NET | Atlas | Ajax - Atlas | Ajax


I have recently had occassion to enable an existing web site project for Atlas functionality. It was reasonably straightforward and I wanted to share some of the links I found that helped me along, as well as some of the unique issues I encountered.

Jay Kimble posted an article on CodeBetter.Com that was very helpful.

Scott Guthrie’s whole blog is a fantastic resource for all things Atlas and ASP. (For the longest time I thought his last name was Gu!) In particular take a look at his ASP.NET 2.0 Tips, Tricks, Recipes and Gotchas article.

And of course the home page for the Atlas project here is a great resource.

Now onto the unique issues I encountered, mostly what was happening was that I was getting no where when inserting an Atlas tag into my pages, the infamous “red squiggly line” kept showing up. After a great deal of wailing, gnashing and web searching I realized that I had installed the last 3 CTP releases on top of each other. So I cleaned everything off (literally, I ended up re-paving my laptop!!!) and reinstalled everything from scratch and only the latest and greatest which at the time of this writing is the July CTP release.

Once that was done, and yes I had other issues than just the Atlas stuff, I was gratified to not see red squiggles everywhere in my code!

I hope this helps point someone in the right direction if they end up where I was. Hopefully not quite as drastic a fix as mine however!

Cheers,

Robert Porter


 
Categories: ASP.NET | Atlas


If you are like me, you get a half dozen “Free” subscription offers from IT magazines such as eWeek, InfoWorld etc in your e-mail or snail mail every month.

As we all know, the magazines, for the most part, make their money off of Ad revenue. Part of how they attract advertisers is their circulation or subscriber counts. Part is by demonstrating the demographics of their audience.

In order to gather that demographic information the “Free” offers are accompanied by a multipage survey that attempts to define who and what you are in terms their advertisers can digest.

Well let’s take a look at “Free”, a typical paid subscription for a year at XYZ Magazine is say $124.00. It takes me 15 minutes of my time that I bill at $500.00 per hour to a client to fill one of these surveys out, even if I cheat and just randomly select values.

So one quarter hour of $500.00 billable time is $125.00 worth of my time. Hmmmm, not so free is it? Now I don’t bill all my time, ( I would Love to!), but I don’t so even if you lower the value of your and my time drastically, it still is not a free subscription.

And discussing this topic with several co-workers and friends resulted in the not unexpected result that most of them just randomly select values on those survery as well. So the data that the magazines are collecting is useless for the most part.

So hey, Mr./Ms. Magazine editor, just send the dang thing! Or better yet, reduce your survey to one short page. I for one don’t have the time to read all the magazines I do get, including those I have paid for, so I am just chucking/deleting any more “Free” subscription offers I receive!!

Cheers,

Robert Porter


 
Categories: Rant


I decided after ‘experimenting’ with blogging for awhile, to get serious about it. So I am re-launching BlogOfBob as a technical blog with a sharper focus than before, and hopefully with more frequent posts.

Having read Ted Demopoulos’s and Shel Holtz’s book “Blogging for Business” as well as several other resources, I am trying to make this blog more attractive to readers as well as more content rich. Bforb(If you have not read the book do yourself a favor and go get a copy and read it!)

So, that being said, I will be bringing back selected posts from the old blog, and will eventually make an archive version available for the curious.

I have also switched to dasBlog from Wordpress, for a number of reasons. First and formost is that I need more experience with ASP.NET and XML and dasBlog is written using those technologies. So I will be running, and learning the latest and greatest version of dasBlog!

If all goes well, or not, I will blog about my experiences doing this here as well. Especially anything that might add value back to dasBlog!

So stay tuned, more to come. Hopefully this will be enjoyable for all.

Cheers,

Bob Porter


 
Categories: Ramblings


It appears that if you use Outlook 2007 and have Grisoft’s AVG Anti-Virus product you may be sending some or all of your emails with no body text.

The solution is to tell AVG NOT to certify your e-mail, either in or out. AVGOptionsSee the screenshot for the two options that need to be turned off. I did this and Outlook now seems to have stopped firing blanks!

I can’t take credit for the fix, I did a quick Google search and saw a number of posts on the issue.

That being said I am somewhat annoyed that Grisoft has not addressed this issue, since a lot of the posts I saw were at least a month old and AVG is updated frequently.

Lets hope they get it fixed soon.

Bob Porter


 
Categories: Office | Outlook | Ramblings


I am in the process of re-launching BlogOfBob. Stay tuned!

Bobster


 
Categories: