more LWP bit rot

Anyone know what this shit is and how to stop it?

Use of uninitialized value $vals in index at /usr/local/share/perl5/HTTP/Headers.pm line 277.
Use of uninitialized value $vals in concatenation (.) or string at /usr/local/share/perl5/HTTP/Headers.pm line 280.

I don't know when or why it started, but I've tried all of:

cpan
upgrade HTTP::Headers
upgrade LWP
upgrade HTML::HeadParser
upgrade LWP::UserAgent
upgrade HTTP
upgrade HTTP::Request

/usr/local/share/perl5/HTTP/Headers.pm:our $VERSION = "6.10";

This is on a CentOS machine, not a Mac, in case that matters.

Previously, previously.

Tags: computers, firstperson, lazyweb, linux

XScreenSaver 5.33

XScreenSaver 5.33 out now. iOS version, too.

  • New hacks, Splitflap and Romanboy. There are some fun, physical-glitch behaviors in splitflap. Keep looking.

  • Better detection of user activity on modern (ha) GNOME systems.

  • Sonar now does asynchronous host name resolution.

  • Vastly improved Unicrud and Z̧"̘̖̫̱̖͉̬͈̥͔̳͎̝͜͡A"͍̹̮̺͓̤̺̺̖̤̥̖͍͎̙̫̫͙̜L͉̹̙͎̻̱̳̦͢͞Ǵ̶̷̛̠̠͕̯͖͈̟̝̮ͅǪ̩͔̪̲͍̹̩͕̕͠͝ͅ support.

  • Performance improvements on MacOS and iOS.

  • The Android port is coming along nicely. It's not quite to the point where it's time for me to post an .apk file yet, but it's getting there. If you have an Android development system, please give it a spin and let us know how it works for you. xscreensaver/android/README.

  • And, you know, other stuff.

Tags: computers, firstperson, linux, mac, mpegs, xscreensaver, zalgo

From the GNOME User Interface Guidelines:

Tags: computers, firstperson, linux, retrocomputing

Dali Clock 2.43

Android bug fixes.

Previously.

Tags: computers, daliclock, firstperson, linux

Dali Clock 2.42: Android!

Robin Müller-Cajar and I have ported Dali Clock to Android! Finally!

It's not in an app store or anything, because I don't know anything about that crap, so you have to manually install the .apk file. I assume everyone reading this knows how to do that.

It runs as both a normal application and as a "Daydream" service. Select Settings / Display / Daydream / Dali Clock, and it will run automatically as a kind of screen saver when the device is docked or charging. Android 4.2 or newer is required.

Like the iOS version, there is no preferences panel. Swipe left or down to decrease the number of digits; swipe right or up to increase. Tap to momentarily display the date. Double-tap to toggle 12- and 24-hour mode.

Let me know what performance is like on your various devices.

The emulator doesn't seem to be able to emulate more than one Android device, so I haven't witnessed it doing its thing on a tablet or a Google TV or anything like that.

Hopefully it will track your locale's rules about the order in which day, month and year appear, and whether 24-hour time is the default.

I'd sure appreciate some advice from experienced Android developers about what we did wrong, since this is my first trip down this road. In particular, the android/Makefile is a horror show. Do I really need to type in a password every time I want to build the .apk file?

I'm also suffering PTSD at just how many useless subdirectories this effort resulted in. I'm sure that some of this is unavoidable Java insanity, plus a layer of Android insanity on top, but seriously? It goes fourteen levels deep!

I would like to make pinching do the same as swiping, but I couldn't figure out how one does pinch gestures on Android.

When changing the device's orientation, it takes a long time to react. I don't know if that's because I'm doing something wrong, or if that's just how Android is. (I've only seen this thing running in the emulator, not on a real device.)

So far, I have not discovered any way to get Android Studio on OSX to show me the output of Log.d() or Log.i(), which makes all of this incredibly difficult to debug! Even when I do "adb -e log cat", nothing shows up. Well, a lot of crap shows up, just nothing I printed. Does this happen to everyone, or am I just lucky?

Oh, also, Joshua Wise ported it to the Pebble Smart Watch. The source for that is in this release too.

That's probably not the watch you were wondering about, right?

So it turns out that an Apple Watch port of Dali Clock would be kind of pointless, because the Apple does not allow you to build custom watch faces at all. No, really.

And as far as I can tell, the only way to get custom graphics onto the watch is to basically package up and hand it the equivalent of an anim-GIF. So the way that would work is, you'd launch an app on your watch, which would launch an app on your phone, which would then start spraying image frames at the watch over bluetooth as quickly as possible -- which they say is something like 10 FPS when they are looping. In the case where every frame is different forever, who knows.

Tags: computers, daliclock, firstperson, linux, mac

I told you so, again

If you are not running xscreensaver on Linux, then it is safe to assume that your screen does not lock.

Once is happenstance. Twice is coincidence. Three times is enemy action. Four times is Official GNOME Policy.

CVE-2014-1949:

  • Press the 'Menu' key on the keyboard
  • Press 'Esc'
  • Focus is now beneath the screen locker
  • Press Alt+F2
  • Start 'gnome-terminal'

This was sent to bugtraq a couple days ago, but it was actually reported two months before the similar GNOME bug that I ridiculed last year.

And here's another variant of it from August, which is possibly even easier: "Holding menu key causes window flood and desktop freeze." This probably means "hold down the Menu or Super key and wait for gnome-screensaver to run out of memory and crash, unlocking the screen."

I told you so, 2004 edition.

I told you so, 2005 edition.

I told you so, 2014 edition.


Previously, previously, previously, previously.

Tags: computers, firstperson, linux, security, xscreensaver

The Emularity

@textfiles: "Somewhere @jwz and @BrendanEich just popped their eyes open in bed, like ancient sorcerers who realize the Dark Rock of Mothrir was unsealed"
Last week, on the heels of the DOS emulation announcement, one of the JSMESS developers, James Baicoianu, got Windows 3.11 running in a window with Javascript. [...]

That's Netscape 1.0n, released in December of 1994, running inside Windows 3.11, released in August of 1993, running inside of Google Chrome 39.0.2171.99 m, released about a week ago, on a Windows 7 PC, released in 2009.

Your turtles (who, I understand, go all the way down) will be wanting my http10proxy.

Previously, previously, previously, previously, previously, previously, previously, previously.

Tags: computers, linux, mad science, nscp, retrocomputing

XScreenSaver 5.31

XScreenSaver 5.31 out now. iOS version, too.

  • Three new hacks this time, GeodesicGears, BinaryRing and Cityflow. And I figured out a way to make GLPlanet not look crappy.

  • All of the text-displaying hacks support UTF8 input (even if some of them, like Apple2, can't quite display all of the characters on output), and all text is antialiased, even on Linux. (This means Zalgo Star Wars, as noted previously). To make this work I had to add a UTF8 parser to my VT100 implementation. Like you do.

  • The problems that MacOS 10.10 had with loading text and images are fixed. I still haven't upgraded but I think it should be working.

  • The iOS app has a search field (pull down the top of the list).

  • iOS device rotation completely stopped working when I was forced to upgrade from the iOS 7 SDK to the iOS 8 SDK, so I had to rewrite a bunch of stuff to get it working again.

    Let me know if you have an iOS device/OS combo on which rotation doesn't work, or things are scaled wrong (don't fill the screen, or are too big for the screen.) Good tests are "Apple2" and "Endgame". Do they orient properly when you rotate? When you rotate and then drag in "Endgame" does the object track your finger properly?

  • A fellow named Dennis made some good but very preliminary progress on a port to Android, so there's now an android/ subdirectory in there. If you have an Android development environment installed, give it a whack and let us know how that works.

  • At some point "shake to run a new saver" stopped working. It works when the saver list is visible, but not when a saver is running. I can't figure it out. If you can, send me a diff!

  • I would like confirmation from someone running XScreenSaver 5.30 on on MacOS 10.10 that eventually the "there's a new version available" dialog appears, and then successfully downloads and installs 5.31. So if you don't download it manually, lemme know how that goes.

That's a lot of changes this time. But really I want to talk about GeodesicGears because it's awesome.

Most of the time when I write a new saver, it kind of percolates around in my head for a few weeks, and then I knock it out in a day or two. Not this one. The math on this one kicked my ass for like a month. There were a few times when I was completely stuck and the answers literally came to me in dreams. Not like visualization dreams or anything, but extremely literal, "I am typing, adding struct fields, adding for loops" dreams where I crack the problem, wake up, and think, "Oh hey, that's gonna work." Then I basically type it in. That doesn't happen to me too often, but it does happen with some regularly, and I really enjoy it when it does because if I'm expected to spend a third of my life motionless and hallucinating I might as well be doing something I actually care about with that time.

Anyway, a while back I posted some cool gear animations by TaffGoch. As far as I can tell, he built those by hand in Sketchup, based on the extensive research by Bugman123, who figured out the large set of 32-gear and 92-gear tilings of a sphere that "work", more or less. So I implemented most of those. (I haven't done the 182-gear models yet.)

There are still a bunch of numeric constants in my code to make these layout work, and it bothers me that those numbers aren't all derived from something basic in the model, but most of the layout is done computationally, as is Good and Proper.

So the interesting thing about meshing gears on a closed surface is that because the connectivity graph is neither directed nor acyclic, all possible loops have to be an even number of hops, or the gears bind: clockwise gears can only touch counterclockwise gears. If you look at the animations, you'll see loops of four gears touching each other but you can never see three. It's almost a map-coloring problem, I guess.

The sizes of the various gears have to match in just the right way (outer disc edges tangent to the surface of the sphere, the right set of discs touching and the others not); every gear has to have the same size teeth; and tooth size and radius imply the number of teeth on a gear, which also have to be matching multiples of the rest of the system. There are not always solutions to all of these constraints!

In fact, the 92-gear models don't technically "work". The phase errors build up, and sometimes you see gears that don't mesh properly. If it was a real object, it would bind after a few turns. This bugs me, but it still looks "right" most of the time.

Anyway. Another fun way of looking at the the chirality of meshed gears is, instead of thinking of them as clockwise and counterclockwise, think of them as magnets, with one flat face being positive and one negative, so "In" and "Out" have different polarity. You get the same layout constraints, because "heads" can only be adjacent to and touching "tails".

That's the idea behind Kenneth Snelson's model of the atom:

He discovered the 5, 8, 10, 14 and 18-disc layouts that work, and I tossed those into the mix as well. (His 32 disc layout is the same as one of Bugman123's 32 disc layouts, because it's the case where the 20-count gears and the 12-count gears happen to be the same size).

My thanks and apologies to all of my friends who have had to listen to me drunkenly babble about trigonometry over the last few weeks. (Or possibly years or decades.)

Tags: computers, firstperson, linux, mac, mpegs, xscreensaver, zalgo

We live in a magical future where "strings" is exploitable.

What is this I can't even.

Many shell users, and certainly most of the people working in computer forensics or other fields of information security, have a habit of running /usr/bin/strings on binary files originating from the Internet. Their understanding is that the tool simply scans the file for runs of printable characters and dumps them to stdout - something that is very unlikely to put you at any risk.

It is much less known that the Linux version of strings is an integral part of GNU binutils, a suite of tools that specializes in the manipulation of several dozen executable formats using a bundled library called libbfd. Other well-known utilities in that suite include objdump and readelf. [...]

In any case: the bottom line is that if you are used to running strings on random files, or depend on any libbfd-based tools for forensic purposes, you should probably change your habits.

Previously, previously, previously, previously, previously, previously.

Tags: big brother, computers, doomed, linux, security, www

postfix and spamassassin

So I had been running spamassassin from postfix like this:

mailbox_command = /usr/bin/spamc
                 --no-safe-fallback
                 --max-size 100000000
                 --connect-retries 5
                 --retry-sleep 5
                 --pipe-to /usr/libexec/dovecot/deliver
                 || exit 75

but it seems like maybe the proper way is:

mailbox_command = /usr/libexec/dovecot/deliver
smtpd_milters = unix:/var/run/spamass-milter/postfix/sock
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

however, the former runs the final recipient's $HOME/.spamassassin/user_prefs and the latter does not. Is there some way to make the latter do what the former does? Or is the former actually the right way to do it?

Previously.

Tags: computers, firstperson, lazyweb, linux, spam