[WayBack] Mads Kristensen on Twitter: “Visual Studio Tip: A blue dot in the margin indicates a switch of threads while stepping through debugging. #vstip… “
–jeroen
Posted by jpluimers on 2020/01/07
[WayBack] Mads Kristensen on Twitter: “Visual Studio Tip: A blue dot in the margin indicates a switch of threads while stepping through debugging. #vstip… “
–jeroen
Posted in .NET, Development, Software Development, Visual Studio and tools | Leave a Comment »
Posted by jpluimers on 2020/01/07
In case I ever need a fading effect between 2 panels on one form, there is some code that will get me started.
I’d probably code it in a different design (without a global variable), but it works so can be a good source of ideas.
Source: Delphi/FadingEffect at master · tothpaul/Delphi · GitHub
Via: [WayBack] VCL Tiny demo of a Fading effect for Delphi Tokyo – Paul TOTH – Google+
–jeroen
Posted in Delphi, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/05
Given that I’m fighting rectal cancer and am extremely low on energy, I am keeping this much shorter than I want to.
Recently, I learned that Rudy Velthuis passed away on 2019-05-13. Born on 1960-10-30, he passed away at only age 58.
After asking permission from his family, I wrote a small im memoriam.
We frequently encountered each other on-line in the Delphi community, especially in the early days when I was way more active on forums, newsgroups and chat channels. He was famous there, with good reason.
Though colloquially known as [WayBack] “dentist with a strong interest in programming”, he was a great Delphi programmer and very well known for thoroughly documenting the many gaps that Embarcadero left in their documentation.
In 2009, Edwin van der Kraan and I had an opportunity to have dinner with Rudy. We met at his house, where we learned he not only ran a fully fledged dentistry practice, but also was married someone who origilally was from the Philippines. A truly happy couple they were.
In retrospect, I wish we had had met in real life more often, but I’m learning the hard way that life is finite giving you only so much time to do things.
I will remember Rudy because of his knowledge, wit and odd – but great – combination of work and interests.
In the mean time, I have asked a few archival organisations (including the WayBack machine) to archive his sites:
Some of his profiles that I archived on 20190103:
I love the “Kraftwerk – Autobahn” picture on his Stack Overflow profile page, so I included that song below the fold.
Related:
–jeroen
Posted in About, Delphi, Development, History, Personal, Software Development | 4 Comments »
Posted by jpluimers on 2020/01/02
list.sortsorts the list in place, i.e. it doesn’t return a new list. Just write
newList.sort()
return newList
The above answer is goden as performing return list.sort() bytes me often, because Python is usually an environment using the functional approach.
Answer from [WayBack] python – Why does “return list.sort()” return None, not the list? – Stack Overflow
Background information:
list.sort()
list.sort(cmp=None, key=None, reverse=False)- Sort the items of the list in place (the arguments can be used for sort customization, see
sorted()for their explanation).
list.sort()
list.sort(key=None, reverse=False)- Sort the items of the list in place (the arguments can be used for sort customization, see
sorted()for their explanation).
–jeroen
Posted in Development, Python, Scripting, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/02
From a while ago by a young (then ~18, now around ~20) enthusiastic Delphi programmer: [WayBack] Delphi Programming Blog (by Shaun Roselt): Delphi Communties on: WhatsApp, Telegram, Google+, Facebook
He has an interesting YouTube channel too: https://www.youtube.com/user/shaunroselt/videos
–jeroen
Via: [WayBack] More Delphi communities! – Ilya S – Google+
Posted in Delphi, Development, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/02
For my link archive: GitHub – Libaud/POLCLVCLISO: Pascal Object LCL and VCL ISO standards implementation for CodeTyphon, Delphi, Lazarus
It implements these standards:
A library like this needs monitoring the standards changes, so hopefully Libaud will do that.
Some of my posts related to ISO 3166 are below.
–jeroen
Related:
Posted in Delphi, Development, FreePascal, Lazarus, Pascal, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/01
[WayBack] __main__ — Top-level script environment — Python 3 documentation recommends code like this:
if __name__ == "__main__":
# execute only if run as a script
main()
This has many cool possibilities, including these that I like most as a beginning Python developer:
def main(): function in a separate source filereturn prematurely from your main function (you cannot do this from the main block)Related:
–jeroen
Posted in Conference Topics, Conferences, Development, Event, Python, Scripting, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/01
For my link archive step by step instruction on the command-line which can be automated:
Via:
–jeroen
Posted in 7zip, Batch-Files, Compression, Development, Power User, Scripting, Software Development | Leave a Comment »
Posted by jpluimers on 2020/01/01
Below an elaboration on my answer to the question [WayBack] I don’t understand the following part of the second Delphi example:TThread.Synchronize… – Alberto Paganini – Google+:
I was looking at the Task example at the EMB wiki link below
and I don’t understand the following part of the second Delphi example:
TThread.Synchronize(nil, procedure begin Label1.Text := lValue.ToString; end);why is there the need to pass
Label1.Text := lValue.ToString;asprocedureinTThread.Synchronize?Why not a simple
Label1.Text := lValue.ToString;?
Basically that question can be either of these:
procedure (anonymous method).TThread.Synchronize at all?The tutorial that Alberto refers to is [WayBack] Tutorial: Using Tasks from the Parallel Programming Library – RAD Studio. That example uses the TTask feature in Delphi, but the portion he has a question about is general to any multi-treading in Delphi that touches the updating of a VCL or FMX UI from another thread.
This is the more complete code in the meant example:
procedure TForm1.ButtonTask1Click(Sender: TObject);
var
lValue: Integer;
begin
Label1.Text := '--';
TTask.Run(procedure
begin
{Some calculation that takes time}
Sleep(3000);
lValue := Random(10);
TThread.Synchronize(nil,
procedure
begin
Label1.Text := lValue.ToString;
end);
end);
end;
What happens here is that the TTask is used to run some code (starting with {Some calculation that takes time}) in a different thread (that is being determined by the framework behind TTask).
I recommend against using
TTask(or any other part of the Delphi Parallel Programming Library) as I agree with Stefan Glienke in [WayBack] Hello, Do you know why the “default” keyword of a class property is sometime defined also as an attribute ? – Paul TOTH – Google+:If that works as well as the PPL does I would not touch it with a 10 foot pole ;)
With “that”, he refers to the APL (Asynchronous Programming Library [Archive.is]) which got introduced in Delphi XE8 and adds asynchronous support for UI controls, but unlike .NET (which implements it on the .NET
TControlequivalent) shifted it down toTComponentprobably because that’s the common ancestor for both VCL and FMX. But that’s a topic for another day.The Delphi Parallel Programming Library (DPL) is a complex and intricate framework originally started as Delphi Parallel Library (DPL) and modelled after [WayBack] Intel’s Threading Building Blocks (TBB) and Microsoft’s Task Parallel Library (TPL) (not in WayBack, but moved to the CHM file [WayBack], see also[WayBack] Task Parallel Library changes since the MSDN Magazine article | Parallel Programming with .NET)
Most parts of the DPL were written over at least 7 years time by former Chief Scientist Allen Bauer and introduced in Delphi XE7 as the Delphi Parallel Programming Library (PPL), see [WayBack] Delphi Parallel Programming Library & Memory Managers – Steve Maughan and [WayBack] The Oracle at Delphi: Lock my Object… Please!.
Since Delphi XE7, the PPL hardly got maintenance and now most if not all of the people having knowledge about it have left Embarcadero: early 2016, [Archive.is] Delphi Chief Scientist Allen Bauer Has Left Embarcadero/Idera | Hacker News leaving a big gap as “There are no plans that I’m aware of to move someone into my old position… All those that I would consider qualified are either already gone or are currently looking elsewhere.” (it is not in the [WayBack] part of How safe is Delphis future? Who is the new Lead Compiler Engineer? Who is the new Chief Scientist? – Ralf Stocker – Google+, hence the screen shot).
Luckily, Allen copied most of his old Embarcadero blog over to his personal one (including comments!), so there is quite some historic reference, see for instance [WayBack] Thread pools <> Task handling. – Community Blogs – Embarcadero Community and [WayBack] The Oracle at Delphi: Thread pools <> Task handling.
procedure (anonymous method).TThread.Synchronize at all?Lets start with the questions in order I answered them, starting with the my response:
Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »
Posted by jpluimers on 2019/12/31
On my list of things to check later: FMBC a Delphi implementation of MVVM? [WayBack] from old school to new frontier: Pattern, naming and MVVM from a Delphi point of view.
via: [WayBack] #FBMC the new MVVM 2.5? – Frank Lauter – Google+
–jeroen
Posted in Delphi, Development, Software Development | Leave a Comment »