Repeatable Execution - Mark Seemann - NDC Copenhagen 2022

  Рет қаралды 8,189

NDC Conferences

NDC Conferences

Күн бұрын

What should applications log? Much enterprise code has logging code liberally sprinkled over it. Often, too much. Programmers log lots of things out of fear of not being able to troubleshoot problems that might occur in production. Even if you log a lot, however, how do you know that you haven’t missed a piece of crucial information?
In this talk, I’ll discuss a formal method for deciding what to log, and what you don’t need to log. Learning from functional programming, distinguishing between pure and impure code holds the key to such decisions. Examples will be mainly in C#, with some Haskell as well. No knowledge of Haskell is necessary.
Check out more of our featured speakers and talks at
www.ndcconfere...
ndccopenhagen....

Пікірлер: 8
@xybersurfer
@xybersurfer 2 жыл бұрын
very interesting! the only problem i can see is that the amount of impure data that needs to be logged, can become quite large when dealing with a database especially. i guess you have to limit testing to your own system as usual. it's good that Mark pointed out that he doesn't normally create that replay machinery, because i was already thinking it would be unproductive
@Endomorphism
@Endomorphism 2 жыл бұрын
Mark! Great talk as always
@djchrisi
@djchrisi 2 жыл бұрын
16:14 . No, this is not deterministic. Since the method is not provided with a specific IFormatProvider object it will use the current culture and god knows what this is been set to.
@torstenmohrin2207
@torstenmohrin2207 2 жыл бұрын
CurrentCulture is one of the worst global variables in .NET.
@mackie1001
@mackie1001 2 жыл бұрын
Good spot! Establishing if something is pure or not in .Net requires pretty deep understanding of what you're looking at. Maybe a good rule of thumb is "look at all the overloads and be as specific as possible"
@MarkSeemann
@MarkSeemann Жыл бұрын
Indeed, the CurrentCulture makes DateTime.TryParse subtly non-deterministic. It's not that I'm not aware of this issue, but I chose to gloss over that subtlety for didactic reasons. I sometimes simplify for educational reasons, but I try to do it only to a degree where the detail is largely irrelevant. The fix for this issue is to use an overload that specifically states which IFormatProvider to use, or to use TryParseExact. This makes the code look more complicated, but otherwise doesn't change the overall message of the talk. That's the reason I decided to pretend that the simpler code is deterministic. This may have been the wrong decision. Putting together a talk is an art, not a science.
@science_and_technology6
@science_and_technology6 2 жыл бұрын
What are the complete steps to create a PayPal adder money program?
@arootube
@arootube 2 жыл бұрын
You know?
Where’s C# headed? - Mads Torgersen - NDC Copenhagen 2022
1:01:28
NDC Conferences
Рет қаралды 29 М.
Fractal architecture - Mark Seemann - NDC London 2022
54:31
NDC Conferences
Рет қаралды 4,5 М.
Running With Bigger And Bigger Lunchlys
00:18
MrBeast
Рет қаралды 63 МЛН
WORLD BEST MAGIC SECRETS
00:50
MasomkaMagic
Рет қаралды 50 МЛН
А ВЫ ЛЮБИТЕ ШКОЛУ?? #shorts
00:20
Паша Осадчий
Рет қаралды 8 МЛН
отомстил?
00:56
История одного вокалиста
Рет қаралды 7 МЛН
Refactoring Is Not Just Clickbait - Kevlin Henney - NDC Oslo 2022
1:03:44
Postgres just got even faster
26:42
Hussein Nasser
Рет қаралды 27 М.
Get value out of your monad - Mark Seemann
58:59
NDC Conferences
Рет қаралды 24 М.
40 Years Of Software Engineering Experience In 19 Minutes
19:10
Continuous Delivery
Рет қаралды 73 М.
The Tragedy of systemd
47:18
linux.conf.au
Рет қаралды 1,1 МЛН
Domain-Driven Refactoring - Jimmy Bogard - NDC London 2022
1:00:03
NDC Conferences
Рет қаралды 45 М.
Running With Bigger And Bigger Lunchlys
00:18
MrBeast
Рет қаралды 63 МЛН