ASP.NET News from Blogger: Karl Seguin [MVP]   Get the feed of: Karl Seguin [MVP]

Total News: 159

Moving and Moving

A little while ago I decided to move my blog to openmymind.net. I owe a lot to Brendan and CodeBetter, but I have an itch to talk about a broader set of topics than what I feel is appropriate her...

Contributing to OSS, a Git Bootcamp

So you want to contribute to an OSS project, but its hosted on github and you don't know where to start. This guide will cover the basics you'll need to get contributing - something made relat...

NoSQL For The Rest Of Us

No one would blame you for strictly associating NoSQL with performance. Most of the back and forth about NoSQL - an umbrella term given for non-relational storage mechanisms - has squarely put the foc...

MongoDB, 5 characters, and a free job board

Today I came across shapado.com - a StackExchange-like open source system running on ruby and mongodb. It took a couple clicks and a few keystroke, and I had http://jobs.shapado.com/ setup and running...

Metsys.Bson - the BSON Library

Earlier this month I detailed the implementation of the bson serialization we used in Norm - the C# MongoDB driver. I've since extracted the serialization/deserialization code and created a standa...

ASP.NET Performance Framework

At the start of the year, I finished a 5 part series on ASP.NET performance - focusing on largely generic ways to improve website performance rather than specific ASP.NET performance tricks. The serie...

WebForms vs MVC (again)

There's a new video up on www.asp.net which aims to help developers pick between ASP.NET WebForms and ASP.NET MVC. The video boils down to 5 benefits per technology which Microsoft thinks you shou...

The 8th Phase

I once posted a semi-serious post entitled The 7 Phases of Unit Testing. The phases are: Refuse to unit test because "you don't have enough time" Start unit testing and immediately star...

BSON Serialization

BSON is a binary-encoded serialization of JSON-like documents, which essentially means its an efficient way of transfering information. Part of my work on the MongoDB NoRM drivers, discussed in more d...

An introduction to iptables

iptables is a linux application that allows you to configure the built-in linux firewall. There are abstraction layers built on top of it, including nice GUIs, but I recently had some very basic rules...

Beyond web.config

I recently needed a configuration mechanism which would detect changes without requiring an application domain restart. I also wanted to move away from XML. This is what I came up with (and hopefully ...

Don't Use Try/Catch

Exception handling has been talked about a lot over the last decade and a half. However, despite a general consensus on how to properly handle exceptions, a divide on usage continues to exist. Imprope...

The WebForms Rant

Ever since ASP.NET MVC was announced/released, there's been a lot of talk about it with respect to ASP.NET WebForms. People want to know which technology they should use, and are likely confused b...

ASP.NET Performance - Part 3a - Better Cache Busting

There have been some good, informative, comments to this series. One in particular, from Dan Sargeant, deserves to be addressed directly - in large part because its something I overlooked but need to ...

You should know Linux

Its hard to get everyone to agree on what core competencies developers should have. I've long believed that knowledge of C is fundamental to becoming a great developer. Actually, C in general, me...

ASP.NET Performance - Part 5 - Nginx

The previous parts of this series focused on small pieces of code we could use to maximize real-world performance - largely based off of YSlow recommendations. In this final installment we'll thin...

ASP.NET Performance - Part 4 - CDN

In part 3 we created three helper functions to use when including css, js and images in our pages. As you might expect, YSlow has something to say about how to maximize the performance of such files b...

ASP.NET Performance - Part 3 - Cache Busting

In part 2 of the series we looked at ways to tweak our headers to maximize performance. One of those tweaks was the addition of far-reaching expiry headers for static files (images, css, js). What hap...

ASP.NET Performance - Part 2 - YSlow

In part 1 we looked at integrating a javascript compressor as part of our build process to shrink javascript files for production (at the time, I didn't realize that it would lead to a series). It...

Eschewing Date Types in our Database

About a month ago, I found myself transforming data for the reporting portion of our application. Like many reporting systems, ours works off of date ranges, with statistics grouped together by the da...

Postgresql - Day 2

My migration from SQL Server to PostgreSQL for an upcoming project continues. On day 1 I managed to get the application up and running quickly, thanks to NHibernate. Ayende was kind enough to post som...

Migrating to Postgresql with my friend NHibernate

Last night I decided to accelerate our plan to migrate from SQL Server to PostgreSQL and gave it a quick attempt to see what the work involved was. I was hoping that due to our usage of NHibernate, an...

Unit Testing - Do Repeat Yourself

Writing effective unit tests is as much about the test itself as it is about the code under test. All the experience in the world isn't going to help you write clean and meaningful tests against h...

Canvas gets a Spark

Today I updated the CodeBetter.Canvas project to target the latest releases of NHibernate (2.1), FluentNhibernate (1.0 ) and Nhiberate Linq (1.0). More importantly is the switch away from the MVC WebF...

Adding Syntactic Sugar to the Spark View Engine

Today I vowed to learn the Spark View Engine. While I don't hate ASP.NET's MVC WebForm View Engine, its clearly outclassed by the other MVC stacks. So, given my views (hahaha) on the matter an...

ASP.NET disk-based caching

I was recently playing with the idea of implementing disk-base caching for pages that had a high read-to-write ratio. On top of being practically read-only, these pages also require quite of bit of da...

Foundations Of Programming - Small Update

I've updated the Foundations of Programming license to a Share-Alike (as opposed to a no derivatives) license. As always, you can download it from: http://codebetter.com/media/p/179694.aspx OR ht...

NHibnerate : Handling the Special Cases

In my last NHibernate post I mentioned that NHibernate is great because it does the heavy lifting for the common tasks that make up 95% of my data access layer, while letting me tweak the remaining 5%...

NHibernate : Some Naked Thoughts

Please, Just Remember One Thing Just for a few seconds forget everything you know about NHibernate. Good. Now, before I snap my fingers and everything comes flooding back, the only thing you need to k...

Revisiting CodeBetter.Canvas

A month ago I released CodeBetter.Canvas, a simple application with equally simple goals: Provide developers with a starting point for new ASP.NET MVC projects Provide developers with a learning tool...

2 years ago I gave up on Silverlight

Almost two years ago, to the day, I completely gave up on Silverlight. How do I remember the day so clearly? Because every now and I again, I get an email notification that someone has replied to my f...

Making the untestable testable with Anonymous Methods and Dependency Injection

Making the untestable testable with Anonymous Methods and Dependency Injection It can be frustrating to want to write unit tests, only to hit some code which is rather untestable. Take for example, ...

Part of your job should be to learn

Jan recently asked: "Something I don't see being addressed that often - When you say you read a lot, is that on your own time, or do you actually spend time at work reading? I think spending ...

2009 - A Year of Learning (so far)

I spend a lot of time learning. I read a lot, work on small projects that let me experiment, and blog (which is probably the best way to learn). I don't see how you can be effective or successful ...

Presenting CodeBetter.Canvas

I recently wrote a code-heavy 3-part series on validation. Half-way through, I realized that a sample application would probably help bring together all the incoherent code snippets I was throwing aro...

Validation - Part 3 - Server-Side

So far we've built-up a small foundation for a custom validation framework in part 1, and then tied that to a jQuery plugin for our client-side validation in part 2. In this part we'll look at...

The 7 Phases of Unit Testing

1 - Refuse to unit test because "you don't have enough time"2 - Start unit testing and immediately start blogging about unit testing and TDD and how great they are and how everyone shoul...

Validation - Part 2 - Client-Side

Validation - Part 2 - Client-Side In Part 1 we looked at our basic framework for validation - a set of attributes, an interface, and some configuration objects. Now we'll see how these can be use...

Validation - Part 1 - Getting Started

There are a lot of good and free frameworks to help you deal with validating user-submitted data. You can use attribute-based frameworks, such as Castle Validators or .NET 3.5 Data Annotations to deco...

www.asp.net costs millions to run?

For those who missed it, Joe Stagner commented that www.asp.net costs millions of dollars to run. Since Joe was a little vague about exactly what that meant, I'm going to assume that he's talk...

Is ASP.NET MVC a half-baked solution?

Earlier this morning, I commented on twitter that I was starting my 2nd full-fledged ASP.NET MVC project, and was finding myself writing a massive amount of infrastructure code. Ironically, having to ...

Tidbit: svn-externals

Not too long ago, I had a need to tie a number of svn repositories together. What I wanted was to create a 1 repository with a number of sharable assets (images, language files, 3rd party libraries, s...

Kobe - Oh Dear Lord Why?!

Roughly 4 months ago I nerd-raged all over the efforts of a small team at Microsoft who put together a sample MVC application. Despite some pretty loud outcry, the response at Microsoft was pretty slo...

Don't be afraid of complex constraints

The nice thing about mocking frameworks is that they let you test the interaction of your units painlessly. For example, given the following code: public class UserRepository { private readonly IDat...

Using NHibernate with multiple databases

I've been asked a couple of times about hooking up NHibernate with multiple databases. You may need to do so for sharding purposes or as a business function. For example, we allow customers to dep...

The Bare Minimum

When it comes to project management, I tend to favor the less-is-more approach. For the most part, I think teams should be self-managed and organized. I've never seen project managers actually add...

Back to Basics: Interfaces

#karl_custom_4 code{color:#833;background:#fcfcfc;} #karl_custom_4 h4{margin:30px 0px 0px 0px;font-color:#fff;font-weight:bold;border-bottom:1px dashed #ccc;font-variant: small-caps} When it comes...

Outside my element: A CSS Trick

I have a little CSS trick that I'd like to share. It's a little embarrassing because CSS/HTML and all that goodness certainly aren't my forte. Also, this is a pretty basic trick, but maybe...

Why aren't I an MVP?

Why aren't I an MVP? There's a problem with the MVP program I'd like to talk about. The fact that I'm no longer an MVP (haven't been for over a year now) isn't the problem, me...

new Repository<T>().DoMagic()

#karl_custom_1 code{color:#833;background:#fcfcfc;} #karl_custom_1 h4{margin:30px 0px 0px 0px;font-color:#fff;font-weight:bold;border-bottom:1px dashed #ccc;font-variant: small-caps} The purpose b...

View Other bloggers