In which it takes over two hours to play an MP3 file on Linux in 2016

Let me preface by saying that it’s 2016. Right? Am I right? It’s 2016, I think.

TL;DR

Having problems in Banshee, Totem, Rhythmbox (GStreamer apps) on Lubuntu? Can’t play MP3? Can’t get any audio output at all? Try the following command:

sudo apt install gstreamer1.0-plugins-ugly gstreamer1.0-alsa

If you give a crap, it’s a combo of no MP3 decoder being installed by default for GStreamer (despite the existence of an MIT-licensed one), and dependency fail in Lubuntu (which uses ALSA, but inherits defaults from Ubuntu which uses pulseaudio).

I encountered this bug in Lubuntu 16.04, but a related report dates back as far as Lubuntu 13.04 – at least three years.

You’re welcome. :|

Complete accounting of sadfeels

A little background: I’ve fallen on hard times. My music library has been offline for years, at least 2 years if not more. I’m trying to restore it for the sake of my sanity, and all I have to work with is a 2008 Macbook running Lubuntu 16.04 – a choice of operating system not taken for the sake of my sanity, as you will soon see. I’m using Lubuntu due to economics.

Here’s what I’ve had to do in order to import my old library and get playback of MP3 music file working. MP3 is a codec which I first used in 1998. Importing and playing music should be dead simple in Banshee 2.6.2. It’s anything but. Unfortunately, I’m stuck with Banshee on Linux just like I was stuck with iTunes on OS X, because I’m a heavy user of smart playlists – when the apps manage to function at all, anyway.

It’s worth noting that Audacious, the lightweight music player installed by default in Lubuntu, was able to play MP3 out of the box as YHVH intended because it is fucking 2016 why is this a problem.

  1. Import my old iTunes media library into Banshee. Wait, no, that causes Banshee to freeze.
  2. Disable some plugins, then import! Wait, no, that causes Banshee to crash.
  3. Disable ALL the plugins except the import plugin, then import! It mostly works – a truly earth-shattering accomplishment for a program under development since 2005 and billed as version 2.6.2 (except in the Ubuntu package, which is billed as “2.9.0+really2.6.2-7ubuntu2,” I shit you not).
  4. Double-click the file and play! Wait, no, that pops up a red X icon for the given song and the next 4 songs, with no other feedback at all. Cute.
  5. First examine ~/.config/banshee-1/log and then run ‘tail -f’ on it while trying to play the MP3, in an attempt to figure out what the fuck is going on. (Why do I need to know about the existence of a log file for a fucking media player? Because I am in purgatory, that’s why, and nothing is ever simple.)
  6. Of course, there is absolutely no related human-readable output for an obvious playback error in the FUCKING LOG FILE.
  7. Do the next least-worst thing and search a vaguely-unique-sounding term in the log file which may or may not be related. BTW, 99% of users would have given up at step 1 and be left, if they had my library, trying to choose from within 89GB worth of music with the file manager.
  8. Receive vague hints from Internet that GStreamer (why do I need to know this exists?) may be “broken.” At this point, I begin to suspect licensing fail resulting in no MP3 decoder installed by default. At the moment, I don’t remember if Lubuntu 16.04 asked me about installing non-libre plugins, but if it did, this would be a GREAT candidate. :|
  9. ‘sudo apt install gstreamer1.0-plugins-ugly’ (since if there’s a plugin which handles MP3, Fluendo or otherwise, it’s likely to be “ugly,” because nerds).
  10. Double-click the file and play! NO FUCKING AUDIO OUTPUT. Begin writing this post because I need to vent and because I suspect documenting my tribulation will help at least 3d6 benighted searchers to play a FUCKING MP3 FILE on their FUCKING COMPUTER.
  11. Take a break to update a bug report on banshee, file a different bug report on banshee, and file a bug report on lxpanel for shits and giggles (volume control UX needs work). Plan an additional bug report on gstreamer for its utter lack of useful error messaging.
  12. Determine that additional gstreamer apps are also pretending to play back a file but producing no output. I’d installed totem in step 7 in order to confirm that the original playback fail was gstreamer-related. Indeed, totem is also exhibiting the new playback fail.
  13. Search ‘gstreamer “lubuntu” audio’ and find a bug from 2013 that is related.
  14. ‘sudo apt install gstreamer1.0-alsa’
  15. Double-click the file and play! Finally, it fucking works. Well, not for M4A files, but that’s another rant.

So by my count, I need to file the following bugs:

  • gstreamer error output is useless in the context of a missing MP3 decoder
  • Lubuntu has a dependency problem; gstreamer 1.0 installs a pulseaudio “sink” by default, but Lubuntu uses ALSA, not pulseaudio.

I’m tired, and I don’t get paid for this. But hey, now I can listen to the 70% of my library that’s not encoded in AAC.

Edit: If you want to play AAC (M4A) files, ‘sudo apt install gstreamer1.0-plugins-bad-faad’

Tuning Lubuntu 16.04 Xenial for a 2008 Macbook

I just installed Lubuntu (LXDE-based Ubuntu) on a 2008 white plastic Macbook, and stuff didn’t work properly out of the box. Here is how I got Lubuntu working better on my Mac.

Touchpad

This was the first and worst problem. The touchpad wasn’t disabled when typing, and it was too sensitive. Solution: edit ~/.config/lxsession/Lubuntu/autostart and add the following lines:

syndaemon -d -t
synclient PalmDetect=1
synclient FingerLow=38
synclient FingerHigh=44

Note that you may want to tune FingerLow and FingerHigh. From the synaptics ‘synclient’ man page:

Option "FingerLow" "integer"
       When finger pressure drops below this value, the  driver  counts
       it as a release. Property: "Synaptics Finger"

Option "FingerHigh" "integer"
       When finger pressure goes above this value, the driver counts it
       as a touch. Property: "Synaptics Finger"

Adjust the numbers to your liking; FingerLow=38 / FingerHigh=44 is perfect for my Macbook, but you may want something different.

You’ll need to either restart your session or maybe reboot for these settings to take effect.

General System Tuning

Some of these tips are from “10 things to do first in Lubuntu 16.04,” which is a great in-depth post. I’ve streamlined the instructions here, and it should be noted my Macbook has an SSD. So this is tuned for a machine with 3GB RAM and an SSD.

Reduce swappiness

I’m taking it on faith that you want low swappiness with low RAM, so, edit /etc/sysctl.conf and add: vm.swappiness=20 and reboot.

Applications on Lubuntu

Lubuntu is nice and lean, but you may want more than just the default applications. Here is what I use.

Install Chromium and a couple extensions

For Reasons, I prefer Chromium to Firefox, despite Google’s data mining.

My main tips: install uBlock Origin as your ad blocker (it’s memory-efficient, which matters on old machines), and install Privacy Badger, because it’s also memory-efficient and can block threats which are not yet filtered by uBlock Origin.

If you’re concerned with privacy, it doesn’t hurt to install HTTPS Everywhere.

Install minimal Libreoffice

For the office-y tasks I do, I need at least Writer and Calc. I gotta say, the default word processor (Abiword) managed to handle basic tasks without pissing me off at all, which is a high bar. But I need the more fully-loaded Libreoffice apps. Fortunately, you can keep it lean for Lubuntu.

sudo apt install libreoffice-writer libreoffice-calc libreoffice-gtk

The libreoffice-gtk package apparently improves integration with LXDE.

Next, turn off some bloat (I dunno what bloat, but I’ll take it on faith) in Libreoffice by disabling Java features:

Fire up Libreoffice Writer, click the Tools menu, click Options…

Under LibreOffice > Advanced, uncheck “Use a Java runtime environment.”

 

I’ll update this post as I have to fix more out-of-the-box settings.

 

An old favorite.

ha ha skeleton

 

Can’t take the credit for this one, but I sure do love it.

How to hide Tumblr likes from certain users with AdBlock

You know the ones – those Tumblr users who just can’t get enough of your style or “aesthetic.” (What would you call them? “Tumblr groupies?” Maybe. “Tumblr crushes” implies mutual lurve of curated content, not one-sided pining.)

They “like” every post you make and reblog a lot. But the liking. The compulsive heart-clicking. You weary of it.

Anyway, say you actually do like the user, but you just want to hide their 20 million clicks of the “heart” button from clogging up your activity page AND your activity quickbox from the Tumblr dash. Well, now if you’re an AdBlock user, I have some rules for you that work as of October 2015!

This solution is great because you’ll still see the user’s posts, asks, reblogs, and all that. Only the likes will be blocked with AdBlock. This should work on AdBlock Plus and AdBlock Pro without any or much modification, but I haven’t tried it on those.

Let’s pretend we’re going to block a user named noisyuser. Without further ado, here are the rules and instructions on how to paste them into AdBlock!

Copy these rules into your clipboard:

    www.tumblr.com##DIV.ui_note.is_like[data-tumblelog-name="noisyuser"]
    www.tumblr.com##DIV.like[data-tumblelog-name="noisyuser"]

And, if you’re particularly annoyed, you can hide their avatar from your “top 4” bar on the activity page with this rule:

    www.tumblr.com##A.ui_jumbo_avatar[title="noisyuser"]

Now, click the AdBlock icon in your browser menu bar. Click Options, click Customize at the top (this may differ in other flavors of AdBlock), and then click Manually Edit Your Filters. Click Edit on the bigger list – make sure you don’t click edit on the Disabled Filters list.

Now, paste the above rules at the bottom of the Filters list.

IMPORTANT: CHANGE THE USERNAME noisyuser to the tumblr username of the person whose likes you want to hide, THEN click save.

Presto – a single refresh of your Activity page or Dash should hide all the likes you don’t want to see, while allowing reblogs and other notifications through.

If ya gotta: making events with Magento’s Event / Observer model

Magento. ugh.

Here are some links about programming Event Observers in Magento. Hopefully somebody will find them useful:

Here’s a mix of things Magento:

And here’s a payware debugger extension that is well worth the license cost:

 

Missing man pages on CentOS, or reason № INT_OVERFLOW why I hate CentOS/RHEL sofa king much.

I can’t remember all of find’s arcane incantations. Nobody can.

$ man find
No manual entry for find

wat. find is clearly installed, of course. man pages? nope.

Search search search. Searchity search. Horrible relevancy because what are you gonna get when you think you’re smart, do rpm -ql findutils and note that /usr/share/man/man1/find.1.gz doesn’t exist, and then start searching for how to find packages with missing files using Red Hat’s primitive yum and rpm commands.

It was only when I gave up and searched on “centos missing man pages” that I found the answer.

# yum install man-pages

Yes, seriously.

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

Released 1 December 2013. So I guess I can’t ask what fucking year it is.

Linux users on Apple machines: how to find the system product name of your Mac

Here’s another nugget I’m dropping in the hopes it’ll get indexed, because I have a hell of a time remembering how to find my Apple Mac type in Linux (where by type I mean things like “Macbook4,1” or “iMac6,1” and the like). Finding the exact model of Mac you’re running is often useful when debugging the all-too-frequent rough edges of Linux running on a Mac.

Be advised, I’ve only tested this in Linux Mint. I expect it will probably work fine in Ubuntu and likely Debian.

In Terminal or on the command line, to find what model Mac you’re running Linux on, simply run

sudo dmidecode -s "system-product-name"

Thank Craigslist for the fake “sharing economy.”

It occurs to me suddenly that if Craigslist hadn’t totally dominated the very concept of free online classified ads in the US market, all these fake “sharing economy” sites — really just middleman parasites in a thin disguise — may well not exist, or exist in lesser numbers.

Put another way, because Craigslist has dominated the market and mindshare in free classified ads for all categories with its horrible, unsearchable, unfriendly, eye-bleeding site, nobody dares put up a free or volunteer classified ad site for a specific subcategory of goods or services. I mean, why would you? Craigslist will just make it irrelevant, right?

So in order to compete in a specific subcategory, or “vertical” (gack), you actually need a profit motive to beat Craigslist, which means taking a cut of all that “sharing,” which means vastly more infrastructure for billing and invoicing than for a free specific classifieds site, which means a far greater need for capital.

Trust me, Richard Stallman exists, somebody would have made a free version of Codementor.io if Craigslist weren’t around.

I hate Craigslist. I hate it a lot. The site is awful. The company is awful and litigious, stifling innovations by the dozen because they dare scrape its data and try to make it genuinely useful.

But much like Windows, it’s “good enough,” and it was there first. So we’re stuck with it, turd though it may be. Thanks for reading; in my next post perhaps I’ll flame Paypal and Bashar al-Assad.

Installing Linux Mint 17.1 “Rebecca” (based on Ubuntu 14.04) on a 2008 Macbook 4,1

Nice clickbait title eh?

So I’m trying to get Linux Mint 17.1 “Rebecca” fully, really working on a 2008 Macbook 4,1. Fully working means webcam support (touchpads in another post maybe). It turns out that other drivers (2014) for other Apple bits existed as well, now in various states (2012) of possible abandonment (2006). Oh, and as we all know, Linux Mint 17 is based on Ubuntu 14.04 LTS which are important keywords too.

iSight webcam and AppleUSBVideoSupport firmware

The iSight webcam doesn’t work because of AppleUSBVideoSupport.kext being a binary blob that I don’t have. When I install the isight-firmware-tools package (now helpfully a part of Ubuntu / Mint 17, I think) it asks for the firmware file for the iSight webcam on the Macbook.

Dear reader, maybe you’re missing AppleUSBVideoSupport.kext as mentioned in all those other posts you found, or maybe you found it and you need the file size and hash to sorta-verify that the NSA didn’t mess with it. People won’t host it because of the chilling effect of Copyright Fear due to it being a proprietary Apple firmware blob, so best of luck.

Well I found two AppleUSBVideoSupport files (people often post it without the .kext):

  • One is 86744 bytes, found at two locations online, with ‘shasum’ b69f49d3fa6858416324c390effe14336a1ddb0b
  • One is 86712 bytes, found at one location online, with ‘shasum’ 01e291d529e7c18deea2eba252d18114e096276e, its ‘md5sum’ MD5 hash was mentioned online (in 2007) as 8b78709d02d3584f40cc041db9eecfe8.
  • Two others are mentioned online (in 2006): “Leopard” (OS X 10.5) with shasum of a14c159b176d27a6e98dcb5dea5d78b81e15ad41; and unpedigreed firmware with shasum 86430c04f9b67c5c3d84409138a7679827025ec2. I did not find these files online.

I have no idea if any of these files are legitimate but one I found at two download links, another I found at only one. I would appreciate somebody checking the shasum of their latest OS X 10.4 or 10.5 (these are the last two rumored to work as a binary blob on Ubuntu systems). It can be found at /System/Library/Extensions/IOUSBFamily.kext/Contents/Plugins/AppleUSBVideoSupport.kext/Contents/MacOS/ from what I hear.

Comments are open.

Everything Else

Every other driver for Apple computers running Ubuntu or Linux Mint which is mentioned here (last edited 2009 at this writing) appears abandoned (2012) except for these fan and boot (?) drivers (2014).

Edit: ‘macfanctld’ appears to be part of Ubuntu and/or Mint now, so I would strongly recommend doing an ‘apt-get install macfanctld’ and setting the minimums to something sane. Note that it’s buggy on many systems and may not actually adjust fan speed or sense it correctly, so you might just need to set the minimum fan speed to something that will keep your system from crashing.

I’d happily be corrected in these statements. I’ll update the post if I find out something new or receive something in comments. Thanks LazyWeb.

A thought on open source mobile OSes

I, like most of you, am trapped using a mobile OS that I hate. In this case, it’s Android. I loathe Android. Words cannot express my fury at its constant crashing and failure, although they’ve come close:

Smartphones and tablets have essentially become the new printers: things that do not work, and are not expected to work, and whose primary purpose is to inspire gothic conversations about the ultimate futility of the human condition.

You might be an iOS user, and hate that. Or a Windows Phone user (lol, I mean I did see this one guy on the bus once running the WP Tinder ripoff), and hate that. They’re all crap.

Sadly, so are the open source alternatives. FirefoxOS is crap; Ubuntu Phone is vaporware.

This isn’t to minimize the tons and tons of developer effort going into FirefoxOS and Ubuntu Phone. I cannot wait for them to get to be only as bad as Android so I can switch in a nanosecond. I just happened to have an idea – and maybe somebody’s already had it – as to how they can get there faster.

Why not pick an existing handset with an unlocked bootloader, high sales, high durability, and high hardware commonality with other devices, get major milestones done on that device only, and then leverage all the work across more devices much as CyanogenMod does?

It sure beats shipping 128MB phones that barely work as a flashlight, or in Ubuntu’s case, nothing at all. I see it like the “Scaffold” wiki pattern, in which people are far more likely to contribute when there’s a framework present in which they can fill in some blanks.