Welcome to MSDN Blogs Sign in | Join | Help

In this 18-minute video, you'll take a brief look at the basic F# data types, and you'll explore some intermediate features such as recursion, pattern matching, and partially-applied functions.

See http://channel9.msdn.com/shows/10-4/10-4-Episode-17-F-Intro.

Video contents:

  • 01:35 - List data type.
  • 02:35 - Tuples.
  • 03:25 - Anonymous functions.
  • 03:55 - Identifiers (not variables!) and initialization.
  • 05:10 - Named functions.
  • 08:05 - Partially-applied functions, or "curried" functions.
  • 10:30 - Built-in list functions.
  • 12:00 - Pattern matching and recursion.
  • 15:00 - Applying pattern matching to tuples.
2 Comments
Filed under:

How to download and install Microsoft Visual Studio 2010 Beta 1: http://channel9.msdn.com/shows/10-4/10-4-Episode-20-Downloading-and-Installing-Visual-Studio-2010-Beta-1/

In this video, you'll learn how to install Microsoft Visual Studio 2010 Team Foundation Server 2010 Beta 1, Microsoft Visual Studio 2010 Team Suite Beta 1, and Microsoft .NET Framework 4.0 Beta 1. You can perform all of the steps in this video by using trial software.

Additional resources:

The usual disclaimers apply: Use these resources at your own risk, and use them on computers that you won't mind reformatting in case things go wrong. Also, mention of non-Microsoft resources in this post does not imply that Microsoft supports them.

Scrum-ban: http://leansoftwareengineering.com/ksse/scrum-ban/. "The idea of using a simple task board with index cards or sticky notes is as old as Agile itself. A simple variation of this is a task board with a simple Pending -> In Process -> Complete workflow....Names can be associated with the cards to indicate who’s working on what....A problem with the basic index-card task board is that there is nothing to prevent you from accumulating a big pile of work in process....Control the number of cards in circulation. If all of the available cards are already in circulation, then the next person who comes looking for one is just going to have to wait until one returns. This is the very purpose of the kanban system....In our case, we simply write the quantity of kanban in circulation on the task board, and allocate new cards according to that limit....You might have a simple principle like: prefer completing work to starting new work, or you might express that as a rule that says: try to work on only one item at a time, but if you are blocked, then you can work on a second item, but no more....Another enhancement we can make...is to add a ready queue between the backlog and work-in-process. The ready queue contains items that are pending from the backlog, but have high priority...as soon as somebody becomes available, they should take one of these tasks instead of picking something out of the general backlog."

1 Comments
Filed under:

Jason Zander (General Manager of Microsoft Visual Studio) has posted several screen shots of Microsoft Visual Studio 2010 Beta 1 and the Microsoft .NET Framework 4.0 Beta 1.

Screen shots include:

  • The new New Project dialog box.
  • The new Tools Extension Manager.
  • Making Microsoft Office programming easier.
  • Microsoft Visual C# and Microsoft Visual Basic language improvements.
  • Microsoft F#.
  • Microsoft Windows Presentation Foundation (WPF) data binding.
  • Microsoft Silverlight tools.
  • Web tools updates.
  • Microsoft Visual C++ improvements.
  • Microsoft Visual Studio Team System Team Architecture updates.
  • Microsoft Test and Lab Manager tools.
  • Microsoft Visual Studio Team System Team Foundation Server (TFS) updates.

See Announcing VS2010 / .NET Framework 4.0 Beta 1!

Here are the Autofocus discussion groups that I'm currently aware of:

Do you know of any others? If so, please let me know in the comments section below this post.

1 Comments
Filed under:

Microsoft Silverlight is a cross-browser, cross-platform implementation of the .NET Framework for building and delivering the next generation of media experiences and rich interactive applications (RIA) for the Web.

Silverlight offers the following features:

  • It runs in all popular Web browsers, including Microsoft Internet Explorer, Mozilla Firefox, and Apple Safari, and on Microsoft Windows and Apple Mac OS X.
  • It is supported by a very small download that installs in seconds.
  • It streams video and audio. It scales video quality to everything from mobile devices to desktop browsers to 720p HDTV video modes.
  • It includes compelling graphics that users can manipulate directly in the browser.
  • WPF and XAML. Silverlight includes a subset of the Windows Presentation Foundation (WPF) technology, which greatly extends the elements in the browser for creating UI, extending browser-based UI beyond what is available with HTML alone. Extensible Application Markup Language (XAML) provides a declarative markup syntax for creating elements.
  • Extensions to JavaScript. Silverlight provides extensions to the universal browser scripting language that provide control over the browser UI.
  • Integration with existing applications. Silverlight integrates seamlessly with your existing JavaScript and ASP.NET AJAX code to complement functionality you have already created. 
  • Access to the .NET Framework programming model and to associated tools. You can create Silverlight-based applications using dynamic languages such as IronPython as well as languages such as C# and Visual Basic. You can use development tools such as Visual Studio to create Silverlight-based applications.
  • Networking support. Silverlight includes support for HTTP over TCP. You can connect to WCF, SOAP, or ASP.NET AJAX services and receive XML, JSON, or RSS data.
  • LINQ. Silverlight includes language-integrated query (LINQ), which enables you to program data access using intuitive native syntax and strongly typed objects in .NET Framework languages.

Got more time? Learn more:

1 Comments
Filed under:

The Autofocus directions state that you must not try to prioritize items mentally. "Instead," Mark Forster writes, "wait for a feeling of release about an item. It’s hard to describe but easy to recognize. You just feel that the item is ready to be done. If you go on down the page, you may find that you feel drawn back to that item. Once you get that feeling about a task all resistance to doing the task vanishes, and it becomes easy to do."

So, how do you train yourself to know when an item is ready to be done?

I like David Allen's criteria in his Getting Things Done methodology:

  • Context: Are you in a location where you can actually work on the item?
  • Time available: If you only have five minutes, can you make reasonable progress on this item during that time?
  • Energy available: If the item involves physical action, how strong are you right now? If the item involves creative action, how rested are you right now?
  • Payoff: Which item could lead to the highest results and benefits or get you closer to your goals?
1 Comments
Filed under:

The 2007 Microsoft Office system introduced a user interface (UI) element that is named the Ribbon. The Ribbon is a way to organize related commands so that they are easier to find. Commands appear as controls on the Ribbon. Controls are organized into groups along a horizontal strip at the top edge of an application window. Related groups are organized on tabs. Most of the features that were accessed by using menus and toolbars in earlier versions of the Microsoft Office system can now be accessed by using the Ribbon.

You can use the Visual Studio Tools for Office in Visual Studio 2008 to customize the Ribbon of the following applications:

  • Microsoft Office Excel 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office PowerPoint 2007
  • Microsoft Office Word 2007

You use a Ribbon (Visual Designer) item to customize the Ribbon in the following ways:

  • Add custom or built-in tabs to a Ribbon.
  • Add custom groups to a custom or built-in tab.

You use a Ribbon (XML) item to customize the Ribbon in the following ways:

  • Add built-in groups to a custom tab or built-in tab.
  • Add built-in controls to a custom group.
  • Add custom code to override the event handlers of built-in controls.
  • Customize the Quick Access Toolbar.
  • Share a Ribbon customization between add-ins by using a qualified ID.

Got more time? Learn more:

1 Comments
Filed under:

In this series of blog posts, I'm going through each step of the Autofocus instructions...

"If you go to a page and no item stands out for you on your first pass through it, then all the outstanding items on that page are dismissed without re-entering them. Use your highlighter to mark dismissed items...."

If you can't settle on the next task to work on for a given page (but not the last page), you should highlight all of the undone tasks on that page and then move on. This will help you more easily determine as time goes by whether you still need to work on those tasks or whether they should be rejected outright. (For electronic-based lists, you may need to determine how best to highlight dismissed tasks.)

 

1 Comments
Filed under:

More kanban resources:

  • Kanban Systems: http://jamesshore.com/Blog/Kanban-Systems.html. "Typical Agile projects use time-boxed iterations. At the beginning of the iteration, the team meets and chooses stories from their backlog that can be done by the end of the iteration. Over the course of the iteration, they develop those stories, and at the end of the iteration, they ship them. Kanban systems are different. Instead of using time-boxed iterations, Kanban systems focus on a continuous flow of work. The team takes a story from the backlog, develops it, and ships it as soon as it is done. Then they take the next story from the backlog, develop it, and ship that story. Work is shipped as soon as it's ready, and the team only works on one story at a time....The primary work unit for the team is the "minimum marketable feature," or MMF. An MMF is the smallest feature that has value to the market....The team maintains a backlog of MMFs in a queue. This queue is strictly limited in size....If there's an emergency, a support request, or some other urgent need, there's an empty slot on the board marked 'Urgent.' The team can put an MMF in that slot at any time without having to go through the regular backlog queue. The team strives to finish urgent items quickly, and they try to keep the slot empty and available at all times. If the 'Urgent"'slot is full and another urgent item appears, it has to be added to the backlog queue....As with other Agile approaches, the team is expected to fix bugs before the MMF is done. If bugs are found afterwards, the fixes are scheduled with a new MMF. If a bug needs to be fixed immediately, the team uses the 'Urgent' slot."
  • Kanban in Action: http://www.agilemanagement.net/Articles/Weblog/KanbaninAction.html. "Though we track all [change requests] CRs in Team Foundation Server [TFS]...the day-to-day work is tracked on a white board using Post-IT notes as kanban cards....Each morning the team meets for a standup around the kanban white board to discuss the work-in-progress and how to keep it moving....A red star indicates that the item is severely aged[;]...[t]his allows the 'late' item to be self -expedited without direct management intervention....Blocked CRs have pink sticky notes attached to indicated that there is an open issue in [TFS]...Yellow - customer-valued CR; Blue - customer-valued (and requested) bug (fix); Green - IT maintenance item...Orange - additional (or extra) bug; pink - issue....The kanban limit for the system is 20 cards, divided in to different stages in the process - systems analysis, development, test, build/merge, deployment. In addition, we allow for 3 extra bugs to be anywhere in the system....The kanban system also frees us from the constraints of time-boxed iterations. Even though we are making a release every two weeks, items in the system can take up to 60 days to move through depending on their size and complexity....And finally, the kanban system has freed us from the management overhead of running each iteration like a mini-project."
  • Naked Planning Explained - Kanban in the Small: http://aaron.sanders.name/agile/naked-planning-explained-kanban-in-the-small. "The idea of the variable length Product Backlog with the need to reorganize priorities and estimate size was replaced with a fixed-length queue placed on a whiteboard for the Product Owner (Customer) to fill with Minimal Marketable Features (MMF), or what in Scrum would be User Stories....The length of the queue is seven, as this is believed...to be about the maximum amount of items any one person can hold in their head at a time....The customer is allowed to rearrange these 7 MMFs as often as is seen fit. When the team is ready to pull a new feature, it is whatever is currently at the top of the stack.....There is one expedite slot for the customer to override [Work In Progres] WIP, anything else has to wait for a slot to open....MMFs are dated when they are placed on the board, and when they are finished to derive the average time of a feature...The engineering team has 4 slots for WIP. This was determined because there are 8 engineers who pair all code....Stand-ups happen multiple times per day and are short. When the team switches pairs they ask if there’s any significant increase of information of note which is not on the board....Every Friday is a trade show of all released MMFs, and is a very jovial time in the office, a celebration of a job well-done."
  • Managing the Pipeline: http://www.poppendieck.com/pipeline.htm. "Queuing theory gives us six rules for reducing software development cycle time: [1] Limit work to capacity [2] Even out the arrival of work [3] Minimize the number of Things-in-Process [4] Minimize the size of the Things-in-Process [5] Establish a regular cadence [6] Use pull scheduling....One way to estimate the capacity is to look at output....According to Little's law, there are two ways to improve response time: you can spend money to improve the Average Completion Rate, or you can apply intellectual fortitude to reduce the number of Things-in-Process....You will get much faster throughput and higher utilization if you develop ten services one at a time, rather than developing all ten at the same time....An organization that delivers at a regular cadence has established its process capability and can easily measure its capacity....Pull scheduling is the best method to compensate for variation and limit work to capacity. At the beginning of an iteration, the team ‘pulls’ work from a prioritized queue. They pull only the amount of work that they have demonstrated they can complete in an iteration. When a team is first formed or the project is new, it may take a couple of iterations for the team to establish its ‘velocity’ (the amount of work it can complete in an iteration). But once the team hits its stride, it can reliably estimate how much work can be done in an iteration and that is the amount of work it pulls from the queue."
  • Kanban Process Template for Team Foundation Server: http://www.codeplex.com/KanbanTFS. "A process template for Team Foundation Server that utilizes a Kanban approach. This approach is based on the original series of articles posted on the AgileManagement articles 'A Kanaban system for Sustainable Engineering:' http://www.agilemanagement.net/Articles/Papers/AKanbanSystemforSustainin.html. Also, based on experiences found on Lean Engineering blog: http://leansoftwareengineering.com/ and Eric Landes's blog: http://aspadvice.com/blogs/elandes."

See also:

  • Software Development Productivity: http://www.poppendieck.com/pdfs/Software%20Development%20Productivity.pdf. "As the technology sector matures, it can no longer depend on increasing growth in the underlying technology to fuel productivity increases. The time has come for serious efforts to increase productivity through more efficient use of labor and more effective value propositions for customers....There are three basic approaches to productivity improvement: [1] Reduce product costs by eliminating investments in product features that customers do not find valuable. [2] Reduce indirect costs by streamlining processes and eliminating inefficiencies in development, delivery and support. [3] Increase revenue by adding more value to a product so customers will pay more for it....About two-thirds of the features of a typical software system are seldom or never used. Only twenty percent of the features are used frequently. Eliminating extra features that no one really wants represents the single largest opportunity for increasing software development productivity in most organizations....limit overproduction of features by developing features on an as-needed basis....Organizations which record year-on-year productivity improvements spend a lot of time focusing on streamlining key processes while increasing their reliability....In general, customers cannot be relied upon to tell a software development organization how to increase the value of its offerings. In fact, customers generally think of software as a tool that should adapt to their needs over time. This makes understanding customer value elusive not only during a software development project, but even after deployment....We are not likely to increase software’s value proposition unless we increase our understanding how customers might use our software to create value for themselves....focus on their key processes and map their value stream....The focus has been on predictable delivery of pre-defined scope rather than increased productivity. Not surprisingly, processes which did not value productivity did not deliver productivity increases; quite often they decreased productivity instead."
  • Lean Programming: http://www.poppendieck.com/lean.htm. "...instead of following complex processes, using simple rules to communicate strategy is the best way to empower people to seize fleeting opportunities in rapidly changing markets....Ten simple rules: [1] Eliminate Waste [2] Minimize Inventory [3] Maximize Flow [4] Pull From Demand [5] Empower Workers [6] Meet Customer Requirements [7] Do it Right the First Time [8] Abolish Local Optimization [9] Partner With Suppliers [10] Create a Culture of Continuous Improvement....Eliminate anything which does not add value to the final product....Requirements and design documents must be kept to a minimum to maximize development flow....Instead of a 100 page detailed specification, write a 10 page set of rules and guidelines, and document only the exceptions....Keep requirements flexible as close to system delivery as possible.... It is always better to tell developers what needs to be done, not how to do it....The most effective way to accurately capture user requirements is found in the iterative approach to system development. By developing core features early and obtaining customer feedback in a focus-group demonstration of each iteration, a far more correct definition of customer requirements can be obtained....Write the tests first, and then write the code....Excellence means the ability to adapt to fast moving, rapidly changing environments."  
1 Comments
Filed under:

Some kanban resources:

1 Comments
Filed under:

The Model-View-Controller (MVC) pattern is an architectural design principle that separates the components of a Web application. This separation gives you more control over the individual parts of the application, which lets you more easily develop, modify, and test them. ASP.NET MVC is part of the ASP.NET framework.

The MVC framework includes the following components:

  • Models: Parts of the application that implement the logic for the application's data domain. For example, a Product object might retrieve information from a database, operate on it, and then write updated information back to a Products table in a SQL Server database.
  • Views: Components that display the application's user interface (UI). An example would be an edit view of a Products table that displays text boxes, drop-down lists, and check boxes based on the current state of a Product object.
  • Controllers: Components that handle user interaction, work with the model, and ultimately select a view to render that displays UI. For example, the controller handles query-string values, and passes these values to the model, which in turn might use these values to query the database.

The ASP.NET MVC framework offers the following advantages:

  • It makes it easier to manage complexity by dividing an application into the model, the view, and the controller.
  • It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.
  • It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure.
  • It provides better support for test-driven development (TDD).
  • It works well for Web applications that are supported by large teams of developers and for Web designers who need a high degree of control over the application behavior.

Got more time? Learn more:

1 Comments
Filed under:

In this series of blog posts, I'm going through each step of the Autofocus instructions...

"Move onto the next page and repeat the process...."

When you've finished all of the tasks on a given page, write an "X" in the page's upper corner. Draw a circle around the "X" when all pages before that one also have an "X" on them. This can help you quickly flip past all completed pages. (For electronic-based lists, you may need to determine how best to mark all tasks done up to a certain point.)

1 Comments
Filed under:

A kanban system is a mechanism for controlling work for a project. The origin of kanban is the Toyota Production System. Very simply, there is a queue of work items, which go through a number of stages of work until it's done. When work is completed in a stage, it goes into a downstream queue for the next stage. When someone needs new work to do, they pull it from their upstream queue. For example:

To Do -> Step 1 -> Step 2 -> Step N -> Done

For a software development project for example:

To Do -> Design -> Implement -> Verify -> Release -> Done

Of course, there are likely a few more steps in your projects. 

There is one more important element which really defines a kanban system, and that is the concept of limits. There are two types of limits: Queue limits (work that's ready to start on) and Work in Progress (WIP) limits. For example:

To Do -> Step 1 Queue -> Step 1 WIP -> Step 2 Queue -> Step 2 WIP -> Step N Queue -> Step N WIP -> Done

For a software development project for example:

To Do -> Design Queue -> Design WIP -> Implement Queue -> Implement WIP -> Verify Queue -> Verify WIP -> Release Queue -> Release WIP -> Done

Queue limits are designed to avoid premature work. WIP limits are designed to reduce multi-tasking, maximize throughput, and enhance teamwork. Reducing multitasking is beneficial to reduce taskswitching costs and to yield results sooner.

Throughput is also maximized by decreasing WIP. By having less WIP, the team is able to focus more on the larger goals and less on individual tasks, thus encouraging a swarming effect and enhancing teamwork.

Limiting WIP can seem unusual for teams, and there is often a worry that team members will be idle because they have no work to do, but they are unable to pull any new work. Consider the following guidelines:

  1. Can you help progress an existing kanban? Work on that.
  2. Don’t have the right skills? Pull in work from the queue.
  3. Can’t start anything in the queue? Is there any lower priority to start investigating?
  4. There is nothing lower priority? Find other interesting work.

(Summarized from "Kanban, Flow and Cadence" by Karl Scotland: http://availagility.wordpress.com/2008/10/28/kanban-flow-and-cadence/)

1 Comments
Filed under:

Windows Workflow Foundation is a framework that enables users to create system or human workflows in their applications written for Windows Vista, Windows XP, and the Windows Server 2003 operating systems.  

Scenarios that Windows Workflow Foundation addresses include:

  • Enabling workflow within line-of-business applications.
  • User-interface page flows.
  • Document-centric workflows.
  • Human workflows.
  • Composite workflows for service-oriented applications.
  • Business rule-driven workflows.
  • Workflows for systems management.

Got more time? Learn more:

More Posts Next page »
 
Page view tracker