Finally some good headphones

Valco VMK20 headphones in open packaging

I might have finally found a set of headphones that I actually enjoy the sound of, that have good microphones, and that I can wear for hours on end without my ears slowly deforming and then dying, and I thought I would write my experiences down to maybe inspire someone else to get better headphones.

NB: None of the below links are affiliate links, but I am happy to send you some if you want.

As far as over-ear headphones go, I recently got and instantly fell in love with the Valco VMK20 Wireless Headphones. I have to admit, I was sniped by an actual ad, which hasn’t happened in quite some time, but their Finnish charm and self-deprecating humor got me, so I figured I’d check their claims and otherwise yell at their CEO. Surprisingly, the headphones are actually as good as described! Funny how things go if there’s no gigantic marketing spend in front of a smaller but formidable controlling department!

For in-ears, I was using the Turtle Beach Battle Buds for a while for video conferences and voice chats, and that was ok, but they’re wired and the fit isn’t too great – but you can replace the microphone with an awesome one if you are so inclined. But the big breakthrough came with the TRN V90 that I got on AliExpress for something like 25€. What can I say, the sound is simply amazing, the fit is great, the pre-formed wire loops keep the headphones in place even during a workout, and the seal is good enough to make the world quite quiet. They are wired out of the box, but you can just connect them to one of the many Bluetooth cables (sic!) the manufacturer offers. I picked the TRN BT3S with the neck loop, because I like looking like a huge nerd. By simply switching the cable for the Bluetooth module, the headphones gain Bluetooth 5.0, aptX, and a CVC6 microphone. The V90 are a teensy-tiny bit “thicker” on the bass end than I’d normally like, but it’s never distracting or overpowering. And they’re comfortable enough to wear when lying down as well.

Are those the best headphones ever? I don’t know, I only tried maybe 40 or so.

If you only have two ears, why do you need so many headphones?

The simple answer is that (almost) all headphones suck, and headphone companies constantly overpromise and underdeliver, especially if you’re, like me, part of an apparently tiny group of people that just wants straightforward, clear sound and ideally a good microphone. Instead, the market is full of headphones with eXtreme Bass Boosting, a Bluetooth range of tens of centimeters, Active Noise Canceling that replaces relaxing wind sounds with distressing electronic whistling, batteries that don’t last even a short journey, and microphones that dangle all over the place so they can better pick up the sound your clothes make as you move, or the neighbors five blocks over whispering.

Also, apparently my ears are shaped weird.

Some of the noteworthier headphones that I tried:

The BOSE QC35 II, which I finally gave in to buying about midway through my career in consulting (where literally everybody had them, or the predecessor, the QC25), were pretty nice: When I got them, they had some of the best ANC on the market, the sound is good enough, they’re lightweight and they have a built-in mic. However, the sound could be better, the ANC could be better (and newer models by e.g. SONY make this very obvious), the microphones could be a lot better (for a long time, I was wondering how some people on phone conferences had such amazingly bad call quality – then I tried using the QC35 for calls: the moment the phones go into headset mode, the mic strains to pick up even the faintest or far-away sounds, which it will then amplify and feed both into your call and into your ears, giving you super-hearing and the other participants in the call tinnitus). They still have a certain status attached to them, but to be honest, I would rather have better quality build & sound, and I am also not a fan of BOSE’s app strategy, where they try to trick you into letting them track you, and shit. All in all, not unhappy with the purchase, but glad I did get them at a discount.

The OneOdio Pro-10 Over-Ear were recommended by the Sendegate forum, because they come with a microphone which can be detached and replaced by the – very good for its price-point – V-Moda BoomPro. This indeed makes them into a great headset for podcasting or recording spoken audio, but the size and fit of the earmuffs combined with the pressure the headband put on my ears makes them very uncomfortable to wear for extended periods of time. Your mileage may vary if you are not wearing glasses or have a different head or ear shape, and the price point is low enough to just try them out.

There were a bunch of others, like the Anker SoundBuds Flow (quite liked them, but mic wasn’t great), Sennheiser buds that I already forgot the name of, a few no-name “moderator headsets” with proprietary connectors that I had to file down or resolder (but then the mic quality was quite good), the Anker SoundCore Strike 1 gaming headset (which is surprisingly comfortable and has a pretty good, detachable mic, but is way too bulky to use outside of gaming/streaming), some Mobvoi headphones I got tricked into buying after I got my Mobvoi smartwatch which I also didn’t like, some “Zircon” headphones that I don’t even remember buying, the Superlux HD 681 (which everybody knows, I think, but if not, they’re a high quality replica of high-price headphones that shall be unnamed – good, but half-open doesn’t cut it everywhere), the Sony MDR-7506 (which I still think are amazing but I rarely feel like using wired headphones anymore), the ATH-M50X (which I liked for their portability until the headband and padding crumbled and Audio-Technica did not manage to provide replacements…), the RHA MA750i (very nice sound, very good support, but ultimately not reliable enough for me to stick with the brand at increasing price-points), and others.

How to change the default branch name for `git init`

When a new Git repository is initialized using git init, the default name of the main branch that is created is “master” (likely based on the terminology used in BitKeeper, which Git was created to replace).

Update Nov 2020: This is now the default in Git.

For the past 20+ years, the usage of “master/slave” terminology has been criticized as needlessly reproducing racist terminology of slavery, and in the course of 2020, this discussion has finally broadly reached Git as well, with calls to rename the default branch to “main” or “trunk” instead (previously, this had been proposed for specific projects, e.g. GNOME in 2019).

Petr Baudis, who picked the names way back in 2005, weighed in to state that they wish they had picked “main” instead. Using “main” instead of “master” has the benefit that it autocompletes with “m” and “ma” as well, and is also the term GitHub (who still collaborate with ICE) are switching to.

Currently, the branch name a new repository is initialized with is hard-coded in Git, so there are two options to change the default (to “main”, in the following examples):

  1. Changing the HEAD pointer before the first commit, using the symbolic-ref subcommand: git symbolic-ref HEAD refs/head/main or manually overwriting the .git/HEAD file: echo 'refs: refs/head/main' >.git/HEAD;
  2. Putting this change into a git template, by copying the default git template: cp -r /usr/share/git-core/templates ~/git/template, adding the ref pointer: echo 'ref: refs/heads/main' >~/git/template/HEAD, and passing that directory to git init in the --template= option (or setting init.templateDir).

If you want to easily change the main branch name of existing repositories, you can just run git branch -m master main && git push -u origin main. Remember to adapt any settings or scripts that might refer to branches by name, such as CI/CD, “protected branches”, etc.!

The Unfeeling Protectors

[CN references to violence, toxic masculinity, rape]

Gabrielle Blair aka Design Mom posted a thread on Twitter about (usually white, usually cis) men and their fantasies around “protecting their families” that are actually fantasies of “justified” violence.

Luckily, she also posted it on her blog, where it’s easy to read and not subject to the Twitter privacy-stripping, engagement-driven thought blender:

https://www.designmom.com/lets-talk-about-protecting-our-families/
[Men are] picturing some great thing — having to protect their family at gun point from a clear and present danger. When the actual instructions for protecting the family are simpler, they are no longer interested.

One can rightfully argue that the US is a special case, with its insane gun laws, shaped by a strong lobby group influencing politics against the public majority, leading to the highest rates of gun violence within their socioeconomic group of countries. But the thinking behind these “protect my family” fantasies is the same in “conservative” and far-right circles here in Europe and likely worldwide.

It’s the fantasy of replacing with violence, justified by pseudo-morals, anything resembling emotion, care, reflection. These men like to feel powerful, and power and violence are inextricably linked in their minds. Conversely, anything that is not violent must thus diminish their power.

Calling all audio and hardware hackers!

I am part of c3lingo, a community of interpreters offering simultaneous translations at cultural and social events such as Chaos Communications Congress and Camp, Fusion Festival, TIN-Solifest and others.

The project has been running for many years, but especially since we are increasingly active outside of C3, we have some hardware challenges as there is often no pre-existing infrastructure and/or little budget for hardware.

That’s why we want to build our own interpreting consoles that are as open and free as possible, inexpensive to buy, and customized to our use-case.

I am looking for more information and support with knowledge, tips, and also active help with planning and construction. More details below.

Continue reading “Calling all audio and hardware hackers!”

Oh, how history’s repeating

It’s been five years, which in Twitter terms is, like, three eternities, min!

A little over five years ago, I was fed up. With Twitter in particular, but also with the “Web 2.0” in general. It all felt off to me, the competition for the quippiest quip, the most outrageous statement in so many variations, the most interactions, impressions, counters going up. Both on the site and behind the scenes, everybody and everything was replaced with carelessness, it seemed. Product managers and engineers and designers build things they don’t really understand or care about, for users who don’t really care to use to “increase reach” or “activate audiences”.

There is another aspect, and that is control and data sovereignty. Without open APIs, without clear delineations of what data I own, what data someone else has, who controls what data and what is done with it, the power asymmetry of using centralized services has no chance of ever going away. Twitter had been limiting and shutting down their APIs over years, strangling the ecosystem in the process: alternative clients (which would not show ads, or not follow the product “strategy” Twitter supposedly had), bots (some of which were used for evil, as things go), analytics (with their implications for user privacy as well as making Twitter-the-company measurable), and more. It made me dislike Twitter and I did not want to use it anymore.

But of course I did. For five more years, in fact. Because even while it declined in so many ways, it was also reinvigorated, as well as plainly addictive. (Now that I know I have ADHD, many things are much clearer. Hindsight and all that.) Twitter was at once a tool for activism for social justice as well as a tool for disinformation campaigns at any and all scales, some of which were unprecedented (as far as we know). It was emotional, it was activist, it was outrageous, it was communal, it was solidarity. I met new people, made new friends, new enemies, suffered, rejoiced.

No more. All my criticism from the past still holds, and then some new ones. Twitter, as a platform, has become wholly too self-important. Maybe even too actually-important, it’s hard to say. A fitting analogy I saw (on Twitter, of course) was that of a spent fuel pool. The highly radioactive outrage is focused on Twitter, often a tempest in a teapot, and only after it has had its turn, has decayed sufficiently to be exposed to the world at large, does the topic du jour become part of the mainstream narrative – or, in many cases and just as well, it doesn’t. If everything is important, an outrage, a scandal, a shitstorm and a hashtag, might as well that nothing is.

That is evidently false. A great many things, among them social justice, fighting climate change, smashing capitalism and rebuilding a communal society, are indeed important. But if the interactions are limited, broken up into 280 characters, starting a fission reaction if “successful”, releasing a lot of energy and rapidly decaying? That doesn’t do it justice. Neither can the momentum be harvested – everything is in the walled garden, no, reaction chamber, shielded except for very clearly defined interfaces, the most rebellious of which is likely the screencap.

Now, what then? Federated and open networks like Mastodon solve some of the issues, but the social graph is yet strong even as Twitter is trying to damage it beyond repair, and the user experience of federated systems is still lagging. Maybe we just need to manage people’s expectations better? It’s not like any of the centralized platforms gives you access to the world’s population – there’s a lot of social justice to be done before that is even possible – but it sure feels that way for the selected few. Discovery at scale for distributed systems is hard; can we hide that complexity behind a different abstraction than centralized platforms with highly-paid engineers?

A lot of words to say that I have, again, left Twitter. That I don’t see myself coming back this time, but who knows. That I wish things had gone differently with personal websites and blogs and XFN and RDF and all that.

In the (potential) next installments, I’ll look back at the “blogosphere” and its protocols, and how we can try to excavate and reuse some parts of it.

Im Nachhinein

Was hat zwei Daumen, zwei Kater, eine leichte Gehirnerschütterung und beim Froschpoker die Augen gewonnen?

That’s right.

This guy.

Im Nachhinein war es vielleicht nicht so klug, mehrere Stunden zu dadaistisch-anarchischer Musik zu hüpfen. Aber scheiß auf klug, wenn man auch Spaß haben kann. Zum Abschluss des 32c3 traten HGich.T in der Lounge auf, und dann wurde ich zu einer lustig hüpfenden Mischung aus Schweiß (meinem eigenen), Bier (dem anderer Leute), Wasser (es gab kein stilles), und Sekt (von der Band). Ich bekam einen Baum, wir formten einen Wald, Dinge waren Laser und bunt.

Ein überaus gelungener Abschluss zu einem für mich sehr ambivalenten Congress.

Code of Conduct

Codes of Conduct beinhalten ein »philosophisches« Statement zum Selbstverständnis der Organisation oder der Veranstaltung, definieren unerwünschtes und ggf. sanktioniertes Verhalten, und erklären, wie solches Verhalten behandelt und ggf. sanktioniert wird. Unerwünschte Verhaltensweisen sind häufigerweise Drohungen, Stalking, Störungen von Talks u.a., sexuelle Belästigung, diskriminierende Bilder, Kommentare oder Witze, und weiteres Übergriffiges.

Was bedeutet es also, wenn jemand einer Veranstaltung fernbleibt, weil diese einen solchen Code of Conduct hat?

  1. Die Person hat ein Problem damit, dass übergriffiges Verhalten explizit als unerwünscht markiert und ggf. sanktioniert werden kann, oder damit, dass die Veranstalter sich über die Schaffung von sichereren Kontexten Gedanken gemacht haben; oder
  2. Die Person hat sich mit der Thematik nie befasst, weil sie sich nie damit befassen musste, z.B. weil sie dank privilegierter Stellung nie Opfer von struktureller Diskriminierung oder sexuellen Übergriffen wurde, und nimmt die Tatsache, dass mehr und mehr darüber geschrieben und geredet wird und dass mehr und mehr Events Codes of Conduct erarbeiten und veröffentlichen, nicht als Anlass, darüber nachzudenken.

Good riddance.

BIGINTs in rails as primary keys

(This is an update to my older post on bigints in rails migrations.)

BIGINT columns in rails have always been a little annoying to work with, which is why I published a blog post on how to do it, five years ago, to serve as a reminder to myself and as a resource to others. BIGINT primary keys were even more hit-and-miss.

Enter Ryuta “kamipo” Kamizono, who took to improving rails’ support for this, created a pull request “Allow limit option for MySQL bigint primary key support,” and landed that in rails:master last month, which allows you to write things like this:


create_table :foos, id: :primary_key, limit: 8 do |t|
end

# or

create_table :foos, id: false do |t|
  t.primary_key :id, limit: 8
end

The patch should be included in the next release of rails. Happy hacking!