The Wiert Corner – irregular stream of stuff

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

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • 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

How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted by jpluimers on 2019/05/15

One more thing to take away from Procedural Programming: It’s Back? It Never Went Away – Kevlin Henney [ACCU 2018] – YouTube was explained in [WayBack] How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++.

Though in C++, it applies to all programming languages that stem from a procedural background (Pascal, C#, Java, golang, to name just a few).

The article is about keeping an if/else-if/else tree, even when they can be removed becomes some of their bodies perform an early return, as

In C++, as well as in other languages, the return keyword has two responsibilities:

  • interrupting control flow,
  • yielding a value.

It basically comes down to this argument:

Essentially, the argument for Code #1 is that you need to know less to understand the structure of the code.

Indeed, if we fold away the contents of the if statements, Code #1 becomes this:

The structure of the code is very clear. There are 4 different paths based on the year, they’re independent from each other, and each path will determine the boolean result of the function (if it doesn’t throw an exception).

Now let’s see how Code #2 looks like when we fold away the if statements:

And now we know much less. Do the if statements contain a return? Maybe.

Do they depend on each other? Potentially.

Do some of them rely on the last return false of the function? Can’t tell.

With Code #2, you need to look inside of the if statement to understand the structure of the function. For that reason, Code #1 requires a reader to know less to understand the structure. It gives away information more easily than Code #2.

–jeroen

via [WayBack] Kevlin Henney – Google+: How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted in .NET, C, C#, C++, Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Need to try this: overloaded default properties

Posted by jpluimers on 2019/05/15

[Archive.is] Need to try this: … multiple default index properties having the same name …getters can be overloads … resolve …by type signature … – Thomas Mueller (dummzeuch) – Google+, thanks to marck for this brilliantly simple example:

private
  function GetColumnValue(const ColumnName: string): string; overload;
  function GetColumnValue(Index: Integer): string; overload;
  procedure SetColumnValue(Index: Integer; const Value: string);
public
  property Values[const ColumnName: string]: string read GetColumnValue; default;
  property Values[ColumnIndex: Integer]: string read GetColumnValue write SetColumnValue; default;
end;

This means:

  • you can have multiple default indexor properties
  • the multiple indexor properties can have the same name e.g., Values
  • the properties getters can be overloads (i.e. have the same name) e.g., GetColumnValue
  • Delphi will resolve the overloads by type signature

–jeroen

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

Time capsule opening ceremony today at MIT’s Stata Center after programmers solve MIT’s 20-year-old cryptographic puzzle | MIT CSAIL

Posted by jpluimers on 2019/05/15

[WayBack] Programmers solve MIT’s 20-year-old cryptographic puzzle | MIT CSAIL:

The capsule ceremony will happen Wednesday, May 15 at 4 p.m. at MIT’s Stata Center.

Cool work, with a very cool challenge.

Via/related:

  • a

–jeroen

Posted in Development, Power User, Security, Software Development | Leave a Comment »

On the Effectiveness of Static Typing in Detecting Public Bugs

Posted by jpluimers on 2019/05/14

Cool research paper from a while back but still soo relevant:

The project page for an ICSE’17 paper, To Type or Not to Type: Quantifying Detectable Bugs for JavaScript

JavaScript is also a dynamically typed language for which static type systems, notably Facebook’s Flow and Microsoft’s TypeScript, have been written. What benefits do these static type systems provide?

Source: [Archive.isOn the Effectiveness of Static Typing in Detecting Public Bugs

 

Other saved links:

–jeroen

via: [WayBack/Archive.is] Slashdot drew my attention to this ressearch … http://ttendency.cs.ucl.ac.uk/projects/type_study/ An argument for languages like Delphi. – Roland Kossow – Google+

Posted in Development, JavaScript/ECMAScript, Scripting, Software Development, TypeScript | Leave a Comment »

if statement – How to ask for batch file user input with a timeout – Stack Overflow

Posted by jpluimers on 2019/05/14

The trick is to use the choice command; see [WayBackif statement – How to ask for batch file user input with a timeout – Stack Overflow

–jeroen

Posted in Batch-Files, Development, Microsoft Surface on Windows 7, Power User, Scripting, Software Development, Windows, Windows 10, Windows 7, Windows 8, Windows 8.1, Windows 9, Windows Server 2000, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server 2016, Windows Vista, Windows XP | Leave a Comment »

Top Open Source Licenses | Black Duck Software

Posted by jpluimers on 2019/05/10

About a year and a half ago, I came across the pie chart far below.

Luckily, the WayBack machine keeps historic copies of that page, so I could deduct the below table over time indicating the historic popularity of each license.

My deduction so far:

  1. The top 5 has the same ranking, but different percentages
  2. The rise of the MIT license popularity comes almost entirely out of the other top 5 entries
  3. Below the top 5, it’s about percentage points that differ

I wonder how this evolves further over time.

Oh: and I need to improve my graphing skills to show this table in a nice graph better than the one on the right which has rank over time for reach license from 2016 until 2017.

This is the data extracted from the historic WayBack links:

License Rank20170824 %20170824 Rank20161006 %20161006 Rank20160510 %20160510
MIT License 1 32% 1 28% 1 26%
GNU General Public License (GPL 2.0) 2 18% 2 20% 2 21%
Apache License 2.0 3 14% 3 16% 3 16%
GNU General Public License (GNU) 3.0 4 7% 4 8% 4 9%
BSD License 2.0 (3-clause, New or Revised) License 5 6% 5 6% 5 6%
ISC License 6 5% 8 4% 9 2%
Artistic License (Perl) 7 4% 6 4% 7 4%
GNU Lesser General Public License (LGPL) 2.1 8 4% 7 4% 6 4%
GNU Lesser General Public License (LGPL) 3.0 9 2% 9 2% 8 2%
Eclipse Public License (EPL) 10 1% 11 2% 11 2%
Microsoft Public License 11 1% 10 2% 10 2%
Simplified BSD License (BSD) 12 1% 12 1% 14 < 1%
Code Project Open License 1.02 13 1% 13 1% 12 1%
Mozilla Public License (MPL) 1.1 14 < 1% 14 < 1% 13 < 1%
GNU Affero General Public License v3 or later 15 < 1% 16 < 1% 16 < 1%
Common Development and Distribution License (CDDL) 16 < 1% 15 < 1% 15 < 1%
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 17 < 1% 18 < 1% 19 < 1%
Microsoft Reciprocal License 18 < 1% 17 < 1% 17 < 1%
Sun GPL with Classpath Exception v2.0 19 < 1% 19 < 1% 18 < 1%
zlib/libpng License 20 < 1%
CDDL-1.1 20 < 1% 20 < 1%

–jeroen

Source: Top Open Source Licenses | Black Duck Software

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

Microsoft Visual Studio – Wikipedia

Posted by jpluimers on 2019/05/09

Like there was never an Office 13.0, there was no Visual Studio 13.0: see the below table from Microsoft Visual Studio – Wikipedia: History

This influences tooling that searches for specific versions of Visual Studio or MSBuild (which has been available since Visual Studio 8.0 and up: MSBuild – Wikipedia: History).

Product name Codename Version
number
Supported .NET
Framework versions
Supported .NET
Core versions
Release date
Visual Studio 2019 Unknown 16.0 To be announced To be announced To be announced
Visual Studio 2017 Dev15 15.0 3.5 – 4.7 1.0-1.1, 2.0 March 7, 2017
Visual Studio 2015 Dev14 14.0 2.0 – 4.6 1.0 July 20, 2015
Visual Studio 2013 Dev12 12.0 2.0 – 4.5.2 N/A October 17, 2013
Visual Studio 2012 Dev11 11.0 2.0 – 4.5.2 N/A September 12, 2012
Visual Studio 2010 Dev10Rosario 10.0 2.0 – 4.0 N/A April 12, 2010
Visual Studio 2008 Orcas 9.0 2.0, 3.0, 3.5 N/A November 19, 2007
Visual Studio 2005 Whidbey 8.0 2.0, 3.0 N/A November 7, 2005
Visual Studio .NET 2003 Everett 7.1 1.1 N/A April 24, 2003
Visual Studio .NET (2002) Rainier 7.0 1.0 N/A February 13, 2002
Visual Studio 6.0 Aspen 6.0 N/A N/A June 1998
Visual Studio 97 Boston 5.0 N/A N/A February 1997

–jeroen

Posted in .NET, Continuous Integration, Development, msbuild, Software Development, Visual Studio and tools | Leave a Comment »

On my reading list: stuff on U-Boot, Device-Tree, etc

Posted by jpluimers on 2019/05/08

For my reading list:

It might be that Mender 1.7 and up support OpenSuSE:

via:

DTB = Device Tree Blob

–jeroen

Posted in Development, Hardware Development, Raspberry Pi, Software Development | Leave a Comment »

Visual Studio direct download links

Posted by jpluimers on 2019/05/07

For my link archive:

–jeroen

Posted in .NET, Development, Software Development, Visual Studio and tools, vscode Visual Studio Code | Leave a Comment »

More Delphi debug visualizers

Posted by jpluimers on 2019/05/07

I hope that by now they are available for more Delphi versions:

Some other posts around the Debug Visualiser topic:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »