Profile

Cover photo
Mark Seemann
Attended Lundehusskolen
Lives in Frederiksberg
538 followers|55,085 views
AboutPostsPhotosYouTube

Stream

Mark Seemann

Shared publicly  - 
 
Pre-conditions are important in Property-Based Tests.
Pre-conditions are important in Property-Based Tests. Last week, I was giving a workshop on Property-Based Testing, and we were looking at this test: [] let ``Validate.reservation returns right result on invalid date`` (rendition : ReservationRendition) = let actual ...
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
When you build a system from small functions that you subsequently compose, how do you know that the composition works? Integration testing is one option.
When you build a system from small functions that you subsequently compose, how do you know that the composition works? Integration testing is one option. Despite its reputation as a niche language for scientific or finance computing, F# is a wonderful language for 'mainstream' software ...
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
How to attract the best developers to your organisation, with one weird trick.
C# is now 15 years old; Java: 20 years. You don't have to believe that Anders Hejlsberg is right, though. After all, COBOL is still in use, 56 years after its invention. One of the world's most popular languages, C++, is 32 years old, and C is 43 years old. Still, it's food for thought.
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
There's no reason to make logging any harder than it has to be. Here's a compositional approach in F#.
There's no reason to make logging any harder than it has to be. Here's a compositional approach in F#. Logging seems to be one of those cross-cutting concerns on which people tend to spend a lot of effort. For programmers coming from an object-oriented language like C#, finding a sane approach ...
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
In C#, null has no type, but most variables can be null; you can't really trust the type system. A Maybe, on the other hand, always has a type, which means that Maybe is a saner approach to the question of values that may or may not be present.
In C#, null has no type, but most variables can be null; you can't really trust the type system. A Maybe, on the other hand, always has a type, which means that Maybe is a saner approach to the question of values that may or may not be present. A few days ago, I was looking at some C# code that, ...
10
3
James Jensen's profile photoRadu Negru's profile photoArtem Elkin's profile photoAlexsandro Pereira's profile photo
3 comments
 
On par with most things, at any rate. I recently noticed that `CancellationToken` has a pretty intelligent "default" implementation.
Add a comment...

Mark Seemann

Shared publicly  - 
 
Sometimes, the most efficient way to verify the outcome of executing a piece of code is to visualise it.
Sometimes, the most efficient way to verify the outcome of executing a piece of code is to visualise it. Recently, I've been working my way through Real World Haskell, and although some of the exercises in the book are exasperating, others are stimulating and engaging. One of the good exercises ...
1
Add a comment...
Have him in circles
538 people
MAIN Verlag's profile photo
David Tchepak's profile photo
Ruben Bartelink's profile photo
mutita donsomsakunkij's profile photo
Florian Hötzinger's profile photo
Sergey Tihon's profile photo
Raymond Rugunda's profile photo
Alex Shkabura's profile photo
Māris Krivtežs's profile photo

Mark Seemann

Shared publicly  - 
 
Tips on refactoring recursive functions to tail-recursive functions.
Tips on refactoring recursive functions to tail-recursive functions. In a recent article, I described how to refactor an imperative loop to a recursive function. If you're coming from C# or Java, however, you may have learned to avoid recursion, since it leads to stack overflows when the ...
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
Widen your hiring pool to the entire world; you won't believe what happens next.
Every week in my Twitter stream, there's some enticing offer: NoWare is looking for strong F# or Haskell developers with experience in TDD, property-based testing, object-oriented design, REST, and software architecture. For half a second I go: "Oh, man, that's so much a description of me!
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
How to refactor from a loop using mutable state to a recursive implementation.
How to refactor from a loop using mutable state to a recursive implementation. One of the most compelling reasons to adopt Functional Programming (FP) is the emphasis on immutable values. All the dread and angst associated with state that can implicitly change while you're not looking, is gone.
1
Add a comment...

Mark Seemann

Shared publicly  - 
 
Aiming for a particular percentage of code coverage is counter-productive.
Aiming for a particular percentage of code coverage is counter-productive. It's the end of 2015, and here I thought that it was common knowledge that using code coverage as a metric for code quality is useless at best. After all, Martin Fowler wrote a good article on the subject in 2012, ...
2
Add a comment...

Mark Seemann

Shared publicly  - 
 
Service Locator violates encapsulation in statically typed languages because it doesn't clearly communicate preconditions.
Service Locator violates encapsulation in statically typed languages because it doesn't clearly communicate preconditions. The horse has been long dead, but some people still want to ride it, so I'll beat it yet again. Over the years, I've made various attempts to explain why Service Locator is ...
7
1
Mohsen Afshin's profile photoCharles Josephs's profile photo
 
Nice explanation
Add a comment...

Mark Seemann

Shared publicly  - 
 
How can you adhere to Command Query Separation if your Domain Model requires Queries to have side-effects?
How can you adhere to Command Query Separation if your Domain Model requires Queries to have side-effects? Command Query Separation (CQS) can be difficult until you get the hang of it; then it's not so difficult - just like most other things in life :). In a previous article, I covered how to ...
1
Add a comment...
People
Have him in circles
538 people
MAIN Verlag's profile photo
David Tchepak's profile photo
Ruben Bartelink's profile photo
mutita donsomsakunkij's profile photo
Florian Hötzinger's profile photo
Sergey Tihon's profile photo
Raymond Rugunda's profile photo
Alex Shkabura's profile photo
Māris Krivtežs's profile photo
Education
  • Lundehusskolen
    1977 - 1986
  • Gammel Hellerup Gymnasium
    Mat/Fys, 1986 - 1989
  • University of Copenhagen
    Economics, 1989 - 1994
Basic Information
Gender
Male
Story
Tagline
Author of Dependency Injection in .NET. Creator of AutoFixture. Danish citizen.
Introduction
My name is Mark Seemann, and I live in Copenhagen, Denmark with my wife and two children.

I'm a professional programmer, author of a book called Dependency Injection in .NET, and the creator of an open source library called AutoFixture.

Here on Google+ I'm going to share both professional and personal items. If you don't know me personally, you may want to follow me on Twitter instead, since I tweet (almost) exclusively about software.
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Frederiksberg
Previously
København
Links
Contributor to