For my link archive:
Archive for the ‘Software Development’ Category
.NET: interfaces that inherit from multiple base interfaces
Posted by jpluimers on 2020/12/03
Posted in .NET, C#, Delphi, Development, Software Development | Leave a Comment »
I’m using Delphi XE 10.2: empty documentation tab means you need to update to either the documentation Hotfix or 10.2.3
Posted by jpluimers on 2020/12/03
If you see the Documentation tab like below you need to either:
- install the[WayBack] 10.2.2 Welcome Page and Documentation Hotfix – Community Blogs – Embarcadero Community
- update to 10.2.3
- manually fix the html/CSS width fiddling in
documentation.htm(a name showing the age of the file) as described in [WayBack] Embarcadero Discussion Forums: Tokyio 10.2.2 …
The problem is caused by Embarcadero using mixed technologies in the Delphi IDE combined with their lack of testing due to not eating their own dog-food.
Too bad, as the documentation over the last versions has finally increased after a 10+ year steady decline.
Doing one technology right is hard, but having to mix multiple technologies into one product is extremely hard.
Via: [WayBack] I’m using Delphi XE 10.2. Whenever I click on the Documentation tab, I see the following uselessly rendered page. I can’t seem to resize it either. Anyb… – Graeme Geldenhuys – Google+
–jeroen
Posted in Delphi, Delphi 10.2 Tokyo (Godzilla), Development, Software Development | Leave a Comment »
Lecture 9B | MIT 6.001 Structure and Interpretation, 1986 – YouTube
Posted by jpluimers on 2020/12/02
Great way of learning, as 1980s teachers show the power of just a chalk board for explaining things.
Holiday binge watching (and reading): Structure and Interpretation of Computer Programs. Favorite video in the series: https://www.youtube.com/watch?v=SLcZXbyGC3E – where the two wizard profs explain / ‘role play’ the register machine with the stack.
1980s style at its best – you don’t need infographics and animations – just a chalkboard.
Via
- [WayBack] Holiday binge watching (and reading): Structure and Interpretation of Computer Programs. Favorite video in the series:… – Jürgen Christoffel – Google+
- [WayBack] Holiday binge watching (and reading): Structure and Interpretation of Computer Programs. Favorite video in the series:… – Elke Stangl (elkement) – Google+
–jeroen
Posted in Development, Software Development | Leave a Comment »
Making it dead simple to implement @haveibeenpwnd in your applications, including strength warning if found in @troyhunt’s password collection.
Posted by jpluimers on 2020/12/02
I wasn’t aware that Troy Hunt created an API [WayBack] for [WayBack] Have I Been Pwned: Check if your email has been compromised in a data breach.
He did, as I noticed through [WayBack] Michelangelo van Dam on Twitter: “Making it dead simple to implement @haveibeenpwnd in my applications, including strength warning if found in @troyhunt’s password collection. Check out to try it out yourself. #ImproveSecurity #haveibeenpwnd”.
There are in fact plenty of other packages, web-sites and apps using the API as seen on [WayBack] Have I Been Pwned: API consumers.
Many people ask “if it is safe” (often assuming passwords are sent in clear, or hashes are sent in full; my fear is that those people implement security somewhere).
It is safe:
- [WayBack] Have I Been Pwned: Privacy
- [WayBack] Michelangelo van Dam on Twitter: “Simply put: you enter password, I sha1 hash it and send the first 5 chars of that hash to hibp. Then I get list of hashes and counts that begin with those 5 chars and I perform lookup for the full hashed pwd and return the count. Lookup runs on my server where you entered pwd.”
- [WayBack] Michelangelo van Dam on Twitter: “HIBP returns me a list of hashes that all begin with those first 5 chars I sent to the service, including a count of how many times this hash was found in breaches. On my server I match the entered pwd hash against that list and when found I return the count. See my git repo.”
- [WayBack] Michelangelo van Dam on Twitter: “Just provided more context to my “dragonbe/hibp” package and how one should use #HaveIBeenPwnd service. “


PHP source is at [WayBack] GitHub – DragonBe/hibp: A composer package to verify if a password was previously used in a breach using Have I Been Pwned API.
There is also a [WayBack] composer package at [WayBack] dragonbe/hibp – Packagist.
A really cool thing on it is this:
This project was also the subject of my talk [WayBack] Mutation Testing with Infection where the code base was not only covered by unit tests, but also was subjected to Mutation Testing using [WayBack] Infection to ensure no coding mistakes could slip into the codebase.
Apart from the tests, the most important source is at [WayBack] hibp/Hibp.php at master · DragonBe/hibp · GitHub
Related:
- [WayBack] Jeroen Pluimers on Twitter: “The people asking if passwords or full hashes are being sent or handed off make me fear those same people implement security. My wish for 2019 is that I am really wrong on this assumption.”
- [WayBack] Jeroen Pluimers on Twitter: “@Bored0ne @DragonBe @troyhunt @haveibeenpwned Yes, it is.”
- Check out XposedOrNot (@XposedOrNot): https://twitter.com/XposedOrNot?s=09
–jeroen
Posted in Development, Mobile Development, PHP, Python, Scripting, Software Development, Web Development | Leave a Comment »
Delphi spring collections
Posted by jpluimers on 2020/12/02
[WayBack] Spring Collections I have a list of elements, there are, for example, 100 of them. List : IList; I want to get 5 values greater than 10 and … – Jacek Laskowski – Google+
Q
I have a list of elements, there are, for example, 100 of them.
List : IList<Integer>;I want to get 5 values greater than 10 and I do it like this:
result: = List.Where(ValueIsGreatThan10).Take(5);Will the “work loop” be executed a minimum number of times and if, for example, the first 5 values in the list will be greater than 5, then only the five will be checked? Or maybe the
Where()loop will scan 100 elements, andTake()will return the first 5 results?
A (by Stefan Glienke)
WhereandTakeare streaming operators and only execute as much as required.Also the operations have deferred execution. So your statement does not materialize any collection yet. Only if you iterate it will.
They are designed after the operators in .NET so the table from [WayBack] Classification of Standard Query Operators by Manner of Execution (C#) | Microsoft Docs applies. If you find any difference please report it.
Example:
var nums: IEnumerable<Integer>; i: Integer; begin nums := TEnumerable.Range(1, 100).Where( function(const i: Integer): Boolean begin Writeln('checking: ', i); Result := i > 10; end ).Take(5); Writeln('query created'); for i in nums do Writeln('got number: ', i); end.This code will print:
query created checking: 1 checking: 2 checking: 3 checking: 4 checking: 5 checking: 6 checking: 7 checking: 8 checking: 9 checking: 10 checking: 11 got number: 11 checking: 12 got number: 12 checking: 13 got number: 13 checking: 14 got number: 14 checking: 15 got number: 15
–jeroen
Posted in .NET, Delphi, Development, Software Development | Leave a Comment »
How to have git log show filenames like svn log -v – Stack Overflow
Posted by jpluimers on 2020/12/01
I stick to git log --name-status as suggested in [WayBack] How to have git log show filenames like svn log -v – Stack Overflow.
A slightly less readable alternative isgit log --num-status .
There is also git log --name-only as suggested in [WayBack] How to show changed file name only with git log? – Stack Overflow
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Software Development, Source Code Management | Leave a Comment »
Delphi Compiler Intrinsics can help you collapse generated code for generics a lot
Posted by jpluimers on 2020/12/01
On my reading list [WayBack] Delphi Corner Weblog: The current state of generics in Delphi because it explains in more detail why Delphi compiler generic type based intrinsics introduced some 5 years ago, but never been (accurately) documented, but listed at [WayBack] delphi – Undocumented intrinsic routines – Stack Overflow, are so important to help collapse decreasing code bloat:
DefaultIsManagedTypeHasWeakRefGetTypeKind
There is also the TypeInfo which is somewhat documented on-line starting in the Delphi 2007 documentation:
- [WayBack] E2133: TYPEINFO standard function expects a type identifier
- [WayBack] TypInfo.PTypeInfo Type
And some non-generic intrinsics that are still undocumented:
IsConstValueReturnAddress
Spring4D already has been making use of this for a few years, and you can too!
Via [WayBack] rvelthuis.blogspot.com/2018/10/the-current-state-of-generics-in-delphi.html – Jacek Laskowski – Google+ that has some more information on Spring4D too.
A tiny bit more information on collapsing: [WayBack] TURBU Tech » Blog Archive » Wish list: Generics collapsing
–jeroen
Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »
Aaron Tay on Twitter: “trying experimental Wayback Machine Chrome ext from @internetarchive . There’s usual find latest/earliest archived versions and “context”, which just checks whois, annotations from https://t.co/qlqDUJNkIa, tweets etc but “find cited books and papers” is only on wikipedia pages… https://t.co/QqFSQ2HJ3e”
Posted by jpluimers on 2020/11/27
On my list of things to try:
–jeroen
Posted in Chrome, Chrome, Development, Google, Power User, Software Development, Web Browsers | Leave a Comment »
SEP92: A VIDEO COMPATIBILITY INTERFACE FOR TURBO DEBUGGER
Posted by jpluimers on 2020/11/26
[WayBack/Archive] SEP92: A VIDEO COMPATIBILITY INTERFACE FOR TURBO DEBUGGER
Blast from the past, which reminds me of the days that Peter Sawatzki used this interface to write a DLL that allowed Turbo Debugger for Windows (TDW) run on a secondary monochrome screen using a special TDVIDEO.DLL.
That way you could debug Windows applications without distorting the screens, highly speeding up the debugging process.
Lot’s of stuff from that era got never archived, so I wish I could have found it in my archive, but I seem to have lost it.
Found via:
–jeroen
Posted in Debugging, Development, Pascal, Software Development, Turbo Debugger, Turbo Pascal | Leave a Comment »





