The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Software Development’ Category

Herding Nulls and Other C# Stories From the Future

Posted by jpluimers on 2017/12/13

Mads Torgersen shares future thinking of a fast-moving major programming language, C#. Torgersen discusses pattern matching, type classes, discriminated unions and much more.

A cool outlook of things that hopefully make it into the next upcoming major C# release: [WayBackHerding Nulls and Other C# Stories From the Future

Via:

Slides (of which a few screenshots are below): [WayBack] herding_nulls.pptx

–jeroen

Read the rest of this entry »

Posted in .NET, C#, Development, Software Development | Leave a Comment »

Scalable spinlocks 1: array-based | The Infinite Loop

Posted by jpluimers on 2017/12/12

Cool: [WayBackScalable spinlocks 1: array-based | The Infinite Loop

Last time we saw that spinlock implementations which only use a single synchronization variable (Test-And-Set Lock, Ticket Lock) don’t scale with growing numbers of threads. Today, I want to talk about two spinlock variants that scale. Namely the Graunke and Thakkar Lock1 (1989) and the Anderson Lock2 (1990). Their underlying key idea is to use one synchronization variable per thread instead of one for all threads, to reduce the amount of cache line invalidations when acquiring/releasing the lock. Both spinlock variants store the synchronization variables in an array. This means that there’s an upper bound on the maximum number of thread’s that can compete for the lock concurrently, which must be known a priori. In upcoming blog posts I’m going to show spinlock variants (the MCS Lock and the CLH Lock) that improve upon array-based spinlocks by removing this hard upper limit.

–jeroen

via: [WayBack] Scalable spinlocks 1: array-based | The Infinite Loop – David Berneda – Google+

Posted in Algorithms, Development, Software Development | Leave a Comment »

LINQ Debugging and Visualization – Simple Talk

Posted by jpluimers on 2017/12/12

LINQ is certainly extraordinarily useful. It brings the power of query expressions to C#, allowing an easy way of getting the data you need from a variety of data sources. Up to now, there hasn’t been a VS debugger for LINQ that gives you the means to visualise the data at every point in the chain. Michael Sorens, a keen LINQ user, describes a third-party tool that now promises to make using LINQ something we can all participate in.…

Great read. [WayBackLINQ Debugging and Visualization – Simple Talk

Via: [WayBackLINQ Debugging and Visualisation – Jeroen Wiert Pluimers – Google+

–jeroen

Posted in .NET, Development, LINQ, Software Development | Leave a Comment »

“error accessing the registry” while importing a registry file

Posted by jpluimers on 2017/12/11

I while ago I had the error “error accessing the registry” while importing.

In my case I had escaped too many back-slashes. Not just the file names in the values, also the registry key names.

So I had key names like this:

[HKEY_CURRENT_USER\\Software]

That fails, but the error won’t tell you why. The key needs to be this:

[HKEY_CURRENT_USER\Software]

BTW: you do not need regedit.exe to import as reg.exe can do the same: [WayBack] How to add a .REG file to your Registry silently – Scott Hanselman

–jeroen

Posted in Development, Registry Files, Scripting, Software Development | Leave a Comment »

Writing Bug-Free C Code – free book by Jerry Jongerius

Posted by jpluimers on 2017/12/07

Since I’m in a C mood today: Free book: [WayBackWriting Bug-Free C Code, A Programming Style That Automatically Detects Bugs in C Codeby Jerry Jongerius / January 1995.

Be sure to credit the author.

Via: [WayBack] Writing Bug-Free C Code A Programming Style That Automatically Detects Bugs in C Codeby Jerry Jongerius / January 1995 – Ilya S – Google+

–jeroen

Posted in C, Development, Software Development | 1 Comment »

Let’s stop copying C / fuzzy notepad

Posted by jpluimers on 2017/12/07

Ah, C. The best lingua franca we have… because we have no other lingua francas. Linguae franca. Surgeons general? C is fairly old — 44 years, now! — and comes from a time when there were possibly more architectures than programming languages. It works well for what it is, and what it is is a relatively simple layer of indirection atop assembly. Alas, the popularity of C has led to a number of programming languages’ taking significant cues from its design, and parts of its design are… slightly questionable. I’ve gone through some common features that probably should’ve stayed in C and my justification for saying so. The features are listed in rough order from (I hope) least to most controversial. The idea is that C fans will give up when I call it “weakly typed” and not even get to the part where I rag on braces. Wait, crap, I gave it away.

Great re-read towards the end of the year: [WayBackLet’s stop copying C / fuzzy notepad

Via: [WayBack] Old and busted: emacs vs vi. New and hot: Language war, everybody against everybody else. – Kristian Köhntopp – Google+

–jeroen

Posted in .NET, APL, Awk, bash, BASIC, C, C#, C++, COBOL, CoffeeScript, CommandLine, D, Delphi, Development, F#, Fortran, Go (golang), Java, Java Platform, JavaScript/ECMAScript, Pascal, Perl, PHP, PowerShell, PowerShell, Python, Ruby, Scala, Scripting, Software Development, TypeScript, VB.NET, VBScript | 3 Comments »

Oh nice. Feel free to QP. E2003WithConstsInDescendingClassesConsoleProject

Posted by jpluimers on 2017/12/06

Oh nice. Feel free to QP. Fails at least in Delphi XE8.

program E2003WithConstsInDescendingClassesConsoleProject;

{$APPTYPE CONSOLE}

uses
ParentUnit in 'ParentUnit.pas',
ChildUnit in 'ChildUnit.pas';

begin
end.
unit ParentUnit;

interface

type
  TParent = class
  // section can be strict protected, protected, public, published or nothing
  const
    InitialBooleanValue = False;
    InitialIntegerValue = -1;
  end;

implementation

end.
unit ChildUnit;

interface

uses
  ParentUnit;

type
  TChild = class(TParent)
  // section can be strict protected, protected, public, published or nothing
  const
//    Initial and final values need to be different to test the behaviour
    FinalBooleanValue = not InitialBooleanValue;
    FinalIntegerValue = InitialIntegerValue + 1;
//[dcc32 Error] ChildUnit.pas(13): E2003 Undeclared identifier: 'InitialBooleanValue'
//[dcc32 Error] ChildUnit.pas(14): E2003 Undeclared identifier: 'InitialIntegerValue'
//[dcc32 Error] ChildUnit.pas(14): E2026 Constant expression expected
  end;

implementation

end.

[WayBackOh nice. Feel free to QP. unit ParentUnit; interface type TParent = class …

Posted in Delphi, Delphi XE8, Development, Software Development | 3 Comments »

Data Science Advent – franz.media

Posted by jpluimers on 2017/12/05

Cool: @filmfranz made an advent calendar on Python data analysis featuring a lot of Pandas examples referring to source code found on the interwebz: [WayBackData Science Advent – franz.media.

First example is to eliminate outliers in the below graph.

He also has a really cool (German) Playlist on data analysis with Python called Datenanalyse in Python and has a great site with examples at franz.media.

–jeroen

via: [WayBack] Very cool idea: an advent calendar with tips for doing data science with Python and Pandas created by @filmfranz 👉 http://franz.media/advent.html – ThisIsWhyICode – Google+

Posted in Development, Python, Scripting, Software Development | Leave a Comment »

Interactive map of Linux kernel

Posted by jpluimers on 2017/12/05

The [WayBackInteractive map of Linux kernel is way better than the static versions below that I got via

[WayBack] Interactive map of the Linux kernel subsystems. A little bit beyond what is required to use Linux. But great for those who want a deeper understanding of the kernel. – Joe C. Hecht – Google+

–jeroen

Read the rest of this entry »

Posted in *nix, Development, Linux, Power User, Software Development | Leave a Comment »

Delphi tip of the day: {$WARN UNSUPPORTED_CONSTRUCT ERROR} to get rid of W1025 when using an undeclared attribute

Posted by jpluimers on 2017/12/04

Delphi tip of the day:

{$WARN UNSUPPORTED_CONSTRUCT ERROR}

It will throw a compiler error when you use an attribute that isn’t defined as the above [WayBackturns a warning into an error as normally [WayBackUNSUPPORTED_CONSTRUCT is only a warning.

Which means that this code now fails:

type
  TmyClass = class
    [djhgfskdhgks]
    procedure One;
  end;

Thanks [WayBack] +Agustin Ortu for posting this tip!

I wish I had known this when I found the G+ post leading to On turning “W1025 Unsupported language feature: ‘customattribute’” into a compiler error.

–jeroen

via:

related:

Posted in Delphi, Development, Software Development | 2 Comments »