.NET Reporter

 
Get Top Posts and Jobs
Weekly via Email:

Subscribe
Unsubscribe

Search Posts:


Title Only
Title and Body
 

Search Jobs:


Title Only
Title and Body
147 posts from: JonGalloway.ToString()

Interesting Things Circa March 2013

(Indexed 2013-03-28):

Back in 2008 I had a blog series going where I did occasional blog post / news recaps with lists of interesting things. (Fun note: I ran that using ma.gnolia.com and stopped around the same time, but not necessarily because, they bit the dust.). I used that to post interesting things I'd been reading about, and given unlimited time would write long, insightful blog posts about. I've noticed lately that I've been declaring browser tab bankruptcy quite often, and that these interesting things de...(truncated)...

Announcing Web Camps Spring Tour 2013

(Indexed 2013-03-15):

Whew! Seems like we just got back from the Winter tour, and we're off again! We've got eleven international events coming up in March and April. Some are already sold out, so register today! And let your friends and co-workers who don't read blogs know, too, because there [Image] Web Camps are free, no fluff, lots of code events where you can get learn what's new in the Microsoft web platform and how you can put it to use right away. They're by developers for developers - no marketing, just bu...(truncated)...

Building Web Apps with ASP.NET Jump Start - Over 6 hours of free ASP.NET video training

(Indexed 2013-03-01):

Last Friday Microsoft Learning hosted Scott Hansleman, Damian Edwards and me for a full day live video Jump Start event titled Building Web Apps with ASP.NET. We had a nice crowd of about 2,300 attendees joining us during the event - but we were really excited about ending up with a full day of top quality training on ASP.NET 4.5, ASP.NET MVC 4, ASP.NET Web API, SignalR, and Visual Studio - all updated for the ASP.NET and Web Tools 2012.2 release. The Microsoft Learning team has a great studio, ...(truncated)...

Announcing the ASP.NET and Web Tools 2012.2 Release!

(Indexed 2013-02-18):

We're excited to announce the official release of ASP.NET and Web Tools 2012.2! The most important thing to know about this release is that it doesn't affect the ASP.NET runtime or your existing projects and doesn't require any changes on your server. You can think of this as more of a Visual Studio web update that includes some new ASP.NET project templates. It works on my machine, is well behaved, and gentle around children and small pets. I made a 25 minute video that overviews the features...(truncated)...

Building Web Apps with ASP.NET Jump Start with Jon Galloway and Scott Hanselman - Full Day Live (and recorded) Event on Feb 22

(Indexed 2013-02-14):

Update: Scott lost his voice, so we've had to postpone this event to Feb 22. It will be recorded so you can watch it online if the date change prevents you from watching live. [Image]The ASP.NET and Web Tools teams have been cranking out some amazing stuff lately! But it can be a little tough to keep up with it all... Lucky for you, we've got a great online event coming up on on February 22 which explains it all. Scott Hanselman and I are working with the Microsoft Learning / Virtual Academy ...(truncated)...

A quick look at Git support in Visual Studio 2012

(Indexed 2013-02-01):

I use Git a lot these days. My team uses it exclusively for internal work, collaboration with vendors, and public open source releases. I've got several public and private repos on CodePlex, GitHub and BitBucket - open source projects, book sample code, presentation content, etc. I've used the command line, posh-git, and GitHub for Windows (you knew you can use GitHub for Windows with non-GitHub repositories, right?). I quickly decided that msysgit wasn't helpful, bounced between the command li...(truncated)...

Does ASP.NET Web API + OData filter at the database level? Let's ask IntelliTrace.

(Indexed 2012-12-23):

Someone asked me via Twitter if ASP.NET Web API queries are filtered at the database level, or if ASP.NET Web API queries the entire result set and then filters in code. Good question. I was pretty sure I knew the answer (below) but since everything in ASP.NET Web API changes so fast and they just released some big OData support updates, I wanted to make sure before answering. How would you do that? Option 1: Read the code Since ASP.NET Web API and OData are both open source code, you can rea...(truncated)...

Announcing a Web Camps Winter World Tour starting December 2012

(Indexed 2012-11-30):

We have a great lineup of international Web Camps events scheduled for the next month. Come join us! Space for these events really is limited, so if you want to get in on them you need to sign up fast. [Image] Web Camps: Free, one day events to show you how to make the most of the Microsoft web platform Web Camps are an amazing opportunity to see how Visual Studio 2012, ASP.NET 4.5, ASP.NET MVC 4 and Windows Azure fit together, and how you can put them to work today to solve real world proble...(truncated)...

ASP.NET Menu and SiteMap Security Trimming (plus a trick for when your menu and security don't match up)

(Indexed 2008-01-27):

Summary ASP.NET 2005 introduced a pretty solid menu which is integrated with a configuration driven sitemap. The cool part is that the menu can be hooked in with your security roles, so you don't have to worry about hiding or showing menu options based on the user - the menu options are automatically kept in sync with what the user is allowed to see. We'll talk about how to set this up, using an example from a website I worked on recently. If you're familiar with ASP.NET sitemaps and menus, skip...(truncated)...

Adding simple trigger-based auditing to your SQL Server database

(Indexed 2008-01-27):

How do you track changes to data in your database? There are a variety of supported auditing methods for SQL Server, including comprehensive C2 security auditing, but what do you do if you're solving a business rather than a security problem, and you're interested in tracking the following kinds of information: What data has been updated recently Which tables have not been updated recently Who modified the price of Steeleye Stout to $20 / unit, and when did they do it? What was the unit pric...(truncated)...

The Man Who Knew Too Much?

(Indexed 2008-01-20):

[Image] I've been thinking about the odd problem, and what can be done about it. I've found that more active participation in a group can lead to more information, but that new information can actually stifle further participation. Here are some of the problems I'm thinking of, as well as some possible solutions. Being the Dumbest Person In The Room The best way to learn is to "aspire to be the dumbest person in the room." Being the smartest person in the room is comfortable - you can feel smug ...(truncated)...

Writing a custom ASP.NET Profile class

(Indexed 2008-01-20):

We made heavy use of the ASP.NET membership and profile system for Video.Show (a Silverlight 1.0 video community website system, available on CodePlex). In addition to storing basic profile information, we created a custom profile with some additional fields. It's a really easy way to add add some additional personalization to your site without having to add a bunch of tables to your database. This is really simple if you're using a Website Project - you can just add additional properties to the...(truncated)...

Registry setting keeps Windows from wigging out when you open lots of IE7 tabs

(Indexed 2008-01-15):

[Image]Summary Opening too many tabs in Internet Explorer 7 can cause the Windows shell to switch to "Evil Mode". Fortunately, there's a registry setting that fixes the problem by increasing the Windows heap size. The Problem Internet Explorer starts to go nuts when you open a lot of tabs. Jeff Atwood wrote that he started to see problems when he had IE 45 tabs open: When researching blog posts, I tend to open a lot of browser windows and tabs. At least twice per week, I have so many browsers a...(truncated)...

Three posts a week - my new year's resolution

(Indexed 2008-01-12):

I'll pass my 5 year blogging anniversary this year. I've written over 520 posts. But, I'd like to be more consistent. So this year, I'm resolving to post three times a week. I'll give myself an exemption when I'm on vacation, which explains why I'm posting this on the second week of the new year. I've decided that I'd like to break my content up by day of the week: Monday - Coding tip - Should be a straightforward tip developing for the ASP.NET platform (including SQL Server, LINQ, Silverlight,...(truncated)...

Inkscape to support XAML export

(Indexed 2008-01-10):

Today, Adam Kinney gave me the tip off to some cool news: Inkscape is adding XAML export. [Image] Great, what's Inkscape? Glad you asked! Inkscape is an open source vector graphics editor, like Adobe Illustrator. Rather than drawing in pixels (like you'd do in Photoshop, Paint.NET, etc.), you're drawing in vectors. Inkscape is a little unique in that it uses SVG (scalable vector graphics) as its base format. SVG is a W3C standard, with pretty good support in most non-IE browsers (check out SVG T...(truncated)...

Large file uploads in ASP.NET

(Indexed 2008-01-08):

Uploading files via the FileUpload control gets tricky with big files. The default maximum filesize is 4MB - this is done to prevent denial of service attacks in which an attacker submitted one or more huge files which overwhelmed server resources. If a user uploads a file larger than 4MB, they'll get an error message: "Maximum request length exceeded." Increasing the Maximum Upload Size The 4MB default is set in machine.config, but you can override it in you web.config. For instance, to expand ...(truncated)...

Why CodingHorror is horribly wrong about Blacklists and Virus Scanners

(Indexed 2007-12-13):

Jeff and I had an interesting debate on virus scanners a few weeks ago. He posted his take on the conversation yesterday, and (surprise!) we both think we won the argument. I believe the difference of opinion really comes down to a few different assumptions about the problem we're trying to solve: Different classes of Anti-Virus Software (Quality AV Software vs. Bundleware) Antivirus Effectiveness (Is it really just 33% effective?) The Goal of Virus Protection (Risk Management vs. Invincibil...(truncated)...

Ten Tips for a Happy Upgrade to Visual Studio 2008 (Release)

(Indexed 2007-11-28):

Visual Studio 2008 has been out for over a week. I've upgraded three machines (two Vista, one XP) from Beta 2 to RTM, then upgraded a couple of projects. I've also been watching blog posts and listening in at the Twitter water-cooler to hear about other developers' experiences, problems, and recommendations as they go through the upgrade experience. So, here's my quick guide to a smooth upgrade to Visual Studio 2008.1. Carefully Uninstall any Pre-release Bits FirstIf you've installed any previou...(truncated)...

Rebooting the Monoppix project

(Indexed 2007-11-04):

Summary [Image] Roiy and I have decided it's high time for another Monoppix release. Monoppix is a Linux Live CD pre-configured with Mono, MySQL, and a bunch of sample applications and training material. It's all designed to make it ridiculously simple to work (and play) with a configured Linux / Mono setup without having to spend hours or days getting it all set up. After a short break (well, two short years), we're rebooting the project. There are some easy ways you can help us out, even if yo...(truncated)...

I'll be at DevConnections & OpenForce November 5-8

(Indexed 2007-11-04):

[Image] I'm a panelist on a discussion on Open Source Architectural Models at DotNetNuke OpenForce. Hope to see you there! Thursday, Nov 8 - 9:30 AM - 10:45 AM Lagoon F DOS102: Panel Discussion: .NET Open Source Architectural ModelsJoe Brinkman, Phil Haack, Jay Flowers, Jon Galloway and Rob Conery[Image][Image][Image] [Image] [Image] [Image] [Image][Image]

Silverlight doesn't require any JavaScript

(Indexed 2007-10-31):

Summary It's easier to understand Silverlight when you understand that, at its heart, it's a simple browser plug-in. JavaScript is extremely useful for browser detection, and it's the only way to interact with Silverlight 1.0, but JavaScript not at all required to display a Silverlight control with XAML content. Note: I'm not saying that you shouldn't use Silverlight.js and CreateSilverlight.js to instantiate a Silverlight object - you most definitely should. Rather, for the purpose of understan...(truncated)...

Speaking at the Silicon Valley Code Camp on 10/27

(Indexed 2007-10-26):

[Image] I'm presenting two sessions at the Silicon Valley Code Camp on 10/27. So, drop everything, sign up for my sessions, and get to Silicon Valley this weekend! But first, some quick Q & A time!!! Question: Why did you wait until Thursday night to blog about talks you're giving on Saturday?Answer: There was a gigantic wildfire within ten miles of my house all week, and I wasn't totally sure the wife would let me go. Fires are now pretty much under control.Question: Will your talks be awesome?...(truncated)...

Creating Zip archives in .NET (without an external library like SharpZipLib)

(Indexed 2007-10-25):

Overview SharpZipLib provides best free .NET compression library, but what if you can't use it due to the GPL license? I'll look at a few options, ending with my favorite - System.IO.Packaging. SharpZipLib is good, but there's that GPL thing SharpZipLib includes good support for zip. I've written about it a few times, and I think it's great. Unfortunately, it's under a wacky "GPL but pretty much LGPL" license - it's GPL, but includes a clause that exempts you from the "viral" effects of the G...(truncated)...

I'm an ASP.NET MVP

(Indexed 2007-10-18):

[Image]I'm very happy to announce I was selected as an ASP.NET MVP. Most software developers I've told about this, after congratulating me, confess that they don't really know what an MVP is. I wasn't 100% sure myself. Here's what the MVP site says: Thank you for the significant contributions that you make to technical communities by sharing your high quality, real world expertise.... Your participation in these communities promotes the free and objective exchange of knowledge. You are recognize...(truncated)...

Our ASP.NET book is out. Read some chapters for free!

(Indexed 2007-10-17):

If you don't know, now you know I'm told that there are still a few people who don't read CodingHorror.com and Haacked.com. These people call themselves the Amish. Well, there may be a few more folks out there with live internet connections who for some reason or another missed Phil's and Jeff's announcements that the book we co-authored with Scott Allen and Wyatt Barnett has been unleashed on an unsuspecting world. So, to these people, I say: Our book, The ASP.NET 2.0 Anthology, is out. I have ...(truncated)...

[ASP.NET] Setting the DefaultButton for a Login control

(Indexed 2007-10-03):

Background One underused feature in ASP.NET 2.0 is the ability to set a default button for a form. In the past, this often required some extra JavaScript, and was just enough of a pain that it didn't get done until someone asked for it. The ASP.NET form element has DefaultButton and DefaultFocus properties which do exactly what you'd think. For instance, a site I'm working on has a search bar in the header, so I added the following to the form control. Default focus goes to the search textbox, a...(truncated)...

Gravatar 201: Advanced Gravatars in ASP.NET

(Indexed 2007-10-02):

I know that's a dumb title. I just couldn't help myself. This post wraps up my Gravatar trilogy: Part 1: Adding Gravatars to your ASP.NET site in a few lines of code - It's easy to add avatars to your site Part 2: Avatars? Isn't that some kind of D&D comic book stuff? - Avatars can help make your community website feel more like a community and less like a website Technical recap on setting up Gravatars Since this is a 201 class, we're going to recap the technical details on integrating with Gra...(truncated)...

Avatars? Isn't that some kind of D&D comic book stuff?

(Indexed 2007-09-25):

My previous post dug into using the Gravatar service to add avatar images to your community website. Afterwards, I realized that I didn't really make the case for why you should care about avatars. Yeah, the word avatar may make you think of fantasy gamers jabbering about Yoda's lineage on some forum. Not so! All the cool kids1 are using avatars! Gravatars make the comments on Scott Hanselman's blog (running on dasBlog) more interesting: [Image] Gravatars spice up the comments on Phil Haack's Su...(truncated)...

Adding Gravatars to your ASP.NET site in a few lines of code

(Indexed 2007-09-24):

Summary Gravatar (Globally Recognized Avatar) provides a simple way to add avatars to community based sites. Users set up an account at http://site.gravatar.com with an avatar image and an e-mail address, then their avatar shows up on any site which support Gravatars - blogs, community sites, etc. Gravatar take care of hosting and resizing the images, handles things like decency ratings, and they've got a nice UI for image upload / cropping. It's also nice for your users, since they don't have ...(truncated)...

Taking CSS beyond a simple style library

(Indexed 2007-09-12):

Summary CSS based design is really all about your HTML structure. We'll look at bad examples, then good examples. Finally, I'll point out some resources for generating stylable HTML in ASP.NET. Ugly HTML, bad CSS A lot of web developers haven't really gotten the point of CSS, so they're not getting the full benefit. They see CSS as a kind of global style constants file, in the same way they'd pack all their string constants into a resource or config file. Need a bold blue heading? Yep, I think I...(truncated)...

[Tip] Use RUNAS to set your Windows Auth domain for database connections

(Indexed 2007-09-07):

Ever run into problems connecting to a database using Windows Authentication when you're not on that domain? I sure have - I was connecting over VPN, wanting to use SQL Server Management Studio, but my VPN account wasn't in the correct domain to authenticate. I ended up just using Remote Desktop whenever I needed to connect to that database for the length of that project... which dragged out more than year. Johnny Coder ran into it, too, but he's got the solution: Please consider the following ...(truncated)...

We should be virtualizing Applications, not Machines

(Indexed 2007-09-04):

One of the benefits of my new job at Vertigo Software is that I have more frequent opportunities to talk with my co-worker, Jeff Atwood. If everything goes right, we argue... because unless we agree, neither of us is going to learn anything. Recently, we argued about virtual machines. I think machine virtualization is hugely oversold. We let the technical elegance (gee whiz, a program that lets me pretend to run another computer as another program!) distract us from the fact that virtual machine...(truncated)...

New Job at Vertigo Software

(Indexed 2007-08-18):

I just finished my second week as Vertigo Software's newest employee. You might know Vertigo from their work on cool projects like Family.Show, or you may have seen or heard Vertigo's CEO Scott Stanfield, or you may have noticed that funny upside down / backwards logo on Jeff Atwood's CodingHorror blog.[Image] I was super fired up about this right when I took the job, and after spending my first week onsite I was even more fired up. The people are great, and the work is right up my alley - I've ...(truncated)...

The real reason SELECT * queries are bad: index coverage

(Indexed 2007-07-19):

Are SELECT * queries bad? Sure, everyone know that. But, why? It's returning too much data, right? That's the common answer, but I don't think it's the right one. If you're working with a reasonably normalized database, the actual network traffic difference is pretty small. Let's take a look at a sample. The following two queries select 326 rows from the TransactionHistoryArchive table in the AdventureWorks database (which has a total of 89K rows). The first uses a SELECT * query, the second s...(truncated)...

[T-SQL] Getting distinct, current entries from tables with timestamp / datetime fields

(Indexed 2007-07-13):

It's relatively easy to store data with a time dimension, but querying it is another matter. If you select from a temporal tables (one which includes historical information indicated by a timestamp or datetime column) based on your ID, you'll get a lot of duplicate records; only one or a few of those records will be applicable to a given time or timespan. For example, the following query (from the AdventureWorks sample database) returns 746 records: SELECT ActualCost FROM Production.Transaction...(truncated)...

Presentation tricks - Command Windows

(Indexed 2007-07-09):

Time management is a big part of a technical presentation. You want your demos to go fast enough to keep your audience's attention, but you don't want to gloss over details and lose them. Here are a few tricks I've used when showing something command line operations at a DOS prompt. 1. Avoid command windows in presentations if possible It's hard to effectively communicate by showing command-line operations. Console windows are hard to read, and it's unlikely that your audience will remember the ...(truncated)...

SubSonic - Code Camp slides posted

(Indexed 2007-07-08):

Slides and sample code from my talk on SubSonic from the SoCal Code Camp a week ago are available here. The slides were pretty light since my talk was geared towards building some very simple sample pages on the fly. The one shortcut I took was to copy web.config and DLL's from the SubSonic Central site included with the SubSonic download - I think that was a good approach, since I didn't have to bore everyone with manually typing configuration files, but I didn't have to use the demo hammerspa...(truncated)...

Checkbox Grids in ASP.NET

(Indexed 2007-07-07):

A simple checkbox grid is often the best user interface for mapping multiple selections in multiple categories: Food Cabernet Zinfandel Pinot Salmon Steak Chicken Chocolate You'd think this would be easy to do with a GridView and some CheckBoxField columns, but the GridView control's underlying assumption is that you'll only be editing one row at a time. Because of that, all the checkboxes are disabled by default; only the row which has been set to "Edit" mo...(truncated)...

Silverlight 1.1 (Alpha) cross domain webservice access makes mashups tricky

(Indexed 2007-07-04):

Any web mashups, by definition, require cross-domain calls. Those cross-domain calls may happen on the client (in the browser) or on the server. Regardless of the client technology (AJAX, Flash, Silverlight, etc.), cross domain calls on the client are always more complex that server-side cross-domain calls, and for good reason. It's tricky in AJAX, and it's downright difficult in Silverlight. You'll know that Silverlight development has become more widespread when you hear a lot more complaints ...(truncated)...

Some keyboard input tricks for Silverlight 1.1 (Alpha)

(Indexed 2007-07-03):

Here are a few tricks I learned while doing my "hello world" maze game in Silverlight 1.1. Silverlight doesn't fire the KeyDown event for cursor (arrow) keys However, just about all keys will fire a KeyUp event. In my case, I was able to just handle the KeyUp event, but remember that holding a key down will trigger multiple KeyDown events and only one KeyUp event. Notice how a lot of the games you're seeing for Silverlight use W/A/S/D instead of arrow keys? I suspect that's the reason. The diffe...(truncated)...

Speaking on SubSonic at the San Diego Code Camp this Saturday

(Indexed 2007-06-29):

[Image]I'll be presenting a session at the San Diego Code Camp this Saturday (6/30/07) titled "Using SubSonic to built ASP.NET applications that are good, fast, and cheap". I'll do a quick overview SubSonic in general, but spend most of the time building out a website. If you're interested in following along on you laptop, be sure to grab of SubSonic 2.0.2 (the latest release)from CodePlex. I got the bright and early 9 AM slot, but am convinced that coffee will see us through.[Image][Image][Imag...(truncated)...

The value of "good enough" technology

(Indexed 2007-06-26):

Twitter is Good Enough [Image] Twitter drives all my tech-savvy friends crazy. We all agree that the idea - a simple mix of blog, chat, and IM - is a good one. However the site does very little, and what it does it does poorly - slow response, frequent outages, etc. Most developers figure they could write a "better Twitter" in a lazy afternoon, and some already have. Good idea, poor execution, and yet... it's good enough. Twitter is good enough to keep its network and remain successful. Yes, the...(truncated)...

Silverlight content only prints in IE (for now)

(Indexed 2007-06-21):

Last night I made a simple Silverlight maze generator for my 6 year old daughter, who's really into mazes right now. When I tried to print the resulting mazes, I found that the Silverlight content was was blank in Firefox (left), but worked in IE (right): [Image][Image] The official word seems to be that printing Silverlight 1.1 content is unsupported, but is being considered as a 1.1 feature. It sounds like some people are coming up with some clever hacks to handle printing Silverlight content,...(truncated)...

[Silverlight] "AG_E_RUNTIME_MANAGED_ACTIVATION" = You don't have Silverlight 1.1 installed

(Indexed 2007-06-21):

[Image]I'm thinking a better error message might be in order when folks try to view Silverlight 1.1 content with managed code and only have Silverlight 1.0 installed, but for now this is what you get (obviously the last three lines will vary depending on the actual XAML content): Silverlight error messageErrorCode: 2251ErrorType: ParserErrorMessage: AG_E_RUNTIME_MANAGED_ACTIVATIONXamlFile: Page.xamlLine: 9Position: 9 Solution: Download the Silverlight 1.1 Alpha Plugin.[Image][Image][Image] [Im...(truncated)...

[SQL Server Analysis Services] - "Errors in the metadata manager" when restoring a backup

(Indexed 2007-06-21):

I had trouble restoring a SQL Server 2005 Analysis Services backup today due to "Errors in the metadata manager" messages: The ddl2:MemberKeysUnique element at line 243, column 28420 (namespace http://schemas.microsoft.com/analysisservices/2003/engine/2) cannot appear under Load/ObjectDefinition/Dimension/Hierarchies/Hierarchy.Errors in the metadata manager. An error occurred when instantiating a metadata object from the file, '?C:Program FilesMicrosoft SQL ServerMSSQL.2OLAPData... I'm still a r...(truncated)...

[SubSonic] LoadFromPost method maps controls to object properties

(Indexed 2007-06-15):

Since SubSonic data access code and cuts way down on the repetitive grunt work, I've started to resent having to write any code at all. On a recent project, we found that since we weren't writing much data access or map related objects, the majority of the code we had to write revolved around shuttling data between controls and object properties. You know, code like this:int productQuantity = 0;if (int.TryParse(txtproductQuantity.Text.Trim(), out productQuantity)) this.Product.Quantity = prod...(truncated)...

Calling an ASMX webservice from Silverlight? Use a static port.

(Indexed 2007-06-15):

The setup Rob Conery recently posted on Creating a Web Service-Enabled Login Silverlight Control, which is probably a more important topic than many people realize right now. Since Silverlight code runs client side in the user's browser, many tasks like database access and user authentication require what is by definition a "web service" (even if it uses REST or some other, non-ASMX approach). Along the way, Rob ran into an interesting issue. Being the wise man that he is, Rob knew that he face...(truncated)...

Safari on Windows - Browser testing just got a whole lot easier...

(Indexed 2007-06-11):

[Image]Funny, just last week I posted about using browsershots.org to see screenshots of your web application in a huge variety of browsers. Today, Apple announced Safari 3 runs on Windows. Aside from screenshot services, there some other methods that pretty much worked in the past. The Swift browser runs on the open source WebKit layout engine which is also used by Safari, so at least theoretically you could get Sarari-esque browser running in Windows. Otherwise, you needed to be running a virt...(truncated)...

Silverlight and XAML, have you guys met Old Man SVG?

(Indexed 2007-06-05):

Summary XAML uses a vector graphics markup which is very similar to SVG, but since it's part of a complete application framework the designers decided to use a slightly different format. I'd expect that XAML would be able to load SVG, or that there would at least be plenty of tools to convert SVG to XAML, but it was tougher than I thought. After some background, I'll discuss some solutions I found. UPDATE: Please don't jump the gun and assume that I'm complaining that XAML should have just used ...(truncated)...

VB.NET vs. C#, round 3?

(Indexed 2007-06-05):

VB.NET gets a hard time from C# developers. For a variety of reasons, the leading .NET programmers seem to be working in C#, and VB.NET developers get really tired of saying, "Hey, VB.NET can do that, too!" The VB crowd's got something new to talk about, though. One of the big announcements at MIX07 was the Dynamic Language Runtime, which will support Python, JavaScript (EcmaScript 3.0), Visual Basic and Ruby. No C#. Has VB.NET picked up a cool trick that C# can't do? Is this VB.NET vs. C#, rou...(truncated)...

YOD'M 3D - Multiple Desktops for Windows

(Indexed 2007-06-01):

One of the coolest things I saw at MIX07 was on a Linux computer. Miguel was showing us something on his laptop when all of a sudden the desktop turned into a cube and started spinning around. Miguel told us it was Compiz, which has been available for X Window System (GNOME, KDE) for over a year now. Sidenote: A lot of people know it by the name of a fork of Compiz named Beryl. It sounds like Beryl is basically Compiz with a neater name and a better website. Anyhow, Beryl has rejoined the Compiz...(truncated)...

Cropper Plugins 1.1 release

(Indexed 2007-05-26):

We lost the everything but my local source copies for our CropperPlugins when gypsies stole the CodePlex TS02 server, which slowed us down a bit. Patrick Altman got the server back in order and added a cool new "Send to Amazon S3" plugin. We've also switched to global versioning so all plugins share the same version number (using SolutionInfo.cs instead of AssemblyInfo.cs). So, with that, it was time for the relase of Cropper Plugins 1.1. S3 hosting is a great deal for image hosting for most bl...(truncated)...

CodePlex is adding support for Subversion TortoiseSVN

(Indexed 2007-05-21):

[Image] I just heard that CodePlex is adding support for TortoiseSVN with an estimated release date of June 5.UPDATE: Newer comments make it look like they are just setting up a bridge from TortoiseSVN to TFS. Not clear... Although the information just says TortoiseSVN, my understanding is that this will include support for Subversion project hosting (rather than supporting TortoiseSVN access to the existing TFS client). I think this is a huge win for CodePlex and for the .NET development commu...(truncated)...

Performant isn't a word

(Indexed 2007-05-11):

Last month I finished writing a lot of the "Performance" chapter for our ASP.NET book. I used the word performant quite a bit, and was a little surprised when the editorial review told me that performant isn't a word. I didn't believe it, but after some checking I was forced to agree: It's not in the dictionary: http://www.m-w.com/dictionary/performant It's not in the Google definitions: http://www.google.com/search?q=define%3Aperformant It's not even in Wikipedia: http://en.wikipedia.org/wiki/...(truncated)...

Silverlight - Cross domain access blocked, use a server side proxy or XMLHttpRequest

(Indexed 2007-05-08):

Silverlight's security model prevents making a request to another domain. For instance, if you're serving a page with a Silverlight control from www.silverlight.net, the control can't make a request to maps.google.com, flickr.com, etc; the control can only call back to the silverlight.net domain. That's probably a good thing from a security perspective - it'd just be way too easy for a page to cross security zones and other bad things if a client side networking stack could communicate with any ...(truncated)...

MIX07 - WCF adding System.UriTemplate, [WebGet], and [WebInvoke]

(Indexed 2007-05-02):

System.UriTemplate Build and parse URI's System.UriTemplate (Orcas) - runtime support for URI template syntaxUriTemplate.Bind - A safe, smart string.format for URI constructionUriTemplate.Match - Extracts URI to dictionaryUriTemplateTable - One or more template, best match wins HTTP GET - bound semantics, expectation of idempotency, generally "safe" Chaos - HTTP POST, PUT, DELETE, others WebHttpClient client = new WebHttpClient(){ UriTemplate = "http://localhost/mix/data/symbols{0}";}MixData...(truncated)...

Why Microsoft can't ship open source code

(Indexed 2007-05-02):

I've suggested a few times that Microsoft could go beyond just cooperating with the open source community and actually ship open source code. For instance, Paint.NET is a great alternative to MS Paint, so not just bundle it? Tonight I had a very long conversation with someone who is in a position to really understand both Microsoft and open source. Now I understand why my suggestion - though well intentioned - was hopelessly naive. The problem boils down to code pedigree, the nightmare scenario,...(truncated)...

Are you ALT.NET?

(Indexed 2007-05-02):

David Laribee coined a term which summarizes a movement in the .NET community - ALT.NET: What does it mean to be to be ALT.NET? In short it signifies: Youre the type of developer who uses what works while keeping an eye out for a better way. You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc. Youre not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc. You kno...(truncated)...

MIX07 - A private Silverlight demo from ScottGu

(Indexed 2007-05-01):

The situation was grim. I was sitting in a hotel bar at MIX07 with Jeff Atwood, Miguel de Icaza, Phil Haack, and Rob Conery (pictured left to right). The conversation had slowed. Miguel was telling Rob why he should floss. Phil was humming showtunes. Jeff was trying harness telekinetic powers to levitate his beer. See for yourself: [Image] Then Scott Guthrie and Beau Ambur (one of the keynote presenters) walked by. Next thing you know, Scott's showing off Silverlight 1.1. He wrote a quick demo a...(truncated)...

MIX07 - Keynote

(Indexed 2007-04-30):

Live webcast is available here. Ray Ozzie Into - discussing the continuum of Universal Web to Experience First (Desktop / Device) The reality is that useful applications don't pick, they blend. The movement is from SAAS (software as a service) to Software + Service Silverlight: Video - Cross platform runtime for video .NET - Enhancing RIA platform via .NET integration (new choice over JavaScript) Services - Silverlight streaming - storage service for Silverlight applications and media Expressio...(truncated)...

Jeff Atwood (CodingHorror) on DotNetRocks

(Indexed 2007-04-28):

[Image]Jeff Atwood's inteview on DotNetRocks is out. I've listened to every single episode - over 230 of them - and say this makes my top ten. Excellent show, and worth the listen. [Image]

Search queries to find Silverlight and XBAPs apps

(Indexed 2007-04-28):

Silverlight and XBAP serve the same purpose, but in different ways. Both allow for viewing for WPF (XAML) based applications in a browser. Silverlight is a self-contained, cross-browser plugin which supports a subset of the .NET framework, while an XBAP (XAML Browser Application) requires that WPF be installed on the host operating system. You can get an idea of what people are doing with XBAPs by searching for url's with the .xbap file extension. Microsoft's search.live.com doesn't support .xb...(truncated)...

The 9 things Microsoft SHOULD be announcing next week at MIX07 (but won't)

(Indexed 2007-04-28):

[Image]Microsoft has said they'll have some kind of big surprise to announce next week at the MIX07 conference in Las Vegas. If you want to hear some good guesses as to what will actually be announced, you've come to the wrong place. If you'd like some good guesses, try the following: Miguel de Icaza - speculation on MIX07, including a dynamic language runtime Mary Jo Foley - Microsoft to roll out dynamic-language layer for .Net InternetExplorer8 - General info on what's known about IE8 Cha...(truncated)...

SQL Puzzle #2 - Paging through a table with GO 10

(Indexed 2007-04-26):

I just wrote about using GO 10 to execute a T-SQL batch 10 times in SQL Server Management Studio. Could you use it to page through data? The challenge: Write an ad-hoc query which queries the AdventureWorks Production.Product table 10 times using GO 10, returning the next sequential row each time. My query looks something like this: SELECT... (some other T-SQL here)GO 10 Here are the first two columns, first three rows when it's executed: Beginning execution loopProductID Name ...(truncated)...

[SQL] Using 'GO 100' to execute a batch 100 times

(Indexed 2007-04-26):

The GO statement is used by SQL Server as a batch terminator. It's recognized by by tools which run scripts like SSMS, SMO, and SQLCMD, but it's not technically T-SQL. SQL Server 2005 added a new little trick to the GO command which lets you specify a number of times to execute the batch: GO 10 Neat. GO 10 reminds me of GOTO 10, the funnest command of all time. What would you use GO 10 for? Here are a few ideas: Inserting test rows in a table There's a nice example on MSSQLTips which shows how t...(truncated)...

First draft of our ASP.NET book is done. Whew!

(Indexed 2007-04-26):

[Image] You wouldn't know it from the recent posts on my blog, but I've been writing a lot lately. Last week I turned in the first draft for the final chapter of the book I'm co-writing with Phil Haack, Jeff Atwood, and K. Scott Allen. It's an ASP.NET "tips and tricks" book, but I think the content is a little different than most cookbook style programming books. The information is geared to strong intermediate to advanced developers, and the topics include things like binary content, search eng...(truncated)...

Looking forward to SilverlightGallery.com

(Indexed 2007-04-25):

[Image] The domain registration for SilverlightGallery.com was updated just before Microsoft announced the name change from WPF/E to Silverlight.1 Until recently, it just redirected to the asp.net domain, but now the splash page shows that it'll go live on April 30th, which means they'll be showing it off at MIX 07. 1Silverlight is a new technology from Microsoft which is similar to Flash in that it's a rich application framework which works via a cross-platform browser plugin. It has some grea...(truncated)...

SubSonic 2.0: Kick the tires on Beta 1!

(Indexed 2007-04-10):

Summary SubSonic 2.0 (the zero code data access layer) just hit Beta 1 today. Download it, marvel at all the cool new features, and get your feedback in quickly because they're planning a really short beta phase with a final release as early as next Wednesday. Background I got fired up about SubSonic when I first saw it last August and wrote that Microsoft should ship it with ASP.NET AJAX (then called ATLAS). I knew it wouldn't happen, but I still think I was right. SubSonic is a zero co...(truncated)...

Adding a DotNetKicks image via Javascript

(Indexed 2007-03-08):

About DotNetKicks DotNetKicks is a nice social bookmarking system (like Digg, Reddit, etc.) that's specific to .NET development issues. Users submit cool links, other users vote on it, popular links show up the front page and in an RSS feed. It lets you know what's going on in the .NET world right away without having to spend every second of the day scanning thousands of blogs. Kick It! One of the cool features is an image which shows the number of "kicks" a page has received. The image links ba...(truncated)...

Conditionally showing Google Ads

(Indexed 2007-03-08):

[Image] Summary Consider hiding ads on your site depending on how the user got there. Why? A friend of mine recently experienced an unexpected surge in traffic to his site. He's been subject to a rampage of Digg-ers ever since then, scrambling to cut his image and RSS bandwidth. He's got some philosophical issues with showing ads on his site. I understand, but I think it makes sense to segment your users into two groups: Preferred users - These folks came directly to your site and will see no o...(truncated)...

[SQL] Force the protocol (TCP, Named Pipes, etc.) in your connection string

(Indexed 2007-02-25):

Barry Dorrans recently mentioned that you can force the database connection protocol by specifying np: or tcp: before the server name in your connection string. I've jumped through some hoops before using localhost to target tcp and (local) to target named pipes, but it looks like there's a much better way to do this (since MDAC 2.6). There's more info in MS KB Article 313295: TCP/IP:server=tcp:hostnameYou can optionally specify a specific port number. By default, the port is 1433.server=tcp:ho...(truncated)...

[link] Shell command - Open folder as Website Project in VS 2005

(Indexed 2007-02-25):

Visual Studio 2005's Web Application Projects are easy to open from the filesystem by double clicking on the SLN (solution) file. Website Projects don't necessarily* have a SLN file, so I've had to open up Visual Studio and browse for the folder, which is really backwards from how I work. Bradley posted a cool tip a while ago for how to simplify this. He uses a Visual Studio macro from a shell command (installed by a simple reg file) so I can just right click a folder and select "Op...(truncated)...

Shell Command - Remove SVN Folders

(Indexed 2007-02-24):

The Subversion source control client maintains your local state in hidden folders named .svn inside your project, which can be a problem if you want to copy or share the project directory. This REG file adds "Delete SVN Folders" to the context menu for folders. When you select it, it removes all folders named .svn inside the folder and it's children (it does nothing if the project's not under Subversion source control. I'm not going to bother explaining reg file installation here - I figure if ...(truncated)...

Passing lists to SQL Server 2005 with XML Parameters

(Indexed 2007-02-16):

Overview SQL Server 2005's XML capabilities make it a easier to pass lists to SQL Server procedures. Background I recently needed to write a stored procedure which took a list of ID's as a parameter. That's one of those things that seems like it would be really simple, but isn't. You'd think you could just pass in a comma delimited string of id's: @ids = '3,5,7,8' and use something like 'SELECT * FROM Products WHERE ID IN (@ids)'. Nope, it doesn't w...(truncated)...

[Code] Show a file in Explorer

(Indexed 2007-01-27):

I've noticed that some of my favorite programs have options to open the currently selected file in Explorer. I don't just mean that they open the right folder, but that they preselect the right file for you. Visual Studio 2005 does it when you select "Open Containing Folder in the File tabs: [Image] Firefox has it in the downloaded file dialog, and TimeSnapper shows it as an option in image browse mode. It's not hard to add to your programs, too: [Image] The code's reasonably si...(truncated)...

Google Personalized Homepage (IG) - Read a post inline

(Indexed 2007-01-24):

[Image]I've been using the Google personalized homepage for a while as a simple "heads up display". I run RSS Bandit on my laptop; it's too tempting of a distraction to run on my main work computer. I've got the Google homepage set up with my top feeds, plus e-mail and news, and I glance at it during the day to see if something interesting's going on that can't wait until I can spend some quality RSS time. A cool new feature showed up on my Google homepage yesterday - inline views of RSS posts....(truncated)...

Getting Cropper to work in Vista

(Indexed 2007-01-24):

Summary Cropper is my favorite screenshot utility, mainly because of the plugin support. It's not really usable in Vista because the graphics compositing changes in Vista cause problems with just BLT'ing from the desktop DC so the Cropper form is included in the captures. It's not simple, but you can decompile it, add 4 lines of code, and have a version of Cropper that works in Vista. There's talk of a new version of Cropper, but until then this will let you run Cropper 1.8 on Vista. Confessions...(truncated)...

Identicons - Ported from Java Servlet to HttpHandler

(Indexed 2007-01-24):

Summary Identicons provide a nice visual indicator that's unique to each user on a website. It's unique since it's based on the user's IP, but it's not possible to recover the IP by looking at an Identicon so each user's privacy is protected. Identicons look cool. Phil implemented it in the comments on his blog: [Image] Any comments I post on Phil's site will have that little pink symbol, while Matt (an anonymous user) will always get that purple design. That's a nice visual cue, but it also pr...(truncated)...

Code Puzzle #2 - Generate random fake surnames

(Indexed 2007-01-10):

I'm talking to you, Mr. Thymmet! Step forward and be counted, Ms. Betusen! It's time for another Code Puzzle! My solution will be posted on Friday, 1/12. Get to work! Task: Write a single function which generates fake but passable surnames. [Image]Rules / Notes: Post your solution in the comments along with 25 results. Names should be pronouncable and passable as real surnames. If you saw them on a business card, your reaction should at the most be an inward chuckle. Your solution s...(truncated)...

Five things you didn't know about me

(Indexed 2007-01-05):

I tend to keep things down to business on my blog, but after having been tagged three times I decided go with this "Five Things" meme. I'd been planning to write a Hello World thing for my 500th post anyhow. Here goes: I won the Showcase on The Price Is Right [Image]Some friends had extra tickets and invited my brother and me to see The Price Is Right back in 1992. I was one of the last people in line to make it in, and was sitting on a folding chair in the back row (reading a book, truth be...(truncated)...

sysobjects, sys.objects... what about INFORMATION_SCHEMA?

(Indexed 2006-12-31):

SQL Server Management Objects (SMO) is one of the coolest parts of SQL Server 2005, in my opinion. I've written about SMO before, and used it extensively in writing Data Dictionary Creator. In a nutshell, SMO is a collection of objects that are designed for programming all aspects of managing Microsoft SQL Server. One thing about SMO puzzles me, though - it uses the system tables (sysobjects and sys.objects) instead of INFORMATION_SCHEMA when it checks if tables, views, or procedures exist. Ther...(truncated)...

[tip] Use the Database Publishing Wizard to script your table data

(Indexed 2006-12-30):

Jeff Atwood recently asked "Is your database under version control?" Well, is it? It's not as easy as it sounds. Until now, there wasn't a good, scriptable solution to the problem. I'll run through a few of the options I've looked at in the past, but let's jump to to the punchline: The Database Publishing Wizard can script data as schema, and it's got a command line mode. The Problem Most of the applications I work on run against SQL Server databases. Jeff hit the nail on the head when he said ...(truncated)...

Things I wish I'd known before I installed VS 2005 Service Pack 1

(Indexed 2006-12-19):

1. Save Time and Space for VS 2005 SP1 by Disabling the Patch Cache (via Heath Stewart) The SP1 requires a lot of disk I/O. You can eliminate 1.3 GB of disk I/O, and cut the installation time significantly, by temprorarily disabling the Patch Cache. You can read more about it on Heath's post, but here's the basic idea: Download the patch here. Save the following to a batch file (I called mine InstallVS2005SP1.bat) in the same directory you saved the SP1 install file: reg export HKLMSoftwarePo...(truncated)...

Freeing up drive space on Windows XP

(Indexed 2006-12-17):

[Image]I just cleaned up my computer in preparation for an upgrade to Vista. Here's how I did it: Empty Recycle Bin (Yes, I know. Not rocket surgery so far. Keep with me, I'm getting warmed up.) If you bought a PC with XP preinstalled, consider running the PC Decrapifier. It clears out the useless bundled software the manufacturer included to cut costs through renewal kickbacks. Uninstall any programs you don't need. My criteria: If I can't remember what it is or haven't u...(truncated)...

SQL Server recovery model selection (or, what's this 3GB LDF file?!)

(Indexed 2006-12-17):

SQL Server recovery models can be a bit tricky. By default, SQL Server databases are set to Full Recovery mode, which means they maintain sufficient logs to restore to any specific point in time. These logs can grow to several GB for a small, lightly used database over time. For a development workstation, especially if your database is under version control, I like to change the recovery mode to Simple (most cases) or Bulk-Logged at most. Then you can shrink the database, which will clear out ...(truncated)...

Reporting Services - Add a logo to the Report Manager

(Indexed 2006-12-13):

[Image] The SQL Server Reporting Services Report Manager is functional, but it's not very customizable. The ASPX pages just reference compiled assemblies, so the only real way to modify them is via CSS. What makes that more difficult is that the SSRS HTML is poorly constructed so that the tags you'd most want to customize don't have Id's or Classes assigned. For instance, the most obvious customization anyone would want to make is to add a corporate logo, and there's no hook for that at all. The...(truncated)...

A simple example of a fluent interface

(Indexed 2006-12-06):

Roiy recently released a really nice c# image enhancement filters library on CodeProject. It includes a nice collection of easy to use image transformation filters - ResizeFilter, RotateFilter, ImageWatermarkFilter, etc. They follow a simple pattern: Image myImg = Bitmap.FromFile("cat.jpg");Image transformedImage;ZRLabs.Yael.BasicFilters.TextWatermarkFilter watermark = new TextWatermarkFilter();watermark.Caption = "Test";watermark.AutomaticTextSize = true;transformedImage = watermark.ExecuteFil...(truncated)...

Tips for a Technical Presentation

(Indexed 2006-12-05):

[Image] I spoke at the local .NET user group meeting last week. I've done my share of software demos and short presentations to small groups, but this was the first time I've given an hour long technical talk to a large group. I'm making a list - partly for my future reference1- on some presentation tips while it's still fresh in my mind. Scott Hanselman has several great posts about presentation tips, so that was the main place I looked to brush up. Allow a lot of time to prep...(truncated)...

Notes for 11/28 Talk - SMO and INFORMATION_SCHEMA

(Indexed 2006-12-03):

I spoke at the San Diego .NET User Group meetin on 11/28 on SQL Server Metadata (SMO and INFORMATION_SCHEMA). The complete notes should be available on the user group downloads page, but here are the rough notes: Extract of the PowerPoint outline: What is Metadata? SMO What is it? Simple sample - C# Data Dictionary Creator PowerSMO INFORMATION_SCHEMA views What are they? Sample SQL utility scripts Unpivot example SubSonic demo References SMO – David Hayden http://davidhayden.com/blog/d...(truncated)...

Macro to add a Codebehind file to an ASPX page in VS2005

(Indexed 2006-12-01):

The best way to add a code file (a.k.a. codebehind) to an ASP.NET ASPX page is check the "Place code in separate file" checkbox when you create it: [Image] However, as Fritz Onion wrote, it's nice to avoid creating unnecessary codebehind files "just in case", because the with advanced web controls in ASP.NET 2.0, it's possible that many of your pages won't need any additional code. The problem: If you're working with a page wasn't created with a codebehind file, there's no "right-click / add co...(truncated)...

Speaking: 11/28 - San Diego .NET User Group

(Indexed 2006-11-25):

I'll be speaking at the San Diego .NET User Group on 11/28: Jon has been putting some new and lesser used features in SQL Server to work to solve some tough business problems lately. He will review SQL Server Management Objects (SMO), INFORMATION_SCHEMA queries, and some of the T-SQL language enhancements; and then will show how he used them in several recent projects. We'll look at SMO code in a freeware tool Jon recently released, Data Dictionary Creator, as well as INFORMATION_SCHEMA queries...(truncated)...

Creating a User Defined Language in Notepad++

(Indexed 2006-11-25):

I just posted about adding PowerShell syntax support to Notepad++ by adding a User Defined Language definition. It's pretty simple; here's a quick overview of how I did it. For a more in depth overview of the User Defined Language system, check out the Notepad++ docs. Like most of these editors, Notepad++ saves language definitions in an XML file, but Notepad++ includes front end (the User Defined Language editor), which makes it a lot easier to set it up. You can bring up the User Defin...(truncated)...

PowerShell Language Definitions for Notepad++

(Indexed 2006-11-25):

[Image] I saw a request on the Notepad++ forums today to add PowerShell syntax support. Notepad++ has a pretty good extension system for adding user defined languages, so I went ahead and put on together. You can download it from tools.veloc-it.com. Installation information is in the included readme file - you extract the zip, rename a file, and drop it in your %APPDATA%Notepad++ directory.1 I've submitted a patch to get it included in a future Notepad++ release. The PowerShell API is very d...(truncated)...

Make Zune a winner... as a platform

(Indexed 2006-11-23):

[Image]It's no secret - the Zune could be better than the iPod and still languish as an also ran for years. iPod has a huge marketshare, a solid brand, and a following whose passion would be the envy of most terrorist organizations. The "second mover advantage" sweet spot time has come and gone. iPod is firmly established, and "feature parity and a bag of chips" won't win any marketshare. The Zune WiFi feature is a good example - it's a cool feature, but it's been written off as ...(truncated)...

Top 10 DOS Batch tips (Yes, DOS Batch...)

(Indexed 2006-11-20):

[Image] PowerShell's great. I'm fired up about the opportunity to use .NET objects from simple scripts. I'll admit I'm still getting up to speed with it, but I'm totally sold on PowerShell. However, it's not installed on a lot of servers I work with, and I still do a lot of my "clumsy developer attempting DBA and network admin" tasks from DOS Batch files. You can do quite a bit with DOS Batch - the silly fact is the my most popular posts (by a huge margin) are some batch...(truncated)...

Data Dictionary Creator 1.2 is out on CodePlex

(Indexed 2006-11-15):

We just released Data Dictionary Creator version 1.2 to CodePlex. Version 1.2 adds a lot of great features: Added documentation of tables as well as columns Changed Excel export from HTML based to XMLSpreadsheet to support separate worksheets for Table and Column documentation Improved error handling - detection of non-DBO logins, etc. (UI) - tab reorganization to fit workflow a little better (UI) - moved feedback and progress bars to statusbar for consistency Support for SQL 2000 and 2005 ...(truncated)...

Mono 1.2 Released

(Indexed 2006-11-09):

[Image] Novell released Mono 1.2 at TechEd today. The main feature of 1.2 is support for System.Windows.Forms. The roadmap and previous releases indicate that 1.2 has a lot of other cool features, but it's hard to tell exactly what they are since the release notes apparently aren't available yet. I even dug through the repository, but couldn't find any release notes. I'm sure it's just a matter of time. Until then, the release announcement on the Mono site says: Mono 1.2 has...(truncated)...

Code Puzzle #1 - Solution

(Indexed 2006-11-09):

If you haven't read the puzzle, you can read more about it on my previous post. The questions: (Answer this first) Take a guess - how many numbers do you think there are between 1 and 1 million that are divisible by their reverse. Any? Fifty? A thousand? Write a program to find the answer. I use C#, but feel free to use any programming language you'd like. If you use .NET, you may run into a limitation in the framework that's a little surprising.1 What is the limitation? A few rules: We d...(truncated)...

Code Puzzle #1 - What numbers under one million are divisible by their reverse?

(Indexed 2006-11-08):

The other day I got stuck waiting in a slow line at the store all hopped up on espresso and breakbeat, so I started trying to think of numbers which are evenly divisible by their reverse. Example: If 721 were divisble by 127, I'd have a match. Yes, I'm aware this is not normal behavior. I quickly convinced myself that there were no numbers like that under 1000, but I was sure there had to be some higher numbers like that. Seemed like a pretty simple thing to figure out with a few lines o...(truncated)...

Animated GIF Plugin for Cropper + some .NET Animated GIF code

(Indexed 2006-11-08):

WHAT'S ALL THIS, THEN? [Image]Cropper is a great free screen capture program. It has a cool plugin system which lets you send the screenshots anywhere you can write code to send it. I wrote a plugin to save a portion of the screen to an Animated GIF. I originally wrote it for use in a weblog post, but got so caught up in the ins and outs of image processing that I never posted the article that got this all started or the plugin I'd written. I just realized last week when I was using the ...(truncated)...

Handling "GO" Separators in SQL Scripts - the easy way

(Indexed 2006-11-07):

If you've ever had to execute one or more SQL scripts from ADO.NET, you've likely run into the GO batch terminator issue. Any SQL script that does anything worthwhile has more than one batch, separated by a GO terminator. The problem is that "GO" isn't valid T-SQL, it's just a command used by the SQLCMD, OSQL and ISQL utilities that can also be used within Query Analyzer and the Query Editor window. If you try to execute T-SQL scripts with GO commands in them via ADO.NET SqlComma...(truncated)...

SQL Puzzle #1 - Answer

(Indexed 2006-11-02):

Here's my solution to the puzzle in my previous post. If you haven't seen the challenge, go back and read that first.Are you reading this before trying to solve the puzzle on your own? Unacceptable! Your IP is being logged! C'mon, give it a try! My Solution I used 29 lines and 3 temp tables. It's reasonably straightforward - I set up a rank table (#temp), cross join it with the Student table to get ten rows for each student (a cartesian product), then join it to the grades table...(truncated)...

SQL Puzzle #1

(Indexed 2006-11-02):

Background I had to write a semi-interesting SQL query this past week and thought it might make for a fun SQL puzzle (for very small values of "fun"). I'm working on a bio-tech business intelligence application, but I simplified things way down to two tables in a SQL Server 2000 database: Student and Grade. The student may have any number of grades, and may of course may get the same grade several times. StudentID FirstName LastName 1 Bill Smith 2 Bobby Brown 3 Derek Zoolander ...(truncated)...

Showing a Connection String prompt in a WinForm application

(Indexed 2006-10-30):

[Image] When I was putting together the Data Dictionary Creator program, I needed to allow users to input a connection string. A lot of winform applications that require data connections give you a textbox and tell you to figure it out yourself, but I really wanted to show a prompt that let you test your connections, select databases on a server, etc. I was surprised that I couldn't find a nice, free, winform control to build a connection string. I found something on CodeProject with a smart so...(truncated)...

Reading the SQL 2005 instance and installation directory from a DOS batch file

(Indexed 2006-10-29):

SQL 2005 installs each instance to a numbered directory based on the order installed: MSSQL.1, MSSQL.2, etc. That makes scripting a little tricky. Fortunately, you can find them in the registry. The install path for the SQL 2005 database server is here: REG QUERY "HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerSQL2005SetupSQLPath You can look up specific instances in the the Instance Names registry node. For instance, to find the SQL2005 instance, you'd look at this key: HKEY_LOCAL_MACH...(truncated)...

Batch files to check SQL 2005 (MDF) files in and out of Subversion source control

(Indexed 2006-10-29):

Here are a few batch files I whipped up to help our team keep development databases in sync with our Subversion repository. These handle detach / reattach from the database, so running the checkout script has us the latest version in the repository in twenty seconds. These scripts rely on 7-zip to compress / decompress the MDF file to speed up the checkin / checkout. You can download 7-zip here, or you can modify the scripts if you want to use another commandline compression program. There are a...(truncated)...

[link] 9MinutesOfFame

(Indexed 2006-10-28):

Back in February, I posted about MyLastFM, an open source player for Last.FM radio. MyLastFM is a really slick looking application with some slick code under the covers. It's the product of a killer team - Eric's the programmer and Nicole's the designer. This dynamic duo just released 9MinutesOfFame.com. As I'd expected, the HTML code is as pretty as the design - semantic markup with all the cool Web2 Javascript libraries. Nice! It's a little hard to describe the concept; lu...(truncated)...

Subscription updates for my blog

(Indexed 2006-10-28):

[Image] If you subscribe to my weblog's RSS feed (rather than the main weblogs.asp.net feed), you'll need to update it to my new feedburner feed link: http://feeds.feedburner.com/jongalloway While I'm at it, if you'd like to get my posts via e-mail, you can subscribe here. It's really simple, just go to the link and enter your e-mail address.Share this post: Email it! | bookmark it! | digg it! | reddit![Image]

Can Operating Systems tell if they're running in a Virtual Machine?

(Indexed 2006-10-28):

Or, do androids know they're dreaming of electric sheep... [Image] There was some recent news on Windows Vista EULA restrictions relating to Virtual Machines. Vista Home Editions aren't allowed to be run inside a Virtual Machine, and Vista Ultimate in a VM will restrict access to applications which use DRM. We're still waiting for clarification from Microsoft, but it seems like the popular interpretations are basically right. This raises the question - is this a EULA restriction, or ...(truncated)...

[OT] Google buying YouTube for $1.65 Billion

(Indexed 2006-10-09):

MarketWatch: Google to acquire YouTube for $1.65 billion in stock SAN FRANCISCO (MarketWatch) - Google Inc. said Monday it's buying No. 1 Internet video sharing Web site YouTube Inc. for $1.65 billion in stock. The deal is regarded as a largely defensive one that leapfrogs Google into a leading role in a burgeoning Internet marketplace. Moreover, the Google/YouTube deal highlights how Google (GOOG) and other Internet companies are betting heavily on video to attract more customers and generate ...(truncated)...

[Tool] RegmonToRegfile - Record and playback registry changes

(Indexed 2006-10-09):

[Image] I just released a new tool on tools.veloc-it.com: RegmonToRegfile. It's easier to explain what you can do with RegmonToRegfile than to explain what it is. RegmonToRegfile works with Regmon (a free tool from SysInternals) to record and playback the registry changes that another program or installation makes. For example, I used it to create the registry files for the IE7 Standalone launcher I've been distributing. I recorded the registry entries when I installed, ran, and unins...(truncated)...

[.NET Gotcha] Commandline args ending in " are subject to CommandLineToArgvW whackiness

(Indexed 2006-10-05):

I recently posted on my confusion when I tried to use commandline arguments ending in " and got unpredictable results. It seemed that all backslashes before a double quote character needed to be escaped, but if they didn't preceed a doublequote, they didn't need to be escaped. There's more explanation on the original blog post, but here's a summary: To pass this is a test to a console application, you need to pass in this is a test. The first set of backslashes don't requir...(truncated)...

[.NET Gotcha] SettingsPropertyValue typed as a string will never be null

(Indexed 2006-10-05):

I like to use chained null coalesce operators (??) to handle default console application parameters. The idea is that I provide a default value, override it via application settings (app.config and user.config), and then overridede it with command-line arguments. I think it provides for a nice user experience - if you're always going to to run the application with the same settings, you can set them in the config; if you need to script it you can control everything from the command-line. Unf...(truncated)...

Free OCR software? You may already have it...

(Indexed 2006-10-02):

Summary OCR (Optical Character Recognition) can really come in handy. For example, I previously wrote about how I use Timesnapper as a black box to recover work which would otherwise be lost. Since most of my work is text based (C#, SQL, HTML, documentation, communications, etc.), the obvious next step is to grab the code from a screenshot. Of course I can retype it, but OCR would be better. There are some great commercial OCR packages out there. My company recently used OmniPage Pro in a proje...(truncated)...

Orcas VPC Download info

(Indexed 2006-09-30):

Greg pointed me to the Visual Studio Orcas CTP Virtual PC image download. Downloading now. First of all, I'm really happy to see a VPC image download. We've been asking for this for a little while, and it's great to see it happen. Make sure you follow the download instructions carefully. There are two downloads - a base image and a difference disk image. That's smart for bandwidth, since future releases will only require download of the new difference disk, but it might throw you...(truncated)...

[Tool] Data Dictionary Creator - Rapid database documentation

(Indexed 2006-09-28):

Summary Data Dictionary Creator (DDC) is a simple application which helps you document SQL Server databases. It stores all the information in Extended Properties, so it's easier to keep the documentation in sync with the database as it changes. You could do a lot of this through SSMS (SQL Server Management Studio), but It's a lot more work, which means it's a lot less likely to be kept updated. The SSMS approach only gives you one column (Description); DDC gives you as many as you ...(truncated)...

VS2003 and Vista - Is the sky really falling?

(Indexed 2006-09-28):

[Image] As part of a recent Visual Studio 2005 SP1 announcement, the Corp VP of Microsoft's Developer Division stated that Visual Studio.NET 2003 won't be supported under Windows Vista. Frans Bouma, Paul Wilson, and others have done a good job of raising the level of awareness on the issue. I agree that it's not, you know, a good thing, but I wanted to hear how big a problem it really is. Does "not supported" mean it will blue screen your computer and set you on fire, or does it mean it'll mostl...(truncated)...

Command Line Confusion

(Indexed 2006-09-13):

I kept getting wierd errors in a simple console application which takes a regular expression as an argument. The regular expression kept failing with an "Illegal at end of pattern" error. The odd thing was that I was properly escaping the as . After some testing, I think I've convinced myself that this had nothing to do with regular expressions; there's something wacky about the way the .NET Framework handles commandline arguments which end in ". Here's a simplified argument test application: ...(truncated)...

[tool] TimeSnapper - Never lose work again

(Indexed 2006-09-11):

[Image]TimeSnapper is one of my favorite applications. It does one thing and it does it well - it takes a screenshot every few seconds, then lets you browse through your history by date and time. Most people focus on this as a way to simplify filling in time sheets, but I've come to rely on this program as a safety net. This thing has saved my butt countless times: I'd spent many long hours working with Roiy on the Monoppix project, but since we're separated by about 7500 miles ...(truncated)...

Sometimes it's easier to just hex edit the assembly

(Indexed 2006-09-04):

SummaryPalPal's Single Item Purchase links are not technically valid - the query portion of the URL doesn't start with a question mark. This confuses ASP.NET 2.0's Response.Redirect(url) call, which causes the return URL to be malformed. Rather than spend dozens of hours upgrading to the newest version of the store software, I spent 15 minutes with Reflector, WinMerge, and a hex editor to modify the .NET assembly.The Obligatory Human Interest Back StoryI'd been working on setting...(truncated)...

SQL Reporting Services - CSS fix for Firefox

(Indexed 2006-09-02):

SSRS 2005 is pretty slick, but the HTML is pretty ugly. Reports are displayed in an IFRAME that's deep in nested table land, and the IFRAME's height setting only works in IE. The end result is that reports don't display correctly in Firefox - the IFRAME's height defaults to a few hundred pixels, so you only see the top 2 inches of the report. However, they did the right thing by designating CSS classes for most of the important elements, so we can fix it by adding a min-height se...(truncated)...

How NOCOUNT affects ADO.NET

(Indexed 2006-08-30):

A co-worker recommended we include "SET NOCOUNT ON" in all stored procedures, since it reduces the network traffic for queries. I did a bit of digging; here's my take on it:It's probably a good general practice, but the network traffic savings would be pretty minimal in most cases. This would be more important in a case where a very high volume of SQL statements with small result sets were being run, because the rowcount information would comprise a more significant portion of the networ...(truncated)...

Microsoft should ship SubSonic (formerly called ActionPack) with Atlas

(Indexed 2006-08-30):

Yesterday, Phil got me to watch the SubSonic screencast (it was actually called the ASP.NET ActionPack and was since renamed). I'd seen posts about it on my main RSS feeds and had ignored it because everyone had been giving their posts titles like "ActionPack - Ruby on Rails for ASP.NET." I've watched all the ROR screencasts and have been a little underwhelmed1, so I didn't bother reading further. Big mistake.SubSonic is one of the coolest web development things I've seen in a wh...(truncated)...

Notes from San Diego .NET User Group meeting on Tuesday (8/22/06)

(Indexed 2006-08-25):

On Tuesday I was one of several presenters at the San Diego .NET User Group's second annual Toolbox meeting. The presentations were supposed to be "rapid-fire (15 – 20 minutes), brief presentations", but I kind of took it to the extreme. I presented eleven of my favorite tools in under 18 minutes. I was shooting for something like Scott Hanselman's presentation for GrokTalks - Ten Utilities in 10 Minutes (WMV download), but even at 100 seconds per utility I felt like I was rushing ...(truncated)...

San Diego User Group (8/22/06) - Toolbox Meeting

(Indexed 2006-08-25):

On Tuesday I was one of several presenters at the San Diego .NET User Group's second annual Toolbox meeting. The presentations were supposed to be "rapid-fire (15 – 20 minutes), brief presentations", but I kind of took it to the extreme. I presented eleven of my favorite tools in under 18 minutes. I was shooting for something like Scott Hanselman's presentation for GrokTalks - Ten Utilities in 10 Minutes (WMV download), but even at 100 seconds per utility I felt like I was rushing ...(truncated)...

[Tools] Switched to Notepad++, here's my C# syntax file

(Indexed 2006-08-19):

I replaced Notepad with Notepad2 on all my computers when Roy Osherove recommended it back in 2004. I've really appreciated it - it's small and lightweight like Notepad, but has some great features like syntax highlighting, block selection, and regular expression search.Then a wild e-mail thread a week ago (highlights: Jeff Atwood called a non-threatening dialog a "show stopper", Scott Hanselman called him insane) got me curious about other notepad replacements. I took a look at Notepad+...(truncated)...

Speaking at the 8/22 San Diego .NET User Group Meeting

(Indexed 2006-08-18):

The San Diego .NET User Group is having their second anual "toolbox" meeting on 8/22/06, and I'll be one of the presenters. This sounds like it will be a lot of fun - several user group members doing rapid-fire 15 minute presentations. I'm really into coding productivity tools, so this is right up my alley. The hardest part will narrowing my tools list down to a 15 minute talk - my C:Utils folder is 650MB, and I could easily run an all day class on programming utilities. I'm planning...(truncated)...

CodeProject - Avoiding software licensing makes for a very bad license

(Indexed 2006-08-16):

SummaryIf you're going to post code, take the time to post a license so others can use it. I'm talking about CodeProject here, but the same applies to other code sites as well as code you post on your blog.The obligatory human interest back storyThe first time I set up a project on SourceForge, I was frustrated with the requirement to choose a license. "I don't care about all this legal mumbo jumbo, I just want to share some code," I thought. Eventually I settled on an MIT license and got on wit...(truncated)...

[SQL] Change Logical Filenames

(Indexed 2006-07-28):

A little while ago, we deployed some really great sites built on the DotNetNuke platform. We started with a base DNN install, worked for several months, and ended up with a really nice suite of sites. Along the way, we renamed the databases, but the logical database names remained DotNetNuke_Data and DotNetNuke_Log. We looked into changing the logical names, but came up empty.The difference between database and logical names was a problem for two reasons: While it worked well, it's a rough edge...(truncated)...

[SQL] Scripting backup and restore all databases on a server (Part 2 - Extra Credit)

(Indexed 2006-07-28):

In the first post of this series, I discussed scripting database restore statements. It seems simple enough, but there's a complication - the restore statement requires the database logical name. The logical name usually follows the default format (a database named Example would have a data logical name of Example_Data and a log logical name of Example_Log), but it doesn't have to. The logical name could be just about anything.The easiest solution is to change the logical filenames to ma...(truncated)...

[SQL] Scripting backup and restore all databases on a server (Part 1 - Simple Case)

(Indexed 2006-07-28):

We just migrated a group of production sites from one hosting environment to another. The new environment has staging and production servers, so we really completed two migrations. There were a lot of databases, and if you've been following my blog at all you probably know that I love to script repetetive tasks - not (only) from laziness, but from a desire to avoid typographical errors due in repetetive manual work.First, I backed up all databases on the old server. I ran this script, which ...(truncated)...

IE7 Standalone (Updated for IE7 Beta 3)

(Indexed 2006-07-26):

Summary[Image]I just released a new version of the IE7 Standalone Launcher. Due to changes in this beta release of IE7, a simple batch file alone won't cut it. You can grab a zip package (two batch files, two reg files) on the new tools.veloc-it.com site.Finally!Well, it took me long enough. I've been fighting with the IE7 Beta 3 since it was released - FileMon, RegMon, Dependency Walker, and process debugging. This release requires over 1500 interfaces to be added to the registry.What&#...(truncated)...

[SQL] Some of my favorite INFORMATION_SCHEMA utility queries

(Indexed 2006-07-07):

Phil just posted about using INFORMATION_SCHEMA to bulletproof your SQL change scripts. I've been working up a post on using queries against INFORMATION_SCHEMA views to generate SQL scripts, so this seems like a good time to chime in. The INFORMATION_SCHEMA views are views which describe a database's objects and schema. Phil did a great job of explaining what the INFORMATION_SCHEMA views are, so go take a look at his post if you'd like to know more. As the title of his post indicates, he's using...(truncated)...

Motorcycle blogging from San Diego to the Arctic Circle

(Indexed 2006-07-03):

[Image]As Phil mentioned earlier, my brother Brian is blogging his motorcycle trip from San Diego, California to Deadhorse, Alaska. Blogging a long trip is getting routine, but what's interesting is that Brian's actually blogging from a computer / webcam / GPS setup that's mounted on the motorcycle. Brian just finished a 10 year stint in the Navy and has been planning this trip for a long time. He's in northern Washington now, and will go over 17,000 miles by the time he's done. You can read mor...(truncated)...

Mouseless Computing

(Indexed 2006-06-14):

The professional programmer encounters a variety of challenges and annoyances in the line of duty, but by far the top job hazard is Repetitive Stress Injury (RSI). We can muddle our way through less than optimal projects and coding blunders (hopefully learning as we go), but it's pretty hard to program if you can't type or double-click.Jeff Atwood recently wrote about some great tips for caring for your hands and wrists - things like exercise, posture, breaks. I'd like to add to that by discussi...(truncated)...

Avoid IISRESET in ASP.NET applications (added bonus: ASPRESET)

(Indexed 2006-06-01):

[Image]I'm always a bit worried when I work with developers or system admins that still think you should "throw in an IISRESET just in case" when deploying ASP.NET applications. Cargo cult server administration at its worst ("Not sure why, but it always seems to help if I throw in an IISRESET after pushing code. If that don't get it, a reboot will!").This is very rarely necessary now, and it's terrible to take all websites on a server offline "just in case". It was often needed back in the ASP /...(truncated)...

The easiest way to see your site in IE7 and Safari

(Indexed 2006-06-01):

[Image] [Image]Like many web developers before me, I've become a conscripted webservant in my wife's quest to launch a website - Rachel's setting up a store for high end children's clothing. She's got an incredible eye for design, which makes her one of the toughest clients I've had.When her sister viewed the site in Safari the links all appeared red. Strange, as the CSS bade it otherwise (hello, LoVe / HAte rule). Well, iCapture came to the rescue. I didn't have to sidle up to t...(truncated)...

Make MS codenames cool again: WinCom, WinPrez, WinFlow

(Indexed 2006-06-01):

A letter read on this week's DotNetRocks (Kimberly Tripp on SQL Server) reiterated the common complaint that our cool codenames have been replaced with exquisitely boring names. I agree - Windows Communication Foundation sounds like an ailment, and WCF sounds like a part number.Well, William Randlett has the solution - we can at least pronounce come up with cooler pronunciations:WCF = WinComWPF = WinPrezWF = WinFlowI'm with William. Join us! Let's make these new technologies cool again with unsa...(truncated)...

Must read .NET dev blog - Ayende

(Indexed 2006-05-28):

[Image]I stumbled across Ayende's site in February looking for an NHibernate UI. His NHibernate Query Analyzer's pretty nice - check out the Flash demo. I was blown away by Ayende's blog, though, and it's been one of my favorites since then.Ayende1 wrote back in April about Blog Driven Development: Code a little -> Test a little -> Blog a lot. And when he says a lot, he means it - he averages more than 75 posts a month, and it's all really solid technical content. He's...(truncated)...

Mentioned on DotNetRocks

(Indexed 2006-05-10):

I e-mailed the DotNetRocks guys a few months ago about Kim Cameron, they guy behind Microsoft's new Identity initiative. They interviewed him on DotNetRocks Episode 176 (4/25/06) and read my e-mail about the show on episode 177. Bottom line - my e-mail prompted the interview. Cool! Kim Cameron is soft-spoken, but he's got a very imporant message. He was one of Microsoft Passport's more vocal critics, and Microsoft's leadership was very wise to respond to his criticism by hiring him. InfoCard is ...(truncated)...

Assault on 13th Labour - Cross Platform Distributed Computing in .NET

(Indexed 2006-04-14):

[Image]BoingBoing linked to a distributed program attack on an encryption puzzle on Perspex City called Assault on 13th Labour. What caught my eye was the fact that it's a .NET console application which runs on Mac and Linux under Mono as well as Windows under the Microsoft.NET runtime. A cross platform distributed computing application that's 60K is just plain cool. There's no "Download Windows version here, Mac version here, Linux version here" deal - this is the same EXE running on all three ...(truncated)...

[JS/CSS] event:Selectors - the simplest way to hook Javascript events to a CSS class

(Indexed 2006-04-13):

event:Selectors is a really nice wrapper for the Prototype.js library. It allows you to hook Javascript events to CSS classes with 2 or 3 lines of Javascript code:'#icons a:mouseout, #other-item:mouseover': function(element) { var app = element.id; new Effect.BlindUp(app + '-content', {queue: 'end', duration: 0.2});}Prototype recently added Attribute Selectors , which allows this kind of fun: input[type="submit"] { color: #ccc; }a[href!="#"] { background: #c00; }a[class~=external][href=...(truncated)...

[SQL] FTP download and restore an MSSQL database backup

(Indexed 2006-04-13):

I extended my DOS batch script to restore a SQL 2000 database and grant permission to ASPNET account to pull the database backup from an FTP location. This has been a big timesaver on a recent DotNetNuke based project. The designer and client are working off a staging server, so I regularly need to refresh my development database to keep in sync. We have a scheduled nightly database backup on our stage server that writes to a location that's accessible via FTP, so I can just run this script an...(truncated)...

Sparklines

(Indexed 2006-04-13):

Jon Udell recently posted about Sparklines :Here, for example, is a sparkline showing monthly citations of LibraryLookup in del.icio.us since Jan 03: [Image]. I made this using Joe Gregorio's excellent sparkline service, by the way.Grig has some cool examples as well:Here is the per capita income in California from 1959 [Image]to 2003.And here is the "real" per capita income (adjusted for inflation) in California, from 1959 [Image]to 2003.[Image]Edward Tufte proposed Sparklines: "small, high...(truncated)...

[T-SQL] Call a stored procedure once for each row in a query or table

(Indexed 2006-04-12):

Although it's not at all good from a database performance perspective, sometimes data import or upgrade scenarios require a script which calls a stored procedure once for each row in a table. In this example, I'm calling usp_InsertUser on every employee in EmployeeImportTable.USE [DBNAME]GOdeclare @Proc nvarchar(50)declare @RowCnt intdeclare @MaxRows intdeclare @ExecSql nvarchar(255)select @RowCnt = 1select @Proc = 'usp_InsertUser'-- These next two rows are specific to source table or querydecla...(truncated)...

[T-SQL] Drop all constraints on a table

(Indexed 2006-04-12):

Here's a simple scriptlet I've included in database upgrade scripts to drop all constraints on a table which will then allow dropping the table. Of course, you'll want to replace the @database and @table parameters. This doesn't take care of circumstances where another table has a foreign key to the table you want to drop - in that case, you'll want to explicity drop that foreign key first. -- t-sql scriptlet to drop all constraints on a tableDECLARE @database nvarchar(50)DECLARE @table nvarch...(truncated)...

SQLite - ALMOST a great embedded database solution for .NET applications

(Indexed 2006-04-12):

[Image]A comment on my post about the SQL/e announcement said it sounds a lot like SQLite. The subject warrents a separate post. SQLite is a great embedded database. It's free, open source, small, fast, ACID compliant, and frequently updated. SQLite is an ideal embedded database provided you don't care about concurrency. That's because any write operation locks the entire database . Even Microsoft Access beats that; it's had record level locking for a while.That's not...(truncated)...