joshua0: (Default)
2025-01-03 04:27 am
Entry tags:

on the inside: 2024, as heard by Joshua.

on the inside: 2024, as heard by Joshua.
(a mixtape)


on the inside: 2024, as heard by Joshua.

I have spent much of this year in ways that are very different than I have in the past. One thing that hasn't changed, though, is that I have spent a good bit of time listening to music. Where I do it has changed -- walking, rather than cycling; at home, rather than at the club. But either way, it has remained constant that bits and pieces of what I listen to have lodged themselves in me.

Over the past few years, I have found myself more aware of the projections that people around me cast on me -- and, occasionally, if I am so lucky, of the projections that I cast on them. I have a mixed relationship with these projections: they often reveal things about me or others that I wouldn't have had access to otherwise, but on the other hand, I sometimes find myself frustrated that what is projected onto me can be so bright as to temporarily blind the reality of who I am.

In each of these yearly mixes, I get to do more of the enjoyment of projecting -- in both directions. Whatever I hear in this mix is probably not entirely what the artists of each song wrote; what I hear reflects me, too. And whatever you hear in this might or might not reflect the moments that made up my year. All three of us -- the original artists, me, and you -- get to be in it together, though, whether we like it or not. With some luck, we'll each find something new in ourselves, and maybe even in each other.

Please find attached the soundtrack to my 2024.

(previously: 2023, 2022, 2021, 2020, 2019, 2018)

joshua0: (Default)
2024-11-06 09:04 pm
Entry tags:

gesher tzar me'od

(x-post Mastodon)

I post Jewish stuff on main because 1) I only post on main, and, anyway, 2) it is part of my color on the world so it is kind of inseparable from who I am. I have been thinking a lot through that lens today.

A friend on the Internet noted that Rabbi Tarphon taught, "it is not your responsibility to finish the task [of mending the world], but neither are you free to desist from it". (I was very pleased to hear this quote materialize in the secular world. It seemed important of a message. I would be happy for more people to internalize that. Feel free to appropriate it to do good in whatever way it seems right to you.) But, uh, R. Tarphon, uh, ... how the fuck do you do that? How, the fuck, do you do that? How the fuck do you do that today? Easier said than fucking done, Tarphon. The world seems broken. I woke up and was not convinced that it was worth getting out of bed this morning. The anger has given way to sorrow, and I cannot describe how much sorrow I feel to know that this is not one guy, this is not the electoral college, this is... us. This is who we are, who 52% of us are, and who 48% of us have let the 52% become. I am sick, and sad, to think that this is who we are.

Let me provide another answer from post-Talmudic times, in case you are as lost as I am in how to continue the work. Rebbe Nachman of Breslov (b. 1772, d. 1810) said a variant of, roughly, "the entire world is a very narrow bridge, and the most important thing is to have no fear at all" (Hebrew, transliterated into English: "kol ha'olam kulo gesher tzar me'od -- v'hayikhar lo lefached klal"). He said this in the context of, how do you continue to serve God (which I read as "to continue to do good in the world" -- your interpretation is up to you) when sometimes it feels like you are increasingly distant from the benefit that you were promised, more so by the moment, that your service gets you nowhere? He answers to say that the world is a narrow bridge, and you must have no fear in crossing it to do your work.

This seems like an even taller order. But he goes on to say, and provide concrete advice: one should "seek and search within oneself to find some merit and some good, and when one finds it, rejoice and encourage themselves" ... "and the main thing is to always be joyful. [Bring yourself to joy] any way you can, even with silliness -- playing the fool and doing silly things, or jumping and dancing to be happy, which is a very great thing".

Breslovers have taken this seriously for generations. They sing a lot because they have decided that the most important thing is to be joyful, so that they can continue to do their service. They turn everything Rebbe Nachman said into songs. The admonition from before remains: "the entire world is a narrow bridge, and the important thing is not to be afraid". With the fear in their hearts, they turn it to song.

Below, find one interpretation of that transition from fear to song. It sounds unbelievably joyful for a time like this by the end, almost cloying. Then, I remember what they are singing, and I understand what they are fighting off by doing it, and the extreme, dire, importance of it.

If you dare, try singing along. I was surprised to find a smile creeping onto my face, even today. Maybe you will be too.

lyrics:

kol ha'olam kulo
gesher tzar me'od
gesher tzar me'od
gesher tzar me'od

v'hayikar, v'hayikar
lo le'fached klal

joshua0: (Default)
2024-01-02 12:41 pm
Entry tags:

on the lookout: 2023, as heard by Joshua.

on the lookout: 2023, as heard by Joshua.
(a mixtape)


on the lookout: 2023, as heard by Joshua.

Every year we say that, well, it is like this now, and that this year was something to be rid of. Everybody I know seems to say this. I agree that it is like this now, and that we are all in it together -- well, whatever it is. I don't agree that the past is always better, though: actually, I have it as a core belief that the future is something that is worth waiting for. But here we are right now. There was a lot of it for us in 2023 -- and part of it was that there was a lot of good new music in the past year-ish! And a lot that I rediscovered. And, I'm sure, a lot still to come.

We are here in this. This is all happening right now: a whopping hour and a half of it. The mix is too much, but so is all of it, so we may as well listen to it together.

Please find attached the soundtrack to my 2023.

(previously: 2022, 2021, 2020, 2019, 2018)

joshua0: (Default)
2023-08-27 03:49 pm

GitHub's compulsory 2FA makes me mad

The other day, when I logged into GitHub, I got the following message:

GitHub users are now required to enable two-factor authentication as an additional security measure. Your activity on GitHub includes you in this requirement. No action is required on your part, but two-factor authentication will be permanently enabled on your account after September 20, 2023.

I thought this was interesting, and maybe not a bad choice. 2FA is a decent way to avoid account hijacking, and more people are starting to use GitHub as a root of trust for other things (for instance, I log into Rebble with it!). Normalizing it around the web is probably a good idea. But then I clicked through to their reasoning, and I came to something that, well, really bothered me:

GitHub is central to the software supply chain, and securing the software supply chain starts with the developer. Our 2FA initiative is part of a platform-wide effort to secure software development by improving account security. Developers’ accounts are frequent targets for social engineering and account takeover (ATO). Protecting developers and consumers of the open source ecosystem from these types of attacks is the first and most critical step toward securing the supply chain.

Bluntly, this is crap. If GitHub thinks that my hobby work is a critical part of the software supply chain, then GitHub can pay me for my role in such. Let me be clear: I'm happy to have 2FA turned on in order to commit to projects for my clients (actually, some of my clients already have their own 2FA set up, requiring me to SAML up in order to touch any of their code), and I do currently have 2FA turned on. But the implication that I somehow owe the world something in my open source work, that publishing code that I wrote is not enough, but instead I should let multi-billion dollar companies that Depend on a Secure Software Supply Chain demand that I certify my code as coming from me, rubs me the wrong way.

I was burned by this a handful of years ago when I wrote HoRNDIS. It was a lovely hobby project that helped lots of folks connect their Android phones to their Macs, back in the days when USB tethering was dramatically more reliable than WiFi tethering. For some reason, the BeagleBone boards seemed to default to RNDIS, also, but at least those things were open sources, so I didn't mind that those got supported too. And then one day, DJI decided to package it with their drones as the official way to connect to them... and Apple changed their USB driver stack. Overnight, many DJI (valuation: $25 billion) customers started e-mailing me asking me to update the driver so that their drones would keep working. In the mean time, DJI had never so much as sent me a thank you, let alone a dollar for my work. I learned a valuable lesson that day.

GitHub, I don't owe you a thing. I'm eager to Secure the Software Supply Chain, and I think it's a great idea to do it -- in fact, such a great idea that I would happily bill by the hour to help out! But if you're making a profit off of my work, I expect you to cut me in on it, rather than making more demands of my time and giving me more nothing in exchange.

joshua0: (Default)
2023-07-18 02:09 am

1,249 miles with FF-1249

a bicycle leans up against a wooden fence
photos: 1,249 miles with FF-1249


in which I get a new bike, and I ride it from DC to Pittsburgh, and it feels kind of weird and squishy to be a human in the world these days.
joshua0: (Default)
2022-12-31 09:46 pm
Entry tags:

on the run: 2022, as heard by Joshua.

on the run: 2022, as heard by Joshua.
(a mixtape)


on the run: 2022, as heard by Joshua.

It's the end of 2022, and we're here. Wait a second... where is here, anyway? We all made it together into this Great Time of Finding Out, and we are in it together as we watch to see what happens. I feel like every year it's hard to know what's next, but this year it feels extra hard to know what's next. Do we have to know? We are going somewhere, anyway, I suppose; here's an hour of music from along the way.

Please find attached the soundtrack to my 2022.

(previously: 2021, 2020, 2019, 2018)

joshua0: (Default)
2022-06-01 03:05 am

who are roads for, anyway?

I figure that I should probably cc: Dreamwidth on some of these letters I've been writing. So, in case you need to write a similar thing in your own community, here is a response I wrote to Redwood City's latest attempt at pretending they care about cycling infrastructure.

every moment of inaction costs a fraction of a life )
joshua0: (Default)
2021-12-31 02:33 pm
Entry tags:

on the off-chance: 2021, as heard by Joshua.

on the front: 2020, as heard by Joshua.
(a mixtape)


on the off-chance: 2021, as heard by Joshua.

2021 flew by me. I don't understand how! Wasn't it just January already? We got to (kind of) see each other, off and on, this year, but everything still seemed tentative. A lot of early 2021 felt 'club friendly', with a compulsion to move some. And then, in all that movement, out of nowhere, the rest of 2021 disappeared. 2021 felt short, and it felt like it was cut short. That was reflected, at least, a little bit, in this year's mix. Here's a disjoint hour of disjoint views of a disjoint year.

Please find attached the soundtrack to my 2021.

I'd planned that my "music 2020" roundup would appear sometime in 2021. It didn't. I have no idea if a 2020 or 2021 roundup will appear at all. But if I missed something, let me know!

(previously: 2020, 2019, 2018)

joshua0: (Default)
2021-10-02 07:59 pm
Entry tags:

I could be brown, I could be blue

I could be violet sky

(apparently I get suckered by these tiktok things. all voices mine; recorded here at my desk here in Mountain View with a Blue Yeti microphone and Ableton Live)

joshua0: (Default)
2021-04-03 08:00 pm
Entry tags:

why !!Con is online this year, and why I'm still incredibly excited about it

So, for the past year and change, I've served on the Board! of the Exclamation Foundation, the whimsically-named organization that runs !!Cons, and this year, I was elected, for some reason [1], as President of the Board!. Right at the beginning of my term, we had the unenviable task of trying to figure out how we were going to do !!Cons in 2021, while a pandemic still raged throughout the world. I wanted to explain the decisions we came to, and how we came to them — and I wanted to tell you why I'm still really excited for !!Con Online this year!

* * *

The short version of our decision is this (as you probably know by now): we're not going to do any in-person !!Cons this year, but we are going to do one !!Con-line basically around the same time as !!Con New York would otherwise be. (We won't do a !!Con West at all.) This wasn't a difficult decision, but it still sucked to make: !!Con has been a joyful, exciting, and surprising retreat for many years, and it felt heartbreaking to have just one more thing "lost" to our screens. But, when it came down to it, we basically had three choices:

  • We could try for an in-person !!Con later in the year. In theory, there's a decent argument that, if everything goes perfectly (vaccines are delivered on time, and no new variants come up), we might be able to safely have a modified !!Con in the late Fall that would allow some people to participate in a joyful weekend together.

  • We could have no !!Con at all. In theory, people might be burnt out from a year of staring at the screen, and we would just be adding another element of load to that; instead, we might be able to just punt for a year, and come back stronger in 2022.

  • We could have a single combined !!Con online! In theory, if we worked hard at it, we could build an event that is just as !!Con as we've ever done, and we might be able to expand our audience by experimenting with the format! Because the physical location of !!Con West is a defining characteristic of it, it doesn't make sense to have a separate event under the !!Con West banner; we would have only one !!Con.

We really wanted to go for the first option, but at the end of the day, we realized that we cannot have an in-person !!Con in 2021 without compromising on our core values. It is true that it might be possible to have a limited safe !!Con 2021: we could enforce vaccination and masking requirements, limit the attendance to a fraction of the capacity of a venue, and set thresholds for case rates in regions that attendees have recently visited. But doing these things would not allow us to have an equitable and representative !!Con.

In addition to determining who we would be able to include in such a !!Con, we needed also to consider who we would be excluding. Some answers to that question are obvious: immunocompromised attendees (or attendees that are otherwise medically at high risk, or attendees that could not be vaccinated) would simply not be able to attend in 2021. But, as with all questions of equity, there are nonobvious undercurrents beneath the surface. Attendees who care for people who are at high risk, including people who live with extended families and provide care for elder parents and grandparents, also may not be able to join without putting their families at risk -- and people who live with extended families are already disproportionately represented among conference-goers. Similarly, case rates are highest in regions of the country that are populated by people who are underrepresented in our community (including -- perhaps especially! -- in my own back yard). Finally, case rates are not only unevenly distributed in the US, but perhaps even more unevenly distributed in the world; vaccination access around the world will be even more inequal than that, and so travel to the US for non-residents will be even more difficult in late 2021.

Simply put, if we wanted !!Con to be populated by attendees that generally looked like me (disproportionately white, disproportionately wealthy, disproportionately young, and disproportionately healthy), we could have a !!Con in person in 2021. But that's not what !!Con is about. If we can't put equity foremost in a space we build, we don't want to build that space at all.

* * *

The question that we had to grapple with next was: can we make a !!Con Online that's worth having? There's an argument against: do people really want another online conference? Pandemic burnout has also had disproportionate impacts on would-be submitters and attendees: one organizer has noted that the time that she has spent on childcare has had a big impact on the amount of energy that she has had available for creative work. Any !!Con that we held would have to have to keep these things in mind.

Our decision, ultimately, was yes, we can have a great !!Con that mitigates some of these factors ... and here's why I'm excited about it! One of the first things that we noted was how well !!Con 2020 was received. Attendees said on Twitter that [!!Con] was a really bright spot of 2020, and that it felt like a glimpse of the good future today [that made them] hopeful for the future of conferences. One of the particularly warming things that we heard was that people enjoyed !!Con 2020 as something that was not just "good for a virtual conference", but as a good event in its own right: a new !!Con-goer described it as a conference that he'll be attending [...] every year from now on. Clearly, we would be doing the public a disservice if we did not find a way to showcase computing that is joyful, exciting, and surprising for another year -- if we let !!Con fall as yet another victim of the pandemic.

Another thing that we realized that we could make changes to !!Con in ways that mitigate some of our equitability concerns. For instance, although some people who have caregiving obligations may be unable to submit, we can make the conference more accessible to other caregivers by changing the format: classically, !!Con has required a weekend-long commitment (something that attendees have previously noted is difficult to manage with young children!), but by changing !!Con to be split up in "bite-size chunks" over the course of a week, we can bring in attendees and speakers for whom !!Con would not have been previously accessible at all!

Similarly, by announcing that !!Con is an online event from the very start, we can solicit talk proposals from people all over the world -- including people for whom travel to New York would have been prohibitive. We were lucky to have Taeyoon Choi give us a tour of Seoul as part of his keynote; could we make geographic representation a primary goal of !!Con 2021 by taking explicit steps to welcome in speakers (and attendees) who are not only based out of New York City? We plan to try to meet our audience by scheduling sessions that are accessible to folks in different parts of the world, and who have differing constraints around when they'd be able to participate.

An online !!Con provides a (hopefully) once-in-a-good-long-while opportunity to experiment with our format in ways that we wouldn't be able to when we return to doing !!Cons in person. We think that we can do it equitably, and just as important, we think that we can have one with great speakers, great attendees, and that will still be a lot of fun!

* * *

So here's our plan. !!Con 2021, if you didn't already know, will be an entirely online event, running from May 15th through 22nd. We'll have two fantastic keynote speakers -- Angie Jones, and Kate Temkin -- to bookend our conference on the opening and closing Sundays. We'll return to our Discord space to let attendees relish in the excitement of !!Con together during talks (it was a big hit last year!), and we're working on new ways to have "in-person-like" unconferencing time together (more on that soon!). Our session talks will be about one hour per day, at varying times during the day, and just like last year, we'll have a mix of live and prerecorded talks; we'll also organize "watch parties", so that attendees who can't join at the original live times will have groups of people to watch with.

We're really excited about !!Con this year! Last year's "felt like home" to me: chatting on Discord during talks (and, for speakers giving prerecorded talks, getting to chat with the speakers during the talks!) brought me the same sense of wonder that talking with !!Con attendees in person did, and the unconferencing spaces that we built felt like they fostered the same kind of spontaneous discussion that I remember loving at our in-person events. I get the sense that this year's !!Con will be at least as special. On behalf of the Exclamation Foundation Board!, and the !!Con 2021 organizing team, we hope you'll join us!

* * *

The !!Con 2021 Call for Talk Proposals is open through Thursday, April 8th. We'd love to hear about your idea for a 10-minute lightning talk about the joy, excitement, and surprise of computing. You don't have to be an experienced speaker (actually, some of my favorite talks were by speakers whose first public talk was at a !!Con!), but you do have to get a proposal in by the deadline! I'm hoping to see you there.


Thanks to Lindsey Kuper, Sarah Withee, and Julia Evans for reading drafts of this post.

[1] Imposter syndrome does not manifest for me regularly in my technical work, but it often does when it comes to organizational work. It's still hard for me to differentiate Accelerated Tech, Inc. — my real employer — from Emarhavil Heavy Industries — the joke company name that some friends and I used ten years ago as undergrads. Being President of the Board of Exclamation Foundation, while being eminently real, feels a little like cosplay of being on the board of a non-profit: the name is even whimsical humor! But all the same, Exclamation Foundation is very real and actually does work that I consider to be important, and although I often can't quite differentiate it from a dream when I do my year-end donations to Real Actual Non-Profits With Big Organizational Structures like the ACLU, I am humbled by the trust that my fellow board-members have placed in me to give me a turn to steer the ship for a year.

joshua0: (Default)
2021-01-18 10:41 pm
Entry tags:

soon may the Wellermen come

soon may the Wellermen come

(all voices mine; arrangement mine, loosely based on The Longest Johns; recorded here at my desk here in Mountain View with a Blue Yeti microphone and Ableton Live)

joshua0: (Default)
2021-01-02 12:16 am
Entry tags:

the case of the haunted level shifter

One of my favorite things about taking on non-hourly work is that I can relax a little bit more while I’m working without feeling bad about it. I had a new board come in to bring up over the holiday break, and so I decided it would be a nice diversion from my normal holiday routine (that is to say, using a bicycle to heap abuse onto my body) to crack a Pacifico and do some good old EE-lab work.

the case of the haunted TXB0104 )
joshua0: (Default)
2020-12-30 10:58 pm
Entry tags:

on the front: 2020, as heard by Joshua.

on the front: 2020, as heard by Joshua.
(a mixtape)

on the front: 2020, as heard by Joshua.

2020 has been a year that seems unlike any other that I can remember, along so many different axes. I have to imagine that I'm not the only one who feels that way, either; for me, at least, it seemed like everything kept changing at every instant, and nothing remained consistent at all, even from week to week. The feelings associated with each of these moments were constantly morphing, too; as a result, so was the music I listened to. Last year, I worried about whether the mix was too "dark"; well, could anyone be blamed for that, this year? I decided not to concern myself with what it looked like this time, and just go through the list of things that resonated with me.

Please find attached the soundtrack to my 2020.

It is by now not a surprise that my "music 2020" roundup is not to arrive in 2020. But I promise, as always, that it will appear in the near future!

(previously: 2019, 2018)

joshua0: (Default)
2020-12-20 06:58 pm
Entry tags:

aches

a window cut in a thick concrete wall peers out onto foggy mountains and foliage

I wake up three days into the trek in Jagat, and I am sore. I ache. I eat breakfast, throw my pack on my back, and we’re on our way. As we get moving, the soreness starts speaking in new ways — the ankle that seems upset, the knee (not even the one I’d hurt a few days before I got on the plane!) that has had enough of the up and down, the bruises on my hips from a badly adjusted pack that was busily driving the hard part of its frame squarely into my ilium.

As I keep taking steps, mile by “Nepali flat” mile of rolling elevation change, each ache seems to submit to the inevitability that I will continue walking, and each one subsides from my consciousness in its own time.

That is, every ache but one. The one ache that will persist all day — the one that drove me to get on a plane and start walking in the first place — stays stubbornly at my side. Maybe one day, it, too, will dissipate. But today is not that day. Maybe not this trip, either.

* * *

The last few days of the trek are upon me. On the other side of the river, back at the beginning, I remember the expectation of being ground to dust. I hoped that the operation of walking for a few weeks would turn me into a pile of ash, from which I could partake of some mystical Phoenix-like rebirth. But there was nothing magical about a trail that would fundamentally change who I am. Staring down the end, I find that I am exactly the same as I was before, with the same fears and hopes and desires and longings and cravings, relating to the world in just the same ways as before.

The same as I always was, indeed — just maybe a few pounds leaner...

joshua0: (Default)
2020-11-19 09:32 pm
Entry tags:

sense of scale

a trail leads ahead through Fall-colored brush, with near-looking snowfields on mountains on the left, and snowy mountains straight ahead, seemingly equidistant

There’s no two ways about it — the valleys carved out by the rivers are just plain ol’ big, and, of course, so are the Himalayan mountains, too. But, I think, the thing that makes it a mountaineer’s playground is that the sense of scale lies to you. It gets to your head.

By way of comparison, maybe it’s instructive to think about places where your sense of scale matches the reality. You go to the Tahoe basin, for instance, and you look around, and you point at a peak on the horizon, and go “I could probably get there”, and you’d be right; it’d be a day’s work of hiking, and up you’ll go. Or you might find yourself in Zion National Park, and you’ll see a feature in front of you, and go “oh, that’s totally climbable”; if it’s not about to break in half, chances are good that someone has already put up a route on it.

The converse is true in other places, of course. When you go to the East side of the Sierras, you might stand on a peak, and point at another peak, and go “man, it would be an enormous pain in the ass to get there”, and you’d be right; there’s just so darn much terrain between you and the something else, and it’d be days of hiking, if not technical travel, to get to wherever it is that you’ve aimed your finger.

The Himalaya is special, though. You look up beside you, and just uphill of you, you see a friendly snowfield, a little ways down from the top of the valley you’re in. You get the urge to run up, pack a snowball, and throw it — maybe it’d be a half hour away. You glance down at the topo, and you discover very quickly that your eyes have fooled you: you’re sitting pretty in your village at eight thousand feet, but the top of that wall is easily a 14'er, as if it were no big deal.

Maybe that’s what keeps people coming back: the peaks of unimaginable prominence that just sit there there on the horizon, and pretend that they’re there for the taking -- or, maybe, just the way that the impossible suddenly feels human-scale.

joshua0: (Default)
2020-09-09 11:23 pm
Entry tags:

x2100

a disassembled ThinkPad

I have an expression that I like to use for situations like these. Actually, as with many of my expressions, it's an expression that I like to use for near-as-I-can-tell any situation at all, but it seems extra fitting here: "I'm not sure what I expected, but I definitely got it". And so it seems to be now. You see, about ten months ago, I ordered a very bizarre, very Chinese laptop, with the intention of using it as my primary machine, and two weeks ago, at long last, it finally arrived. It's very weird, and I love it -- especially now that I've spent a week hacking on it to make it work. And I don't know how my life always seems to go this way, but for the second time in recent memory, I now find myself in a WeChat thread with the ODM of a piece of hardware that I have, making heavy use of machine translation to ask questions like "so, how much current does is this inductor rated for, anyway?".

thinkpad )
joshua0: (Default)
2020-08-27 12:56 am
Entry tags:

remembering a perfect cat

Scooter looks up inquisitively

Three months ago — May 27th — we said goodbye to Scooter, my cat of 16 years. It was, probably, the hardest transition of my life, and that is saying something, for I was the only one standing in the room at my father’s bedside at the moment he began to make the leap from this world to the next. But how hard it was makes sense, in some ways: I knew Scooter longer than I knew Dad. Scooter was a perfect cat, and he taught me a lot.

scooter )
joshua0: (Default)
2020-07-03 05:19 pm
Entry tags:

harder, better, faster, Fourier: 11 years of DVB-T

a QAMconstellation atop a channel equalization graph

You know how it goes, sometimes. (Maybe.) You get an idea for a thing you want to try, and it's just kind of barely outside of your grasp -- your skills, your knowledge, whatever it is, just don't quite get you there. You take a stab at it, and you get stuck somewhere along the way. Two things can go next here, really, when this happens. Option 1, of course, is that you give up, take whatever you learned from it, and you go about your life. This is an eminently reasonable response that eminently reasonable people have. No shade here, honestly, seriously.

But sometimes, for whatever reason, Option 1 is off the table. Option 2 is insidious, and basically involves the thing plaguing you for years. Lots of years. You come back and take another go at it every once in a while, and maybe you get a little further each time. Or maybe not. Either way, an innocent toy project, more and more, becomes a nemesis. I dunno if this happens to anyone else, but, well, uh, this happened to me. 11 years ago. And out of nowhere, this time around, I have, at last, defeated it.

About 15 years ago, this madman French guy, Fabrice Bellard (perhaps better known for being the guy behind both of QEMU and FFMPEG), built some "magic DVB-T images". Basically, the way they work is that they abuse the fact that VGA graphics cards have a really high-speed digital-to-analog converter -- and that, while converting signals along, they make a lot of high-frequency harmonics -- to broadcast a digital TV radio signal, if only you'll hook up your graphics card's output pin to your digital TV receiver's antenna input pin, and configure your graphics card just so and display his image on "screen". This is a clearly bonkers idea, but shockingly, it actually works: you can "broadcast" a completely valid DVB-T signal from just your PC.
somethingthat looks nothing like a QAM constellation

Around July 2009, I took an intro-to-signals-and-systems class, and decided that, since I had taken a 200-level class on the matter, I clearly knew everything I needed to know on the subject, and that I could probably write a toy to demodulate this signal that Mr. Bellard posted, even without having any DVB-T hardware (or any DVB-T specific knowledge, for that matter). I wrote some very simple tools, and instantly got stuck. I took another swing in August 2009, and didn't have a whole lot more luck; I was lost in a world of Fourier transforms and orthogonal frequency division multiplexing and inter-symbol interference and channel equalization and something was wrong but I didn't know what.

My git history shows that around May 2011, I picked it up again, apparently one Sunday morning at 7 in the morning. I assumed I must've been on a flight somewhere -- that's when I always seem to pick this up. One commit message gave me the hint that I must've beaten myself up pretty good at finding that some of the actual heavy-duty math was basically right, but "...the number of bytes copied per row was incorrect". I put it down for a few months, walking away until October of that year, and then again around Thanksgiving.

Another few years passed. October 2015. Something got me stuck, but I didn't know what. Channel equalization or something like that was back haunting me again; another few years pass. These Trying Times In Which We're All In It Together were filling me with burnout; on a plane to Boston to visit my folks, I had no interest in doing any work that I had committed to anyone else that I'd do, and paging through my disk and looking for a distraction, I found my nemesis again.

* * *

You know, the funny thing about projects like these is the sense of anticlimax. Spending 11 years flipping through an opaque specification and a handful of papers to implement carrier recovery algorithms and what-the-hell-ever else. Then, all of the sudden, you run strings, and you get: Ballard's Network; Balears Picture. You've cracked the last piece of it. Anyone else who's heard you think about this project before has long since forgotten, and anyway, it's not anyone else's mortal enemy, it's you that it's been haunting. Sometimes there's that flash, "ok, that was cool. Why in the hell did I do that?"

I did learn a lot. I feel a lot more confident in my understanding of how digital signal processing works, I'll say that. OFDM felt like a magical concept, and even any kind of practical use of a Fourier transform seemed far from my grasp.

All of this is to say, though, that I oughta do this more often. There's this weird void now where this project was. I wonder what I'll fill it with. I've had my eye on trying to understand error-correction codes, and the math behind them; that one's been stalking me for a while, too. There are lots of things that haunt me, really, and have for years. Maybe some of them always will. But knocking off 11 years worth of one of them might just be a symbol for some of the others.

The code is on my GitHub, if you want.

joshua0: (Default)
2020-06-15 08:47 pm
Entry tags:

the country of calvinball

a line of trekking agencies waiting to greet clients at Kathmandu Airport

During my time in Nepal, I came to think of it, sort of, as “Whose Line Is It Anyway, the country”; the more time I spent there, the more I came to realize that, well, there are no rules, and the points don’t matter. And just like a good Calvinball game, we came out ahead, with a final score of oogy to boogy. By the time I got on the plane to head home, there was nothing on earth that could surprise me, or Kempy for that matter. I think we hit peak surprise somewhere in the middle of the trip, but it’s hard to know exactly when.

calvinball )
(images shot on Portra 400, and on Ilford HP5 Plus.)
joshua0: (Default)
2020-04-01 09:51 pm
Entry tags:

requiem for a bike

my beloved accursed diverge, upside down with a flat, as the sun sets.

A week ago, my beloved, accursed, Diverge walked away; I involuntarily traded it for a Facebook bike. It walked away while I was doing a bunch of things that, in theory, I shouldn't have done, and so you could say that it was all my fault that it walked away. (I do, even though I know it wasn't.)

This bike, I often said, was a pile of shit. Over the 7,400 miles I put on it, all manner of things had gone wrong. The headset, a Specialized integrated something or other, ate its spacer O-ring, and could not be tightened without the middle seal rubbing (resulting in the choice between the headset binding up, or it being intolerably loose). This issue plagued me for a thousand miles off and on, until I eventually figured out what was wrong; when I did, of course, Specialized had decided that it was no longer worth manufacturing parts for a bike scarcely four years old, and that part was not possible to find. In the midst of that, I found that it was not possible to get new headset bearings, either, except by special-ordering them from the UK. These were just two of the "god damn it, Specialized" totally-unnecessary compatibility problems that were all over the bike.

It was nearly the lowest-end model that Specialized offered of the Diverge, too. I'd considered all manner of upgrades on it, but it would never be anything but a cheap aluminum frame, transmitting 100% of any vibration in the road directly into me. No matter how good the brakes are that I'd upgrade it with, it'd always be a kind of crappy commuter that Specialized marketed as a gravel bike, despite that it wouldn't clear tires much wider than 34s and had a quick-release rear axle. I could upgrade it from Tiagra, but it'd still be the same heavy frame, and really, it'd be better if I just got stronger rather than demanding that the bike be lighter.

All the same, though, it was my piece of shit. I had put countless hours of sweat into it, and definitely some blood and even tears, too. There was something joyful, anyway, about keeping up with a group ride on an aluminum half-gravel-half-road-but-really-neither bike with a rack on the back, pulling my weight in the front of a paceline occasionally, and then still being able to trigger the traffic lights, when all the fancy carbon bikes couldn't. There was something relieving about having accidentally dropped the bike off the top of a car, and knowing that there wasn't meaningful damage, because after all, it's aluminum, not carbon. (And anyway, if it did take the hit, it would be an excuse to replace it with something better.)

Anyway. I'd still been working from my coworking space. I guess technically, I shouldn't be doing that, but realistically, it's alright, since for the past month or so now, I've been the only one going in, and after all, the problem with this whole pandemic thing isn't going to a place, the problem is seeing the people. And for the past two years that I'd been working there, I left my bike unlocked in the rack out front, which I guess I also technically shouldn't have done, since we were tucked into a little residential nook where I thought it and I were safe, and when I still had coworkers going to the space, they left their bikes unlocked too, including a nice carbon something or other. And here I was, anyway, ready to go home last week -- and maybe it was my fault, and maybe really it the fault of the guy who took it, but my Diverge wasn't there anymore, and, and...

And here I was, just me, and no bike.