TweetSharp for Twitter developers using .NET

Since January I’ve been using a library called TweetSharp in my various Twitter-related programming projects (including my monthly stats posts). Not only has it saved me from all of the effort that would have gone into writing my own Twitter library for .NET, but it has also taught me a few things about fluent interfaces, OAuth, and other topics. Here’s the description from the relatively new official website:

TweetSharp is a complete .NET library for microblogging platforms that allows you to write short and sweet expressions that convert automatically to web queries and fly to Twitter on your behalf.

Maybe this is a generalization but I often feel that .NET developers get the short end of the stick when the “cool kids” release sample code for their APIs. Or more accurately, C# developers get the short end of the stick (because you can run Python, Ruby, and other languages on .NET if you really want to). Thus I’m grateful that Dimebrain (Daniel Crenna) has developed such a useful library.

TweetSharp is open source and under active development (hosted on Google Code), with a growing base of users reporting and fixing issues (I helped with the Twitter Search functionality initially). If you’re writing any kind of software for Twitter using .NET, you should be using TweetSharp.

Questionmark still hiring .NET developers in Edmonton!

questionmark The software development company I work for here in Edmonton, Questionmark, is once again looking for developers to join our team. The job descriptions I posted back in September are still relevant, but here are the requirements again:

A minimum of 3 years of commercial development experience. Highly skilled in software development using our core technologies: C#, ASP.NET, XML, Ajax, Javascript, T-SQL. Experience with SCRUM a plus. Excellent written and oral communication are essential.

You’d be working on the latest and greatest, both technology-wise (.NET 3.5, etc) and product-lineup-wise (the company’s newest products). It’s a great opportunity!

We’re currently in the process of moving to our brand new office in the Empire Building downtown (10080 Jasper Avenue). As some of you may know, I’ve had offices in the building twice before, and I think it’s a fantastic place to work. It’s great to be right in the heart of downtown, with easy access via public transit and lots of amenities within walking distance (parking isn’t so great, of course).

Job Description for Software Developer

If you’re interested in applying or would like more information, either send me an email or email Kaitlyn Lardin. Thanks!

.NET Developers: Questionmark is hiring!

questionmark logo The company I work for, Questionmark, is looking to hire three developers to join our Canadian team here in Edmonton. The positions are Software Developer, Lead Software Developer, and Senior Software Developer. Here’s a bit of background on the company:

Questionmark is a company with recognised global presence in e-learning and assessment automation with software covering all aspects of this field, from authoring to delivery and reporting. Our software is used by over 3 million people in 15 different countries throughout the world. Questionmark is a fast-growing company, with a dedicated, passionate, and global workforce. We have offices in London, UK, Norwalk, CT and Tubize, Belgium. We care about the satisfaction of our employees and we reward them for meeting or exceeding expectations. The company promotes a relaxed, fun and highly productive approach to work.

I enjoy working for Questionmark! We’re an agile shop using Scrum and other things you’d expect such as unit testing and continuous integration. Another plus is that we’re not stuck in the past – we’re using .NET 3.5, ASP.NET AJAX, and lots of other new and interesting technologies. You can find more information in the job descriptions:

Job Description for Software Developer
Job Description for Lead Software Developer
Job Description for Senior Software Developer

If you’re interested in any of the positions or would like more information, either send me an email or email Kaitlyn Lardin.

ALT.NET Canada in Calgary

I came down to Calgary early this morning for the ALT.NET Canada conference being held at the University of Calgary. For those of you new to the term, ALT.NET refers to “a self-organizing, ad-hoc community of developers bound by a desire to improve ourselves, challenge assumptions, and help each other pursue excellence in the practice of software development.” When I first started hearing about ALT.NET in the developer blogosphere last year, I got the impression that there was an “us vs them” kind of mentality. Either you believed in ALT.NET or you didn’t. A number of other developers I’ve talked to remarked that ALT.NET seemed somewhat cult-like. Given that, I wasn’t sure what to expect for this event. I’m happy to report that it has been great so far!

ALT.NET Canada ALT.NET Canada Schedule

The conference is an “Open Spaces” style of event, which as far as I can tell is basically an unconference. There is no set agenda, the attendees are the discussion leaders, and there’s lots of open spaces for people to use for breakouts. About 75 people came out today, most from Alberta but some from Vancouver, Winnipeg, and other parts of Canada.

I think the sessions are a bit long at an hour and a half, but that doesn’t stop people from going off and having their own discussions so it’s not all bad. The first session I went to was on the web UI of the future, and then I joined the discussion on telecommuting. After lunch I went to a session on occasionally connected apps, and finished off with a session on volunteering development time. All very interesting and thought provoking.

A large number of people went out to Schank’s tonight for beer and food, so that was good. There are two sessions tomorrow morning to finish off the conference. The sessions are being documented here, and there’s even some video up. You can see my photos from the event here. Also check out #altnetcalgary on Twitter for more discussion.

SubSonic 2.1

subsonic I’ve been using SubSonic for about a year now, and I’m a big fan. As the website says, SubSonic is a open source toolset for .NET developers that helps a website build itself. Essentially what SubSonic does is automatically generate your data access layer for you. It saves you from having to write the same boilerplate code over and over. Developers like to talk a lot about improving productivity, and SubSonic actually helps in that regard. The latest version, 2.1, was released on Tuesday.

SubSonic is known as an Object-Relational Mapping (OR/M) tool. What that means is that it generates objects that reflect your database structure. So if you have a table called “User” it will create an object called “User”. Unlike most OR/M tools however, SubSonic prefers convention over configuration. This is my favorite part about SubSonic – there are no mapping files! You don’t need to say that “User” is a table you’d like to use, and that the “Username” column is a string. SubSonic figures that out on its own. Everything just happens automagically.

I like to run SubSonic manually on the command line, so that I can stick the code it generates into a class library. You do this by running SubCommander. The objects SubSonic generates by default are Active Record objects. You use them like this:

User user = new User();
user.Username = "mastermaq";
user.Save();

The newest version of SubSonic also supports what’s known as the Repository Pattern, for developers who don’t like the Active Record way of working with objects. You can learn more about that here.

Also new in SubSonic 2.1 are query factories, which let you write fluent code like this:

return new Select()
    .From<User>()
    .Where(User.Columns.Username)
    .IsEqualTo(username)
    .ExecuteSingle<User>();

Doesn’t that look wonderful? It almost makes working with the database enjoyable!

If you are still writing your data access code by hand, I’d definitely suggest taking a look at SubSonic. If you’re using a different OR/M tool, you might want to see how SubSonic compares. It currently works with SQL Server 2000/2005/2008, MySQL, and Oracle.

You can download SubSonic 2.1 from CodePlex. Check out the SubSonic website for more information, and also Rob and Eric‘s blogs.

Something to keep an eye on: Microsoft Velocity

Last week I heard about a new project from Microsoft code-named Velocity. You can think of Velocity as Microsoft’s version of the very popular memcached:

“Velocity” is a distributed in-memory cache that provides .NET applications with high-speed access, scale, and high availability to application data.

Basically it’s a backend technology that helps to make websites perform better. Instead of accessing the database every time a page is requested, the website can often get the data it needs from the cache which is much faster than accessing the database.

ASP.NET has had caching built-in for years, but it doesn’t work in a server farm. That is, if you have more than one web server, there’s no way for all of them to share the same cache. Velocity makes that possible. For a good technical overview of Velocity, check out this post from Dare Obasanjo. Also check out Scott Hanselman’s podcast interview with two of Velocity’s architects.

We use memcached in Podcast Spot, and we’ve been very happy with it. It’s simple, efficient, and does just what we need it to do. Of course, our memcached installation is no where near the size of Facebook’s. I’ve read in a few places in the past that they run a 200 server cluster with 3 TB of memory solely for memcached. I’m sure it has grown since then too.

I have no idea how well Velocity will perform compared to memcached, or even if it’s full of bugs or not! I am eager to play around with it though, and it’s a project I’ll definitely be keeping an eye on. Velocity is a project from Microsoft that is long overdue, in my opinion.