February 02, 2010

Events This Week – February 2nd, 2010

Here are the events listed in Community Megaphone for the next week (or so) for the Mid-Atlantic area, as well as webcasts of interest…this list includes events imported from the UGSS event calendar, and all events entered in Community Megaphone are also automatically synced to the UGSS event calendar:

  • Ft Lauderdale - Online: Test-Driven Database Development with Data Dude - Cory Foy - CoryFoy.com
    Tuesday, February 02, 2010 6:30 PM, , Online
    02/02/2010 - 6:30 PM Online - A little known tool in the Visual Studio Team Editions is Visual Studio Team Edition for Database Professionals, also known as Data Dude.
    This tool is a very powerful tool for anyone who works with databases - especially developers. In this session we'll show how you can use Data Dude to do Test-Driven Development on your Schema ad Data, and how you can use Data Dude to Refactor your database in incremental steps without losing your data - or your mind.
    [ Event Details | Add To Calendar ]

  • PGHDOTNET February Meeting - Improving Your ASP.NET Application's Performance, and Creating Web UI Unit Tests
    Tuesday, February 09, 2010 5:30 PM, Pittsburgh, PA
    Join us on February 9th for two sessions as David Hoerster first describes how you can quickly create web UI unit tests using Visual Studio 2010's new CodedUI Tests feature. Afterwards, we'll talk about how to improve the overall performance of your ASP.NET web sites by going over a few tips and tricks. This is a session that will be beneficial to developers, testers and architects alike!
    [ Event Details | Map & Directions | Add To Calendar ]

  • Hampton Roads .NET Users Group - February Meeting
    Tuesday, February 09, 2010 6:00 PM, Chesapeake, VA
    Introduction to Data Warehousing
    Speaker: Jessica Moss
    Learn about data warehousing in this introductory presentation. We will discuss the benefits of using a data warehouse, the dimensional modeling principles needed to design a data warehouse, and the tools that will help design, load, and aggregate data in a data warehouse. The presentation will show all pieces of a working data warehouse to illustrate these points.
    [ Event Details | Map & Directions | Add To Calendar ]
  • Want your events listed? You can add them here.

    You can also add your events via the Community Megaphone web service API, which is now live. You can get more information on the API, and how to sign up, at http://www.communitymegaphone.com/API.aspx. You can also email me for more information.

    ASP.NET MVC, Strongly-Typed Views, LINQ to SQL, and IDENTITY_INSERT

    Given some of the recent discussions and debates over the value of ASP.NET Web Forms (with which I have deep experience) and ASP.NET MVC, I thought I would immerse myself more deeply into MVC. To that end, I’m doing some prototyping with the ASP.NET MVC 2 release that shipped with Visual Studio 2010 Beta 2.

    Following along with the demos in the first installment of Rob Conery’s “Mastering ASP.NET MVC 2” video series on Tekpub.com, I created a simple database with a couple of tables, modeled the DB using LINQ to SQL, and created a Controller and some strongly-typed views for the Index, Details, Edit, and Create actions.

    One issue that I ran into early on was that I was getting the following error when attempting to create a new record:

    Cannot insert explicit value for identity column in table 'Events' when IDENTITY_INSERT is set to OFF

    Whether I failed to follow precisely the steps in the demos, or whether there’s some other issue involved, I’m not sure, but the crux of the issue is that my database was set up with the ID columns as Identity values, which automatically provide a value for the column based on the increment you supply (usually 1). Meanwhile, my LINQ to SQL model was also set to provide values for these columns if no value was provided. So when I submitted a new record (I had already removed the ID markup from the Create view), and LINQ to SQL attempted to insert a value into the Identity column…BOOM…error.

    The solution, in my case, was to update my LINQ to SQL model. For example, one of the model entities, Venue, looks like this:

    image

    I selected the VenueId property, which maps to the column of the same name in the DB, which has Is Identity set to True, and set the property’s Auto Generated Value property to True, as shown below:

    image

    This tells LINQ to SQL that I’ve already taken care of incrementing the Identity column, so my model doesn’t need to. Problem solved, now I can create records without the errors. Hopefully, this will help some folks if they run into this error when working with ASP.NET MVC and LINQ to SQL.

    January 26, 2010

    ReSharper 5.0 Preview: Solution-Wide Warnings and Suggestions

    Over the years, ReSharper has gradually advanced from plainly highlighting errors and problems in individual code files to somehow summing up errors and problems in a larger scope, up to entire solution.

    Back in 2007, ReSharper 3.1 was the first ReSharper version to introduce Solution-Wide Error Analysis to gather data on all errors in solution using a single tool window. ReSharper 4.5 split many code inspections to execute in private and public scope, with the latter only available when you turned Solution-Wide Error Analysis on.

    Taking another huge step towards instantly seeing every problem anywhere in solution, ReSharper 5 introduces a new code analysis feature called Solution-Wide Warnings and Suggestions. You can easily guess that it lists all warnings and suggestions that ReSharper displays in the scope of your whole solution or in a narrower scope, depending on how you call it. In other words, any code smells or other problems that you may have in your solution can now be summarized in a single tool window, making tool-based code review much easier.

    When you switch on Solution-Wide Errors Analysis, Solution-Wide Warnings and Suggestions starts showing errors as well, plus warnings and suggestions that work in non-private scope.

    That doesn’t mean Errors in Solution tool window is getting obsolete with R# 5: when your goal is as simple as to make your code compile, Errors in Solution quickly indicates that something in solution went awfully wrong and you should fix things up before you can compile.

    However, as soon as you’re ambitious enough to make your code green - that is, eliminate compiler warnings, implement best practices, or upgrade your code to leverage latest language opportunities - Solution-Wide Warnings and Suggestions is exactly what you need to get it all done quickly.

    The feature includes two items:

    • A new command, Inspect Code, that is available by right-clicking any node in Solution Explorer, from a single file to the whole solution:
    • Inspection Results tool window that actually shows problems found in a certain scope, broken up into several categories:

    Inspection Results tool window is pretty much similar to other ReSharper tool windows like Type Hierarchy or Find Results: it provides common navigation, grouping and export options, as well as an additional code preview pane where you can instantly see the context of a problem without opening the corresponding file in the text editor:

    The tool window is not updated automatically, so as soon as you’ve made substantial changes, make sure to click the Refresh button to make inspection results up-to-date:

    In many scenarios, chances are you don’t want to review all code problems you may have in a scope - you’d rather focus on a particular subset. Inspection Results lets you do this by clicking the glaring Filter button:

    This displays the Filter Issues dialog box where you can select or deselect individual inspections or even entire inspection groups. For example, here’s how you can discover code that can be transformed to leverage C# 3.0 and C# 4.0 language features:

    When you press or double-click an item in Inspection Results, the corresponding file opens in the text editor in the right position for you to actually take measures: apply a quick-fix, refactor or clean up code or whatever:

    However, instead of double-clicking through all inspections, in many cases you can apply fixes right from Inspection Results: say, you’re inspecting a single file that has three inspection items:

    Of the three inspection items, two can be safely fixed using Code Cleanup that can both delete a redundant “using” directive and make an explicitly typed variable implicitly typed. Then, you press Ctrl+Alt+F right at one of these two inspection items, and the Code Cleanup dialog box shows up:

    You launch Code Cleanup with Full Cleanup profile, and ReSharper applies fixes for both inspections straight away! Upon refreshing Inspection Results, you only have one inspection left:

    In addition to cleaning up code, you can also apply refactorings and navigation actions right from Inspection Results. I hope to cover scenarios involving this approach in subsequent posts about ReSharper 5.

    To try out Solution-Wide Warnings and Inspections in its latest incarnation, make sure to download a fresh ReSharper 5 nightly build!

    January 16, 2010

    Visual Studio 2010 and .NET Framework 4 Launch Date

    "Short but sweet, Visual Studio 2010 and .NET Framework 4 will launch on Monday, 12 April 2010."

    Published Wednesday, January 13, 2010 8:18 PM by Rob Caron

    January 13, 2010

    Wanted: Someone to fix horrendous Graffiti/CS Issues

    My hosting company orcsweb has notified me that Community Server and Graffiti are causing such horrendous issues for their servers that put me on 30 day notice after segregating me to a separate DB server. The average CPU is at approximately 70% with spikes that push it to 100% usage many times throughout the day. I need someone who knows Graffiti to take my Vista DB powered installation and convert it into a SQL Server installation as well as upgrading me to the latest Graffiti as well as Community Server. Also this person would hopefully help track down performance issues. I don't know how much I can pay but I have zero time or knowledge to do this myself Reply here please.

    January 01, 2010

    Microsoft MVP Award 2010 – Thank you!

    Reading my mails today:

    mvp Dear Michael Schwarz,

    Congratulations! We are pleased to present you with the 2010 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in .NET Micro Framework technical communities during the past year.

    The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say "Thank you for your technical leadership."

    Now, this is my fifth MVP year [2006, 2007, 2008, 2009] started in 2006 with the Microsoft MVP in Visual Studio Development / ASP.NET. I’m really surprised that I got the MVP award again. Thank you Microsoft, a big thank you to all of you!!

    2010 will be a great year with new great products! I hope I can still give my best to you and help supporting Microsoft products.

    Microsoft MVP 2010 Award for Groove:Architecture (3rd time)

    2190084222_e585244fa8_m[1]

    My thanks to Microsoft for the Most Valuable Professional (MVP) Award for 2010 - this is 3rd time in a row!  I have been active with the Groove and the CTDOTNET community for the past several years and it is always a pleasure to be helpful and work with other developers.

    Groove has evolved considerably over the years (since '01) and works well with other collaborative platforms, especially SharePoint. The new & upcoming version of Groove will be SharePoint WorkSpace 2010 – find out more about it at the Office 2010 Beta website.

    December 23, 2009

    ReSharper 5.0 Beta Comes Out

    Download ReSharper 5.0 Beta while it’s hot!

    ReSharper 5.0 introduces a great web development feature set; code analysis extended with call tracking, value tracking, and foreach-to-LINQ transformations; project-level refactorings; and a lot more enjoyable features. You can learn what’s new in greater detail at the ReSharper web site.

    ReSharper 5.0 Beta integrates into both Visual Studio 2008 and Visual Studio 2010, so if you’re using Visual Studio 2010 Beta 2 and you’re missing ReSharper goodness, now is a good time to give ReSharper 5 a try.

    However, keep in mind that Visual Studio 2010 Beta 2 has a number of known issues that in certain scenarios prevent ReSharper from working well. Don’t worry too much though: it doesn’t mean your Visual Studio crashes every time you press Alt+Enter! JetBrains and Microsoft engineers are aware of the problems and working together to solve them by the time Visual Studio 2010 goes RTM.

    By the way, ReSharper in Visual Studio 2010 introduces a pack of special text editor integration features including a new animated error stripe and alpha-blended gray code that lets you see ReSharper highlighting even in code that ReSharper marks as unreachable:

    Since this is a beta release, we desperately need your feedback. Please file any bugs that you may encounter to ReSharper issue tracker, and otherwise let us know how you feel using the new ReSharper in your Visual Studio.

    Download and enjoy!

    December 11, 2009

    ReSharper 5.0 Preview: Loops 2 LINQ

    On the eve of ReSharper 5.0 going beta, we thought it’s just about time to start elaborating on new R# features. We’re hoping for a series of posts on improved code analysis, navigation to and within external sources, structural search & replace, ASP.NET support, and other stunning capabilities that ReSharper 5.0 provides. Today, we’ll talk about R# going crazy over LINQ.

    Among many new code inspections introduced in ReSharper 5.0, two are specifically aimed at converting for and foreach loops into LINQ statements and/or combinations of extension methods and lambda expressions. Here they are:

    • Loop can be converted into LINQ-expression
    • Part of loop’s body can be converted into LINQ-expression

    If you are wondering why you would ever transform traditional cozy loops to LINQ, Jimmy Bogard, Matthew Podwysocki, and Justin Etheredge have done a great job of explaining why.

    Back to ReSharper work, let’s see how it converts loops to LINQ method or query syntax for you in common scenarios.

    First, there’s the aggregation scenario where we loop through a collection in order to get the number of this collection’s items for which a certain condition holds true:

    ReSharper highlights the foreach keyword with a green curly underline. You press Alt+Enter for available actions, and ReSharper suggests that you convert the loop to a LINQ expression:

    You apply the conversion, and here we go: no more temporary counter variable. Instead, we’ve got Count extension method with a lambda-styled condition:

    Next, we’re taking on the transformation scenario where we’re looping though a collection to populate another collection:

    Again, ReSharper is smart enough to see that the code fragment can be converted to LINQ method syntax:

    On the output side, we’ve got one line of code instead of three, thanks to the ToDictionary extension method:

    For the next scenario, let’s take a collection and filter it out, so to speak, like this:

    ReSharper encounters three foreach loops and readily suggests that we convert each of them. Because conversion only occurs within a selected loop and its nested loops, let’s press Alt+Enter at the top-level loop:

    What we’ve got here is a pretty return statement that leverages LINQ query syntax:

    All three examples above show how ReSharper converts entire loops to LINQ. In many cases, specifically with write usages inside loops, that can’t be done. For such occasions, ReSharper provides its second LINQ-related inspection: Part of loop’s body can be converted into LINQ-expression. Unlike the previous action, it’s displayed as a hint and highlighted with a straight green underline.

    Let’s take another foreach loop with a complex condition and a write usage inside:

    Pressing Alt+Enter at the foreach keyword highlighted as a hint lets you convert a part of the loop to LINQ syntax:

    ReSharper integrates the condition with iteration variable definition, resulting in a LINQ query that makes the previously bloated write usage clear:

    If, for any reason, you want to keep your loops for future generations and you don’t need LINQ-related code inspections, or, say, you want them to display as warnings or even errors, you can always configure them by choosing ReSharper | Options | Code Inspection | Severity.

    The two loop 2 LINQ inspections and many more exciting features are available right now: we keep publishing fresh ReSharper 5 nightly builds that you can download and evaluate.

    December 08, 2009

    A Channel9 E2E2E video…

    Charles just posted a new “Expert2Expert2Expert” talk on Channel9 on “Programming Data.” This was a talk, moderated by Erik Meijer, with me and Michael Rys about data and programming and “M” and SQL Server and more. It was an enjoyable conversation but Erik did observe afterwards that I’d managed to avoid saying too much about “M” specifically! There wasn’t any mysterious intent on that one—as I said in my previous blog entry, things have been continuing to move in the “M” world and there just isn’t a lot new that I can say at the moment. Soon, hopefully, soon…

    November 29, 2009

    Hyper-V Virtualization CPU compatibility utilities

    Two utilities from AMD and Intel to check your CPUs for compatibility for virtualization -

    IntelProcessor Identification Utility checks your CPU for virtualization, 64-bit and threading.

    AMD - This utility checks your system’s capabilities to facilitate testing of Microsoft Hyper-V on platforms with AMD microprocessors.

    October 20, 2009

    Welcome to ReSharper 5.0 EAP!

    We’re happy to finally provide public access to early bits of the renewed ReSharper!

    Starting today, you can download nightly ReSharper builds, and the first one is already there for you.

    Note that this is only pre-release software. Nightly builds are assembled automatically every night without proper alpha testing, and we can’t guarantee that they will even run on your machine. However, we hope that by participating in this Early Access Program, you can help us gradually improve product quality up to a level that is proper for final release.

    Some additional notes on this EAP:

    • At this time, we’re only publishing ReSharper builds for VS 2008. We’ll start publishing VS 2010-compatible builds as soon as we verify that ReSharper works decently with VS 2010 Beta 2.
    • The UI for many new and improved ReSharper features is not yet finalized. Shortcuts and titles may change as well.

    Once you have downloaded, installed, and used a nightly build for a while, please vote for it in the nightly builds page so that other users are able to judge on its quality. If you’re willing to report a bug or feature request, please do so using our bug tracker (here’s how it works).

    To further comment on the quality of individual nightly builds please use jetbrains.resharper.eap newsgroup or its web mirror in our development community.

    To get an idea of improvements and new features that we’re starting to reveal during this EAP, take a look at the recently published ReSharper 5 Overview.

    Happy early accessing!

    October 13, 2009

    ZigBee Smart Energy Blog

    While I’m currently working on a ZigBee Smart Energy device running on Microsoft .NET Micro Framework 4.0 (beta) I have started a new blog writing about news concerning Smart Energy (Smart Grid) around the world: http://smartenergy-news.blogspot.com/

    For those of you not familiar with or never heard about ZigBee Smart Energy, here is a short statement from ZigBee Alliance’s web site:

    ZigBee Smart Energy offers utilities and energy service providers secure, easy-to-use wireless home area networks (HAN) for managing energy. Smart Energy gives these groups and their customers the power to directly communicate with thermostats and other smart appliances.
    New advanced metering and demand response programs can be implemented in homes easily and securely because of ZigBee wireless technology. Now utilities and energy service providers can easily implement energy management and efficiency programs to meet changing government requirements.

    There area a growing number of products certified by the Alliance for ZigBee Smart Energy. These products represent every type of device needed to implement a robust home area network using ZigBee Smart Energy.

    The ZigBee modules I’m using are from Digi International – a simple firmware upgrade and you can start implementing the new Smart Energy profile.

    October 12, 2009

    ReSharper 5.0 Overview

    As promised, we’re publishing a general ReSharper 5.0 overview, elaborating on its feature set.

    Please keep in mind that this is a preliminary document. The general picture will stay unchanged, but local amendments cannot be ruled out at this point, and many user interface items will probably change.

    Features

    • External Sources
      A solution is not limited to sources included in your projects, but also contains sources that were used to build your libraries. Some companies publish parts of their sources using the Source Server feature of debug information files (PDB). This is the same technology that Microsoft uses to provide access to source code for parts of the .NET Framework. With ReSharper 5, you can now access it as if it were a part of your solution. When no sources are available, ReSharper does a decent job of reconstructing types’ structure from metadata for your browsing pleasure.
    • Structured Patterns
      “I was assigned to a new project, and the source code is full of [your favorite code smell here]. Please, make ReSharper analyze and fix it!”. Fortunately, ReSharper 5 can address this demand. You can set up your own code patterns, search for them, replace them, include them in code analysis, and even use quick-fixes to replace! Building patterns and enforcing good practices has never been this easy. Corporate and team policies, your own frameworks, favorite open source libraries and tools — you can cover them all.
  • Project Refactorings and Dependencies View
    Once you’ve gotten used to smart, automated refactorings that ReSharper provides, you can’t think of doing them manually anymore. In this release, we extend ReSharper’s coverage to bring you several refactorings for project structure. With ReSharper 5, you can move files and folders between projects; synchronize namespaces to folder structure in any scope - as large as your solution; safely delete obsolete subsystems without going type by type; and split a file with lots of types created from usages into their own dedicated files - in one go. We have also added a special project dependencies view to help you track down excessive dependencies between projects and eliminate them. As an early ReSharper 5 user said, “I’m no longer afraid of restructuring my project. I just go and do it whenever I feel it’s right”.
  • Call Tracking
    Find usages, find usages, find usages. Formerly, attempting to track call sequences in code could end up with lost context, lots of Find Results windows and, ultimately, frustration. With ReSharper 5, you can inspect an entire call sequence in a single window, in a simple and straightforward manner. Stuck in unfamiliar code? ReSharper’s code inspecting tools for the rescue!
  • Value Tracking
    Value Tracking gives you important information about data flow in your program. At any point in your source code, select a variable, parameter, field or property and ask ReSharper to inspect it. You will then see how its value flows through your program, back to its sources or straight to consumers. Wonder how null could be passed to a specific parameter? Track it!
  • Internationalization
    Software localization and globalization has always been a tough and at times unwanted task for developers. ReSharper 5 greatly simplifies working with resources by providing a full stack of features for ResX files and resource usages in C# and VB.NET code, as well as in ASP.NET and XAML markup. Move string to resource, Find usages of resource and other navigation features, refactoring support, inspections and fixes — all ReSharper goodness for your localization pleasure.
  • Technologies and Languages

    • Visual Studio 2010
      We will publish more information about Visual Studio 2010 support when VS Beta 2 is released. Currently, ReSharper 5 builds support Visual Studio 2005 and Visual Studio 2008.
    • C# 4 and VB10
      New language versions nowadays appear at a great speed, and ReSharper team works hard to support them right when you need them. ReSharper 5 provides beta support for C# 4 and VB10, as Visual Studio 2010 does itself. Variance, dynamic types, named arguments and optional parameters, embedded COM assemblies — all of these features are supported in the new ReSharper. During VS 2010 Beta 2 phase we’re hoping to learn from your experience of using these features and improve their support for the Visual Studio 2010 release.
    • ASP.NET
      With this new version, ReSharper support for ASP.NET is improved tenfold. In addition to performance and responsiveness improvements, lots of new features for ASP.NET markup files are introduced to make your life easier. Web-specific navigation, master page support, new inspections and syntax highlighting for web files, File Structure and Go to File Member for in-page navigation and overview, live templates for common markup and more!
    • ASP.NET MVC
      ASP.NET MVC deserved our special attention: special syntax highlighting, inspections, navigation to and from action or controller, and even actions to create new types and methods from usage in pages.

    Productivity

    • IntelliSense
      ReSharper continues to bring first-rate IntelliSense experience, and the new version gives even more. We have added automatic completion for enum members and boolean values, made automatic triggering smarter, and greatly improved performance. Completion for unresolved symbols in local scope is a new ReSharper IntelliSense feature. Another improvement is completion for all-lower text with CamelHumps  — to make cocopro match CodeCompletionProvider — and that means you don’t need to press Shift too often.
    • Bookmarks
      This is a simple yet powerful feature: drop a numbered marker with a single shortcut, jump back at any time with another keyboard key. Up to 10 numbered bookmarks, unlimited unnumbered bookmarks, full list of bookmarked positions in a single pop-up window — all to help you instantly switch between several code spots.

    Inspections

    • Solution-Wide Warnings and Suggestions
      We have received a lot of positive feedback from our users regarding solution-wide error analysis, which allows you to immediately see compilation errors in the whole solution. In ReSharper 5, we took this technology to a new level by adding warnings and suggestions to the list. Now you can browse code smells that ReSharper finds across your solution and quickly improve the quality of your code.
    • Upgrade-to-LINQ Actions
      With C# 3.0 and LINQ, developers are able to write data-intensive code more easily by directly describing their intent to the compiler. However, years of imperative programming left us with tons of foreach-style code waiting to be upgraded. ReSharper 5 detects parts of your code that can be rewritten using the new LINQ syntax and offers to perform the conversion automatically, to make the developer’s intent crystal clear.
    • Use IEnumerable Where Possible
      With the power of LINQ, IEnumerable is more than enough to pass a collection of values. So why restrict yourself with an API requiring you to pass old-school arrays, Lists and ArrayLists? ReSharper will scan your code base to detect methods that can safely return and accept IEnumerable instead of a more specific type. Of course, we will also take care of the conversion.
    • New and Improved Code Inspections
      We have collected rich customer feedback and went through a list of common errors that developers make in code. Based on that, we have added a ton of highly intelligent inspections to immediately boost your .NET expertise. For example, if you take your API seriously and want it to be well documented, ReSharper will help you by highlighting errors in XML comments.

    Other improvements

    • Native NUnit Support
      ReSharper 5 introduces a completely new approach to running your NUnit tests. Our engine is now based on native NUnit code. What it means to you is 100% compatibility with the latest released version of NUnit and full support of its recent unit testing features.
    • XML Formatting
      XML data is an important part of modern applications and you want it to be in order. The new version of ReSharper is supplied with a superb configurable formatter for XML files.

    October 09, 2009

    ReSharper 5.0: Intro

    Did you miss us?!

    We’ve got some good news for you .NET junkies!

    ReSharper 5.0 is getting ready for some publicity. We’ve already started providing internal 5.0 builds to our beloved JetBrains Academy experts for some initial feedback. Next step: make builds mature enough to open public EAP, and we’re looking to get that far before end of month.

    You can also expect us to post a public R# 5.0 Roadmap shortly. Meanwhile, here are the four major areas that ReSharper 5.0 focuses on:

    1. Web Development. Web developers have long been asking for top-class support, so we’re starting to deliver on the promise with a pack of features for HTML, ASP.NET, and ASP.NET MVC.
    2. Project and Team. This is a valuable addition for developers having to explore much unfamiliar code and/or perform batch modifications in large-scale projects. With access to and navigation within external sources, structured patterns for searching and customizing code, and location/namespace synchronization tools working in batch mode, you can handle your colossal solutions easier.
    3. Code Analysis. In addition to fresh code inspections, ReSharper 5.0 presents multiple functional style “enumeration to LINQ” transformations, accepts warnings and suggestions into the “Errors in Solution” tool window, and introduces two major features to track what’s going on with your calls and data throughout application execution.
    4. Visual Studio 2010 and Tools. We’re on the run to support Visual Studio 2010 earlier than ever. More info on that when VS2010 Beta2 comes out. Of course, Visual Studio 2008 is supported as well.

    Last but not least, we have prepared a number of introductory, feature-specific blog posts for you to feel the flavor of the new version. Stay tuned!

    September 02, 2009

    Issue Tracker Used by dotTrace, JetBrains YouTrack, Goes Beta

    If you have recently reported bugs to the dotTrace team, you should have noticed that it’s done with a new issue tracker developed by JetBrains, YouTrack (previously code-named Charisma).

    Today is a serious milestone for YouTrack as it goes beta.

    You can read more about YouTrack features in its own section at the JetBrains web site, watch demos, and download the beta version.

    In addition, YouTrack has its own blog where you can get latest updates on the development process.

    You can report bugs and request new features at YouTrack’s own instance.

    YouTrack 1.0 public release is scheduled by the end of 2009.

    Develop and track with pleasure!

    August 11, 2009

    ReSharper Scores with Readers and Editors at Visual Studio Magazine

    JetBrains ReSharper has earned two of the most coveted awards at the Visual Studio Magazine 2009 Readers Choice awards:
    Visual Studio Magazine 2009 Readers Choice

    • Best Development Tool (Readers Choice): In one of the most hotly contested categories: Development Tools, ReSharper beat out 80 other products to claim the top honor.
    • Most Valuable Tool (Editors Choice): Readers and panelists were asked to single out the one product in the entire survey that stood out as the most valuable, effective and compelling tool for developers. JetBrains ReSharper was their choice.

    “We won’t develop without [ReSharper],” wrote one voter. No .NET developer at JetBrains does, and we don’t recommend you do either!

    Seriously though, we can’t thank all of you enough for your support and recognition. Feedback like this is worth triple the effort we put into product development!

    Keep developing with pleasure!

    - JetBrains ReSharper Team

    July 23, 2009

    ReSharper 4.5.1 is Available

    We’ve just released ReSharper 4.5.1 Maintenance build, which you can download here, or read up on the Release notes first.

    This maintenance release is a free upgrade to the licensed users of any 4.x version of ReSharper. To check your upgrade eligibility, please contact sales.at.jetbrains.com.

    You might also like to check the new short demos at the ReSharper Overview page.

    ***
    Keep developing with pleasure!

    - JetBrains ReSharper Team

    July 10, 2009

    JetBrains has fun at NDC Norway

    A couple of weeks ago we attended NDC Norway. The conference was organized on a very high level and went very well. We were excited and surprised to see how popular our products are in that part of the world!

    It was also nice to chat with all those who stopped by our booth. And on that note - congratulations to the following lucky winners of ReSharper + dotTrace productivity packs:

    Lars Kristian Hagen
    Harry Solsem
    Gante Magnussa
    Alf Kare Lefdal
    Ronny Hansen

    Your licenses should be waiting for you in your e-mail inbox!

    March 09, 2009

    Did Joel Spolksy nearly drive my coworker insane?

    Maybe.

    Dare had a pointer today to a programming.reddit story that talks about competing versions of a dustup between Joel and Greg Whitten back when Joel used to work for Excel. I could care less who’s right, but the interesting implication of the story is that Joel was the one who came up with the application interface for VBA. I’m not sure that’s entirely true—a lot people worked on VBA—but if it is, he might be responsible for nearly driving a former co-worker insane.

    When I started at Microsoft, I worked on Access. Access used a version of BASIC called Embedded Basic (or EB) for its programmability story. EB may not have been perfect, but I always thought it was a really nice language engine—it was small, it was fast, and it worked really well with Access and its programming model. After Access 1.0 shipped, however, EB was discontinued in favor of VBA which was the new official programmability story for Microsoft. There were a few people left on EB whose job, as far as I could tell, were just to tell me “no” when I came to them and asked them to fix bugs. (My interactions with the EB team at this point inspired my program manager to tell me that one of my special skills seemed to be “being able to tell people to f**k off, but in such a nice way that there’s nothing they can say in return.” Suffice it to say, I didn’t have a great relationship with the EB folks.)

    By the time we got to Access 95, we knew we had to move over to VBA. The head of the project stopped by and asked me if I was interested in maybe leading the effort to switch over to VBA. In what I can only describe as an extreme fit of sanity, I declined. Another coworker took on the job. Suffice it to say, it was nearly a complete disaster. VBA was designed to work well with Excel, which had a totally different storage, execution, and debugging model than Access. As a result, almost everything having to do with programmability had to be redesigned, often in some pretty hairy ways. From the outside, it seems like a miracle that it ever worked, much less worked well.

    As you can imagine, this was pretty hard on my coworker, who was responsible for getting this working in Access. As I remember, the VBA team at the time (Joel was gone by that point, I think) was somewhat sympathetic but not overly helpful—after all, they worked really well with Excel and we had all these “weird” requirements. Anyway, I knew things weren’t going well when my coworker came into my office and told me, “I found this really stupid bug that I made, so I decided to rename all the local variables to say insulting things about me.” Then one day I came in to work and found my coworker wasn’t there. When I asked where he was, I was told that he’d been ordered to take several days off and fly to Vegas to unwind for a while. I believe they were worried he might totally go off the deep end.

    In the end, though, we shipped, my coworker did not go insane, and everything ended up OK. But it’s interesting to think what might have happened…

    February 19, 2009

    How Scala Prevented My House From Burning Down

    My interest in Scala can be traced back to a Phlly Lambda presentation given by Toby Dipasquale last January. More recently I was meeting with someone about a data visualization project and they mentioned they were using Scala for a couple of startups they were working on. For those of you unfamiliar with Scala here’s a blurb from the Scala language website:

    “Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages. It is also fully interoperable with Java.

    The thing that made Scala particularly interesting to me was that it was a functional language, and that it’s fully interoperable with Java. I’ve been using a couple Java libraries for some projects I’m working on and I haven’t been enjoying it all that much. My hopes were that I could use Scala to make those projects more enjoyable, while at the same time learning a functional language (although it’s not a purely functional language).

    To help me on my journey of learning Scala I asked @codeslinger and @markchadwick for Scala book recommendations. Although, the pickings are slim, they both recommended Programming in Scala. A couple weeks ago I bought the PDF form of the book and began working my way through it. For anyone interesting in learning Scala I’d definitely recommend it. It covers a lot of ground, and is well written. Oh, and it also prevented my house from burning down!

    Since I have the PDF version of the book I’ve been printing out chapters periodically (reading on a computer screen sucks). This past Saturday morning I was sitting around watching my kids make a complete mess of the house and decided that I wanted to continue on with Programming in Scala. As such I printed out the next chapter. As I walked upstairs into my office (which is in the attic) I began to smell something out of the ordinary. As I went further up the smell got worse. I didn’t think much of it, and grabbed the printouts and headed back downstairs. When I got downstairs I noticed the entire chapter didn’t print out, so I went back to the computer and re-printed the chapter. When I made my way upstairs the second time the smell was again worse then before and also more identifiable. It smelled like an electrical fire! It turns out that one of my computers more or less blew up, had ejected it’s CD tray and had smoke bellowing out the front. I have no way of knowing what would have happened had I not been so interested in reading more about Scala, but I’m glad that Scala and Programming Scala hooked me and led me upstairs to catch my exploding computer early.

    So the moral of the story is that if you’re looking for a language to learn, consider Scala….it just might prevent your house from burning down! :)

    Cheers,
    Steve

    January 30, 2009

    Network Visualization on the Web

    Over the course of the last couple months I’ve been doing quite a bit of investigation and experimentation of existing network visualization libraries. There are a number of libraries available, some open source, some built specifically for the web, others meant for a desktop environment, some in java, others in flash, and round and round we go.

    I’ve talked to quite a few people who have specific expertise in technologies for doing network visualization as well, ranging from flash to javascript to Silverlight to java. My conclusion thus far is that large scale network visualizations (300+ nodes) is hard. Once you cross the 100 node mark, you begin to have serious problems with laying out the network in a way that is usable by the user of the system that the visualization is within. Drop on top of that the desire to make the visualization interactive (zoom, click, drag, etc), as well as the desire to have the visualization software figure out the best layout for the network itself and you have a pretty difficult problem to solve.

    I’m currently doing some prototypes myself using Silverlight. I don’t love the idea of using Silverlight since I doubt the penetration of Silverlight is as great as some have proclaimed, but, the advantages it offers are hard to look past. As a long time .NET/C# developer I’m very comfortable with the development tools used to build Silverlight applications, as well as the language within which to do so, C#. Silverlight appears to offer some pretty decent performance, and I suspect that it will get better as the VM improves. The major disadvantage of Silverlight, which I don’t know the validity of, is it’s lack of existing user base. Since it’s relatively new, and not many sites use it, I suspect the installed base of Silverlight is much less then something like Flash.

    The other piece of software that I’ve been spending a bit of time with is graphvis. Graphvis is good at creating network visualizations, and supports a number of different layout algorithms. Unfortunately the output isn’t always great, and it most certainly isn’t very interactive. What I’m experimenting with is using graphvis to pre-compute the network layout, and then feeding that positional information into the Silverlight visualization. The primary advantage will be that the Silverlight app won’t have to figure out the initial layout, however, it will be able to handle all the nice visualization and interactivity that’s desired. The question still remains, is Silverlight up to the challenge? Or is flash, processing, or a pure java applet more appropriate/capable? Only time will tell….

    October 31, 2008

    An embarrassment of riches on VB 10.0 and Oslo

    Now that we’re past the PDC, there are a bunch of video resources coming out on VB 10.0 and Oslo. Here’s a roundup of what’s available so far:

    The Pearson folks also recorded some vidcasts they call OnMicrosoft. If you go to the previous link, you can see all the videos posted, but the ones of interest to this blog are:

    There are other Oslo vidcasts on the site, so check them out as well.

    October 29, 2008

    Future Directions for Visual Basic

    Yesterday I gave my valedictory address on Visual Basic at the PDC. I think the talk went well and it was a lot of fun, if not a little sad that it’s one of the last times I’ll be giving a talk about Visual Basic. We covered a lot of exciting stuff, some of which should be familiar to readers of the blog. I’ll let people know when the video is up on the Channel9 page for the talk, should be some time today. For those of you who don’t want to sit through the talk it went something like this:

    • First, we talked a bit about the role of Visual Basic at Microsoft as the language that makes Microsoft platforms really accessible to programmers.
    • Then we segued into talking about the increased commitment that the languages groups are making to ensure that Visual Basic and C# coordinate language features so that users of one language aren’t left out in the cold when the other language adds some useful feature. This isn’t to say that we’re going to do things in exactly the same way, or even that the languages will have exactly the same feature set, but that we’re committing to ensuring that the fundamental capabilities in the languages stay in better sync than they have over the previous eight years.
    • Then Lucian did a really wonderful demo of VB 10.0, which is shipping in Visual Studio 2010. He showed (IIRC) the following features that should be familiar to the readers of this blog: array literals, collection initializers, automatic properties, implicit line continuations, statement lambdas, generic variance, and a feature that embeds primary interop assembly types in your assembly so you don’t have to deploy the PIA. I may have missed some, so check out the video when it’s posted!
    • Finally, we talked about some of the trends that we see affecting Visual Basic going forward and talked about some of the work we’re starting to do for post-VS 2010 to move the Visual Basic compiler to managed code and open it up to the world so that you can take advantage of the services that it provides.

    If you attended the talk, please evaluate the session! It helps me become a better speaker and helps us give a better PDC. And feel free to stop by the tools lounge today, I’ll be hanging out there most of the day!

    September 28, 2008

    IndiaStockQuotes Version 1.2.1

    It has been a long time since I actually worked on the IndiaStockQuotes component. Just had sometime over the weekend and fixed some bugs in the component and got out a new release. Also upgraded the component from .NET 2.0 to 3.5. I dont yet use any 3.5 specific features, so you should be able to recompile the source agains 2.0 and still get it to run.

    Check it out at India Stock Quotes

    September 26, 2008

    Moving a project from VS 2005 to VS 2008

    When you open a VS 2005 project in VS 2008, Visual Studio offers to migrate the project to the new format. Usually there should be no problem with this and all your project files, solution files, Test cases etc should move seamlessly to the 2008 format.
    Targettedframeworksetting
    But if you do build your project you will notice that your output assemblies actually target .NET Framework 2.0 and not 3.5. This is basically because the migration retains the targeted framework to make sure you application does not fail. The method to change this setting after migration is not easy to find.

    For VB projects, this setting is actually hidden inside, My Project -> Compile -> Advanced Compiler Options dialog. Obviously, this is not very easy to find. (See Image)

    In C# projects this setting is a lot easier to find in Project Properties -> Application Tab itself. I am not sure why the VB team actually made this setting so difficult to find.

    December 28, 2007

    (Almost) final VB 9.0 language specification posted

    I wanted to let people know that an (almost) final VB 9.0 language specification has been posted on the download center. The spec is missing some copy-edits from the documentation folks, but is otherwise complete. Since I'm not going to get a chance to incorporate the copy-edits until I am back from vacation in January, I wanted to get the spec out there for anyone interested in documentation of the XML features that weren't present in the previous version of the spec. (I apologize for the lateness of this vis-a-vis the release of the product itself, it's been a busy fall.)

    This updated language specification corresponds to Visual Studio 2008 and covers the following major new features:

    • Friend assemblies (InternalsVisibleTo)
    • Relaxed delegates
    • Local type inferencing
    • Anonymous types
    • Extension methods
    • Nullable types
    • Ternary operator
    • Query expressions
    • Object initializers
    • Expression trees
    • Lambda expressions
    • Generic type inferencing
    • Partial methods
    • XML Members
    • XML Literals
    • XML Namespaces

    Questions, comments or criticisms can be sent to basic@microsoft.com. Thanks!

    November 20, 2007

    Did something important happen today?

    Oh, yeah, that's right. We shipped. Hard to believe we've finally reached the finish line...

    December 20, 2006

    VB 2005 SP1 is released...

    In case you missed the announcement, VS 2005 SP1 is released. You can get it here. Beta support for Vista coming soon!

    November 16, 2006

    VB Hotfixes, now easier to get...

    I discussed a little while back that we've made a few hotfixes available to address some performance issues people have seen with VB. There's now a program that makes these hotfixes available as a regular download, rather than forcing you to call support. I'd recommend anyone running into performance problems give them a try...