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

Archive for January, 2020

UX design: doe geen pijltje onderaan een pagina als verder scrollen zinloos is

Posted by jpluimers on 2020/01/10

[WayBack] Jeroen Pluimers on Twitter: “Altijd handig zo’n pijltje onderaan de pagina die suggereert dat je nog niet klaar bent met lezen, maar niets blijkt te doen #mijnpensioenoverzicht user experience #fail https://t.co/sx04ndwgM6… https://t.co/GmHJzZhpbO”

–jeroen

Posted in Power User, Usability, User Experience (ux) | Leave a Comment »

Commander One review: A superior alternative to Android File Transfer on Mac

Posted by jpluimers on 2020/01/10

On my list of software to try: [WayBackCommander One review: A superior alternative to Android File Transfer on Mac

Via: [WayBack] Looks like a must-have for anyone using a Mac (with MacOS) and an Android phone. – Roderick Gadellaa – Google+

–jeroen

Posted in Android, Android Devices, Apple, Development, iMac, Mac, Mac OS X / OS X / MacOS, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, macOS 10.12 Sierra, macOS 10.13 High Sierra, Mobile Development, Software Development | Leave a Comment »

Some people still don’t know they should apply the Crucial Firmware Update For Crucial m4 SSD BSOD

Posted by jpluimers on 2020/01/10

Luckily I was watching over the shoulder of a friend when his hung as it was a while ago I had encountered issues like that.

Sometimes the system would get in trouble without warning: the machine would just hang. No Windows Event log or other place where we could trace back the origin.

I suspected failing hardware because it was similar to other machines I had seen: memory, loose connectors or power issues came to mind first.

After about a week of trial and error I decided to check SMART status. HDTune did not warn of anything special. SmartCtl however did:

This drive may hang after 5184 hours of power-on time:
http://www.tomshardware.com/news/Crucial-m4-Firmware-BSOD,14544.html
See the following web pages for firmware updates:
http://www.crucial.com/support/firmware.aspx
http://www.micron.com/products/solid-state-storage/client-ssd#software

The relevant links (I prefer the WayBack links as at times the site is very slow) are below.

After upgrading the firmware, the problems were gone.

version compatible products download
070H Crucial m4 2.5-inch (7mm & 9.5mm) SSD Windows® 7 Updater Application

[WayBack] download firmware

[WayBack] instruction guide

Windows® 8 Updater Application

[WayBack] download firmware

[WayBack] instruction guide

Manual Boot File for Windows and Mac®

[WayBack] download firmware

[WayBack] instruction guide

Release Date: 04/02/2013

Firmware 070H is recommended for anyone currently running 040H or previous firmware releases. It includes incremental improvements and refinements over these versions which may improve the overall user experience.

Like recent firmware versions, version 070H has improvements over versions 000F which are specific for Windows 8 and new UltraBook systems, although systems running Windows 7 and other operating systems may also see improvements. Any m4 firmware
version will function normally in Windows 8, even without these performance improvements.

The following is a summary of changes between 040H and 070H, which are independent of operating system:

  • Resolved a power-up timing issue that could result in a drive hang, resulting in an inability to communicate with the host computer. The hang condition would typically occur during power-up or resume from Sleep or Hibernate. Most often, a new
    power cycle will clear the condition and allow normal operations to continue. The failure mode has only been observed in factory test. The failure mode is believed to have been contained to the factory. This fix is being implemented for all new
    builds, for all form factors, as a precautionary measure. The fix may be implemented in the field, as desired, to prevent occurrence of this boot-time failure. To date, no known field returns have been shown to be related to this issue. A failure
    of this type would typically be recoverable by a system reset.

Additional details can be found in the firmware guide

–jeroen

Read the rest of this entry »

Posted in Hardware, Power User | Leave a Comment »

Getting the up to date project source code from the IDE – Dave’s Development Blog

Posted by jpluimers on 2020/01/09

For my link archive: [WayBackGetting the up to date project source code from the IDE – Dave’s Development Blog

It shows how to “using the IDE’s live files and if the IDE hasn’t got a file open, the file from disk”.

This gives you the same view the compiler in the IDE has.

Via [WayBack] Getting the up to date project source code from the IDE – David Hoyle – Google+

–jeroen

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

Joseph Redmon: How computers learn to recognize objects instantly | TED Talk | TED.com

Posted by jpluimers on 2020/01/09

On my list of things to play with: [WayBackJoseph Redmon: How computers learn to recognize objects instantly | TED Talk | TED.com

It is about the super fast YOLO (You Only Look Once) engine that runs a full frame through a neural network performing object classification for all objects.

It can classify many frames per second.

More links on how to install it and get going:

–jeroen

Posted in Development, Software Development | Leave a Comment »

Python – list transformation; string formatting – Stack Overflow

Posted by jpluimers on 2020/01/08

Sometimes simple examples are the best: [WayBack] Python – list transformation – Stack Overflow.

Interactive example (note you can run and save at repl.it in either [WayBack] Repl.it – Python 3 or [WayBack] Repl.it – Python 2; you can run but not save it at [WayBack] Welcome to Python.org: interactive Python shell):

# Links the documentation are Python 2, though everything works in Python 3 as well.

x = [1,2,3,4,5,11]
print("x: ", repr(x))

y = ['01','02','03','04','05','11']
print("y: ", repr(y))

# List comprehension https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
# ... using `str.format()` (Python >= 2.6): https://docs.python.org/2/library/stdtypes.html#str.format and https://docs.python.org/2/library/string.html#formatstrings
y = ["{0:0>2}".format(v) for v in x]
print("y: ", repr(y))

# ... using the traditional `%` formatting operator (Python < 2.6): https://docs.python.org/2/library/stdtypes.html#string-formatting y = ["%02d" % v for v in x] print("y: ", repr(y)) # ... using the format()` function (Python >= 2.6): https://docs.python.org/2/library/functions.html#format and https://docs.python.org/2/library/string.html#formatstrings
# this omits the "{0:...}" ceremony from the positional #0 parameter
y = [format(v, "0>2") for v in x]
print("y: ", repr(y))

# Note that for new style format strings, the positional argument (to specify argument #0) is optional (Python >= 2.7) https://docs.python.org/2/library/string.html#formatstrings
y = ["{:0>2}".format(v) for v in x]
print("y: ", repr(y))

# Using `lambda`
# ... Python < 3 return a list y = map(lambda v: "%02d" %v, x) print("y: ", repr(y)) # ... Python >= 3 return a map object to iterate over https://stackoverflow.com/questions/1303347/getting-a-map-to-return-a-list-in-python-3-x/1303354#1303354
y = list(map(lambda v: "%02d" %v, x))
print("y: ", repr(y))

Output:

Python 3 Python 2
Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
   
x:  [1, 2, 3, 4, 5, 11]
y:  ['01', '02', '03', '04', '05', '11']
y:  ['01', '02', '03', '04', '05', '11']
y:  ['01', '02', '03', '04', '05', '11']
y:  ['01', '02', '03', '04', '05', '11']
y:  ['01', '02', '03', '04', '05', '11']
y:  <map object at 0x7fe1218200b8>
y:  ['01', '02', '03', '04', '05', '11']
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.8.2] on linux
   
('x: ', '[1, 2, 3, 4, 5, 11]')
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")
('y: ', "['01', '02', '03', '04', '05', '11']")

–jeroen

Read the rest of this entry »

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

TFreedObject in FastMM4/FastMM4.pas at master · pleriche/FastMM4 · GitHub

Posted by jpluimers on 2020/01/08

Reminder to Self:

  {The class used to catch attempts to execute a virtual method of a freed
   object}
  TFreedObject = class
  public
    procedure GetVirtualMethodIndex;
    procedure VirtualMethodError;
{$ifdef CatchUseOfFreedInterfaces}
    procedure InterfaceError;
{$endif}
  end;

If you encounter the class TFreedObject when doing a cast, then you’re working on a freed object and have FastMM4 enabled to detect that.

Source: [WayBackFastMM4/FastMM4.pas at master · pleriche/FastMM4 · GitHub; FastMM4 – A memory manager for Delphi and C++ Builder with powerful debugging facilities

Note that if you want to see the underlying FastMM data for any TObject allocation, use this watch (where Self is the current instance):

PFullDebugBlockHeader(PByte(Self) - SizeOf(TFullDebugBlockHeader))^

You can also put a ,r behind it to see the fields of this structure:

(Reserved1:nil; Reserved2:nil; AllocatedByRoutine:$41BF74; AllocationGroup:0; 
AllocationNumber:592682; 
AllocationStackTrace:(4224198, 4233131, 4235210, 11103806, 6552132, 131126, 6597961, 11106984, 4235210, 11107153, 11104090); 
AllocatedByThread:90428; FreedByThread:90428; 
FreeStackTrace:(4241541, 131126, 4235210, 11103806, 6552132, 131126, 6597961, 11106984, 4235210, 11107153, 11104090); 
UserSize:36; PreviouslyUsedByClass:132272; HeaderCheckSum:2673350594)

–jeroen

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

Crosscompiling with Lazarus 1.8 on Linux Mint 18.3 | The Programming Works

Posted by jpluimers on 2020/01/08

As I will likely need this one day: [Archive.is / WayBackCrosscompiling with Lazarus 1.8 on Linux Mint 18.3 | The Programming Works.

There are quite a few one-time manual setups to initially set this up, but after that it’s a piece of cake.

via:

–jeroen

Read the rest of this entry »

Posted in Development, FreePascal, Lazarus, Pascal, Software Development | Leave a Comment »

Mads Kristensen on Twitter: “Visual Studio Tip: A blue dot in the margin indicates a switch of threads while stepping through debugging. #vstip… “

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

Read the rest of this entry »

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

Use PiServer to easily set up a network of client Raspberry Pi clients connected to a single x86-based server via Ethernet.

Posted by jpluimers on 2020/01/07

On my list of things to try:

PiServer is our new piece of software that makes it easy to create a network of Pis you can centrally control — ideal for your computing classroom or club!

Source: [WayBack] The Raspberry Pi PiServer tool – Raspberry Pi

Via: [WayBack] Use PiServer to easily set up a network of client Raspberry Pis connected to a single x86-based server via Ethernet. With PiServer, you don’t need SD card… – Raspberry Pi – Google+

–jeroen

Posted in Development, Hardware Development, Hardware Interfacing, Raspberry Pi | Leave a Comment »