Ever wonder how big the .NET and Python communities are?

Do you ever wonder how big .NET and Python communities are? I’m working on an article about Python and .NET and this comparison definately came to mind. So I did some research on meetup.com.

I chose seven locations:

  1. Chicago, IL
  2. Los Angeles, CA
  3. New York, NY
  4. Seattle, WA
  5. Portland, OR
  6. San Francisco, CA
  7. Silicon Valley, CA

And did a search for meetups on .NET and on Python. Here is a graph of the results:

Relative size of python and ,net communities via user groups.[click image to enlarge] Continue reading

Python and .NET in Portland

If you live in Portland, OR and are interested in Python, you might want to drop by my user group talk at PADNUG February 20, 2014. I’ll be speaking on Python for .NET developers and it’s hosted by the Portland Area .NET User Group. Here are the details. The event is free and held downtown at the Microsoft office. Hope to see you there!

Python for .NET Developers – Feb 20, 2014
Michael Kennedy

Continue reading

Special Event: MongoDB in New York from DevelopMentor

I’m excited to announce that I will be teaching MongoDB for .NET developers from DevelopMentor in New York City at MongoDB Inc.’s headquarters on Times Square. The class is March 11, 2014 to March 13, 2014.

If you are interesting in learning MongoDB or bringing MongoDB and NoSQL to your team, this is the perfect opportunity. Not only is it an amazing class, you will have the opportunity to mingle with developers at MongoDB.

Space is limited, so register now.

Contact me directly and I can likely get you a discount on admission especially if you are sending more than one developer. Continue reading

Part 7: Lambda Expressions in Python for .NET Developers Series

This post is part 7 of my many-part series entitled Python for .NET Developers. View the entire series here.

This video explores Python’s equivalent of C#’s lambda expressions. Continue reading

Part 6: Anonymous Types in Python for .NET Developers Series

This post is part 6 of my many-part series entitled Python for .NET Developers. View the entire series here.

This video explores Python’s equivalent of C#’s anonymous types including a custom class to make things smoother on the Python side. Continue reading

Part 4: foreach and IEnumerable in Python for .NET Developers Series

This post is part 4 of my many-part series entitled Python for .NET Developers. View the entire series here.

This video explores Python’s equivalent of C#’s foreach loops and IEnumerable interface. Continue reading

Part 3: A single, common base-type in Python for .NET Developers Series

This post is part 3 of my many-part series entitled Python for .NET Developers. View the entire series here.

This video explores Python’s equivalent of C#’s ‘everything derives from System.Object’ common type system. Continue reading

Part 1: Welcome and lightning-fast Python introduction in Python for .NET Developers Series

This post is part 1 of my many-part series entitled Python for .NET Developers. View the entire series here.

This first video and blog post simply introduce the series and provide a very brief Python language introduction. Without further adieu, here’s the video. Continue reading

Series: Python for .NET Developers Introduction

Welcome to my series of blog posts covering Python for .NET developers. In this many-part series, I will introduce you to Python from a .NET developer’s perspective.

As .NET developers, we generally adore C# and the .NET ecosystem. It has brought great productivity, expressiveness, and features to software developers. I believe you will be deeply surprised to see a side-by-side comparison of C# / .NET and Python. Many of the features we think make C# special and unique have parallels in Python (sometimes even improved parallels). Join me in this series as I compare C# / .NET to Python in a feature by feature breakdown. Continue reading

Watch Python for the C# and .NET developers

We just published my latest webcast. Feel free to watch it or download the demos and slides. Hope you enjoy it!
                                         Python for the C# developerbootstrap-webcast-starter
Here is the summary:
If you love C# and .NET, you may be surprised to see how many of the features you love also exist in Python (often first). Python is a wonderful language. It is a clean high-level language which values readability over many trade-offs. You can build web applications serving billions of monthly page views. You can build cross-platform GUI applications such as DropBox. You can access amazingly powerful database servers such as MongoDB and SQL Server. But did you know many of the things you absolutely love about C# also exist in Python? Lambda expressions – check. foreach loops – check. Rich class library – check. Iterators – check. And there is more. Come learn about all the things you love from C# and see how they are accomplished in Python.

Watch Building beautiful websites with Bootstrap

We just published my latest webcast. Feel free to watch it or download the demos and slides. Hope you enjoy it!

   Building beautiful websites with Bootstrap: A case studybootstrap-webcast-starter

MongoDB for .NET developers

I’m very proud to announce DevelopMentor’s soon-to-be released MongoDB for .NET course which I am authoring along with Pierre Nallet.

   Please subscribe to be notified »

NoSQL and MongoDB for .NET developers

This course is a deep exploration of building applications in MongoDB (the most popular NoSQL document-database). There are many benefits to choosing a NoSQL database over traditional RDMBSs such as SQL Server or Oracle. This course starts out by looking at why you should choose NoSQL in the first place. We will explore the native query language and capabilities of MongoDB. Then we will start working with MongoDB from our .NET applications and look at several topics that explore the advanced aspects of the MongoDB .NET API including (MongoDB from .NET, Advanced serialization in .NET, Untyped API in .NET via BSON documents, and more). We will see how to leverage the immense scalability of MongoDB using the aggregation framework, replica sets, and sharding. You will discover how to store and manage files of virtually unlimited size in MongoDB using GridFS. We will discuss how to properly design your entities and documents (both natively and in C#) to take full advantage of what MongoDB has to offer. Finally, we will round out the course with a few topics that you will need to be successful with MongoDB including Server administration for developers and Security and permissions.

During this class, you will learn:

  • Learn why you should consider NoSQL as your database.
  • Discover the MongoDB shell and ‘native’ query language and capabilities
  • Work with MongoDB from .NET and LINQ
  • Design your classes and entities to take full advantage of MongoDB
  • Build and tune high performance applications with indexing and profiling
  • Use the extensive .NET serialization API to go between .NET and MongoDB
  • Work with the filesystem (GridFS) within MongoDB from .NET
  • Answer complex questions while leveraging MongoDB’s scalability using the aggregation framework
  • Learn enough to administration MongoDB servers to be productive
  • Scale out using sharding and replica sets
  • Add security and permissions to MongoDB

Note: Some of the topics cover in this course are technology agnostic (for example the native query lesson is equality applicable to .NET developers as well as Python developers) and some are specifically optimized for .NET developers (for example Advanced serialization in .NET).

Why should you choose DevelopMentor’s MongoDB course? At DevelopMentor we have experience building and running large scale MongoDB deployments in .NET including our online training platform LearningLine and develop.com itself. The course authors work closely with the MongoDB team and are in the MongoDB Masters program. We have been teaching MongoDB in our Guerrilla .NET course for several years. In short, we we know what we’re doing with MongoDB and .NET and we’d love to share it with you.

Come to my SDD Conference sessions in May, 2014


I’m super excited to announce that I’ll be speak at the brand new SDD conference in London next May. I’ll be doing two sessions on ASP.NET MVC and two on MongoDB as well as a full day post conference workshop on MongoDB.

I hope to see you there.


Reblogged: What should I learn to get started in .NET and web development?

[Note: I am reblogging this post which originally was posted to the LearningLine blog. Hope you all find it useful here as well]

I recently had a conversation with someone who is looking to make a fresh start and become a developer (coming from other IT positions).  The question they had was:

What should I learn to get started in .NET and web development?

Now this question was starting from a position of “I’d like to get started with .NET and the web. How do I do that?” So please hold your “No, choose Ruby (or NodeJS or … )” comments. That’s another blog post. :)

Here’s my advice along with a bunch of courses you can use to accomplish this efficiently and affordably. Continue reading

Optimistic concurrency in MongoDB using .NET and C#

[Available via NuGet - MongoDB.Kennedy.Concurrency]
[Available via GitHub - optimistic_concurrency_mongodb_dotnet]

This article demonstrates a technique and supporting library for adding optimistic concurrency control to NoSQL databases and MongoDB in particular.

Watch a video walk-through using this library:

Quickly, what is optimistic concurrency control?

Ideally, all databases that allow concurrent access or disconnected access need to implement some form of concurrency control. This usually comes in two flavors:

  1. Pessimistic concurrency control
  2. Optimistic concurrency control

Pessimistic concurrency control is usually used when working heavily within transactions. That may be fine for bank transfers, but it typically falls down in the face of disconnected models used by almost all ORMs such as Entity Framework. Moreover, it is entirely inappropriate for NoSQL databases.

Frameworks such as Entity Framework have optimistic concurrency control built in (although it may be turned off). It’s instructive to quickly see how it works. Basically there are three steps:

  1. Get an entity from the DB and disconnect.
  2. Edit in memory.
  3. Update the db with changes using a special update clause. Something like: “Update this row WHERE the current values are same as original values”.

If that update returns “0 rows modified” then we know it was changed since we loaded it and are about to overwrite someone’s changes. This results in a concurrency exception and not changes go through.

Optimistic concurrency control for MongoDB

By carefully constructing update commands in C# with the official 10gen C# driver, we can achieve almost exactly the same flow. At the end of this article is a simple C# class (data context) which has save and delete methods which internally are safe via optimistic concurrency control. Continue reading