Two simple tips for working with LINQ and IEnumerable<T>

by Alex Meyer-Gleaves 5 April 2012 - 2:23 AM

Meet the test subject

Let’s create a simple class that returns the numbers from 1 to 100.

public class Loopy
{
    public int Enumerations { get; private set; }
    
    public IEnumerable<int> GetSome()
    {
        foreach (int number in Enumerable.Range(1, 100))
        {
            Enumerations++;
            yield return number;
        }
    }
}

We use Enumerable.Range to grab the numbers from 1 to 100 and loop through them with a simple foreach loop. Before returning the value to the method caller we increment a counter to note the number of enumerations requested. Because we are lazy and don’t like writing extra classes, we get the compiler to build the enumerator for returning values using the sweet yield return syntax.

Use Any() instead of Count() to check for non empty return values

In the unit test below we confirm that checking Count() for a value greater than zero causes the entire list of numbers to be enumerated even though we only care if more than zero items are present. In this simple example we are not going to notice the extra cost, but in real production code that is not always the case. The bigger the number of items returned the worse the situation gets.

[Test]
public void EnumerationsUsingCount()
{
    Loopy loopy = new Loopy();

    bool gotSome = loopy.GetSome().Count() > 0;

    Assert.That(gotSome, Is.True);
    Assert.That(loopy.Enumerations, Is.EqualTo(100));
}

The next unit test confirms that using the Any() method will cause the enumeration to stop after the first value has been returned. It doesn’t matter how many items there are to potentially enumerate, the enumeration will always stop after the first item is received.

[Test]
public void EnumerationsUsingAny()
{
    Loopy loopy = new Loopy();

    bool gotSome = loopy.GetSome().Any();

    Assert.That(gotSome, Is.True);
    Assert.That(loopy.Enumerations, Is.EqualTo(1));
}

Use Enumerable.Empty<T> and never return null

When exposing something as IEnumerable<T> returning a null value is simply rude. If the caller is attempting to enumerate the return value without checking for null first they will receive an exception and get angry. Having to check for null return values ruins the nice syntax you get from the LINQ extension methods such as Count() and Any().

It means you have to do this:

IEnumerable<int> numbers = loopy.GetSome();
bool gotSome = numbers != null && numbers.Any();

Instead of this:

bool gotSome = loopy.GetSome().Any();

To return an empty enumerable of something, use the Enumerable.Empty<T> method. It will return an enumerator of the specified type that does not return any items when enumerated.

It’s time to add a couple more methods to our Loopy class. We will add one method that is bad and returns null, and another that is good and returns Enumerable.Empty<int>. Yes, everything is black and white to me here.

public IEnumerable<int> GetEmptyBad()
{
    return null;
}

public IEnumerable<int> GetEmptyGood()
{
    return Enumerable.Empty<int>();
}

Now that we have a good and bad example let’s write the first unit test. This one shows that attempting to enumerate the null return value using the Any() method causes an exception to be thrown. You don’t need null to indicate that a list is empty when an empty list does that just fine.

[Test]
public void EnumeratingNullIsBad()
{
    Loopy loopy = new Loopy();

    Assert.Throws<ArgumentNullException>(() => loopy.GetEmptyBad().Any());
}

Finally, here is our good method being happily enumerated without a care in the world.

[Test]
public void EnumeratingEmptyIsGood()
{
    Loopy loopy = new Loopy();

    Assert.DoesNotThrow(() => loopy.GetEmptyGood().Any());
}

Two simple tips to remember. One is good for performance, and the other is good for your fellow developers.

Tags: ,

Random

Worst validation message ever

by Alex Meyer-Gleaves 29 March 2012 - 11:43 PM

I was testing what I hoped (but doubted) would be a non-breaking change to a web service contract and got this doozy of a validation message from svcutil.exe (Microsoft Service Model Metadata Tool). The person that wrote this validation message clearly should have gone into the legal profession, because it reads more like legalise from an EULA than something a sane person is meant to understand:

Validation Error: Wildcard '##any' allows element ‘http://www.acme.com/Service/Foo:data’, and causes the content model to become ambiguous. A content model must be formed such that during validation of an element information item sequence, the particle contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.

If you read it a couple of times it actually starts to make sense, but there is certainly a lot of room for improvement in readability.

Tags:

Web Services | Random

Private social network homepage clones

by Alex Meyer-Gleaves 8 February 2012 - 7:39 AM

Apparently if you want to be a player in the private social networking space you must adhere to a very specific formula when designing your homepage. Do not forget the company email address input at the top and the list of customers using your product at the bottom. I actually got confused momentarily as to which site I was looking at when jumping between tabs in my browser. There is nothing like standing out from the crowd.

Chatter homepage

Yammer homepage

Socialspring homepage

Tags:

Random

Random links for April 2011

by Alex Meyer-Gleaves 30 April 2011 - 5:22 AM

Here are a few links that I found interesting for one reason or another.

  • Helvetireader²
    Helvetireader is a hosted user stylesheet for Google Reader served via a user-script. It aims to make the interface a clean, minimal experience where you're not assaulted by an array of colours, social features and buttons (using Shortcuts instead). It's designed for people who just read the latest entries in expanded view without all the other gubbins.
  • DotNetOpenAuth | C# Library for OpenID, OAuth and InfoCards
    Compiled library that adds support for your site visitors to login with their OpenIDs by just dropping an ASP.NET control onto your page. It’s that easy. An AJAX-style OpenID Selector control is also included for a slick, streamlined user experience.
  • sstephenson/stitch - GitHub
    Develop and test your JavaScript applications as CommonJS modules in Node.js. Then Stitch them together to run in the browser.
  • CommonJS: JavaScript Standard Library
    JavaScript is a powerful object oriented language with some of the fastest dynamic language interpreters around.
  • JustDecompile - Free .NET Decompiling Tool
    JustDecompile is a new, free developer productivity tool designed to enable easy .NET assembly browsing and decompiling. JustDecompile lets you effortlessly explore and analyze compiled .NET assemblies, decompiling code with the simple click of a button.
  • JustTrace - Memory and Performance Profiling by Telerik
    JustTrace is a new developer productivity tool, which enables you to profile .NET applications easier and faster than ever before. By quickly and effortlessly identifying disabling application bottlenecks, JustTrace helps you achieve optimal performance and memory usage for all of your .NET projects, from Silverlight to ASP.NET to WinForms.
  • Echo - Build Highly Social Real-time Apps.
    Apps listed here are real-time, social and interoperable through open standards. They are designed to transform your site into a first class social experience.
  • RealTidbits - Real Time Database Widgets
    Create exceptional experiences for your users and leverage the social activity occurring on your site with real-time database applications.
  • OpenStack Open Source Cloud Computing Software
    Open source software to build private and public clouds.
  • Online Presentation Software | Free PowerPoint Online | Web Presentation | SlideRocket.
    SlideRocket is a powerful, unique, comprehensive presentation software solution that provides a full suite of features and capabilities to address all facets of the presentation lifecycle - from authoring, collaboration, and review and approval, through publishing, delivery, and management. SlideRocket provides users with all the tools they need to create and manage stunning online presentations, share them securely with people across the globe, and measure their effectiveness, in a single, fully-integrated package.
  • monitter : real time, live twitter search and monitoring
    Monitter is a real time twitter search tool that enables you to monitor a set of keywords on twitter. It also allows you to narrow the search to a particular geographic location, allowing you to find out what’s going onin a particular part of the world.
  • chartbeat - real-time website analytics and uptime monitoring
    Control the story, track a product launch, or exploit an opportunity as it happens. Our dashboard, iPhone app, and email & SMS alerts let you know the minute your traffic spikes, your servers crash, or your page slows to a crawl.
  • jQuery Form Framework - jFormer
    jFormer is a form framework written on top of jQuery that allows you to quickly generate beautiful, standards compliant forms.
  • Download details: Producer for PowerPoint
    Use Microsoft Producer for Microsoft Office PowerPoint to capture and synchronize audio, video, slides, and images, then preview and publish a rich media presentation virtually anywhere for viewing in a Web browser.
  • Download details: Psscor4 Managed-Code Debugging Extension for WinDbg
    Psscor4 can help you diagnose high-memory issues, high-CPU issues, crashes, hangs and many other problems that might occur in a .NET application; in scenarios involving live processes or dump files.If you are familiar with SOS.dll, the managed-debugging extension that ships with the .NET Framework, Psscor4.dll provides a superset of that functionality.
  • Incredible StartPage - Productive Start Page for Chrome! - Google Chrome extension gallery
    A new, customizable start page for Chrome. Easily find your favorite bookmarks and closed tabs. Take notes as you browse.
  • Serene
    Serene is a library for Windows Phone 7 that allows applications to self monitor usage and try to prompt good users to leave feedback on marketplace.
  • Simple Service Bus
    Simple Service Bus is an asynchronous messaging framework that enables the rapid construction and customization of messaging endpoints, allowing services and applications to interact with one another across the network in a fault tolerant, robust environment that is less susceptible to network volatility than traditional synchronous approaches to distributed systems. SSB can be used as a message bus in an SOA, or simply as an integration tool enabling reliable cross process communication among distributed software components.
  • SpecsFor - Yet Another BDD Framework For .NET
    SpecsFor is another Behavior-Driven Development framework that focuses on ease of use for *developers* by minimizing testing friction.
  • Intel® Inspector XE Thread and Memory Checker - Intel® Software Network
    Intel® Inspector XE 2011 is a powerful and easy-to-use memory and threading error checking tool for C, C++, C# .NET, and Fortran developers designing serial and parallel applications on Windows*- and Linux*-based platforms.
  • KeyFocus - KF Web Server - High performance HTTP Server
    KF Web Server is a free HTTP Server that can host an unlimited number of web sites. Its small size, low system requirements and easy administration make it the perfect choice for both professional and amateur web developers alike.
  • mongrel2: mongrel2
    Mongrel2 is an application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies.
  • Apache Thrift
    Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.
  • BSON - Binary JSON
    BSON [bee · sahn], short for Bin­ary JSON, is a bin­ary-en­coded seri­al­iz­a­tion of JSON-like doc­u­ments. Like JSON, BSON sup­ports the em­bed­ding of doc­u­ments and ar­rays with­in oth­er doc­u­ments and ar­rays.
  • UltiDev Cassini 2.0 - Free Redistributable ASP.NET Web Server from UltiDev LLC
    UltiDev Cassini is a free, light-weight and redistributable web server that can host ASP.NET 3.5, 3.0, 2.0 and 1.1 applications and static HTML sites. Whenever your customers need an alternative to IIS — UltiDev Cassini web server is the answer.
  • Ext.NET | Open-Source ASP.NET Web Components
    Ext.NET is an open source ASP.NET (WebForm + MVC) component framework integrating the cross-browser Sencha Ext JS JavaScript Library. Includes 100+ high performance controls for Data Grids, Trees, Menus, Forms, Advanced Layouts and AJAX communication.
  • HAProxy - The Reliable, High Performance TCP/HTTP Load Balancer
    HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for web sites crawling under very high loads while needing persistence or Layer7 processing.
  • nginx
    nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server written by Igor Sysoev.
  • nginn-messagebus - An application message bus implementation for .Net - Google Project Hosting
    NGinn Message Bus is a very simple ESB for .Net supporting publish-subscribe message distribution. It uses SQL server as message queuing mechanism - each message queue is stored in a separate table.
  • bclcontrib-abstract - .Net Abstraction library for complex systems, with adaptor libraries for common implemetations. - Google Project Hosting"
    .Net Abstraction library for complex systems, with adaptor libraries for common implemetations.
  • Shuttle Service Bus
    This project aims to provide a free open-source enterprise service bus.
  • Subversion Hosting, Git Hosting, Project Management
    Unfuddle is a secure, hosted project management solution for software development teams.
  • Yoono - Twitter Facebook MySpace LinkedIn Flickr - Share and Download Youtube videos
    Yoono is free software that allows you to connect and share with all your social networks and instant messaging services in one place.
  • Welcome to Cloud Foundry
    The industry’s first open platform as a service. Run your Spring, Rails and Node.js applications. Deploy from your IDE or command line.
  • Topshelf's Profile - GitHub
    An easy service hosting framework for building Windows services using .NET.
  • Learn You Some Erlang for Great Good!
    Oh Hello! Welcome to my guide to Erlang! This guide is intended to be read by beginners, but if you're average or somewhat advanced you can probably learn a few things too!
  • Less is More - zeromq
    The socket library that acts as a concurrency framework.
  • Ninite - Install or Update Multiple Apps at Once
    Just pick your apps and click Get Installer. Ninite does the rest — fully automatic.
  • Sci2ools - Free Online Productivity Tools - Sciweavers
    Free online document processor and image converter toolbox.
  • OpenVPN - Open Source VPN
    OpenVPN, our award-winning open source VPN product, has established itself as a de-facto standard in the open source networking space, with over 3 million downloads since inception.
  • StyleCop - Download: 4.5 Preview
    This release includes the very latest StyleCop for ReSharper plugin and will automatically uninstall previous versions of StyleCop.
  • Greenshot - a free and open source screenshot tool for productivity
    Being easy to understand and configurable, Greenshot is an efficient tool for project managers, software developers, technical writers, testers and anyone else creating screenshots.
  • PNGGauntlet - PNG Compression Software | BenHollis.net
    PNGGauntlet is a .NET program that uses Ken Silverman's PNGOUT command line utility to optimize PNG files.
  • was it up?
    We perform a HTTP HEAD request and check that the status code is 200 OK. If you provided a text to match we perform a GET request, check that the status code is 200 OK, and check that the text is present/not present in the returned HTTP body.
  • QUnit
    QUnit is a powerful, easy-to-use, JavaScript test suite. It's used by the jQuery project to test its code and plugins but is capable of testing any generic JavaScript code (and even capable of testing JavaScript code on the server-side).

Tags:

Random

Random links for March 2011

by Alex Meyer-Gleaves 31 March 2011 - 5:20 AM

Here are a few links that I found interesting for one reason or another.

  • EventStore
    The EventStore is a persistence library used to abstract different storage implementations when using event sourcing as storage mechanism. Event sourcing is most closely associated with a concept known as CQRS.
  • QuickTime Alternative (QT Lite) 4.1.0
    QT Lite is a lightweight version of QuickTime. It contains only the essential components that are required for viewing QuickTime content in your favorite browser.
  • HTML5 Readiness
    HTML5 Readiness now shows how HTML5 support has evolved since 2008. Click away to see the spurt of growth in 2010!
  • CSS3 Buttons
    CSS3 Buttons is a simple framework for creating good-looking GitHub style button links.
  • jquery.domsearch
    It lets you search within an element (e.g.: a table or a list), narrowing down the inner elements using LiquidMetal, which is way better than whatever else you could come up with.
  • Orbit Downloader: the ultra file & social media (YouTube etc..) download manager
    Orbit Downloader, leader of download manager revolution, is devoted to new generation web (web2.0) downloading, such as video/music/streaming media from Myspace, YouTube, Imeem, Pandora, Rapidshare, support RTMP.
  • Using OAuth 2.0 to Access Google APIs - Authentication and Authorization for Google APIs - Google Code
    Google supports a recent draft of the OAuth 2.0 protocol with bearer tokens for authorizing access to private user data. The spec is close to settling down, and we intend to update our code to match the final OAuth 2.0 and bearer token standards.
  • Official Google Blog: Advanced sign-in security for your Google account
    2-step verification requires two independent factors for authentication, much like you might see on your banking website: your password, plus a code obtained using your phone.
  • Amplify - A Component Library for jQuery
    Amplify is a set of components designed to solve common web application problems with a simplistic API. Amplify's goal is to simplify all forms of data handling by providing a unified API for various data sources.
  • Easy WebSocket - a WebSocket client to broadcast messages to webpages
    EasyWebSocket is simple websockets broadcasting. It is perfect for a quick prototype.. getting it going quick. 90% this is all you need if you're doing websocket something.
  • flensed :: flXHR means Easy Cross-Domain Ajax
    flXHR [flek's?r],(flex-er) is a *client-based* cross-browser, XHR-compatible tool for cross-domain Ajax (Flash) communication.
  • Zero Base-Overhead Data-Race Detection - Microsoft Research
    This tool finds data races in multithreaded code. It uses a combination of code and data break points to find data races effectively with little or no runtime overhead.
  • The Book Depository
    Free shipping worldwide on all our books.
  • CQRS-FAQ - home
    Welcome, this is a place to collect frequently asked questions, and hopefully some answers, about Command Query Responsibility Segregation.
  • WCF Binding Converter
    BindingBox is an online application that converts WCF bindings to a customBinding configuration.
  • NoScript - JavaScript/Java/Flash blocker for a safer Firefox experience! - what is it? - InformAction
    The NoScript Firefox extension provides extra protection for Firefox, Seamonkey and other mozilla-based browsers: this free, open source add-on allows JavaScript, Java and Flash and other plugins to be executed only by trusted web sites of your choice.
  • Readability
    Readability is a web & mobile app that zaps online clutter and saves web articles in a comfortable reading view. No matter where you are or what device you use, your reading will be there.
  • Internet Explorer 6 Countdown
    We know that web developers are spending too much time supporting Internet Explorer 6. We understand, and we’re here to help. Join us in moving Internet Explorer 6 users to a modern browser.
  • Welcome to Solr
    Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project.
  • ILSpy
    ILSpy is the open-source .NET assembly browser and decompiler. Development started after Red Gate announced that the free version of .NET Reflector would cease to exist by end of February 2011.
  • OpenWrap - Package Management for .NET
    OpenWrap lets you search for and consume packages in your projects, and resolve for you the various dependencies that each of those packages contain.
  • JQuery IFrame Loader
    This is jQuery iFrame, a plugin to help you set iframe source and squirt content into iframes, by Michael Mahemoff, under MIT License.
  • PowerConsole
    This extension provides an extensible VS command window with default PowerShell integration. You can now script Visual Studio interactively in PowerShell, and enjoy familiar VS style syntax coloring and tab-completion.
  • PowerGUI Visual Studio Extension
    The PowerGUI Visual Studio Extension adds PowerShell IntelliSense support to Visual Studio.
  • git-tfs
    git-tfs is a two-way bridge between TFS and git, similar to git-svn.
  • About MyDreamCity.org | My Dream City
    MyDreamCity.org is a fun worldwide project. It encourages children without families and raises social awareness about their situation. Any city in the world can join and contribute!
  • RStudio
    RStudio™ is a new integrated development environment (IDE) for R. RStudio combines an intuitive user interface with powerful coding tools to help you get the most out of R.
  • Portable Library Tools CTP
    Portable Library Tools is a new Visual Studio add-in from Microsoft that enables you to create C# and Visual Basic libraries that run on a variety of .NET-based platforms without recompilation.

Tags:

Random

Random links for February 2011

by Alex Meyer-Gleaves 7 March 2011 - 12:15 AM

I can’t believe another month has past already. It really is time to get back to writing some proper blog posts. Anyway, here are a few links that I found interesting for one reason or another.

  • Oapt
    An NUnit addin for running one assert per test.
  • Debug Analyzer.NET
    Debug Analyzer.NET is a debugging automation tool to analyze memory dumps using analysis plug-ins written in .NET!
  • arbor.js
    Arbor is a graph visualization library built with web workers and jQuery.
  • jLabel - A jQuery Label plugin by William Duffy
    jLabel is a jQuery plugin that formats text input fields with unobtrusive labels featuring interactive suggestions. This allows input fields to be labelled clearly and presented with minimal interface obstruction.
  • CSS Reset.com - CSS Resets and Free CSS Tutorials
    All the most common CSS Reset scripts in one place, with complete documentation, guides and tutorials.
  • jRating : Ajaxed star rating system with jQuery
    jRating is a very flexible jQuery plugin for quickly creating an Ajaxed star rating system. It is possible to configure every detail from" the number of the stars" to "if the stars can represent decimals or not".
  • CLR Profiler for .NET Framework 4
    The CLR Profiler allows developers to see the allocation profile of their managed applications.
  • Silverlight 4 Application Themes
    4 new application themes for Silverlight 4: JetPack, Accent Color, Windows 7 and Cosmopolitan. These themes can be used for the navigation template provided by the Silverlight 4 Tools installer or using the various resource dictionaries provided in this d
  • JustMock Free Edition
    JustMock Free Edition is a developer productivity tool designed to make it easy to create mock objects. JustMock Free Edition cuts your development time and helps you create better unit tests without requiring you to change your code.
  • Microsoft All-In-One Code Framework
    The Microsoft All-In-One Code Framework is a free, centralized code sample library provided by the Microsoft Community team. Our goal is to provide typical code samples for all Microsoft development technologies.
  • Rocket SVN for Microsoft Visual Studio: Subversion add-in for VS 2008/2010
    OnTime integration, no svn:ignore patterns, as easy to install as it is to use, keyboard friendly, and no more relying on TortoiseSVN. All these features come together in RocketSVN for Visual Studio. Not to mention it's 100% Free for Unlimited Users!
  • AppHarbor
    We’re building af Git-enabled .NET Platform-as-a-Service. That means we’ll build, deploy and host your .NET websites for you. To get started all you have to do is to create an account and git push your code to AppHarbor.
  • Elevate
    Elevate is an easy to pick up library containing things you wish were in the BCL. Use one component or many. Contribute your own utilities. Share your ideas with the community.
  • HTML5Labs - Home
    The HTML5 Labs site is the place where Microsoft prototypes early and unstable web standard specifications from standards bodies such as the W3C.
  • Whisper Systems
    Welcome to the public beta of the Whisper Systems mobile security suite for Android. We have two applications in the initial beta, RedPhone and TextSecure, which help restore your ability to conduct your personal and business communications privately.
  • EasyHttp
    After writing smaller wrappers around WebRequest on a few occasions, I decided it’s time to formalize the wrapper. This has given way to EasyHttp.
  • AnjLab Sql Profiler
    SQL Server Express Edition Profiler provides the most of functionality standard profiler does, such as choosing events to profile, setting filters, etc. By now there are no analogue free tools.
  • PusherDotnet
    An implementation of the Pusher REST API in C#.
  • Fizzler
    A .NET library to select items from a node tree based on a CSS selector. The default implementation is based on HTMLAgilityPack and selects from HTML documents.
  • Jurassic - A Javascript Compiler for .NET
    Jurassic is an implementation of the ECMAScript language and runtime. It aims to provide the best performing and most standards-compliant implementation of JavaScript for .NET.
  • Coroutine
    Coroutine makes writing asynchronous code in C# as easy and natural as writing synchronous code.
  • Kayak, a C# HTTP server.
    Kayak is an asynchronous HTTP server written in C#. It has been designed to be easy to embed into a variety of applications. Kayak natively supports the OWIN 1.0 Draft specification.
  • ReactiveUI
    This library is an exploration I've been working on for several weeks on combining WPF Model-View-ViewModel paradigm with the Reactive Extensions for .NET (Rx).
  • Nancy
    Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aims to deliver a low ceremony approach to building light, fast web applications.
  • OWIN — Open Web Interface for .NET
    OWIN defines a standard interface between .NET web servers and web applications.
  • grumpydev/TinyIoC - GitHub
    Welcome to TinyIoC - an easy to use, hassle free, Inversion of Control Container. TinyIoC has been designed to fulfil a single key requirement - to lower the "level of entry" for using an IoC container; both for small projects, and developers who are new
  • Encog Java and DotNet Neural Network Framework | Heaton Research
    Encog is an advanced neural network and machine learning framework. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks.
  • Grammarly - English grammar checker, proofreader
    Grammarly is an automated proofreader and your personal grammar coach. Check your writing for grammar, punctuation, style and much more.
  • SeeNowDo :: Digital Taskboards for Distributed Agile Teams
    SeeNowDo is a simple, flexible and free taskboard designed specifically to meet the needs of distributed Agile teams.
  • Pivotal Tracker - Simple, Effective Agile Project Management
    Collaborative, lightweight project management tool, brought to you by the experts in agile software development.
  • Banana Scrum - scrum tool for agile teams
    Banana Scrum is a very simple Scrum tool. Designed to help your team keep track of things, but never meant to replace your daily human interactions. A tool to know where you are, but not so complex as to blurr the picture.
  • Kanbanize.com
    Kanbanize.com is a free web-based software tool that modernizes and builds on top of the well-known from Toyota's factories visualization method - kanban.
  • Scrumy
    Scrumy is a project management tool loosely based off of Scrum.
  • Semantic Versioning
    I call this system "Semantic Versioning." Under this scheme, version numbers and the way they change convey meaning about the underlying code and what has been modified from one version to the next.
  • PowerDbg - Automated Debugging using WinDbg and PowerShell
    PowerDbg is a PowerShell library that enables you to easily create PowerShell scripts to automate a WinDbg / CDB debugging session. You can use PowerDbg for Kernel Mode or User Mode, Post-Mortem debugging or Live Debugging and for native or managed code.
  • Google Public Policy Blog: Keep your opt-outs
    Today we’re making available Keep My Opt-Outs, which enables you to opt out permanently from ad tracking cookies. It’s available as an extension for download in Chrome.

Tags:

Random

Upgrading through every version of windows

by Alex Meyer-Gleaves 7 March 2011 - 12:08 AM

This is a great video showing upgrades of all major Windows versions from 1 through to 7. In fact, the whole process starts with the installation of MS-DOS 5.0 before moving onto Windows. Monkey Island and Doom 2 are installed in MS-DOS to test the backwards compatibility of Windows. The level of legacy support that Microsoft has managed to maintain over such a long period of time is certainly impressive. This has definitely got to be a very heavy burden. You can read more about the whole process on the author’s blog.

Watching this certainly brings back a lot of memories. Looking at the DOS screens I quickly started to reminisce about how much I loved Norton Commander. There was no need to reach for the mouse and everything was just a quick tap of the keyboard away. I remember having to install Trumpet Winsock because Windows 3.0 didn’t support the TCP/IP protocol stack. Gone are the days of the screeching modem and the Gopher session. I never imagined I would have instant access to the internet on a phone that fit snuggly into my pocket. Anyway, that’s enough nostalgia from me, check the video out to bring back your own memories.

Tags:

Random

Random links for January 2011

by Alex Meyer-Gleaves 1 February 2011 - 12:28 AM

Here are a few links that I found interesting for one reason or another.

  • Windows Phone Certificate Installer
    Helps install Trusted Root Certificates on Windows Phone 7 to enable SSL requests. Intended to allow developers to use localhost web servers during development without requiring the purchase of an SSL certificate.
  • ahiguti/HandlerSocket-Plugin-for-MySQL - GitHub
    HandlerSocket is a NoSQL plugin for MySQL. It works as a daemon inside the mysqld process, accept tcp connections, and execute requests from clients. HandlerSocket does not support SQL queries. Instead, it supports simple CRUD operations on tables.
  • Data types interoperability between .NET and Java
    This whitepaper is written based on an interoperability analysis carried out between .NET 4 and three major Java based platforms - IBM Web Sphere, Oracle WebLogic and Oracle Metro (referred as Java client/server systems hereinafter).
  • Google URL Shortener API for .NET
    With Google URL Shortener API, you may shorten urls and get some analytics information about this. It's developed in C# 4.0 and VS2010.
  • NoRM
    NoRM is a .Net library for connecting to the document-oriented database, MongoDB.
  • FileDB - A C# database to store files
    FileDB is a free, fast, lightweight C# (v3.5) DLL project to store, retrieve and delete files using a single archive file as a container on disk. It's ideal for storing files (all kind, all sizes) without databases and keeping them organized on a single d
  • DotNetZip Library
    DotNetZip is an easy-to-use, FAST, FREE class library and toolset for manipulating zip files or folders. Zip and Unzip is easy: with DotNetZip, .NET applications written in VB, C# - any .NET language - can easily create, read, extract, or update zip files
  • Mobile Device Detection and Redirection
    51degrees.mobi Foundation is an ASP.NET open source module which detects mobile devices and browsers, enhancing the information available to ASP.NET. Mobile handsets can optionally be redirected to a home page designed for mobile phones.
  • RazorEngine
    A templating engine built upon Microsoft's Razor parsing technology. The Razor Templating Engine allows you to use Razor syntax to build robust templates. Currently we have integrated the vanilla Html + Code support, but we hope to support other markup la
  • TeamViewer - Free Remote Access and Remote Desktop Sharing over the Internet
    TeamViewer connects to any PC or server around the world within a few seconds. You can remote control your partner's PC as if you were sitting right in front of it.
  • Options - NDesk
    NDesk.Options is a callback-based program option parser for C#.
  • Open source anti-theft solution for Mac, PCs
    Prey lets you keep track of your phone or laptop at all times, and will help you find it if it ever gets lost or stolen. It's lightweight, open source software, and free for anyone to use. And it just works.
  • YoxView - jQuery image viewer plugin
    YoxView is a free Lightbox-type media and image viewer jQuery plugin. It's easy to use and feature-rich.
  • endjin : open source : templify
    Every project starts the same way:you create a place to put solution artefacts,on one file system, on one computer.Templify helps you work smart, not hardby reducing repetition.
  • Download details: Microsoft Mathematics 4.0
    Microsoft Mathematics provides a graphing calculator that plots in 2D and 3D, step-by-step equation solving, and useful tools to help students with math and science studies.
  • Google URL Shortener API - Google Code
    The Google URL Shortener API allows you to develop applications that interface with this service. You can use simple HTTP methods to create, inspect, and manage goo.gl short URLs from your desktop, mobile, or web application.
  • How 90's | How 90's Is Your Website?
    We are now in 2011 and yet many people have websites straight out of the 1990’s! Run your website through how90s and find out if your an offender, and just pray and hope you don’t make our infamous "League Of Shame".
  • The Free Online OCR - Sciweavers
    i2OCR is a free online OCR that converts scanned documents, faxes, or screenshots into editable text. i2OCR supports several input image formats including (TIF, JPEG, PNG, BMP, GIF, PBM, PGM, PPM), which can be loaded from disk or URL.
  • Internet Information Services (IIS) 7.5 Express
    IIS 7.5 Express is a simple and self-contained version of IIS 7.5 that is optimized for developers.
  • ASP.NET MVC 3 Application Upgrader
    This standalone application upgrades ASP.NET MVC 2 applications to ASP.NET MVC 3. It works for both ASP.NET MVC 3 RC 2 and RTM. The tool only supports Visual Studio 2010 solutions and MVC 2 projects targeting .NET 4.
  • COVERITLIVE.COM - Home
    CoveritLive is the world's best live event software, with advanced features to engage and excite your Readers! CoveritLive works seamlessly to provide instant and in-depth event coverage.
  • blekko | slashtag search
    blekko is a better way to search the web by using slashtags. slashtags search only the sites you want and cut out the spam sites. use friends, experts, community or your own slashtags to slash in what you want and slash out what you don't.
  • Ajax.org - The real-time collaborative application platform
    Ajax.org Platform is a pure javascript application framework for creating real-time collaborative applications that run in the browser.
  • Protovis
    Unlike low-level graphics libraries that quickly become tedious for visualization, Protovis defines marks through dynamic properties that encode data, allowing inheritance, scales and layouts to simplify construction.
  • jQuery Sparklines
    This jQuery plugin generates sparklines (small inline charts) directly in the browser using data supplied either inline in the HTML, or via javascript.
  • Axiis : Data Visualization Framework
    Axiis is an open source data visualization framework designed for beginner and expert developers alike. Whether you are building elegant charts for executive briefings or exploring the boundaries of advanced data visualization research, Axiis has somethin
  • Modest Maps
    Our intent is to provide a minimal, extensible, customizable, and free display library for discriminating designers and developers who want to use interactive maps in their own projects.
  • Flare | Data Visualization for the Web
    Flare is an ActionScript library for creating visualizations that run in the Adobe Flash Player. From basic charts and graphs to complex interactive graphics, the toolkit supports data management, visual encoding, animation, and interaction techniques.
  • blender.org - Home
    Blender is the free open source 3D content creation suite, available for all major operating systems under the GNU General Public License.
  • Voyage - RSS feed reader
    Voyage is an RSS feed reader with a difference. It’s been carefully designed around the content it displays. Add RSS feeds from you favourite sites and let voyage pull all the information together for your pleasure.
  • paulstovell / Pigeon / source – Bitbucket
    A point-to-point message queue channel, written in C# using raw TCP sockets and Google Protocol Buffers.
  • Tutti - Interactively run Javascript on multiple browsers
    Tutti lets you interactively execute Javascript on multiple web browsers at the same time.
  • Distributed Systems Podcast
    Distributed Systems Podcast - all you ever wanted to hear and learn about building with DDD, CQRS, Cloud and much more!
  • Open Craft Beer - An open blog for craft beer lovers around the world
    This is an open blog for all lovers and purveyors of great craft beers. When you are lucky enough to enjoy one of these great beers, please drop us a quick review at OpenCraftBeer@posterous.com.
  • jspp
    A simple way to build web applications with embedded server side JavaScript. In a few minutes you can build dynamic backend logic in to any page (html, css, etc) using node.js, jQuery and server side DOM with php-like embedded code.
  • kinemote - Project Hosting on Google Code
    KinEmote is an easy-to-use, free application that takes gestures captured by the Microsoft Kinect and translates them into key strokes that any Windows application can recognize.
  • Lively Kernel - New Home
    Originally developed at Sun Microsystems Laboratories, it provides a complete platform for web applications, including dynamic graphics, network access, and development tools.

Tags:

Random

My Blackberry Is Not Working!

by Alex Meyer-Gleaves 13 January 2011 - 10:26 AM

Ronnie Corbett and Harry Enfield in a very funny sketch from ‘The One Ronnie’ on BBC.

Tags:

Random

Random links for December 2010

by Alex Meyer-Gleaves 31 December 2010 - 3:08 PM

Happy New Year! I hope that 2011 brings you good health, happiness and prosperity. Here are the last of my random links for 2010, but there will be plenty more to come in 2011.

  • Windows Enabler
    It allows the user to enable disabled windows and controls such as buttons and tick boxes and choose menu options that would normally be disabled.
  • BindingHub for WPF and ViewModels
    Component to extend WPF binding functionality and to use binding in ViewModels not inherited from DependencyObject.
  • Socket.IO: the cross-browser WebSocket for realtime apps.
    Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms.
  • In-the-Lab: Windows Server 2008 R2 Template for VMware « SolutionOriented Blog
    Here’s my quick recipe to build a custom image of Windows Server 2008 R2 that has been tested with Standard, Enterprise and Foundation editions.
  • How to Sysprep in Windows Server 2008 R2 and Windows 7 : Brian Desmond's Blog
    If you never had the need to look at Sysprep in Windows Vista/2008, you'll find that it's nothing like what you're used to on Windows Server 2003, XP, etc.
  • StyleCop for ReSharper
    StyleCop for ReSharper is a ReSharper plugin that allows Microsoft StyleCop to be run as you type, generating real-time syntax highlighting of violations and automatic fixing of StyleCop issues during ReSharper Code CleanUp (silent mode).
  • IKVM.NET Home Page
    IKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework.
  • Tessnet2 a .NET 2.0 Open Source OCR assembly using Tesseract engine
    Tesseract is a C open source OCR engine. Tessnet2 is .NET assembly that expose very simple methods to do OCR. Tessnet2 is multi threaded. It uses the engine the same way Tesseract.exe does. Tessdll uses another method (no thresholding).
  • FreeTextBox - ASP.NET Rich HTML editor
    The most-used free ASP.NET WYSIWYG HTML editor featured in open source and commerical projects. Just drop FreeTextbox.dll in your /bin/ folder, change to , and you're done.
  • Grub | Help crawl it all
    Grub Next Generation is distributed web crawling system (clients/servers) which helps to build and maintain index of the Web. It is client-server architecture where client crawls the web and updates the server. The peer-to-peer grubclient software crawls
  • Best Open Source
    There is a certain need to identify the best and help the Users to locate it easily. We constantly monitor all the products and its development and will help you and guide you to identify the best.
  • Azure Blob Studio 2011
    A WPF client for managing files on your Windows Azure Blob Storage account available as a stand-alone application and as an extension for Visual Studio 2010.
  • Windows Live Plug-ins
    The Windows Live Team has launched a new website showcasing and organizing plugins for Photo Gallery, Movie Maker and Writer.
  • Preview Shortened URLs and Avoid Security Threats - TechSpot
    Fortunately, there are several ways to peek behind a shortened URL to see exactly where the link will take you before clicking it, so let's take a quick look at a few of them.
  • SQL Scripts Manager – Powerful, reliable, automated scripting by SQL Server experts, for the community
    SQL Scripts Manager is a free tool that brings together must–have scripts from expert DBAs, SQL Server MVPs, and Red Gate developers to enable you to automate common troubleshooting, diagnostic, and maintenance tasks.
  • Centage – The Smart and Fluid CSS/LESS Framework
    Centage! is my five cents in defining a good fluid css framework. Every framework has its shortcomings – as has Centage! too – but it also solves some major issues in existing ones.
  • CodeMirror
    CodeMirror is a JavaScript library that can be used to create a relatively pleasant editor interface for code-like content ― computer programs, HTML markup, and similar.
  • zLayer jQuery Plugin - Orientate Elements | Devin R. Olsen Web Developer
    zLayers is a jQuery plugin that allows you to orientate an element based on the position of your mouse to the page’s window, or element’s parent.
  • DHTMLX - JavaScript Ajax Library - Components for Rich Web UI - Complete Suite of Ajax Controls, File Uploader, Scheduler, Gantt
    DHTMLX is a JavaScript library that provides essential functionality for building cross-browser, Ajax-based user interfaces. Develop impressive web applications faster with a set of ready-to-use UI widgets.
  • Boxtuffs - The Box of free psd Stuff and HTML5/CSS3 things.
    Boxtuffs came from the idea of designing cool web and graphics elements, but not just you will find nice psd graphics, also you will be able to download the cool sliced elements using the new css3 and html5.
  • CSS3 Please! The Cross-Browser CSS3 Rule Generator
    Another really popular option, this one allows you to edit the code just like you’d see it in a code editor. The changes are reflected on a graphic in the upper right.
  • CSS3 Generator
    Definitely one of the most popular options. All the effects are fully customizable and you can choose from all the popular CSS3 properties.
  • Ultimate CSS Gradient Generator - ColorZilla.com
    A powerful Photoshop-like CSS gradient editor from ColorZilla.
  • Pure CSS speech bubbles – Nicolas Gallagher – Blog
    This tutorial contains various forms of speech bubble effect created with CSS 2.1 and enhanced with CSS3. No images, no JavaScript and it can be applied to your existing semantic HTML.
  • Free overlapped CSS menu using CSS Sprites
    Here I am presenting a cool overlapped pure CSS menu created using CSS sprites. This is an initial draft version, so far I have checked it only in Firefox 3.5, IE 7, Chrome 3.0
  • Super Awesome Buttons with CSS3 and RGBA
    It’s a simple button made possible by a transparent PNG overlay (for the gradient), border, border-radius, box-shadow, and text-shadow.
  • Regex Hero - The Online .NET Regular Expression Tester
    Silverlight tool built specifically to test .NET regular expression.
  • Head JS :: The only script in your HEAD
    Load scripts like images. Use HTML5 and CSS3 safely. Target CSS for different screens, paths, states and browsers. Make it the only script in your HEAD. A concise solution to universal issues.
  • NounProject
    The Noun Project collects, organizes and adds to the highly recognizable symbols that form the world's visual language, so we may share them in a fun and meaningful way.
  • Boozle.com.au : Search for Australia's cheapest alcohol prices
    Boozle searches 1000's of liquor stores in Australia to find your favourite beer, spirits and premixed drinks at the cheapest price, and at your closest outlets.
  • TFS Integration Platform
    The TFS Integration Platform is a project developed by the Team Foundation Server (TFS) product group and the Visual Studio ALM Rangers to facilitate the development of tools that integrate TFS with other systems.
  • Universal Extractor | LegRoom.net
    Universal Extractor is a program designed to decompress and extract files from any type of archive or installer, such as ZIP or RAR files, self-extracting EXE files, application installers, etc.
  • Cinch
    Cinch is a fully featured WPF MVVM framework that makes it easier to develop rich MVVM WPF applications. It also provides UI services/threading/unit tests helpers and much more.
  • MVVM Light Toolkit
    The MVVM Light Toolkit is a set of components helping people to get started in the Model - View - ViewModel pattern in Silverlight and WPF. It is a light and pragmatic framework that contains only the essential components needed.
  • Caliburn Micro: A Micro-Framework for WPF, Silverlight and WP7
    A small, yet powerful implementation of Caliburn designed for WPF, Silverlight and WP7. The framework implements a variety of UI patterns for solving real-world problems.
  • AvalonDock
    AvalonDock is a WPF controls library which can be used to create a docking layout system like that is present in VisualStudio.
  • XamlQuery - The Write Less, Do More, Silverlight Library
    It simplifies several tasks like page/document traversing; finding controls by name, type, style, property value or position in control tree; event handling; animating and much more.
  • xpaulbettsx/ReactiveXaml - GitHub
    An MVVM framework for Silverlight 4 and WPF that integrates the Reactive Extensions (Rx) framework.
  • Artefact Animator
    Artefact Animator provides an easy to use framework for procedural time-based animations in Silverlight and WPF.
  • nRoute Framework
    nRoute is a composite application framework for creating MVVM-style applications in Silverlight, WPF, and Windows Phone 7.
  • agatha-rrsl - Project Hosting on Google Code
    Implementation of the Request/Response Service Layer for .NET.
  • Vagrant
    Vagrant is a tool for building and distributing virtualized development environments.
  • Damn You Auto Correct! - Funny iPhone Fails and Autocorrect Horror Stories
    This site is dedicated to all the embarrassing, questionable, hilarious, and just plain WTF auto correct moments. If you’ve been screwed by predictive text, we want to know about it.
  • Oversharers
    People who twitter or post embarrassingly intimate details, or gross and disgusting habits, or their unfortunate social awkwardness, for all to see. As if we care.
  • restfulie - rest from scratch
    CRUD through HTTP is a good step forward to using resources and becoming RESTful, another step further is to make use of hypermedia aware resources and Restfulie allows you to do it in Java, Ruby and C#.
  • Xtranormal | Text-to-Movie
    Our revolutionary approach to movie-making builds on an almost universally held skill—typing. You type something; we turn it into a movie. On the web and on the desktop.
  • Executor
    This is a multi purpose launcher and a more advanced and customizable version of windows run.

Tags:

Random

About the author

Alex Meyer-Gleaves I'm a Technical Architect living in Australia (that island like continent in the southern hemisphere). I love Microsoft .NET and C#. I hate early mornings, slow drivers and Lotus Notes.

Google Shared

 

Month List

Recent Posts

Recent Comments

Comment RSS

Links

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010