The Weekly Source Code 4
Sponsored By
In my new ongoing quest to read source code to be a better developer, I now present the fourth in an infinite number of a weekly series called "The Weekly Source Code." Here's some source I'm reading this week that I enjoyed.
- PoshConsole - This is a PowerShell console replacement written in WPF (.NET 3.0) with C#. Best feature? PowerShell "QuakeMode", totally. This source was fun to read.
- Koolwired.IMAP - The beginnings of an IMAP implementation. Not sure why I like reading Mail Protocol implementations, but I also love...
- Lesnikowski Mail.dll - This is the POP mail library that DasBlog uses, although he's updated it considerably and now charges a bit. The OLD OLD source is in DasBlog still and worth reading.
- C#.NET del.icio.us API - I use the http://del.icio.us social bookmarking service and this is a C# API for that service. Simple, but fairly clean. I don't usually take the time to abstract thing this much, I'm a bit (a lot) more sloppy, and I'm always impressed when folks take the time.
- WPF Contrib -The start of a WPF Controls project...this first release includes lots of Helpers and Utilities, as well as some panels that you wish you had in WPF.
- Wintellect Power Collections - An oldie but a real goodie, the Power Collections formerly hosted on Wintellect have moved over to CodePlex for future development. Some of the collections included are the Deque, MultiDictionary, Bag, OrderedBag, OrderedDictionary, Set, OrderedSet, and OrderedMultiDictionary. It'll be interesting if the community takes up the codebase and moves it forward. This code is a gold mine. It's well organized, clean, well-documented and has a fine set of Unit Tests. I should write code this clean.
- NLinq - I don't have to agree with the concept to think the source is cool. Inspired by this blog post, these guys are kind of reimplementing LINQ for .NET 1.1 and 2.0 by putting the LINQ expressions in a string, like this. Very clever as they are tunneling LINQ expressions through their stuff as a 3rd class API. But what price their immortal souls? ;)
query = new NLinqQuery( @" from m in methods where !m.IsStatic orderby m.Name group m by m.Name into g select new { MethodName = g.Key, Overloads = g.Count() }");
Feel free to send me links to cool source that you find hasn't been given a good read.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
Do you really read all that source code in one week? Or are you just expecting your blog readers to do so?
Maybe you could write a few words about how you are reading the source code. If I start to read source code I end up being so immersed that I spend a couple of hours ateast for each project. Often project also require some old component I must hunt down and download before compile and that might take an extra hour.
Maybe you could write a book about the subject "Reading bed-time source code with Scott" and audio book might be interesting to "Scott reads you source code aloud".
I am really just curious.
Maybe you could write a few words about how you are reading the source code. If I start to read source code I end up being so immersed that I spend a couple of hours ateast for each project. Often project also require some old component I must hunt down and download before compile and that might take an extra hour.
Maybe you could write a book about the subject "Reading bed-time source code with Scott" and audio book might be interesting to "Scott reads you source code aloud".
I am really just curious.
I spend about 20-30 minutes per project reading and trying to understand. I also mentally note certain algorithms and techniques for reference so I'll know where to come looking for them later on. I also bookmark (in my head) the existance of these projects so if I'm ever on a project that has some similarity I'll be able to come back and refresh my understanding of what the source did and use it's techniques in my new project.
You must have a steel trap memory. I can't remember what I read last night. What was this post about? :)
Hi Scott,
Thanks for mentioning Mail.dll component on your blog. It is a real pleasure to see the link here.
The one thing I just want to say is that the code in dasBlog source control is really, really old, and frankly I'm a bit ashamed of it now (and that's good because it means that I've learned few things since then).
Mail.dll was rewritten entirely, to use more of Separation of Concerns, Inversion of Control techniques. It now has unit tests, and much cleaner programming interface.
Do you think that people would like the PowerShell version of it?
Anyway, thanks for mentioning it on your blog.
Thanks for mentioning Mail.dll component on your blog. It is a real pleasure to see the link here.
The one thing I just want to say is that the code in dasBlog source control is really, really old, and frankly I'm a bit ashamed of it now (and that's good because it means that I've learned few things since then).
Mail.dll was rewritten entirely, to use more of Separation of Concerns, Inversion of Control techniques. It now has unit tests, and much cleaner programming interface.
Do you think that people would like the PowerShell version of it?
Anyway, thanks for mentioning it on your blog.
RE: getting Linq functionality on .net 2.0 -- i think someone demonstrated a few days ago that this is possible today if you use VS 2008 to build, targeted at 2.0, and include the relevant dlls directly in your project (since they won't be in the gac/framework of your target machine) -- ahhh, i've found a link (pun intended) on this:
http://weblogs.asp.net/fmarguerie/archive/2007/09/05/linq-support-on-net-2-0.aspx
http://weblogs.asp.net/fmarguerie/archive/2007/09/05/linq-support-on-net-2-0.aspx
Comments are closed.
Here's one for the Wintellect Power Collections:
What does that even mean? Why does an open-source project whose source-code is available online for everyone in the world to view, even have something like that?
:-)