Archive for the ‘Development’ Category
Posted by jpluimers on 2017/01/03
The first implementation of Compiler Explorer supports many versions of the gcc, clang and icc compilers on ARM, ARM64, AVR and x86 targets.
On the left you type your C++ code, on the right you see the resulting assembler code optionally with byte code and colorised so you can correlate the C++ lines with the assembly.
A great way to start the year: learning new things!
Related:
–jeroen
via:
Some videos:
Read the rest of this entry »
Posted in ARM, Assembly Language, C++, Conference Topics, Conferences, Development, Event, Software Development, x86 | Leave a Comment »
Posted by jpluimers on 2017/01/03
I got a bit fed-up with the deprecated Microsoft Silverlight reappearing as KB3056819 in each Windows Update within minutes of hiding it (I’m not alone on this, it does this when you have configured to favour the Microsoft Update Servers – that also update Office – in favour of the Windows Update Servers).
Two really odd things:
- In the past, I hid “Skype for Windows desktop 7.3 (KB2876229)” which stayed hidden.
- I never installed Silverlight, there is no Silverlight on the system (I checked the registry, file system with Everything and more), but the update keeps re-appearing (like KB960353 does for others).
So I wanted a script that every minute could check for a Microsoft Silverlight update, then hide it.
That appeared a lot more cumbersome than I anticipated, hence this blog post.
The reason is that unlike many other operating systems, Windows does not come with a build-in package manager that you can script (there is Windows Installer, but is’s not easily scriptable).
Read the rest of this entry »
Posted in Development, PowerShell, Scripting, Software Development | Leave a Comment »
Posted by jpluimers on 2017/01/02
A long time ago (2014!), [WayBack] Great tutorial on how to split older Git commits: http://bit.ly/1rE72cI – should be used with care, but this can be a lifesaver and a really useful trick… – Ilya Grigorik – Google+ pointed me the below tutorial.
It has been in my drafts since then, but recently I found it back when I needed to rebase unpushed commits. Indeed it’s a great tutorial!
Executing the git rebase --interactive concepts can be tricky as they are on a way higher level than regular git work. So sometimes you want to exit vim notifying git to stop the current action. The easiest way I found was this vim command I found at [WayBack] How to abort a git rebase in interactive editor (thanks [WayBack] Telmo Costa!):
:cx
Via the tutorial, I also bumped into a few advanced git add features:
Another very powerfull feature is git add -p a.k.a. git add --patch which allows you to stage parts (or hunks) of a file.
[WayBack] git add -p: The most powerful git feature you’re not using yet
You can go even further with git add --interactive as this blog post shows:
[WayBack] git add –patch and –interactive
Back to the tutorial:
[WayBack] Going back in time to split older commits by thoughtram
Rebasing in Git allows you to go back in time to split older commits. In this article we’ll explore how to do exactly that!

git rebase –interactive
Before the tutorial explains how to amend git commits, it covers these git rebase --interactive commands:
- pick
- reword
- edit
- squash
- fixup
Note that squash will combine the commit on that line with the commit on the line above it.
There is one more little trick: to limit the number of commits (that’s normally limited to the unpushed ones), add like HEAD~4 which limits it to 4 commits.
Finally you can even use this for cherry picking, which I need to put on my research list: [WayBack] git: obtain the benefits of git rebase --interactive for cherry picks – Stack Overflow
Further reading:
–jeroen
Posted in Development, DVCS - Distributed Version Control, git, Source Code Management | Leave a Comment »
Posted by jpluimers on 2016/12/30
When you ship OpenSSL DLLs, you should provide an update mechanism outside of your regular product cycle that updates these shortly after vulnerabilities are fixed.
Few if any products do that. So I made an overview from products and OpenSSL DLL versions I had installed on various systems.
I’m a developer, so the list is biased towards tools I use often.
All of them are vulnerable: [WayBack] https://www.openssl.org/news/vulnerabilities.html
- 1.0.2.h by ContinuaCI 1.8.1.185 PostgreSQL and Avast 12.3
- 1.0.2.g by SourceTree 1.9.x embedded git_local
- 1.0.2d by Git for Windows 2.6.1
- 1.0.2a by SQLite browser 3.7.0
- 1.0.1m by Delphi 10.0 Seattle
- 1.0.1l by Ruby 2.3
- 1.0.1f by SlikSvn 1.8.5
- 1.0.1g by Delphi XE8, Delphi XE7, VMware Workstation OVF tool and Adobe Creative Cloud 2.8.1
- 1.0.0g by Delphi XE6, Delphi XE5, Delphi XE4, Delphi XE3, Appmethod 1.13 and CollabNet SVN Client 1.7.5
- 1.00d by MarkdownPad 2
- 1.0.0 by FinalBuider 7 XE2 and FinalBuilder 7 EE
- 0.9.8za by VMware Remote Console Plug-in 5.1 and VMware Virtual Infrastructure Client 5.1
- 0.9.8y by VMware VIX Workstation 10
- 0.9.8t by Veaam Backup and Replication
- 0.9.8r by ContinuaCI 1.8.1.185 hg support, VMware VIX and VMware Workstation 8.0.2
- 0.9.8q by Veeam Backup Transport, Veaam Backup, xampp 1.7.4 and Replication and VMware Virtual Infrastructure Client 5.0
- 0.9.8o by xampp 1.7.4
- 0.9.8l by xampp 1.7.4
- 0.9.8n by Delphi XE2, Delphi XE and VMware VIX Workstation 7.1.0
- 0.9.8m by VMware VMRC Plug-in, VMware VIX and VMware Workstation 8.0.2
- 0.9.8i by VMware Virtual Infrastructure Client 4.1
- 0.9.8d by Database Workbench Pro 4.4.3, Database Workbench Pro 5.2.4 and VMware vSphere CLI Perl
- 0.9.8b by Adobe Creative Suite 5
- 0.9.7m by VMware VIX server 1.0.9
- 0.9.7l by VMware VIX VIServer 2
- N/A by Adobe Create Suite 5 and VMware VIX server 1
–jeroen
via: [WayBack] Does Delphi installer install OpenSSL dll’s?
PS: Below some Software Archeology related links in the comments.
Posted in .NET, CollabNet, Delphi, Development, DVCS - Distributed Version Control, git, OpenSSL, Power User, Ruby, Security, Software Development, Source Code Management, SourceTree, Subversion/SVN | 7 Comments »
Posted by jpluimers on 2016/12/30
Now that everyone has had enough time to get proper TLS certificates using for instance LetsEncrypt, it’s time to up the ante: score better than an A on the SSL Labs tests from either their main site or dev site:
Here are some links to get there:
–jeroen
Posted in *nix, Apache2, Communications Development, Development, Encryption, Internet protocol suite, Let's Encrypt (letsencrypt/certbot), Power User, Security, TCP, TLS | Leave a Comment »
Posted by jpluimers on 2016/12/29
In recent Delphi version, FastReport version 5 ships. But for parts of FastReport, it’s a trial. This includes the FastScript part. The trial is very close to the real FastReport 5 thing. So real that when you compile you don’t see a difference, not even when trial and official things are mixed.
The only difference is that the trial will have a ShowMessage result like this:

ShowMessage(‘Unregistered version of FastScript’);
[Window Title]
Fastscriptexecute
[Content]
Unregistered version of FastScript.
[OK]
This occurred when I tried to move a the build process to a build server; a very tiny program will show this:
program FastScriptExecute;
uses
Vcl.Forms,
fs_iinterpreter;
{$R *.res}
var
fs: TfsScript;
begin
fs := TfsScript.Create(nil);
try
fs.Execute();
finally
fs.Free();
end;
end.
The build server had Delphi installed but not FastReports 5. I put all the sources in version control and fiddled with the project search paths until it built on the server.
Wrong!
Since the trial is so close to the real version, it will compile even if you don’t include all directories. In fact some permutations of the FastReports source and Delphi XE8 FastReports trial DUCs build perfectly fine.
Read the rest of this entry »
Posted in Delphi, Delphi XE8, Development, FastReport, Software Development | 1 Comment »
Posted by jpluimers on 2016/12/28
For my reference:
select 'Date literal values' as description
, (cast('now' as timestamp)) as nowTimeStamp
, (cast('today' as timestamp)) as todayTimeStamp
, (cast('tomorrow' as timestamp)) as tomorrowTimeStamp
, (cast('yesterday' as timestamp)) as yesterdayTimeStamp
, cast(cast('Now' as date) as varchar(10)) as nowDateCast
, replace(cast(cast('Now' as date) as varchar(10)), '-', '') nowDateIso8601
, cast(cast('Now' as time) as varchar(13)) as nowTimeCast
, replace(cast(cast('Now' as time) as varchar(13)), ':', '') nowTimeIso8601
, cast(cast('Now' as timestamp) as varchar(24)) as nowTimeStampCast
, substring(replace(replace(replace(cast(cast('Now' as timestamp) as varchar(24)), '-', '') , ' ', 'T'), ':', '') from 1 for 15) as nowTimeStampIso8601
from rdb$database
;
Output and transposed output:
DESCRIPTION NOWTIMESTAMP TODAYTIMESTAMP TOMORROWTIMESTAMP YESTERDAYTIMESTAMP NOWDATECAST NOWDATEISO8601 NOWTIMECAST NOWTIMEISO8601 NOWTIMESTAMPCAST NOWTIMESTAMPISO8601
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Date literal values 3-8-2016 8:45:12 3-8-2016 4-8-2016 2-8-2016 2016-08-03 20160803 08:45:12.3860 084512.3860 2016-08-03 08:45:12.3860 20160803T084512
DESCRIPTION Date literal values
NOWTIMESTAMP 2016-08-03 8:45:12
TODAYTIMESTAMP 2016-08-03
TOMORROWTIMESTAMP 2016-08-04
YESTERDAYTIMESTAMP 2016-08-02
NOWDATECAST 2016-08-03
NOWDATEISO8601 20160803
NOWTIMECAST 08:45:12.3860
NOWTIMEISO8601 084512.3860
NOWTIMESTAMPCAST 2016-08-03 08:45:12.3860
NOWTIMESTAMPISO8601 20160803T084512
References:
–jeroen
Posted in Database Development, Development, Firebird | Leave a Comment »
Posted by jpluimers on 2016/12/28
Thanks James Gosling for writing this, and Kristian Köhntopp for pointing me to it:
by Peter Deutsch
Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.
| 1. |
The network is reliable |
| 2. |
Latency is zero |
| 3. |
Bandwidth is infinite |
| 4. |
The network is secure |
| 5. |
Topology doesn’t change |
| 6. |
There is one administrator |
| 7. |
Transport cost is zero |
| 8. |
The network is homogeneous |
| For more details, read the article by Arnon Rotem-Gal-Oz |
Summary of the full PDF paper
With almost 15 years since the fallacies were drafted and more than 40 years since we started building distributed systems – the characteristics and underlying problems of distributed systems remain pretty much the same. What is more alarming is that architects, designers and developers are still tempted to wave some of these problems off thinking technology solves everything.
Remember that (successful) applications evolve and grow so even if things look Ok for a while if you don’t pay attention to the issues covered by the fallacies they will rear their ugly head and bite you.
I hope that reading this paper both helped explain what the fallacies mean as well as provide some guidance on what to do to avoid their implications.
–jeroen
Posted in Development, Software Development | Leave a Comment »