My Specialist Subject is ‘ways to proved wrong by US politics’.
This caught my eye:
In some ways, group chat feels like a return to the halcyon era of AOL Instant Messenger, once the most widespread method of messing around with your friends on the internet.
It’s probably not a good look to admit that you’ve been experimenting on your friends, but for the last couple of years i’ve been badgering people into using Signal, and creating group chats for circles of friends / acquaintances. Periodically i’ll create a temporary group to help plan a specific event or to aide collaboration on a task.
In the time that i’ve been doing this nobody in my circle has ever invited me to join a group they have created. It’s possible that they all hate me, or at the very least resent me setting the venue. More likely (i hope) it is still simpler to do everything publicly on a platform like Twitter / Facebook / Instagram.
I found that there were things that it would be better to communicate to a specific subset of my “followers” (such a creepy term!) on Twitter, but most seem quite comfortable with the broadcast model. Now i’m a little more isolated online, but less overwhelmed by interruptions.
Oh, and sorry about the experiments. Friends don’t experiment on friends… or do they?
There have been a couple of times where it would be have been useful to be able to fake the origin of my internet traffic. Services that geo-block, differentiated regional pricing, etc.
To some extent this can be done with Tor, requesting new circuits until you get an exit node in the locale you need. However, many exit nodes get blacklisted, or made difficult to use by the “saints” (hello Cloudflare!) running some of the largest virtual hosting environments.
Time for a VPN?
The thing about VPNs is that, unless you are very careful, they provide only an incremental improvement in privacy. Still, if the goal is to be able to defeat geo-blocking it’s not a bad answer… except that the OpenVPN, the software supported by most VPN providers doesn’t have a stellar record for security (due to it’s size, it presents a large act surface), has relatively high-over head, and kills batteries.
Wireguard is a proposed answer to these issues. It’s new code, but is building on modern security libraries freeing it from some of the baggage that OpenVPN has been lugging around since 2001, and is small enough that it can realistically be reviewed / validated. Conceptually it’s a lot simpler than what came before it… i’d emphasise the “conceptually” part – making no claims to have truly understood the implications of the security choices that have been made.
And there are now VPN providers out there that are supporting Wireguard. Having signed up with one of them to experiment, it seems to be a big step forward. For my home connection (100MBit / 50MBit) it’s possible to saturate the downlink when connected to VPN… when using a server exit in Germany. Leaving it connected on my laptop there isn’t any noticeable change in battery life. I’d assume there is a change, but it’s not enough for me to worry about it.
The clients i’m using (macOS / iOS) are from the respective AppStores, and have been straightforward to configure.
All that said, not sure that i’m going to carry on paying for a VPN. The most compelling reason to do so is using it from my phone over sketch “free” WiFi… but if that is the only thing i care about it would be just as easy to install Wireguard at home and route all the traffic via that connection. The only thing stopping me doing that is laziness.
Wireguard on Synology. That’s the thing!
There a couple of things that would make PaulStretch more longterm viable. They (mostly) don’t seem that challenging:
- update the XMLwrapper to use the new Mini-XML 3.0 API. Some of the direct references to fields in Structs has been replaced with method call / accessors.
- fix minor warnings. There is a method lacking a return that prevents -Wall from being passed to g++.
- create a brew thingie… the terminology is odd, it might be a Formula or a Cask.
- finally learn enough Autotools to create a standard build. It’s very likely that i’d get this horrible wrong and hate myself for even trying… but it does seem like The Right Thing™.
There are a couple of pull-requests outstanding in GitHub, some of which have been there for years… no idea if Paul is still in anyway interested in the project. Perhaps i’ll end up creating / owning a fork. Yuck.
It’s a weakness. Software archeology. The topic of PaulStretch came up during the week, and of course i wanted to play with it again.
Back in 2013 there were downloadable binaries, but it seems they probably stopped working a few macOS releases ago. And besides, where is the fun in that!
The good news is that despite not being touched for years the code does actually compile. There is no bad news, it’s working perfectly, and i’m listening to the Alien Sex Fiend track ‘I Walk The Line’ stretched out to 35mins.
After cloning the code from GitHub, it’s just a matter of installing the right libraries. I’m using MacPorts and the other dependency that was missing was mini-xml. That is also on GitHub, but the latest release isn’t compatible, fortunately the v2.12 release is fine.
Work from the script here:
- install FLTK (available in MacPorts)
- run the two fluid commands
- run the g++ command (changing $outfile to paulstretch
- install the missing libraries until you get a binary
The missing libraries were:
- fftw-3-single (this is suggested as optional, but it wasn’t hard to include)
To install mini-xml it was the usual:
./configure –prefix=/opt/local ; make ; sudo make install
Everything else was just:
sudo port install
Aint it pretty!
$ fluid -c GUI.fl
$ fluid -c FreeEditUI.fl
$ g++ -ggdb GUI.cxx FreeEditUI.cxx *.cpp Input/*.cpp Output/*.cpp `fltk-config –cflags“fltk-config –ldflags`-laudiofile -lfftw3f -lz -logg -lvorbis -lvorbisenc -lvorbisfile -lportaudio -lpthread -lmad -lmxml -o paulstretch
FTW, i tried to statically link it but it start to complain about missing libraries. Perhaps i’ll be motivated to learn how to package a .dmg file if there is interest. Surely it can’t be that difficult… right?
Update: it doesn’t look that difficult to create a ‘PaulStretch.app’, there is some Info.plist to create, copy all the libraries into the directory structure:
$ otool -L paulstretch
and then update the paths with ‘install_name_tool -change’ to update the paths to reference the copy in the App directory structure.
Check back tomorrow!
Update: after a few more shenanigans fixing library references in libraries that reference libraries (it’s turtles all the way down, etc) there is now a “nicely” packaged ‘PaulStretch.app’ that can be distributed in a DMG image. It has even been tested off my machine!
$ tree PaulStretch.app PaulStretch.app └── Contents ├── Info.plist ├── MacOS │ ├── libFLAC.8.dylib │ ├── libaudiofile.1.dylib │ ├── libfftw3f.3.dylib │ ├── libfltk.1.3.dylib │ ├── libmad.0.dylib │ ├── libmxml.dylib │ ├── libogg.0.dylib │ ├── libportaudio.2.dylib │ ├── libvorbis.0.dylib │ ├── libvorbisenc.2.dylib │ ├── libvorbisfile.3.dylib │ ├── libz.1.dylib │ └── paulstretch └── Resources └── PaulStretch.icns
Iain has a new book out today – Every Word You Cannot Say*, and it has his drawings.
He has been doing them for people on Twitter… obviously i had to get in on that action! Love the fact that i’ve got my face stuck in a book.
Also, despite expectations, red is a good colour for me.