Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Friday, May 7, 2010

Visual Studio Color Scheme Gallery

http://studiostyles.info

Pretty new site with user submitted VS (2005-2010) Color Schemes downloadable in .vssettings format. People can vote on them too. This site was sorely needed especially after Ning screwed over IDE Hot or Not.

It also includes a web based editor that is way more intuitive than the one in the options screen of Visual Studio. I have both a light and dark scheme I intend to submit.

Friday, March 26, 2010

Dina font for Visual Studio 2010

Updated: I've verified it works with VS2010 Release as well.
Thanks to the hard work of Erik Olofsson decoding the mystery of Embedded Bitmap Fonts I was able to convert one of my all time favorite programming fonts Dina into TTF usable by Visual Studio. The beauty of this technique is that it preserves the bitmap glyphs perfectly and the text rendering does not try to apply anti-aliasing or cleartype. See?

Visual Studio 2010
*bonus* I found that this font can also be used with any .NET application (WPF or Windows Forms) that normally can't handle raster fonts. Here's Dina used as the Grid font for SQL Server Management Studio


Download from my File Cabinet If anyone wants to re-host this file let me know and I'll update the link

Monday, February 18, 2008

RainbowText 2.0

This is the upgrade 8 years in the making!

I was going over some of my old projects and I realized the old version of RainbowText was in sore need of an upgrade.

Well a few hours later version 2.0 was ready to go. The biggest difference is this one supports all the latest major browsers. In order to do this I had to ditch the IE Behavior. However the new version is just as easy to use, and it is a bit clearer, in my opinion.

RainbowText is one of those scripts that annoy the hell out of most people, and a handful of people absolutely love it. Which are you?

View a demo and download the code here.

Wednesday, February 13, 2008

VS2008 Web Developer Hotfix

http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx
I would seriously recommend this to anyone who does web development with VS2008. Most of these are performance fixes, almost all of these I've personally experienced:

  • Source editor freezes for a few seconds when typing in a page with a custom control that has more than two levels of sub-properties

    Yep. Got this when working with Infragistics controls. Even hitting the down arrow to scroll through the intellisense list of attributes caused this delay. Very annoying.

  • “View Code” right-click context menu command takes a long time to appear with web application projects

    Got this too, though I didn't notice too much of a difference after the hotfix. I guess my PC's just slow on this one.

  • Visual Studio has very slow behavior when opening large HTML documents.
  • Visual Studio has responsiveness issues when working with big HTML files with certain markup
    Check and check. I still get unresponsiveness issues, but mostly now just when a document loads, whereas before it would happen constantly. I noticed if there was a lot of invalid HTML this would cause problems, also when using custom namespaced elements (running on the client, not ASP.NET controls) the editor seemed to have problems with these kinds of documents too.

  • The Tab/Shift-Tab (Indent/Un-indent) operation is slow with large HTML selections
    That's always been the case, and not just in HTML but in any code section that has intellisense parsing.

  • Slow typing in design view with certain page markup configurations
    Got this one too, again when working with Infragistics Controls. Typing in labels directly in TDs in design view was REAALLLY slow, and it didn't seem to buffer properly so you couldn't just type the whole thing then wait.

  • When opening a JavaScript file, colorization of the client script is sometimes delayed several seconds.
    Sometimes? Anything more than a trivial document would exhibit this behavior.

Monday, February 11, 2008

AJAX

It's funny, the last time I was seriously into client side web development in mid 2004 it was so stagnant. The only framework that truly seemed to be harnessing the full power of the browsers was Bindows.net. This was about the time that the original AJAX library was introduced. I had thought "What's the big deal? The underlying technologies have been around since around 1998." I still snicker whenever I see client heavy web development referred to as "Web 2.0".

It's weird though how a good abstraction and clever name can shift momentum and spark creativity. Every major software vendor has their own AJAX library. In addition a slew of new browser based UI frameworks have come about. However they are all still based on the same old technologies. JavaScript hasn't changed since 1999 (ECMAScript v3) with V4 in a seemingly never ending development cycle. Even when it is released and all the major browsers implement it V3 will be the minimum supported for a llloooonnngg time. Even with this almost decade old base technology such great innovations have come about.

Here are a couple of my favorite new libraries:
  • Ext JS this in many ways reminds me of Bindows in that it has a complete UI framework all the way from comboboxes and datepickers to dialogs, datagrids and multi column treeviews . It seems a lot easier to integrate individual components into a web site without having to initialize an application framework surface. Finally add that it has an LGPL license, most people (including companies) can use it free of charge.
  • Microsoft AJAX. Well there are certain parts to this that I really enjoy. I'm not a big fan of the way ASP.NET does a lot of things. And wrapping the mechanics of ASP.NET into an XMLHTTP request seems incongruent. The end result is a huge abstraction over another huge abstraction which in the end makes it very difficult to do anything more than the most basic task. However, I do really like the way they've done their purely client side library. It creates a very .NETesque framework that in many ways makes it a lot easier to make truly OO JavaScript libraries. I bet I could even create a pretty sweet ASP classic framework on top of it.
  • Adobe Spry: I really enjoy the Spry.Data library. It seems by far the most intuitive way of working with a variety of data sources. This is great for working with different server side technologies. Also their Widget design is the most backwards compatible with both down level browsers and JavaScript disabled browsers (that I've seen).

The best side effect of all this new fervor is people are now using JavaScript/DOM best practices. It used to be that JavaScript libraries were the worst in development practices. The global namespace was polluted with variables and functions, many of which had common names that would stomp over other libraries'. Additionally it was common to stomp over the window.onload delegate instead of using addEventListener or attachEvent. Now people fully use prototypes, object notation (JSON), nested anonymous functions, and all the other great features of JavaScript that mostly went unused.

Friday, July 20, 2007

SQL Assistant Part 1

I just recently found out about another SQL intellisense product called SQL Asisstant by SoftTree Technologies. Well calling it a SQL intellisense product is a bit of an understatement as it also offers SQL reformatting, spell checking, and code structure tree.

There really is so much ground to cover that I can't possibly do it in one post or I'd be spending all day on it (I do have to actually work, you know :)

This post I'll focus on the basic intellisense engine, which is probably considered the core functionallity. I used it with both Query Analyzer and SQL Server Management Studio, as I'm a SQL Server developer. I couldn't find any difference in functionality between the two. I tested against a SQL server on my local network.

The first thing I noticed is that it's damned fast. It didn't delay the load time of the editor applications at all. And when I expected it to pop up, it did immediately. It also doesn't pop up in unexpected places. This is crucial, as an overly aggressive intellisense hurts productivity and is really anoying. I think they found the right balance.

The popup window itself is small and elegant. It displays as a kind of tree-grid, where you can expand a parent object to see it's children. I've found that it works as a great quick schema browser.
Here's an example. I invoked the SQL Assistant via Ctrl+Space, and typed in a partial name of a table, that allowed me to find and browse it's schema very quickly, especially when comparing how long it takes to find something in the object browser.


It also has a great JOIN assistant, which detects FKs and automatically brings these to the top of the list. Furthermore if you choose the actual column (by expanding the hierarchy) it will also fill in the ON condition for you.



However it does have a flaw, once you reach the ON condition this happens:

Oops! What if I don't want to JOIN on that? It's perfectly valid to have alternative JOIN conditions. (Note: there is a workaround for this which I'll cover at a later time)

Other supported items are local variables. Temp tables aren't supported, and table variables are semi supported, in that you can see them in candidate lists like scalar variables, but you can't get the column information.

Well that's it for now. Like I said above this is just the 1st of a multi part series.

Tuesday, July 3, 2007

SqlPromptSnippetEditor

After being fed up with the ability to use copy and paste in the Snippet editor in SQL Prompt I decided to create my own editor.

While I was at it I got a little carried away and created a full blown Snippet Management application. The funny thing is I know that SQL Prompt 3.5 is slated to be Release Candidated (heh) this month and the full release will come shortly after. At the very least the aforementioned bug will be fixed and probably some of the other features I put in will be included as well since people kept asking for them in the support forums.

Get it here


IMPORTANT! Back up your Snippets file before using, as I make no warranties that it won't completely mangle your file.

Some other things to note: (As I don't have any help written)

  • I did my best to make the app very keyboard friendly, get to learn the different shortcuts.
  • Most of the list views have the ability to perform multi selected operations
  • On the import screen if you see a snippet colored DarkGoldenRod it means that you already have the snippet defined and it is exactly the same as the import snippet. If you see a snippet colored Red it means you already have the snippet defined and it is different from the import snippet (conflicted). Double click the colored snippet to view a comparison.

Tuesday, June 26, 2007

AddWithValue is evil!

I'm of course talking about SqlParameterCollection.AddWithValue. As with any blanket statement about some kind of technology being evil of course it isn't, but it sure did throw me for a loop today.

First let me give you a little background, for the last couple of years I've had the privilege of using a technology called SPEW, which reads the definition of a Stored Procedure from the Database and Generates a wrapper class which provides a strongly typed interface to a stored procedure. It means that I never had to instanciate my own SqlCommand objects and add Parameters and have to worry about if I spelled it correctly or look up types.

However that was proprietary technology to the company I no longer work for :( so until I can come up with an equivalent, it's manual creation for me.

So when my options for creating a SqlParamater are:

cmd.Parameters.Add("@SomeID", SqlDbType.Int, 4).Value = _someID;
or
cmd.Paramaters.AddWithValue("@SomeID", _someID);

of course I chose the latter, as I'm adding 20 or so parameters at a time on many stored procedures. It seemed to work just fine at the time.

Now AddWithValue uses type inference since they aren't explicitly set. string maps to NVARCHAR, decimal to DECIMAL, bool to BIT, etc.

So I developed an ASP.NET application locally using the built in development web server. When I deployed it to the target IIS server and tested it it gave me a SQL error to the effect of trying to use an NVARCHAR value as type MONEY, try using CONVERT. Eh? I then profiled it, the SQL generated by ADO.NET was perfectly valid and ran without errors. After messing around with the server configuration and re-deploying the site twice without fixing the problem I went back to the code and on a whim converted it to explicitly state the Sql Type. What do you know it worked on the IIS server.

It seems really weird that this would happen, as one would think the Web Hosting environment would have nothing to do with the way ADO.NET operates a SqlCommand aside from connection pooling.

So lesson learned, don't be lazy and avoid AddWithValue.