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 ‘Development’ Category

Some git versus PlasticSCM comparisons

Posted by jpluimers on 2019/08/01

Via a co-worker:

In my own experience, PlasticSCM needs a lot of work, especially on the usability side:

  1. PlasticSCM call themselves a DVCS, but in order to have a local full repository like all other DVCS systems, you have to run a local server (and a license for it, I still need to sort out if that is free or paid). For the DVCS definition, see Distributed version control – Wikipedia. This means you run a client, a local PlasticSCM server and a remote PlasticSCM server.
  2. Despite there being a CLI version (more on that in a future post), the GUI does not show the exact CLI syntax for commands (unlike most git tools that do). This means you need to think thrice when translating them from GUI to CLI, made even harder by most UI access paths having different ways to copy their information to the clipboard.
  3. When you run the Plastic SCM GUI client long enough, even on a small repository, you will get errors about not enough quota being available (the dreaded 0x718): [WayBack] System Error Codes (1700-3999) | Microsoft Docs ERROR_NOT_ENOUGH_QUOTA 1816 (0x718): Not enough quota is available to process this command.
  4. Often after scanning for changes, you see a lot of changed files. If you click each file, you see  “Files are identical”

    • As a result you have to perform “Undo Unchanged”:
    • I never have this when using git.
  5. Online PlasticSCM hosting parties, especially integrated with bug tracking, are far and few between: besides [WayBackPlasticSCM cloud, I have not found any. Take the git world, or even the Mercurial world and there are far more choices (yes I know about the manual labour involved setting it up described at [WayBack] Plastic SCM version control · Task and issue tracking systems guide and [Archive.is] Plastic SCM blog: Integrating Plastic SCM with Trac Issue Tracking).

One thing that baffled me is that you can edit commit messages. Changing them does not result in another commit. This means that these are not set in stone which is very odd when you see all changes in the commit history.

[Archive.is] Are check-in comment editable?

Sure!

The commit message textbox is editable, start typing and then push save. :)

I realized that in the Branch Explorer one can edit them using the procedure you’ve described, but if you open a changset from “Changesets” or somewhere else, the comment on the top is readonly. Maybe it would be nice to be have a way to edit it there, though I guess, it would be a rarely used feature.

At the changesets view you are also able to do it by cliking in the “Show extended information” button.

I’m afraid that this are the only spots to do it.

–jeroen

Posted in Development, DVCS - Distributed Version Control, git, Source Code Management | Leave a Comment »

Cable salad is of all times: 1964 analog computers; Moog syntesizers

Posted by jpluimers on 2019/08/01

This picture on Flickr of Engineer Karen Leadlay in an analog computer lab at General Dynamics, January 1964 shows that cable salad is of all times.

Atlas Collection Image

Via:

The above threads have really nice comments, including pointers to for instance the [WayBack] Moog synthesizer – Wikipedia  (lots of you remember the songs by Keith Emerson).

–jeroen

Read the rest of this entry »

Posted in Development, Fun, Hardware Development | Leave a Comment »

.NET and PowerShell: Getting proper version info from a PE file like EXE, DLL, assembly

Posted by jpluimers on 2019/08/01

I’ve learned the hard way that both .NET and PowerShell version information isn’t always accurate or usable for two reasons which I later found in various other blog and forum posts:

The easiest is to use these numbers to create a [WayBack] Version Class (System) instance using the [WayBack] Version Constructor (Int32, Int32, Int32, Int32) constructor. This has the added benefit that you directly compare versions with each other.

Sometimes it makes even sense to take the highest version from Product and File.

In PowerShell, this is the way to do that, assuming $imagePath points to a [WayBack] Portable Executable:

try {
  $VersionInfo = (Get-Item $imagePath).VersionInfo
  $FileVersion = [version]("{0}.{1}.{2}.{3}" -f $VersionInfo.FileMajorPart, $VersionInfo.FileMinorPart, $VersionInfo.FileBuildPart, $VersionInfo.FilePrivatePart)
  $ProductVersion = [version]("{0}.{1}.{2}.{3}" -f $VersionInfo.ProductMajorPart, $VersionInfo.ProductMinorPart, $VersionInfo.ProductBuildPart, $VersionInfo.ProductPrivatePart)
  $ActualVersion = $(if ($ProductVersion -gt $FileVersion) { $ProductVersion } else { $FileVersion })
}
catch {
  $ActualVersion = [version]("0.0.0.0")
}

Background information:

–jeroen

Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »

New in 10.2.2: Component icons – Community Blogs – Embarcadero Community

Posted by jpluimers on 2019/07/31

A well balanced post that shows what you can attain by thinking in advance and remembering backward compatibility: [WayBack] New in 10.2.2: Component icons – Community Blogs – Embarcadero Community

Larger icons can now be in PNG format (future IDE versions will use 128×128 for HiDPI screens) so older IDE versions do not get confused. Since newer IDE versions prefer PNG over BMP icons, backward compatibility is easier.

Via: [WayBack] A look at the new component icons in 10.2.2.  – David Millington – Google+

–jeroen

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

It’s a blong, blong, blong road…: ‘What if?’ scenario analysis in the CPU window

Posted by jpluimers on 2019/07/31

Patching code at debug-time: [WayBackIt’s a blong, blong, blong road…: ‘What if?’ scenario analysis in the CPU window.

Remember:

  • There are dragons
  • Patching too many bytes will kill a kitten and likely your application.
  • Bytes in memory might not be what they seem, especially when having breakpoints (and the debugger frantically trying to set/remove $CC bytes for the INT 3 instruction)

I’ve done this for 20+ years and usually use the $90 byte (NOP instruction) though your experience may be different.

–jeroen

 

Posted in Debugging, Delphi, Development, Pascal, Software Development, Turbo Pascal | Leave a Comment »

Ternary operator in PowerShell – Stack Overflow

Posted by jpluimers on 2019/07/31

I like this built-in construct by fbehrens most:

$result = If ($condition) {"true"} Else {"false"}

Everything else is incidental complexity and thus to be avoided.

For use in or as an expression, not just an assignment, wrap it in $(), thus:

write-host $(If ($condition) {"true"} Else {"false"})

There are even more elegant constructs, but those require setting up an alias before using them.

Source: [WayBackTernary operator in PowerShell – Stack Overflow

–jeroen

Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »

Sometimes a race condition is in just two lines of code

Posted by jpluimers on 2019/07/30

A race condition can be this small:

if Assigned(Setting.OnChanged) then
  Setting.OnChanged(Setting);

If in between these lines, the value of Setting.OnChanged becomes nil, then you have an access violation.

It is a very slim, but real chance.

–jeroen

Posted in Delphi, Development, Multi-Threading / Concurrency, Software Development | 4 Comments »

scripting – Run Multiple Powershell Scripts Sequentially – on a Folder – Combine Scripts into a Master Script – Stack Overflow

Posted by jpluimers on 2019/07/30

Cool tip by mjolinor to execute the scripts 1.ps1, 2.ps1 and 3.ps1 from a master.ps1 script in the same directory:

&"$PSScriptroot\1.ps1"
&"$PSScriptroot\2.ps1"
&"$PSScriptroot\3.ps1"

Source: [WayBackscripting – Run Multiple Powershell Scripts Sequentially – on a Folder – Combine Scripts into a Master Script – Stack Overflow.

It uses $PSScriptroot which got introduced in PowerShell 2 in modules and extended in PowerShell 3 to be available in all scripts. More information in [WayBack] about_Automatic_Variables | Microsoft Docs

–jeroen

Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »

What’s New In Python 3.0

Posted by jpluimers on 2019/07/30

Old, but I keep bumping in old Python code that needs conversion to work in Python 3.x: [WayBackWhat’s New In Python 3.0 — Python 3.6.3 documentation.

Via: [WayBack] Version 3: History of Python – Wikipedia

–jeroen

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

Convert cURL command syntax to Python requests, Node.js code

Posted by jpluimers on 2019/07/26

Utility for converting curl commands to code

For my link archive: [WayBack] Convert cURL command syntax to Python requests, Node.js code

–jeroen

Posted in *nix, *nix-tools, cURL, Development, JavaScript/ECMAScript, Node.js, Power User, Python, Scripting, Software Development | Leave a Comment »