2026-03-09

Linux, EasyABC, ABCM2PS

  contents

You can read this post as a technical post about some Linux software and/or a satirical post about how ridiculous Linux can be.

Two critical pieces of my music editing and printing procedures on Linux are Abcm2ps and EasyABC. These should run on any Linux desktop, but each Linux desktop has it's own approach to installation. I use Lubuntu which is closely based on Ubuntu, just a different GUI interface.

Abcm2ps is a command line utility for converting ABC sheet music to PostScript for printing. But versions after 8.14.6 are broken for scaling and positioning.

For Ubuntu - find abcm2ps_8.14.6-0.1_amd64.deb on the internet and download it. The trick to finding it is to enter the exact file name, not keywords. Then sudo dpkg -i abcm2ps_8.14.6-0.1_amd64.deb to install. You can sudo apt install, but the next time you need it you will not have the .deb.

This is pretty easy, but when the system updater runs, it will replace it with a newer version. Here is the solution - not proven yet, I just ran it.

  sudo apt-mark hold abcm2ps

and to verify

  apt-mark showhold

.

EasyABC is a very nice cross-platform ABC music editor. Unfortunately, it runs into Linux's major flaw - installation dependencies. Old code that uses code that is no longer supported or readily available. Finding a functional way to install EasyABC on Lubuntu took many hours.

This is how I set up EasyABC using a virtual environment (venv). See https://groups.io/g/abcusers/topic/set_up_and_run_easyabc_on/110250537 for how to do this with PyEnv. This was very helpful even though it is not my way of doing things. Sounds more complicated that using a venv. Perplexity.ai helped a lot also. And MUCH trial and error.

The big issue here is that EasyABC doesn't keep up with Python (a code interpreter/compiler which is changed at a ridiculous rate). It does not work with Python 3.12. And when you install wxPython, it attaches to the current version of Python, 3.12. So you can install Python 3.11 which is okay for EasyABC but you can't install wxPython for Python 3.11 because the installer sees Python 3.12 and assumes that's where you want wxPython. You could try removing 3.12, installing wxPython on 3.11, and reinstalling 3.12, but 3.12 is the system Python, so I think that the system would crash if you remove 3.12 - not sure, didn't try it. And of course you could modify EasyABC to work with Python 3.12 - over 9000 lines of code - good luck. The "easy" solution is to make a virtual environment (venv), where Python 3.11 is current, and install wxPython there. Then put a wrapper around the Python execution of easy_abc.py that puts it in the venv. This is all new to me, but it became important when my computer crashed and I needed to get EasyABC
going on a new system.

Get jwdj EasyABC 1.3.8.7 .

  https://github.com/jwdj/EasyABC
  unzip to ~/home/user/easyabc

install python 11 from deadsnakes (a repository with old Python versions)
  sudo apt update && sudo apt upgrade -y
  sudo add-apt-repository ppa:deadsnakes/ppa
  sudo apt update
  sudo apt install python3.11
  python3.11 --version 

make a virtual environment
  python3.11 -m venv easyabc-venv
activate the venv (after it has been made, just activate and deactivate as needed)
  source easyabc-venv/bin/activate (terminal prompt indicator is displayed)
deactivate when finished
  deactivate

INSIDE the venv with "(easyabc)" displayed

fluidsynth - it is not clear to me if this is needed

  tar -xvzf Downloads/fluidsynth-2.5.3.tar.gz (unpack the file into a folder fluidsynth-2.5.3)
  cd fluidsynth-2.5.3
  mkdir build
  cd build
  sudo apt install cmake libgtk2.0-dev libpulse-dev
  cmake ..
  make libfluidsynth
  cp src/libfluidsynth.so* ~/easyabc

This is from https://groups.io/g/abcusers/topic/set_up_and_run_easyabc_on/110250537

  sudo apt install -y --reinstall \
  make build-essential libssl-dev zlib1g-dev \
  libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
  libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl \
  git libgtk-3-dev

pip install --upgrade pip (I think this can be systemwide, not under the venv)
pip install -U pyparsing
pip install -U pygame
pip install -U wxPython
python -c "import wx; print(wx.version())"

sudo apt install abcmidi
sudo apt install abcm2ps (or v8.14.6 noted at the top of this post)

I'm not clear if these are needed, but they won't hurt anything (I don't think)
  sudo apt install fluidsynth
  sudo apt install fluid-soundfont-gm


Script to run EasyABC from the command line - easyabc.sh.

  #!/bin/bash
  source easyabc-venv/bin/activate
  python ~/easyabc/easy_abc.py
  deactivate

  and make it executable with - chmod +x easyabc.sh

When you run easyabc.sh in a terminal, you get a bunch of warnings and maybe an error. These don't appear to be a problem.

My desktop app starter file (don't forget to make it executable). Same as the ~/.local/share/applications file extension app association file.

[Desktop Entry]
Name=EasyABC
Exec=~/easyabc.sh %f
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=~/easyabc/img/logo.ico

I have done three installs and they all worked! Three years from now, when I have to do another install, we will see.

2026-01-27

Samsung Galaxy S25

  contents

Samsung's Galaxy S* phone series has a very annoying naming issue. The S25 series includes - S25, S25+, S25 Ultra, S25 Edge, and S25 FE. If I want a case for an S25 Edge, I search Amazon with "S25 Edge", and similarly for the others, until I get to the S25. For the S25, I need "S25 NOT + Ultra Edge FE", but Amazon search doesn't support that. Why not call the S25 the "S25 Compact". Then I could do useful searches for it.

I was waiting on the Samsung Galaxy S26, due in a month, to get a new phone. But all indications are - slightly bigger, no anti-reflective glass. The S25 Ultra has a new anti-reflective glass that I was hoping would be used on the S26 - apparently not. The S25 is slightly smaller than the S26 and I didn't see any disadvantage. Switching phones is a major pain. Copy the old phone (easy), but then update settings (do not disturb schedule, suppress picture in picture in Maps, Maps sound levels, brightness settings), log into calendar app, TV web page, Amazon, Google, Facebook, recreate my home page in Nova (launcher), turn on my alarms, set up the always on display, turn off all gestures, set up the fingerprint reader, set up app permissions and other app settings. Hours of work. Then transfer the SIM - done!

The fingerprint reader seems to be noticeably improved - faster, more reliable. And the side buttons are a bit easier to push.

Huge phones have taken over the market. The base Galaxy S* series is the smallest mainstream Android phone. Why do they make their small phone larger? Its primary feature is that it is small.

After two and a half years, my S23 was as good as new. And that's without ever using a screen cover. The only reason for upgrading was to get app widgets on the always on display (AOD). The S23 had this feature at one point, and then it was dropped. That would normally cause me to drop Samsung. But, to my knowledge, no other phones ever had the feature. The S25 does let you put app widgets on the AOD. But they are dimmed relative to the clock, so not as useful as they should be. Anyway, I have time zone and next alarm on my AOD again, if not quite bright enough to see in some conditions. And the AOD clock no longer roams the screen since the new screens, apparently, do not have a burn in problem.

The S25 screen is blinding. I keep turning the brightness down, but the slide bar is in the lower 5% of its range so it is not easy to control. Single step buttons on each side of slide controls would be very useful on touch screens. Why do phone manufacturers keep pushing brighter screens? Why do reviewers keep praising them for it?

Samsung Game Booster is supposed to help you with action games - preventing interference from other apps. I don't know or care what else it might do. But any app that declares itself to be a game is captured - chess, word games. A pop up menu is controlled by an added button in the lower left corner of the screen, right about where my thumb is holding the phone. So the menu is constantly popping up over the game. And of course there is nothing on the menu that improves the game.

But you can't delete the app, you can't turn it off, and you can't filter what games it controls. I finally found a good way to kill it - this is mostly from a YouTube video. Update Samsung Game Booster (it was already installed but didn't show up on my settings app list). Then in Setting - Apps - Game Booster, Change system settings - not allowed and Appear on top - off. So the annoying pop up button still shows up on the navigation bar, but it doesn't have permission to put a menu on top of the game. And it is not allowed to give itself permission. Problem solved. But the whole situation is an example of software design stupidity. Why don't you just let me delete the app? Or tell it to ignore specific types of games.

Maybe in a year or two anti-reflective screens will make it to the mainstream. I suspect that by the time that happens, all phones will be huge.

2025-11-08

Investing - The Tax Gauntlet of Roth Conversions

 contents

This post has taken a long time to write (mostly rewrite) to try to make it coherent. I hope the rewrites were successful. Sorry for the acronyms, but you can't talk about taxes with using them.

MAGI for IRMAA and NIIT - This is your modified adjusted gross income. It is your total income, including investment distributions, IRA withdrawals, the taxable portion of Social Security benefits. It includes tax-exempt interest. Student loan interest and pretax IRA contributions are NOT deducted. Roth IRA withdrawals are not included. IRMAA and NIIT use this number and higher means more Medicare and tax. BEWARE - other taxes may calculate MAGI differently.

RMDs - Required Minimum Distributions - Starting around age 73 (depends on your birth year), you are required to withdraw a percentage of your IRA (or 401K, etc.) and pay taxes on it. It starts at about 4% and goes up every year. This money cannot be converted to a Roth IRA. You pay income tax on it at your marginal rate since it is in addition to your regular income. And sometimes it increases your marginal rate. If you don't need this money, you can invest it, and pay taxes on the distributions.

IRMAA - Income Related Monthly Adjustment Amount - Medicare penalizes you for making too much money. And the amount is a very nonlinear function of your MAGI. Below around $100k (unmarried), no penalty. Above about $183k, about $5000/year. Then this would be multiplied by how many years it takes to convert your IRA. It sounds good to do it all at once, pay a big penalty, and be done with it in one year. But ...

Tax Bracket - When you top around $200k (unmarried) your marginal tax rate pops up to 32%, a nice jump from 24%. So it would be good to keep your Roth conversions below $200k minus your income. But if your income is, for example, $50k, that leaves you converting just $150k per year.

NIIT - Net Investment Income Tax - This is an additional tax on your investment income (interest, dividends, capital gain) if your MAGI is above $200k (unmarried). The amount of the tax is 3.8% of the lesser of your investment income or your MAGI minus $200k (unmarried).

You want low RMDs (RMDs are a percentage of the total IRA). You want low MAGI for lower Medicare premiums. You want low income for lower taxes. And you want low MAGI to avoid an NIIT tax bump. But you want to convert a lot of assets from IRA to Roth IRA and this counts as income and MAGI.

(Unmarried) it looks to me like it is best to keep your MAGI under $197k to stay out of the 32% tax bracket. This "spreadsheet" assumes you have an income of $44k. It show four levels of MAGI, each obtained by adding a Roth conversion amount to your income. The Medicare penalty percentage is minimized by pushing the MAGI to the top of (but not past) each IRMAA bracket. (Such evaluations would be so much easier with a continuous curve instead of stepped brackets, but our representatives in Congress apparently do not understand mathematics.)

income – includes          conversion  MAGI     penalty    penalty
Social Security *.85,      amount               per month  per year
RMDs,                                                      as a % of
pretax IRA contributions,                                  conversion 
investment distributions

44,000                     62,000      106,000  0          0.0%
                           89,000      133,000  88         1.2%
                           123,000     167,000  220        2.1%
                           156,000     200,000  353        2.7%


This shows that faster conversion gives higher Medicare penalties And there is likely higher tax on the RMDs. But it reduces RMDs faster. RMDs can bump your MAGI into higher Medicare penalties. And an RMD can't go to your Roth unless you have equal earned income. That means that if you invest the RMDs you pay tax on the distributions. So - choose your poison.

(2026-02-18, two more issues) You also need to calculate the future of IRMAA. RMDs last forever, and IRMAA with it. So with no Roth conversion you might pay IRMAA 12x 100, 100, 100, ... forever. With conversion all in one year 12x 700, 0, 0, ... Without conversion, after 7 years, IRMAA gives you a 1.2k penalty per year, forever. But of course doing it all in one year gets you a nice tax bump for that year.

Also, any money that moves to Roth, cap gains and dividends are tax-free as soon as it moves. Doing a conversion at the start of the year saves tax on any gains for the year. 

Investing - Total Return for Dividend Stocks

 contents

Dividend stocks and ETFs have an odd characteristic. Their stated goal is to produce income via dividends, but actually their total return (income plus growth) is just as important as the dividends. The issue is that the listed dividends are the current dividends. But you probably want those dividends to increase with inflation. If the payout ratio (profits paid as dividends / total profits) is 50%, half of profits go to dividends and the rest are used to, hopefully, increase profits and produce higher dividends in the future or buy back stock to increase the stock value. Businesses that have a high payout ratio pay high dividends, but don't grow as fast as businesses with low payout ratios. And if they pay out more than 100% of profits, the business is shrinking.

So my suggested strategy for selecting a dividend ETF or stock is decide how much I need from dividends and select an ETF that gives me that, and no more. The more is used by the business to improve future dividends, so it not disadvantageous to own this business.

There are a number of covered call dividend ETFs. These use stocks as collateral to gamble on the stock price. If they win, you get the result as an ETF dividend. Two problems - these are not qualified dividends, so taxed as income, not capital gains. And if they lose, they must sell the stock below market value. They can offer very nice dividends as long as they are winning. And they can continue the nice dividends while they are losing, but their value will go down.

When I chose to use SCHD and VYM a few years ago, SCHD had a dividend of about 3.5%. VYM about 3%. SCHD was significantly ahead in total return for the past ten years. This year SCHD is paying 3.8% and VYM is paying 2.5%. But total return, VYM value is up 12.8% and SCHD is up 1.6%. So VYM is set to give 12.8% higher dividends on the cost basis than the reported dividends because the principal has grown 12.8%. SCHD is set to give 1.6% higher dividends on the cost basis than the reported dividends.

Compare JEPI to VOO, VYM, SCHD - using totalrealreturns.com. Total return (dividends reinvested) per year for 5 years. JEPI 10.3%, VOO 17%, VYM 14.5%, SCHD 10.4%. JEPI is actively managed and uses covered call options to improve returns. It returns 8.4% dividend (currently). But that means that growth is just 1.9%, not keeping up with inflation. VYM returns 2.5% currently. But it's growing 12% per year. SCHD returns 3.8% currently and growing at 6.6%.

The net of all of this - the best dividend stocks or funds are the ones with the best total return while giving you the amount of income that you need, but no more. Beware if the dividends exceed about 4%. These are at significant risk to drop in value either because the businesses are likely paying more than half of their profits in dividends or the fund manager is gambling with the stocks to get higher dividends.

SCHD - I have a blog post about SCHD, which, in the past, looked like an outstanding dividend fund. Recent performance doesn't look so good - apparently it's in out of favor sectors. So, when I say "That's history, not prediction" take it to heart. VYM looks a lot better recently.

2025-07-29

More Good and Bad

contents

In no particular order-

It took a while to find an Android app that would just tell me how far I have walked. I don't want to plan a route - my route this summer is wherever there is shade. I don't want steps, or calories burned, or how fast I'm going. I don't need a map of where I've been. Map My Walk is the best I have found and it has about 5x what I want, but pretty simple to just start a walk, and it notifies me every quarter mile (adjustable), which is handy. You can't buy it - subscription only. (Update - for what I use, it doesn't even need a subscription.)

KROGER has quit stocking whole wheat spaghetti. BAD. They still have, for now, whole wheat thin spaghetti. (Update - they fixed the issue - regular and thin whole wheat spaghetti on the shelf.)

Gestures - I have railed against gestures as an input method on phones before. But I was hit with it recently. I was testing one of my Android apps on a virtual phone with Android defaulted to gesture navigation. I needed the app list but could not find it. I gave up my search and asked Perplexity.ai. The answer - swipe up on the home screen. What? How was I supposed to know that? It seems to me that gestures are a lot like invisible icons. I hate icons, but with a (visible) icon, even if I can't decode the meaning, at least I know some function is a touch away. But a gesture?

Philips Norelco One Blade electric razor - excellent. It's like an electric hair clipper or hedge trimmer, except the head is only about 1+1/4 by a 1/2 inch. And it has a surface that lets you drag it across your skin smoothly. It doesn't shave as close as fancy razors. But it doesn't leave long hairs that don't get under the foil. And it doesn't pull hairs. No pain. Doesn't irritate skin.

I hate sock that squeeze my feet. Many years ago, I found Gildan size 12-15 gray crew socks. Much better than other socks although they still squeezed a bit. I don't know why, but the black ones were much tighter. I never tried white. But they quit making them. Inexplicably, the low cut versions of these socks were no looser that their regular socks. I tried other large size socks - they were longer but not any looser. Searching Amazon recently to see if Gildan had started making the 12-15 gray crew socks again, I found these - Extra Wide Comfort Fit Socks. There are other brands that appear similar, but the Extra Wide brand has a much higher cotton content. They are expensive, about $10/pair. The medium size socks are loose on my feet. Fantastic. As with all socks that I wear, I cut the calf part off to just above my ankle.

Brooks Adrenaline 24 (running) shoe tongue loops - finally a shoe company has addressed the problem of shoe tongues falling to the side. A small string loop on each side of the tongue. The shoe string goes through the loop and holds the tongue up and reasonably centered. A significant advancement in shoe technology!

Amazon Kindle - it appears that they have fixed the page number line display (see Software Bugs post). It took about nine months.

Lubuntu 24.04 and Android 15

contents

Ubuntu (Linux) 24.04 - I was informed that 20.04 long term support was ending shortly. Time to update - skip 22.04, go to 24.04.

You can't skip 22.04 - update to 22.04 then then update to 24.04. The update to 22.04 went well.

The update to 24.04 failed miserably. Linux installs work great - until they don't work - then you are screwed. I resorted to installing from a 24.04 ISO disk image install. At this point I decided to switch to Lubuntu. This is just Ubuntu with the LXQt GUI. Then I went through a day of torture trying to figure out why I could install, but not boot to my disk.

I finally realized that my disk was partitioned as MBR (Master Boot Record) for booting directly and the install wanted GPT (GUID Partition Table) for booting to UEFI which, I think, lets you boot to a USB drive without choosing it in the computer BIOS. But changing the partition type wipes the disk, which I was avoiding. But I need to have a working computer so I did it. I still couldn't get this working. So back to MBR and I figured out how to make it bootable. Too late to save my disk. With my disk wiped, I had to install a bunch of software and of course restore my personal files. That went reasonably well, except that when I backed up the disk before the update, I didn't think to backup hidden directories. My SSH certificate that let me log on to my web page was gone. Fortunately I had put that directory on my laptop.

So, finally up and running. But some of the software that I need wasn't working. These are the down level programs that I had to get to make v24.04 work as well as 20.04

Okular has replaced Evince (also know as Document Viewer). Okular produces absolute garbage prints of PDFs to my PostScript printer. Evince still works well.

A new EasyABC (music editing app) runs on Python 3 (Yay!). But it has again been disabled by Python changes. I had to get down level Python 3.9.

Newer versions of abcm2ps (this formats ABC format tunes into sheet music) do not produce correctly scaled sheet music. There is a replacement program written in JavaScript using abcm2ps as a starting point. But if the latest amcm2ps doesn't work right, why would I spend the time to switch. I got down level abcm2ps 8.14.6. Back in business.

Ghostview, a GUI interface to GhostScript (PostScript emulator) is obsolete. But it still works. But you need down level GhostScript 9.52. I'm not sure why they needed to update Ghostscript - Postscript hasn't changed in many years (to my knowledge).

I could rag on Linux for depending on libraries downloaded independently from applications. But even worse is new programs that don't work as well as the old programs that they are replacing. Okular PDF prints to my Postscript printer are just plain wrong. Abcm2ps was updated and lost scaling functions that I was using. Ghostview (GUI for Ghostscript) supports has been dropped and it does not work with new versions of Ghostscript.

Of course this is common on Windows and Android. I have no experience with Apple.

I wrote a Windows/Wine version of my text editor in 2007. I have fixed a few bugs and added a bit of function over the years but no other changes. I still use it for almost all of my text editing, under Wine in Linux, 18 years later.

Android 15

While Linux makes it hard to keep using old software, Android makes it impossible to use anything more than a few years old. How? By changing the API (application programming interface), redacting old API function, and constantly changing the requirements to be listed in the app store.

Android 15 on a Samsung S23 - Good Lock / Lockstar ruined - app widgets are no longer allowed on the AOD (always on display). I recently modified my clock app to display (optionally) only time zone and next alarm. I used this with Lockstar to display it on the AOD. This fixed one of my major issues with Samsung's Android. No more. Back up to Android 14? Only by resetting the phone and losing the entire setup and data on it.

For Android Firefox and I Heart Radio I have block notifications set. But they both manage to display annoying notifications.

If I turn the phone off, the display blanks and then displays the AOD. What's that for? Apparently, I often turned off the phone and then checked the time. Now I turn off the phone and have to wait for it to display the time.

New battery recharge modes: charges to 100% then stop until it's down to 95%; stops charging at 80% while you are asleep and switches to 100%/95% mode while you are awake; stops charging at 80% (or 85%, 90%, 95%). Why not charge to 80% then stop until it's down to 75% and similarly for 85%, 90%, 95%? This is important because I will often take my charged phone off the wireless charging stand, use it for a short time and put it back on the stand. Wouldn't it be better to not charge until it has dropped significantly? I don't know.

So what's new and improved in Android 15? The status line battery display is easier read. I use Nova Launcher, not One UI, so nothing there. I can't find anything else.

Why Didn't I Do This Long Ago?

contents

Many times in my life, after doing some really useful task or acquiring a very useful device, I have realized how useful it is and think - why didn't I do/get this long ago?

Scripts to do repetitive tasks. After typing command lines over and over and using clumsy GUIs for my current 3D print project, I finally spent a half hour writing a script (OpenSCAD and Prusa Slicer both have command line interfaces). Having completed it, render and generate printer control code is one short command line. Faster, easier, less frustrating.

While I was thinking about the above script, I asked Perplexity.ai if I could set up a key to type in today's date. Yes - it took 5 minutes to do. Now when I want a date stamp on a file name I just use F10 instead of typing the date.

I recently did a house cleaning, and I wanted to get the limescale off of my faucets. I used a chemical calcium/lime/rust remover on my kitchen faucet, then realized - I just bathed my drinking water faucet in toxic chemicals. I've done this before and spent a lot of time running water before drinking. But this time I checked on Amazon and found new complete faucet aerators (including shell) for about $2 each. These installed easily, dramatically improved the flow due to the unclogged aerators, and of course look great.

My bread maker is another example. Just measure out the ingredients, let the bread maker turn it all into bread, and slice it. What's so great here is that I control the ingredients - for me whole wheat flour, olive oil, salt, yeast, gluten. And if you try this, you will soon learn the root of the idiom "the greatest thing since sliced bread".

Battery vacuum cleaner, string trimmer, leaf blower, drill, Dremel tool. It is so much easier to pick up a tool and use it instead of choosing a suitable electical outlet and perhaps extension cord, and working around the cord while doing the job.

Exchange Traded Funds started to compete with mutual funds around 2000, long after I had been investing via mutual funds. They have huge advantages over mutual funds - delayed capital gains taxes, mid day trading and tracking, low expense ratios. Why did I wait until retiring, 2016, to investigate and start using ETFs?

Gewa Strato violin case - light and space efficient. Mine is wearing out after many years. But it's been discontinued. I can't find anything similar on the market. Why didn't a get a spare?

After reading about how tea bags release microplastics into tea, I found everything that I needed to make tea from loose leaves. Specifically an infuser (stainless steel) and some loose leaf tea. I tastes about the same as using tea bags, but no plastics. This time I'm ahead of the curve!