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

Archive for June, 2018

I wish the Delphi language supported multi-line strings

Posted by jpluimers on 2018/06/21

Very often, I see people ask for how to embed multi-line strings in a Delphi source file.

The short answer is: you can’t.

The long answer is: you can’t and if you want you have to hack your way around.

The answer should be: just like any of these languages that do support multiline strings:

Many languages support this through a feature called HEREDOC.

Now in Delphi and other languages like Java are building ugly workarounds like for instance this one: [WayBackRAD Studio Tip: Using resource scripts to organize project dependencies. – Chapman World.

–jeroen

Posted in .NET, C#, Delphi, Development, JavaScript/ECMAScript, Python, Ruby, Scripting, Software Development | 17 Comments »

The Spilled Juice Analogy for Technical Debt | Disciplined Agile 2.X

Posted by jpluimers on 2018/06/21

Interesting take on Technical Debt: [WayBackThe Spilled Juice Analogy for Technical Debt | Disciplined Agile 2.X

Not just because of the analogy, but also because of this comment by Ramu Iyer:

Conway’s Law states that software (or the structure of an IT system) mimics and is isomorphic to the organizational-social structure around it. In layman’s terms, a poorly designed software system is a vivid indicator of the underlying pattern of team communication, coordination and cooperation in the software team. Oftentimes, strained social and organizational interactions get in the way of smooth software development and operation. This results in social liabilities during intergroup coordination and accumulates “social debt” within or across one or more communities in a (software) organization. Any suboptimal socio-technical decisions also impact the technical debt of a software system in tandem. Digging one’s “way out of the technical debt pit” also requires the proactive mitigation of social debt around a system.

Reference:
D. A. Tamburi, et al. Social debt in software engineering: Insights from the industry. Journal of Internet Services & Applications, 2015.

–jeroen

via: [WayBack] Vivid and better analogy than interest payments.The Spilled Juice Analogy for Technical Debt http://buff.ly/2nax1Ng #technicaldebt – Marjan Venema – Google+

 

Posted in Development, Software Development, Technical Debt | Leave a Comment »

Two cool features of the TestInsight treeview – navigate and copy

Posted by jpluimers on 2018/06/20

TestInsight is a great tool for automatically running your unit tests and seeing the results to make you more productive.

Two of the results treeview features you might not know make you even more productive:

  • After selecting a node, pressing Ctrl-C will copy the content as text to the clipboard
  • Double clicking will bring you to the unit test in your source code

You can get TestInsight at sglienke / TestInsight — Bitbucket

–jeroen

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

Class helpers and virtual methods – E2003 Undeclared identifier: ‘QueryInterface’/ ‘_AddRef’/’_Release’

Posted by jpluimers on 2018/06/20

Reminder to self: if you want to stay compatible with old (Pre Delphi XE) source code, then do not use virtual methods in class helpers.

Technically you can, as class helpers can inherit from other class helpers, but this is only supported as of Delphi XE.

In lower versions you get these errors as apparently the Delphi compiler tags an IInterface to the class helper compiler result:

[Error] Project1.dpr(14): E2003 Undeclared identifier: 'QueryInterface'
[Error] Project1.dpr(14): E2003 Undeclared identifier: '_AddRef'
[Error] Project1.dpr(14): E2003 Undeclared identifier: '_Release'

Source: [WayBackQualityCentral 9782

–jeroen

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

Amazon Alexa on a Raspberry Pi (add a USB microphone and a speaker with a 3.5mm plug)

Posted by jpluimers on 2018/06/19

I never realised that Amazon Alexa has an open source account on GitHub: https://github.com/alexa

There are full instructions on getting a Java based Alexa Voice Service (AVS) – also used by Amazon Echo – to run on a Raspberri Pi (3 or better recommended, works on 2 as well) with this extra hardware:

  • USB microphone
  • Speaker with a 3.5mm audio plug
  • USB WiFi (essential for Raspberry Pi 2, optional if you want to boost your WiFi signal on a Raspberry Pi 3)

Full instructions are at Raspberry Pi · alexa/alexa-avs-sample-app Wiki and a video is below: https://www.youtube.com/watch?v=baec1CbV6A0

I should find some time to try this out (:

–jeroen

Read the rest of this entry »

Posted in Development, Hardware, Hardware Development, Hardware Interfacing, Software Development | Leave a Comment »

PowerShell – query reboot/shutdown events

Posted by jpluimers on 2018/06/19

Thanks [WayBackgbabu for the below PowerShell ide

As PowerShell command:

Get-EventLog System | Where-Object {$_.EventID -eq "1074" -or $_.EventID -eq "6008" -or $_.EventID -eq "1076"} | ft Machinename, TimeWritten, UserName, EventID, Message -AutoSize -Wrap

Based on it and my own experience, thse Event IDs can be interesting:

  • 41 – The system has rebooted without cleanly shutting down first
  • 109 – The kernel power manager has initiated a shutdown transition.
  • 1073 – The attempt by user [domain]\[username] to restart/shutdown computer [computername] failed.
  • 1074 – The process [filename].[extension] has initiated the restart of computer [computername] on behalf of user [domain]\[username\ for the
  • 1076 – ???
  • 6008 – The previous system shutdown at [time-in-local-format] on [date-in-local-format] was unexpected.

You can also run this as a batch file, but not you need to escape the pipe | into ^| like this:

PowerShell Get-EventLog System ^| Where-Object {$_.EventID -eq "1074" -or $_.EventID -eq "6008" -or $_.EventID -eq "1076"} ^| ft Machinename, TimeWritten, UserName, EventID, Message -AutoSize -Wrap

If you have PowerShell 3.0 or greater, then you can use the [Archive.is-In operator:

PowerShell Get-EventLog System ^| Where-Object {$_.EventID -in "41", "109", "1074", "6008", "1076"} ^| ft Machinename, TimeWritten, UserName, EventID, Message -AutoSize -Wrap

–jeroen

Posted in Batch-Files, CommandLine, Development, Power User, PowerShell, PowerShell, Scripting, Software Development, Windows | Leave a Comment »

Lidl W5 oils are identical to Pennasol types

Posted by jpluimers on 2018/06/18

For my link archive: [WayBackW5motorolja på Lidl

Ihr Fax vom 21.10.2009

Sehr geehrter Herr Stanusic,

gern bestätigen wir Ihnen, dass entsprechend der folgenden Aufstellung die Produkte identisch sind.

PENNASOL Multigrade Super HD 15W40 = W5 CARCARE Engine Oil 15W40
PENNASOL Super Light 10W40 = W5 Ecotech Engine Oil 10W40
PENNASOL Super Pace 5W40 = W5 Supertech Engine Oil 5W40
Mit freundlichen Grüßen

Mineralöl-Raffinerie Dollbergen GmbH

i.V. Hartmann i.A. Fricke

On the label:

Read the rest of this entry »

Posted in cars, E46 320i touring, LifeHacker, Power User | Leave a Comment »

Choosing a centralized logging and monitoring system

Posted by jpluimers on 2018/06/18

Interesting read:

Searching through logs and remoting to a machine to check it’s load is not a fun thing to do. This is why I’ve decided to look for a centralized logging service. And what I’ve chosen.

It looks like Microsoft App Insight is very much worth trying.

–jeroen

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

Practical Color Theory for People Who Code

Posted by jpluimers on 2018/06/18

Recommented reading and playing: [Archive.isPractical Color Theory for People Who Code which is not just about the colour wheel, but also about:

  • desaturation
  • mixing
  • contrast for tints and shades

Oh: don’t forge the “Party Mode” (:

–jeroen

PS:

 

Posted in Color (science), Color (software development), Development, LifeHacker, Power User, science, Software Development, UI Design | Leave a Comment »

These bone-conduction glasses are on sale for less than USD 70…

Posted by jpluimers on 2018/06/15

From a while back, but intrigued me as I wasn’t aware that bon conduction devices had become so affordable.

[WayBack] These bone-conduction glasses are on sale for $69 Would you wear them? They can be fitted with sunglasses or prescription lenses, and you can use the… – Mike Elgan – Google+

My ~60 dBA Unilateral hearing loss – Wikipedia of my left ear is only through the air: my bone conduction hearing loss – though still significant – is far less.

Since my right ear is very good, a regular hearing aid is of no use: the human brain effectively shuts down the left ear when the quality difference between the two ears is too large.

For listening to music or phone conversations however, conduction based hearing might allow me to get a bit more of a stereo sound.

Time to find out which ones work for me and which don’t, so here are a few links that describe (lists of) potential devices:

  • [WayBack] Are bone conduction headphones good enough yet? – The Verge
  • Bone conduction headphones are the best and only true open ear headphones. They allow users to take calls or listen to music while still being completely aware of their surroundings. They’re an awesome alternative to traditional headphones.[WayBack] Best Bone Conduction Headphones of 2018: A Complete Guide –Everyday Hearing
  • The first and most important thing you should know is that bone conduction headphones are nowhere near traditional headphones (no matter if they are on-ear, over-ear, in-ear) when it comes to sound quality. Even those really expensive bone conduction headphones (AfterShokz Trekz Titanium and Trekz Air) are not as good as some average traditional headphones. So, if you are looking for high-fidelity sound, you are in the wrong place. Traditional headphones offer much better sound quality with much cleaner and punchier bass than bone conduction headphones. Bass response is probably the worst thing about bone conduction headphones.On the positive side, bone conduction headphones leave your ears open and allow them to breathe. If you can’t stand having your ears covered or having something inside your ear canal, bone conduction headphones might be the solution you’ve been looking for (the earpieces of bone conduction headphones usually rest on the temporal or lower jaw bones (mandibles), right in front of your ears).

    Because of this open-ear design, bone conduction headphones make you more aware of your surroundings. You will be able to hear all that’s going on around you while listening to music, and if that’s something you prefer, bone conduction headphones are the best choice.

    [WayBack] 9 Best Bone Conduction Headphones In 2018 – AudioReputation.com

–jeroen

Pictures from the Verge and Everyday Hearing

Read the rest of this entry »

Posted in LifeHacker, Power User | Leave a Comment »