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

“Real Options” Underlie Agile Practices

Posted by jpluimers on 2019/10/09

On my reading list: [WayBack“Real Options” Underlie Agile Practices

Whether we realise it or not, “freedom to choose” is a principle underlying many Agile practices. By avoiding early commitments, we gain flexibility in the choices we make later. In this article, Chris Matts and Olav Maassen propose that an understanding of “Real Options” allows us to develop and refine new agile practices and take agile in directions it hasn’t gone before.

Via: [WayBack] “Real Options” Underlie Agile Practices – Marjan Venema – Google+

–jeroen

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

“Use TXSxxxx classes for simple nillable types”

Posted by jpluimers on 2019/10/08

For my link archive:

The first one missed these:

Both find these:

–jeroen

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

Git man-page generator (“Git is easy to learn”)

Posted by jpluimers on 2019/10/08

Somebody didn’t believe the claim “Git is easy to learn” and wrote a [WayBackgit man page generator  (of course with a repository: github: Lokaltog/git-man-page-generator), for example generating

git-complete-tip

NAME

git-complete-tipcomplete all non-committed downstream tips opposite of a few rebased remote indices

SYNOPSIS

git-complete-tip [ –maintain-log | –lecture-violate-history ]

DESCRIPTION

git-complete-tip completes a few staged tips inside any forward-ported non-staged unstaged indices, and a few checked out subtrees fscked by histories in the tree, but that are not in HOLD_SUBTREE, are checked out in a temporary pack.

 …

For the same reason there is [WayBack] XKXD: Git (image on the right), which is [WayBack] explained for a reason. Just see this little summary:

The difficulty of using Git in common situations is belied by the apparent simplicity of its use in tutorial-style situations. Committing and sharing changes is fairly straightforward, for instance, but recovering from situations such as accidental commits, pushes or bad merges is difficult without a solid understanding of the rather large and complex conceptual model. For instance, three of the top five highest voted questions on Stack Overflow are questions about how to carry out relatively simple tasks: undoing the last commit, changing the last commit message, and deleting a remote branch.

Actually the “easy to learn” means “there is easy to find documentation for it“.

–jeroen

via: UMass Amherst CICS Distinguished Lecture: Daniel Jackson (Massachusetts Institute of Technology) “Towards a Theory of Software Design”

Read the rest of this entry »

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

Many Computer Science concepts do not apply to Enterprise Applications

Posted by jpluimers on 2019/10/08

Old long read: [WayBackEnterpriseApplication; Martin Fowler 24 March 2014

Via: [WayBackWeekend Reader 2017.46 – reality-loop:

Characteristics of Enterprise Applications

It’s an old article but I like to come back to it from time to time: Martin Fowler describes the term “Enterprise Applications” and explains why some concepts from classical “Computer Science” are not applicable.

–jeroen

Posted in Design Patterns, Development, Software Development | Leave a Comment »

Fastener Reference Cheat Sheets, by @pighixxx | #ManufacturingMonday

Posted by jpluimers on 2019/10/04

[WayBackFastener Reference Cheat Sheets, by @pighixxx | #ManufacturingMonday

From pan flange to button washer, from socket cap to trim screw heads, not to mention threading types and drive head options, every workbench and workshop should have this fastener reference guide …

via:

–jeroen

Read the rest of this entry »

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

How to properly cleanup/shutdown a Delphi ISAPI (which uses Threads) | Mathias Pannier programmiert

Posted by jpluimers on 2019/10/03

For my link archive:

If you use Threads or global Objects (which are created in the initialization section for example) You have to cleanup/shutdown them in the OnTerminate event of the ISAPI Application. If You destroy/shutdown them in the finalization section in a unit it could end up in a hanging application pool in IIS on shutdown/reuse and some windows event log entries.

//added
procedure DoTerminate;
begin
  //free global objects and wait/terminate threads here
end;
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
begin
  ReportMemoryLeaksOnShutdown := true;
  CoInitFlags := COINIT_MULTITHREADED;
  Application.Initialize;
  Application.WebModuleClass := WebModuleClass;
  TISAPIApplication(Application).OnTerminate := DoTerminate; //added
  Application.Run;
end.

Source [WayBack] How to properly cleanup/shutdown a Delphi ISAPI (which uses Threads) | Mathias Pannier programmiert

Related:

–jeroen

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

Delphi; on my research list `Error creating form: Root class not found: “”.`

Posted by jpluimers on 2019/10/03

On my Delphi research list:

[Window Title]
Error

[Content]
Error creating form: Root class not found: "".

[OK]

I think it has to do with form inheritance, but a quick glance didn’t raise any warning signs.

–jeroen

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

Ubiquity: The End of (Numeric) Error

Posted by jpluimers on 2019/10/03

Interesting read: [WayBackUbiquity: The End of (Numeric) Error

Crunching numbers was the prime task of early computers. The common element of these early computers is they all used integer arithmetic. John Gustafson, one of the foremost experts in scientific computing, has proposed a new number format that provides more accurate answers than standard floats, yet saves space and energy. The new format might well revolutionize the way we do numerical calculations.

via:

–jeroen

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

How to break a Monolith into Microservices

Posted by jpluimers on 2019/10/02

Long read, worth it too: [WayBack] How to break a Monolith into Microservices

A guide to the common steps we’ve observed in breaking a monolithic application up into microservices

–jeroen

Via [WayBack] How to break a Monolith into Microservices https://martinfowler.com/… – Jeroen Wiert Pluimers – Google+

 

Posted in Development, Software Development, Systems Architecture | Leave a Comment »

Terminate threads during application or not?

Posted by jpluimers on 2019/10/02

I got an interesting question a while ago: should an application terminate (anonymous) threads or not?

A problem is that a thread might not execute unless you call WaitFor before Terminate is called. The reason is that the internal function ThreadProc does not start Execute if the thread is already terminated.

The ThreadProc in the System.Classes unit is an ideal place to set breakpoints in order to see which threads might start.

Other useful places to set breakpoints:

  • TAnonymousThread.Execute
  • TExternalThread.Execute

Execute not being called by ThreadProc is a bug, but it is not documented because QC is gone (taking the below entry with it), it is not in QP and the docwiki never got updated.

Given QC has so much information, I am still baffled that Embarcadero took it down.

Sergey Kasandrov (a.k.a. serg or sergworks) wrote in [WayBack] Sleep sort and TThread corner case | The Programming Works about this bug and refers to WayBack: QualityCentral 35451 – TThread implementation doesn’t guarantee that thread’s Execute method will be called at all .

The really bad thing are the WayBack: QualityCentral Resolution Entries for Report #35451 Resolution “As Designed” implying the design is wrong.

In his post, sergworks implemented the Sleep sorting in Delphi. Related:

Note that application shutdown is a much debated topic. Best is to do as little cleanup as possible: your process is going to terminate soon anyway. No need to close handles or free memory: Windows will do that for you anyway. See for instance:

 

Related to waiting:

Related to executing:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Multi-Threading / Concurrency, Software Development, The Old New Thing, Windows Development | Leave a Comment »