How to Display Full Query Results in phpMyAdmin

In phpMyAdmin, the results of some queries can be truncated, as shown below:

phpMyAdmin: truncated text

This isn’t due to the size of the browser window or any error on your part; phpMyAdmin simply truncates the text.

The solutions is very simple:

  1. Click on the + Options link above the results.
  2. In the options menu, select Full texts.
  3. Click on Go to re-execute your query.
phpMyAdmin: Full texts option

Once you’ve done this, phpMyAdmin will display the complete results of your query:

phpMyAdmin: Full text displayed

How to Capture Screenshots Without Shadows in Windows 11

The Problem: Large Shadows in Windows 11

Window shadows are much larger under Windows 11 than under Windows 10. This can be an issue if you need to take screenshots, but don’t want to waste so much space on shadows. Simply cropping the screenshots is not a very aesthetically pleasing solution.

Solution 1: Use Alt+PrintSc

To quickly capture a screenshot of your active window without the shadows, press and hold the ‘Alt’ key, then hit the ‘PrtScr’ (or ‘PrtSc’) key. This will immediately capture a shadow-free screenshot of the window and copy it to your clipboard.

Solution 2: Temporarily disable shadows under windows

The simple solution above does not work for more complex scenarios, such as multiple windows in a single screenshot, or when you want to include tooltips.

For these cases, you can disable shadows under windows temporarily.

  1. In the start menu, start typing “view advanced system settings” and then click on the best match:
Windows start menu: view advanced system settings

  1. Click on Settings under Performance (in the Advanced tab):
Advanced System Properties Dialogue
  1. Uncheck “show shadows under windows”.

If you’re looking to disable shadows for a brief period, click Apply. This will disable the shadows but keep the dialog box open for you to easily revert to the original settings:

Performance options dialog with "show shadows under windows" unchecked

If you want to keep the shadows disabled for a longer time, click OK.

You can now use PrintSc or Windows+Shift+S to capture a screenshot.

Using AI to create a multi-lingual answering machine announcement for your FRITZ!Box

Recording a message, even in a single language, can be difficult. Many of us cringe at the sound of our own voice played back to us. Furthermore, it takes practice to record a message without interruptions while maintaining a steady pace and clear enunciation.

The complexity multiplies when you’re looking to create a multi-lingual answering machine announcement. Fortunately, AI is making this a lot easier than it used to be.

Write the text for the announcement

An answering machine on a FRITZ!box typically allows you to record 3 types of messages:

  1. A greeting for the “Record messages” operating mode.
  2. A “goodbye message” that plays when the caller reaches the maximum recording time.
  3. An announcement for the “Greeting only” operating mode, where callers cannot leave a message.

Start by writing the message(s) in your native language. If you’re not sure what to write or if you want to be particularly funny or obnoxious, you can always ask ChatGPT for help. Here’s a suggestion:

Hey, you've reached my voicemail. I'm currently on vacation and as unreachable as your dream of becoming a millionaire. I'll be back soon, so try again later. Cheers, you ambitious bugger!

Translate the announcement

If you need help with the other language versions, use DeepL translator, Google Translate or similar websites to translate the text:

Use ElevenLabs Voice AI for voice synthesis

If you want your announcement to sound like a robot, click on the speaker icon in Google Translate and record the output (actually it does not sound that bad anymore, so this may have become a viable option). However, for the highest-quality, human-like voice synthesis and a choice of different voices, there’s currently no better option that Prime Voice AI by ElevenLabs.

In my experience, some voices sound better for certain languages than others. However, Prime Voice AI is evolving rapidly, so I won’t go into details as they will be quickly outdated.

Download recordings of your translated texts in all the desired languages (these will be MP3 files):

ElevenLabs Prime Voice AI

Notes:

If you’re creating an announcement for personal rather than business use, consider making it clear to the caller that they’ve reached the right person, even if the recording doesn’t sound like you. On the other hand, if you like to confuse people, this could be a great opportunity.

ElevenLab’s free plan requires “attribution to elevenlabs.io”, though I’m not sure how this would work with a pure audio recording. Perhaps you could incorporate it into your message, something like: “This is Adam from Elevenlabs.io. I’m sorry, but <your name> cannot pick up the phone right now…”

Processing the audio files in Audacity

Open Audacity and drag-and-drop the MP3 files you downloaded from ElevenLabs. They will appear as separate tracks:

Audacity window with 3 tracks

Normalize the clips (when using different voices)

If you notice a significant volume discrepancy between the tracks, normalize them first to even out the volume levels before you combine them. Normalizing will ensure that each individual track reaches its maximum volume level without distortion.

  1. Press Ctrl+A to select all the tracks or go to “Select” > “All”.
  2. Go to “Effect” > “Volume and Compression”> “Normalize”.
  3. I’ve found that the normalizing to -3.0 dB works well for the FRITZ!box. Click “Apply”.

Move the clips to one track

You may want to “Zoom out” (Ctrl + 3) to make this easier. Then grab the clip you want to move at it’s light-colored area at the top and drag it onto the top track (behing the clip that is already on the track, leaving some room for a pause, if required). Repeat this process for the remaining clip(s).

If you want, you can now delete the empty tracks by clicking on the ‘x’ at the top left of each track.

Audacity will 3 clips on the same track

Export in the best format for the FRITZ!box answering machine

Your FRITZ!Box will likely prefer recordings in WAV format, 8000 Hz, 16-bit, and mono. However, it’s best to confirm this in your device’s manual or the FRITZ!box knowledge base.

The MP3 file downloaded from Elevenlabs should already be mono. If not, go to “Tracks” > “Mix” > “Mix Stereo Down to Mono”.

When exporting the file as “WAV (Microsoft) signed 16-bit PCM”, Audacity automatically converts the bit depth to 16-bit, regardless of your project’s current setting. So, there’s no need to change this.

However, we need to change the sample rate to 8000 Hz. One way to do so is by resampling the track:

  1. Go to the “Tracks” menu at the top of the screen.
  2. In the dropdown menu, select “Resample…”.
  3. In the “Resample” dialog box that pops up, enter “8000” in the “New sample rate (Hz)” field.
  4. Click “OK” to apply the changes.

Now, you can listen to the announcement at the much lower sample rate to get an idea of how it’ll sound to your callers.

Finally, go to “File” > “Export” > “Export as WAV”. In the dialog box that appears, enter your desired file name, make sure “WAV (Microsoft) signed 16-bit PCM” is selected as the type, and click “Save”.

If you also want to preserve your Audacity project file, press Ctrl + S or go to “File” > “Save Project”.

Import the audio file into your Fritz!box

The process of setting up an answering machine on your FRITZ!Box may vary based on your specific model and firmware. However, within the answering machine’s settings, you should find an option to use your own announcement instead of using the standard greeting. Here, choose the .WAV file that you exported from Audacity:

For further information, please search for “Configuring Your Own Greetings” in the FRITZ!box knowledge base.

How to copy program settings from the registry of one Windows machine to another

Some programs still save their settings in the Windows registry. The instructions below will let you copy a part of the registry to another machine.

Important: Modifying the registry can have unintended consequences and may cause issues with your system. Always make sure to create a backup of your registry and a system restore point before making any changes.

  1. On the source machine:
    • Press Win + R to open the Run dialog.
    • Type regedit and press Enter to open the Registry Editor. If prompted by User Account Control, click “Yes” to proceed.
    • In the Registry Editor, navigate to the registry key you want to copy. For example, if you want to copy a key related to a specific software, it might be located under HKEY_CURRENT_USER\Software\ or HKEY_LOCAL_MACHINE\SOFTWARE\.
    • Right-click on the registry key you want to export (in the left panel) and select “Export.”
    • Choose a location to save the .reg file, give it a name, and click “Save.”
  2. Transfer the .reg file to the destination machine using a USB drive, cloud storage, or any other preferred method.
  3. On the destination machine:
    • Locate the .reg file you transferred from the source machine.
    • Double-click the .reg file to start the import process. If prompted by User Account Control, click “Yes” to proceed.
    • A warning message will appear, informing you that making changes to the registry can cause system instability. If you’re sure you want to proceed, click “Yes.”
    • A confirmation message will appear once the registry key has been successfully imported. Click “OK” to close the message.

Now, the desired part of the registry has been copied from the source machine to the destination machine.

Note: If any of the registry values include file paths, you might need to adjust these paths to match the file structure on your new system.

Flutter doctor: No Java Development Kit (JDK) found on Windows 11

The problem: When you run flutter doctor, you get a “no Java Development Kit (JDK) found” error:

The solution: Install a Java Development Kit, then set the environment variables

Download and install a JDK

The download link given by flutter doctor didn’t work when I tried it, but this one did.

Download the file and run the installer.

Add the JAVA_HOME environment variable and update the PATH

Now for the “fun” part: You may have to manually edit the JAVA_HOME and PATH environment variables on your Windows system. In the example below, I’m using JDK19. Please make sure to adapt the instructions so they match your particular setup.

  1. Locate your JDK installation directory. The default path is usually C:\Program Files\Java\jdk-19, but it can vary depending on your installation settings. Make sure to copy this path for later use.
  2. Right-click on the Windows Start button and select System.
  3. In the System window, click on Advanced system settings:
  1. In the System Properties window, click on the Environment Variables button near the bottom right:
  1. Under System variables, click on the New button.
  2. Enter the variable name JAVA_HOME. As the variable value, enter the path to your JDK installation directory from the first step:

For example, if your JDK is installed in C:\Program Files\Java\jdk-19, then the value should be C:\Program Files\Java\jdk-19.

  1. Click OK to save the new environment variable.
  2. In the System Variables list, locate the Path variable, and click Edit.
  3. In the Edit environment variable window, click New, and add %JAVA_HOME%\bin to the list. This ensures that the JDK executables are available in your system’s PATH.
  1. Click OK to save the changes to the Path variable, and close all remaining windows by clicking OK as well.

Please keep in mind that you will need to open a new Command Prompt window for the changes to take effect, as the environment variables are loaded when the Command Prompt is launched.

To verify the changes, you can run echo %JAVA_HOME% in a new Command Prompt window. This should display the path to your JDK installation directory. Running java -version should display the version information of your JDK 19 installation.

Finally, running flutter doctor should show that the “No Java Development Kit (JDK) found” error has disappeared: