Archive for the ‘Development’ Category
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:
- 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.
- 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.
- 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.
- 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.
- Online PlasticSCM hosting parties, especially integrated with bug tracking, are far and few between: besides [WayBack] PlasticSCM 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 »
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.

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 »
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 »
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 »
Posted by jpluimers on 2019/07/31
Patching code at debug-time: [WayBack] It’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 »
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: [WayBack] Ternary operator in PowerShell – Stack Overflow
–jeroen
Posted in CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »
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 »
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: [WayBack] scripting – 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 »
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 »