Using Native VHD Boot

Windows 7  and Server 2008 support booting a physical machine from a virtual hard disk (VHD). This post describes the easiest way to create a multi-boot system using native VHD boot and how to use the VHD on multiple machines.

Options to work with multiple OSes on one physical machine are:

  • Multi-boot using a separate disk partition for each OS
  • Run multiple virtual machine guests in a physical host OS
  • Multi-boot using virtual hard disks (native VHD boot)

The advantages of native VHD boot are:

  • It uses physical hardware.
    The performance penalty of using a VHD vs a native disk is negligible.
  • No need for a separate partition.
  • Less disk space needed.
    When using a dynamic VHD, the VHD occupies its defined size only while being used. When the OS booted from the VHD is shut down, the VHD only occupies the space actually written to it.
    Ex: a clean 2008 Server dynamic VHD needs a minimum of 40 GB when running and approx. 9GB when shut down.
  • Possibility to use a copy of the VHD on different computers.
    Ex: workstation and notebook
  • Possibility to use the VHD as virtual machine under XP-Mode or Hyper-V.

Continue reading

Posted in Computers and Internet | Tagged , | 3 Comments

My Advice for Successful Projects

Provide a benefit to (end) users!

This is the ultimate project goal. Do not let any short sighted manager fool you into behaving as software was only about money. Yes: “If they don’t pay you, don’t solve their problem”. But, if they pay you, give them something they benefit from and do not just formally fulfill the contract.

Fight for small, manageable projects!

Use common sense to make sure that the project is feasible given budget, time, personnel and technical constraints. Split large projects into smaller, manageable ones.
Each producing something useful and run by a separate feature team.

image
Adapted from Death March, The Complete Software Developer’s Guide to Surviving “Mission Impossible” Projects, Edward Yourdon.

Be agile and have a plan!

I do not promote any puristic plan-driven (waterfall) or agile approaches. We need elements from both. We do not need hyped new methods every 5 years. We must accept that creating Software is complex and hard work (and fun!).

Smile Life is like a waterfall – sometimes it goes up, sometimes it goes down.
[Groucho Marx]

Use common sense, have passion for your work and maintain a shared vision in your team. Tailor your development process model to the needs of your specific project. Plan and create intermediate artifacts (like requirement and specification documents) as needed. Be agile and embrace change – because reality will not adhere to your plans and you want to be able to show more than paper, in case you run out of time, money or management support during your project.

Create a broad, lean, stable, extensible and executable(!) architecture.
See Is Design Dead?

In many customer/supplier constellations one must first create a “complete” specification to win a contract for the project .

The following overview from the Rational Unified Process nicely depicts working in different disciplines in parallel (from project start on) and shows the transition phase into production. For 25+ years I and my teams have often successfully worked in parallel in all disciplines producing the project artifacts in parallel. If we were forced to formally follow a strict waterfall, we found a way to cheat – sometimes by producing dummy documents.

image
From The Rational Unified Process: An Introduction, Philippe Kruchten.
I do highly recommend reading this small booklet, regardless of the process model you are using.

Continue reading

Posted in Computers and Internet | Tagged | Leave a comment

Have Passion for Your Work

image

“You’re a human being. Don’t let mediocre monsters get you; they are just a diversion. Check in. Bring your whole self to the job, including your emotional self. After all, that’s the source of your creativity. Your creativity is bundled up in those repressed feelings, constrained by conflict you try to avoid, awaiting that seriousness of purpose you keep putting off. Your creativity can’t be seen in that mess. Make it visible. Stir yourself up; stir up trouble. Conflict leads to passion, so you have no reason to fear it. Vitality is passionate. Care about how you spend your life.”

[From Software for your Head,  Jim and Michele McCarthy]
A book about creating and maintaining a shared vision and improving the ways teams work together. I read this book some years ago and while it was an interesting read, it left me with a feeling of uneasiness: maybe some of the recommended procedures are too personal (bordering to therapy) and might destabilize people, which could be exploited by bad-willing management.

Posted in Computers and Internet | Leave a comment

.NET Database Access Options

Database access options in .NET:

For Dapper and Massive hear Hanselminutes podcast The Rise of the Micro-ORM.

Posted in Computers and Internet | Tagged , , , , , , , | Leave a comment

My Advice for .NET Application Architecture and Design

This post summarizes my general architecture and design guidelines for developing applications and points to some interesting NET technologies.

Reading this post will not make anyone an architect, but working through it should give you a good foundation for understanding and discussing architecture and design decisions.

BTW: Architects must write code to really understand what they are talking about and experience some of the pain their design decisions may cause for project managers, programmers, DBAs, operators and users (see MS WeSYP).

Table of contents:

  • Non-Functional Requirements Drive Design!
  • What is Architecture?
  • Logical Layers
  • Organizing Business Logic
    • Simple Domain Logic
      • Table Module pattern
    • Complex Scenarios
      • Domain Model pattern
      • Mobile Objects
    • Fat Database
  • Distributing Layers across Tiers
  • Distribution Patterns
    • Passing Data through Tiers
    • Collaboration
      • Instance-Based Collaboration
      • Service-Based Collaboration
  • Performance and Reliability Patterns
    • Load Balancing
      • Network load balancing
      • Component load balancing
    • Failover Clustering
    • Fail-fast Technique
    • Asynchronous Communication
  • Integration Patterns
    • File Transfer
    • Shared Database
    • Remote Procedure Invocation (RPC)
    • Messaging
  • Miscellaneous Aspects
  • Critical Design Aspects
    • Concurrency control
    • Handling Session state
    • Parallelism
    • Asynchronous Communication
  • Miscellaneous Aspects
  • Centralize Interoperability, Decentralize Implementation

Related content:

Non-Functional Requirements Drive Design!

Do not try a one-size-fits-all approach to application architecture. Resist the golden hammer syndrome: “For a small boy with a new hammer in his hand the whole world looks like a nail”. Ex: Do not use a 4-tier Java web app for everything.

Discover Smile, define, make measurable and communicate the non-functional requirements of your specific application with great care:

  • Quality requirements
    usability, reliability, performance, scalability, supportability, securability, …
  • IT Constraints
    systems management, installation, integration with other systems,
    company standards (ex: we use Java only)
  • Other
    legal, packaging, licensing, cost, time to market

Architecture is: “Decisions that are hard to change later”. Non-functional requirements are the main forces driving architecture and design decisions – not(!) the functional requirements (like manage products and inventory, print invoice).
Ex: I you  decide to use a stateful solution and discover later that your availability and scalability requirements need network load balancing, it will be very difficult to move to a stateless solution (required for networking load balancing without sticky sessions).

For how to make quality requirements measurable see Principles of Software Engineering Management, Tom Gilb.

Select the architecture archetype(s) appropriate for your application:

  • Mobile application
  • Rich client application
  • Rich internet application
  • Service application
  • Web application
  • Embedded system

Your application may comprise different application archetypes playing together.

Create a design that meets all the specific non-functional and functional requirements of your applications. With functional requirements you should avoid unquestioned anticipation of “future needs”. With non-functional requirements is a good idea to anticipate them.

Because non-functional requirements mainly drive our design, we generally can begin developing our  architecture while functional requirements are still incomplete and unstable.

Continue reading

Posted in Computers and Internet | Tagged , , , , , , , , | 4 Comments

Advanced Search with Internet Search Engines

Here some tips for finding things faster:

Internet search:

Windows search:

Posted in Computers and Internet | Leave a comment

Why I Dislike IE 9

I mainly use web browsers to do research with the internet.

Doing research is more than just finding a site: it is about switching between different search engines, refining searches and saving search result links and snippets for later reference and further research.

Some tips for searching:

I do not like IE 9 because:

I find IE 9’s new One Box cumbersome to use:

  • Search terms get garbled into a query URL.
  • One must click the little(!) search button to see or edit the current search term alone.
  • While trying to double-click a search-engine icon to switch to it, IE 9 steals the focus by filling history and suggestions.
  • When switching search engines, one often ends up with the search URL of the old engine in the new engines search box.

Discarding the search box is only a good solution for scenarios using a single search engine and refining search terms in the search box of the search engine.

IE 9 does not allow dragging links and text snippets to other applications:

I wonder why MS does not offer a nice drag  &  drop integration between IE and their other products like OneNote, Outlook, Word. If this is a security problem, I wonder why Firefox and Chrome can offer drag & drop.

The release of IE 9 caused me to compare the features of the current web browsers against my requirements: Continue reading

Posted in Computers and Internet | Tagged | Leave a comment

Configure your Kindle for better Readability

You can configure your Kindle to display better readable text and more text per page while keeping your preferred font size.

Her a side-by-side comparison of the same page with different settings:

DSC01722DSC01721

Standard Typeface: condensed, Line Spacing: small

You can change these settings via the “Aa” key located on the keyboard.

The new Kindles without keyboard by default have a  ghosting issue. After paging you see a slight ghost of white letters from the previous page and the characters are slightly less crisp.

Kindle ghosting

The ghosting seems to be caused by an optimization making paging faster. You can get rid of it by turning “Page Refresh” on via settings.

 

Posted in Computers and Internet, Leisure | Tagged | Leave a comment

About Opinions and Assumptions

There are two ways to do anything:

  • The wrong way
  • and my way 🙂

There are different types of questions[1]:

  • Questions of faith,
    such as “Does God exist?”.
  • Questions of opinion,
    such as “Who is the greatest baseball player of all times”.
  • Debate questions,
    such as “Should abortion be legal”.
  • Questions that can be answered to a degree of certainty by the application of scientific method, which are called empirical questions – in other words, those can be largely settled by the evidence.

Lets stick to the latter, define the requirements and limitations known and validate our opinions and assumptions via a test (ex: create executable architecture alternatives).

[1] The How of Happiness, Sonja Lyubomirky.

Posted in Computers and Internet, Leisure | Tagged | Leave a comment

How to Configure MS SQL Server for Testing with Visual Studio

When setting up MS SQL Server for test projects with Visual Studio I generally  stumble across the following problems only:

  • Use SQL Server Express or Developer Edition?
  • Enabling remote access
  • What are the default database instance names

With Oracle I have a little more trouble. See How to Configure Oracle for Testing with Visual Studio

Continue reading

Posted in Computers and Internet | Tagged , , , | 1 Comment