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

Archive for the ‘Development’ Category

Great tool: the Toptal Colorblind Web Page Filter

Posted by jpluimers on 2020/08/06

Colorblind Web Page Filter

Colorblind Web Page Filter

A great tool I found out about a while ago [Archive.is] Toptal Color Blind Filter.

It shows the original web page and the rendering for various types of color blindness:

  • protan -> Protanopia: red/green color blindness; anomalous red cones
  • deutan -> Deutanopia: red/green color blindness; anomalous green cones
  • tritan -> Tritanopia: blue/yellow color blindness; anomalous blue cones
  • grey -> Greyscale/achromatopsia: quick check for all forms of colorblindness

Because of a comment at [WayBack] Forums… https://embarcaderomonitoring.wiert.me/ – JWP – Google+, I used Toptal to notify Uptime robot that their status pages are hard for color blind people: [WayBackJeroen Pluimers on Twitter: “Some color blind people indicated to me that @uptimerobot status pages are hard for them to read. Examples are for @EmbarcaderoTech as they have subdomains being offline often: …”, so lets look at how people with various types of color blindness see embarcaderomonitoring.wiert.me :

Read the rest of this entry »

Posted in *nix, Color (science), Color (software development), Development, Monitoring, Power User, science, Software Development, Uptimerobot, Usability, User Experience (ux), Web Development | Leave a Comment »

Android passwords: store as transient as possible using arrays in stead of strings

Posted by jpluimers on 2020/08/06

Sometimes you cannot avoid handling passwords in your application. When you do,

  • keep them around as short as possible
  • store them in data types that are not garbage collected
  • wipe the storage as soon as you are done

In practice, this usually comes down to storing them as arrays (character or byte arrays), not strings.

This holds for many other platforms outside Java as well: strings are usually managed in one way or the other, so they cannot be wiped

References:

For actual storage of passwords, you always have the risk of retrieval: when a “bad guy” gets physical access to a device, it is basically hosed.

A KeyStore can only do so much against it: if your APK can be downloaded, it can be reverse-engineered revealing the exact steps how the store is accessed, reproducing the steps needed to hack into the underlying protected data/functionality.

The keystore can be forgetful…

You’ve just moved in to a new house and have been given the master key for the front door. You only have one of these so you know you need to keep it safe. Your really paranoid so you hire an armed guard, whose sole job is to protect this key, in fact, this is all he has been trained to do and has a catchy slogan of “need to protect a key, its what I was born to do!”. You install an extra lock on your front door as you feel the bodyguard isn’t enough, this is a rough area anyway and who’s going to make sure no-ones about to break in and steal all your crap. You return to your key guard only to be informed he has thrown the key away. You shout and scream at him but he just blankly says “I don’t have it anymore, I didn’t think it was important”. You can’t contain your anger “What the hell, your a jerk! You had one thing to do and you failed, this causes me a lot of problems, why didn’t you tell me you might do this?! What do I do now?!”

[WayBack] Android Security: The Forgetful Keystore – SystemDotRun – Dorian Cussen’s Super Blog

–jeroen

Posted in Android, Development, Java, Java Platform, Mobile Development, Power User, Security, Software Development | Leave a Comment »

Brew reminder to self

Posted by jpluimers on 2020/08/05

From the update process:

==> Caveats
==> hub
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> python
Python has been installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python/libexec/bin

If you need Homebrew's Python 2.7 run
  brew install python@2

You can install Python packages with
  pip3 install 
They will install into the site-package directory
  /usr/local/lib/python3.7/site-packages

See: https://docs.brew.sh/Homebrew-and-Python
==> youtube-dl
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> mpv
zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> node
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

–jeroen

Posted in Apple, Development, Home brew / homebrew, Power User, Python, Scripting, Software Development | Leave a Comment »

Delphi: Download multiple files in multiple parts at the same time, support resuming, gzip-encoded files, cookies, logging to websites using POST and so on

Posted by jpluimers on 2020/08/05

If I ever need to download multiple files in multiple parts at the same time, support resuming, gzip-encoded files, cookies, logging to websites using POST and so on, then I need to look at [WayBack] http – Delphi- downloading files from the web with sockets – Stack Overflow.

–jeroen

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

Delphi What’s new history and a docwiki URL trick

Posted by jpluimers on 2020/08/05

One of the great things about the Delphi docwiki structure is that the naming system is very consistent.

The consistency helps you quickly finding the What’s new for any version, just by getting the latest first.

Getting the latest one is based based on a docwiki redirection trick that always redirects from an “unversioned” URL to the latest one.

So these two “unversioned” URLs always get you there:

When writing this, the above links got me the below list. For consistency (as you cannot save URLs for prior versions in the WayBack machine because a brain-dead robots.txt setting which archive.is luckily ignores):

By now, there will hopefully be a few more Delphi versions released.

Reminder to self: update the list (:

–jeroen

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, History, Software Development | Leave a Comment »

WinBox on MacOS crashing

Posted by jpluimers on 2020/08/04

On my investigation list as WinBox 3.17 only crashes some of the times.

It might have to do with changes in High Sierra:

The real problem: if this happens, WinBox will not start until I have rebooted.

–jeroen

Read the rest of this entry »

Posted in Development, Software Development | Leave a Comment »

If I need sending a Skype-Message over Microsoft Bot Network…

Posted by jpluimers on 2020/08/04

[WayBack] Has someone experience with sending a Skype-Message over Microsoft Bot Network with Delphi? I would appreciate any info how to start this … – Yusuf Zorlu – Google+.

–jeroen

Posted in Development, Software Development | Leave a Comment »

11 signs you’re writing great software code | InfoWorld

Posted by jpluimers on 2020/08/04

No matter what language or technology stack you use, if you can describe your code with these adjectives, good code should follow

From a while back, but still very current.

Source: [WayBack] 11 signs you’re writing great software code | InfoWorld

Via: [WayBack] 11 signs that there is hope for your code yet https://www.infoworld.com/arti…

–jeroen

Posted in Agile, Conference Topics, Conferences, Development, Event, Software Development | Leave a Comment »

Getting Started with Azure Event Grid Scenarios | Serverless360 Blog

Posted by jpluimers on 2020/07/30

For my link list, especially because how it categorises the various kinds of messages: [WayBackGetting Started with Azure Event Grid Scenarios | Serverless360 Blog:

  • messaging, which conveys an intent
  • eventing, which conveys a fact
    • series events, which represent a stream of events belonging together (like telemetry, logging, or streaming data)
    • discrete events, which are independent, and report some type of state change

If you use Azure, these solutions then apply to the categories:

  • messaging: Azure Event Bus
  • series events: Azure Event Hub
  • discrete events: Azure Event Grid

Related:

–jeroen

Posted in Cloud Development, Development, Software Development, Windows Azure | Leave a Comment »

Running Visual Studio Code on macOS from the terminal

Posted by jpluimers on 2020/07/30

For running Visual Studio Code from the terminal, you need to do a few extra steps as from Running Visual Studio Code on macOS: Get Visual Studio Code up and running on Mac (macOS):

Launching from the Command Line

You can also run VS Code from the terminal by typing ‘code’ after adding it to the path:

  1. Launch VS Code.
  2. Open the Command Palette (⇧⌘P) and type ‘shell command’ to find the Shell Command: Install ‘code’ command in PATH command.

macOS shell commands

  • Restart the terminal for the new $PATH value to take effect. You’ll be able to type ‘code .’ in any folder to start editing files in that folder.

Note: If you still have the old code alias in your .bash_profile (or equivalent) from an early VS Code version, remove it and replace it by executing the Shell Command: Install ‘code’ command in PATH command.

To manually add VS Code to your path:

cat << EOF >> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF

This is what the code command is and does:

$ which code
/usr/local/bin/code
$ ls -alh `which code`
lrwxr-xr-x  1 jeroenp  admin    68B Apr 16 13:24 /usr/local/bin/code -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
$ cat `which code`
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

function realpath() { /usr/bin/python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?

–jeroen

 

Posted in Development, Software Development, Visual Studio and tools | Leave a Comment »