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,835 other subscribers

Archive for the ‘Development’ Category

Are there any static code analysis tools for Delphi/Pascal? – Stack Overflow

Posted by jpluimers on 2020/06/02

Still interesting question: [WayBack] Are there any static code analysis tools for Delphi/Pascal? – Stack Overflow

The basic problem here is that there is no formal language definition for the Delphi or Object Pascal language.

[WayBack] GitHub – RomanYankovsky/DelphiAST: Abstract syntax tree builder for Delphi (which also supports FreePascal and Lazarus) comes closest, and is used by FixInsight.

All other tools have more or less problems parsing various language constructs.

This starts with the built-in tooling that is based on [WayBack] Modeling Applications with Together which basically has not been maintained since the Delphi 2007 era.

Then there is for instance [WayBack] Code Healer Group CodeHealer for Delphi, but their [WayBack] Code Healer Group Forums – Index page have no messages since 2016.

Another wrapper around DelphiAST, is [WayBack] GitHub – MikhailIzvekov/DelphiSCA: Static code analysis tools for Delphi, which has a visual way to walk that AST. But it has not been maintained for years. The cool thing however, is that the AST is in sync with the code editor.

Finally, TestInsight uses DelphiAST to go to the right source code location.

--jeroen

Read the rest of this entry »

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

SysUtils.pas Why parameters of these anonymous not const? TProc = …

Posted by jpluimers on 2020/06/02

At [WayBack] SysUtils.pas Why parameters of these anonymous not const? TProc = reference to procedure (Arg1: T1; Arg2: T2); TProc = reference … – Jacek Laskowski – Google+, Hallvard Vasbotn made this nail on the head comment:

It could have been solved if the const’ness had been seen as a implementation detail by the compiler (which it really is) and made const and non-const signatures assignment compatible.

It was changes like the above that I had hoped for when writing Source: 15 months later: what happened to Delphi Language Enhancements? « The Wiert Corner – irregular stream of stuff.

Now we are another 27 months later, so this again is a reminder to check what the compiler team (man?) has improved on the language side.

–jeroen

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

How do I delete a Bash function? – Stack Overflow

Posted by jpluimers on 2020/06/02

I hardly do this, so I tend to forget that unset -f functionname deletes a function and unset variablename or unset -v variablename deletes a variable.

From:

I have done this:bash $ z() { echo ‘hello world’; }How do I get rid of it?

Source: [WayBackHow do I delete a Bash function? – Stack Overflow

Reference: [WayBack] unset Man Page – Bash – SS64.com

–jeroen

Posted in *nix, *nix-tools, bash, bash, Development, Power User, Scripting, Software Development | Leave a Comment »

GitHub – kzahel/web-server-chrome: An HTTP Web Server for Chrome (chrome.sockets API)

Posted by jpluimers on 2020/06/01

Cool: [WayBack] GitHub – kzahel/web-server-chrome: An HTTP Web Server for Chrome (chrome.sockets API)

This allows you to develop HTTP applications that live in Chrome:

[Archive.is1/Archive.is2Web Server for Chrome – Chrome Web Store: A Web Server for Chrome, serves web pages from a local folder over the network, using HTTP. Runs offline.

Of course you could to python -m SimpleHTTPServer 8888 or python -m http.server 8888, but this runs within chrome and can be used from inside JavaScript projects.

Features

  • serve local files
  • configure listening port
  • configure listening interface (e.g. localhost or all interfaces)
  • custom http handlers possible
  • websocket support available
  • works nice with chrome.runtime.onSuspend
  • options for autostart, start in background, etc etc.
  • handles range requests, HEAD, etc
  • options for CORS
  • optional PUT, DELETE request (for upload files)
  • sets MIME types
  • can render directory listing
  • See relevant options: https://github.com/kzahel/web-server-chrome/blob/master/polymer-ui/options.js

Via [WayBack] This is super useful: A# web #server that runs in #Chrome! Makes it super easy to do local web dev without the hassle of setting up a complex back end s… – Jason Mayes – Google+

–jeroen

Posted in Chrome, Development, Google, JavaScript/ECMAScript, Power User, Scripting, Software Development, Web Development | Leave a Comment »

Remote Desktop Auto Login Powershell Script · GitHub

Posted by jpluimers on 2020/05/29

Interesting: some PowerShell scripts that pipe a user and password through cmdkey.exe /generic:TERMSRV/$Computer /user:$User /pass:$Pass

–jeroen

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

TOP 10 CD/DVD/Floppy Drives based Projects – YouTube

Posted by jpluimers on 2020/05/28

Cool stuff: TOP 10 CD/DVD/Floppy Drives based Projects – YouTube.

Via:

–jeroen

Read the rest of this entry »

Posted in Development, Hardware Development, LifeHacker, Power User | Leave a Comment »

GitHub – dschmenk/apple2pi: Apple II client/server for Raspberry Pi

Posted by jpluimers on 2020/05/28

[WayBack] GitHub – dschmenk/apple2pi: Apple II client/server for Raspberry Pi: hybrid computer of a Raspberry Pi inside an Apple II (either ][, or ][+, or //e) so the Apple II can be a front-end to the Raspberry Pi which then can run an Apple IIGS emulator, talk to the Apple II storage hardware and much more.

It can run [WayBack] RASPPLE II: A2CLOUD, A2SERVER, Apple II Pi for Raspberry Pi

Lot’s of videos below, all by David Schmenk https://www.youtube.com/user/dschmenk/videos

Via:

–jeroen

 

 

Posted in *nix, *nix-tools, //e, 6502, Apple, Apple ][, Development, Hardware Development, Hardware Interfacing, History, Power User, Raspberry Pi, USB | Leave a Comment »

Best android apps for zabbix – AndroidMeta

Posted by jpluimers on 2020/05/28

If I land a project using Zabbix again, one of the things I need to look into is [WayBackBest android apps for zabbix – AndroidMeta.

–jeroen

Posted in *nix, Android, Android Devices, Development, Linux, Mobile Development, Monitoring, Power User, Zabbix | Leave a Comment »

Davidlohr Bueso on Twitter: A programmer had a problem. He thought to himself, “I know, I’ll solve it with threads!”. has Now problems. two he

Posted by jpluimers on 2020/05/27

When doing multi-threading, I’m always reminded of [WayBack/Archive.isDavidlohr Bueso on Twitter: A programmer had a problem. He thought to himself, “I know, I’ll solve it with threads!”. has Now problems. two he

Even with the advent of multi-core architectures long behind us (multi core hardware has been in a mature state for a long time), software for it often is not.

It is not just that programmers are not ready to do it (indeed often they are not: multi-threading is hard), but also that many pieces of software run perfectly fine in a single thread.

So when you do want to implement multi-threading, think twice.

It is one of the reasons I ported a C# version of the Deadlock Empire game (written in HTML + JavaScript) to generate Delphi code and examples. I was really glad that Dalija Prasnikar pointed to it in [WayBack] What is thread safety anyway?, and also pointed to the very important [WayBack] What is this thing you call “thread safe”? – Fabulous Adventures In Coding.

That last one stresses that multi-threading has vague definitions. It will stay vague because the problems you can encounter are virtually endless. There is no silver bullet: Lars Fosdal made this really nice remark in [WayBack] Multithreading can be hard to do right… – Dalija Prasnikar – Google+:

Locking too much is even worse than locking too little. It is very easy to deadlock with overly detailed locking. Applying locking in the wrong place, can serialize threads through a lock bottleneck.

Learning multithreading is a long series of mistakes that you probably can’t avoid, even if told about them up front. You are probably best off having to make the mistakes yourself and then learn from them ;)

To which Asbjørn Heid added:

… after a while I came to the realization that recursive locks are evil. They make it so easy to “just lock everything”. In contrast, non-recursive locks forces you to have explicit “thread-safety borders” in your code. And such borders really leads to better designs.

Here are the games:

Related:

–jeroen

 

 

Posted in Conference Topics, Conferences, Development, Event, Multi-Threading / Concurrency, Software Development | Leave a Comment »

Need to look at monospaced programmers fonts again

Posted by jpluimers on 2020/05/27

At the time of looking, FiraCode would not work in Delphi but would in Visual Studio. Reminder for me to look at it again: [WayBack] GitHub – tonsky/FiraCode: Monospaced font with programming ligatures.

A cool feature of the font is that it has ligatures for common multi-character combinations like := or ...

Back when scheduling this, I was still at Lucida Console because of its large x-height and small line spacing.

It is time to revisit my font choice, so lets include at least these candidates:

–jeroen

related:

Edit 20200527: observations by Uwe Schuster

Posted in .NET, Delphi, Development, Font, Power User, Programmers Font, Software Development, Visual Studio 2015, Visual Studio and tools, vscode Visual Studio Code | Leave a Comment »