Wednesday, December 27, 2023

Waxing Philosophic and Dating, the Sequel

Dear Blog,

There is a perspective making phenomenon, or meme, or trend. It is a common response to people potentially being overly invested in some argument or grudge or inconvenience. So the perspective making goes, in the scheme of things, nations rising and falling, species evolving and going extinct, the universe expanding and galaxies of billions of years fading to darkness -- your hurts, your anger, your quibbles are so small. So, sure, but why is that the correct vantage? From the frame of reference of you, yourself, a human, an animal, a thinking social being interacting for finite time with other thinking, social beings, should we be predominantly preoccupied with the events at the scale of our existence? Our work, our relationships, our commutes and food prep. If your meal is burned, that's at scale of your life, in the moment, the most important thing in the whole universe to you. Don't make insignificant what is real to you, now. Exist, feel things as they are. 

Since I had this one up in draft for some time, it came across, the above view, in conversation over Christmas dinner with an older boomer. She essentially rejected it out of hand, recounting a story of losing all of her teeth and telling herself to quit bitching because her next door neighbor had no legs. It occurs to me that this is how people of any amount of privilege end up denying the validity of their own trauma (big T or little t as it may be). Once you deny your own trauma, that's when it stays there and festers. This affluent woman lost all of her teeth. That's horrifying. No one wants to exist with only dentures, have to worry over every bite, worry about cleaning them, worry about their appearance. And though she may persevere for her remaining years, it's even more likely, I think, that she will have hidden horror eating her from the inside about it, because her neighbor has no legs. Well, that's horrifying too, and as I've said many times, the existence of Jupiter does not mean that the earth is not large. 

(Purportedly unrelated)

I'm dating again. Or rather, I have been on the apps, a select handful of them, making steady but slow progress in accumulating the often silent 'no thanks' of mid-late thirties women in the south west of Ohio. I had adjusted my expectations significantly from the last go around, in 2019 -- I prepared myself in much better ways, ensuring adequate self-care abilities, social network foundation for support in and out of possible relationships and ends thereof. I made a list of things to do before and crossed all the items off of it. 

(It goes well, only from a vantage that is designed for it to look well. If you look at a broken table deeply, with thought to its art, its being, its history, what it can uniquely state in space-time, touch it, feel its smoothness, you can be in awe. But you still need a new table.)

The reality is that I carry limited appeal. I'm decent looking and a great singer, but I'm intense and complicated -- I can't hide it and I don't really want to anyway. I have a kid and won't facilitate more, and honestly that's the biggest barrier. It seems less a barrier now that I'm a little older, more of the target demographic of het femme cis gendered folks are ok with the prospect of not having kids or more kids now than 4+ years ago. More - not all; if I weren't sterile, I'd still have a bigger pool to draw from. 

The reality of the region is that it's a predominantly pretty boring area. People watch sporting events and drink beer and chat about idle bull en masse -- this is not inherently bad, but to me it's fundamentally uninteresting. The out-there artists and professors and musicians are thin on the ground here, unlike a bigger city or a coastal town. And just as the region probably wouldn't really care to hear my opinions of their flaccid appeal, so too am I tiring of being presented with daily evidence that I'm not a hot item on market. 

(Anywhat)

My life is pretty much prime. I'm saving money, looking to buy a new car next year, I eat whatever I want, work flexible hours. I'm making music for my community and they are enjoying it, being fulfilled by it - this is like approximately nothing I've ever experienced before. I have so much luxury, time to drive off to woods in five different directions for a hike over lunch, sometimes with my kid, and she rambles about her BS and we look at the mushrooms and bent pieces of wood and explore together. I'm sober, damn near 9 months, and it's the best way I've been in my whole life. 

But dating sucks. It's kind of unhealthy, and I'm having trouble balancing it out, turning it off when I should be doing other things. Just because my life is amazing, doesn't mean that being rejected quietly for long periods isn't it's own kind of hell. I acknowledge this little hell, and I place it now on the outside, so that it doesn't eat me from the inside. 

(In other news)

I've been fostering a cat. He belongs to a church and chorus member who had a stroke and had to go to hospital and rehab for nearly 3 weeks. I am considering fostering cats rather than procuring my own. I'm also considering procuring my own. 

The church voted to list the campus for sale. I get to be the treasurer during the congregation's greatest financial struggle. This is also its own precious little hell. 

People are dying in wars abroad. Lots of them. 

2023 was the hottest year on record. 

The sun is shining, therefore, it's possible to have some hope. I prayed today, and I'll pray again. Not for peace, just for the strength to carry on myself. Peace will only happen if we do something to make it happen, to heal the wounds and set aside our pride and our hurts, as a species. 

Your Obedient, 

Ian Hogan, PhD

Wednesday, September 20, 2023

Deja Vu (Data De-duplication)

Dear Blog,

"So when you gonna tell her
That we did that, too?
She thinks it's special
But it's all reused"
- Olivia Rodrigo, Deja Vu

I send a lot of songs to whatever girlfriend I have at the moment when I want to share that song. More than one (ex-) girlfriend has expressed that they don't want me sending them songs that I've sent to previous girlfriends. 

Repeats? Surely not. I would never re-use a song...




Guilty. As. Charged.

It gets worse, from Olivia, "I bet she knows Billy Joel..."




Lullaby (Goodnight My Angel) - Billy Joel. I even sang that song with my barbershop quartet to GF3. 

Dang it, I want to send this song, and I don't remember if I sent it to someone before. How can I check? I did not have the above screen shot playlists ready when I asked this question of myself. All I had was the chat histories themselves, some of which number in the tens of thousands of words. There's no way I'm going to scroll through all that to comb out every song. Luckily, I'm a full stack web developer and a data analyst. Comparing log data and identifying duplicate references is actually a part of an ongoing research effort at work!


Let's break down the One Soul Per Song project. I exported all my chat histories, mostly on disparate systems. I have three versions of the following method, one for FB Chat export, one for the old Google Hangouts export, and one for Google Chat export. 

def extractURIfromGoogleMessages(chatJson, verbose=False):
    bagOfWords = []
    for item in chatJson['messages']:
        if item.get('text'):
            print(item['text'])
            bagOfWords.extend(item['text'].split(' '))

    allURI = []
    for word in bagOfWords:
        if uri_validator(word):
        # throw out news articles and whatnot
            if "yout" in word or "sound" in word or "spotif" in word:
                allURI.append(word)

    if verbose:
        print("All urls")
        for url in allURI:
            print(url)
    
    return allURI

Hangouts required some poking around to figure out which key belonged to which person. That exploration was enlightening in itself. Finding my brother among the chats was instant. Separating one girlfriend from another took a fair amount of digging.

Once I ran the appropriate method on each particular (ex-) girlfriend history, I need a simple method for checking for repeats:

def checkDuplicates(list1, list2):
    # simple and easy to understand. 
    duplicates = []
    for item in list1:
        if item in list2:
            duplicates.append(item)
    return duplicates
 
Put it all together:

# testing
if __name__=="__main__":
    # read in data. 
    f = open('Hangouts.json', encoding="utf8") 
    data = json.load(f)
    gf2 = extractURLsHangoutsJson(data)
    print(len(gf2))

    html = open("message.html", "r", encoding="utf8").read()
    gf1 = extractUrlsFromFbHTML(html)
    print(len(gf1))

    g = open('messages.json', encoding ="utf-8")
    chatJson = json.load(g)
    gf3 = extractURIfromGoogleMessages(chatJson)
    print(len(gf3))

    print(checkDuplicates(gf1, gf2))
    print(checkDuplicates(gf2, gf3))
    print(checkDuplicates(gf1, gf3))

Output of the above:

122
220
263
['https://www.youtube.com/watch?v=4spkVX8z-vs',
'https://www.youtube.com/watch?v=xwtdhWltSIg',  
'https://www.youtube.com/watch?v=S28-OgVDAek', 
'https://www.youtube.com/watch?v=naoBTy1Rh0I',  
'https://www.youtube.com/watch?v=87YL0bhqFSw', 
'https://www.youtube.com/watch?v=8-FUkhVtveU', 
'https://www.youtube.com/watch?v=aINFvGESX8I', 
'https://www.youtube.com/watch?v=lBUUOJpFg9Y', 
'https://www.youtube.com/watch?v=uLVFptybalY', 
'https://www.youtube.com/watch?v=NYoTgxOQjCg']
['https://www.youtube.com/watch?v=HKlHABc8HTE']
['https://www.youtube.com/watch?v=aKJIhZh_L-s', 
'https://www.youtube.com/watch?v=wm98afryPf4']

Hey, not bad! 13 repeats out of 605 songs is a pretty low reuse factor! Unfortunately, there are multiple platforms, and multiple versions of each song. So just because two links aren't identical, that doesn't mean they aren't the same song. We need to generate playlists and perform exploratory data analytics. For that consider this online tool

I did not use this tool myself. I didn't like that the resulting playlist was anonymously owned, so I could not modify them or set privacy levels. I looked at scripts to roll my own, but also, for me, I ran into the API's 50 song cap really fast, and there were so many non-song links, dead or removed songs, and other issues, that I manually constructed all of the playlists from the raw outputs of the above methods (with verbose=True). The manual process probably amounted to about 8 hours of work, but I wanted the playlists, and I wanted them to be correct. 

I don't have clean statistics for you on duplicates. I'm not getting paid, so rough numbers are what you're going to get. There are about 25. Which given 600+ songs, really isn't that bad. I have honestly taken the request to heart, and done my best to only find new songs for familiar feelings. Some of the repeats were actually sent by the girlfriend at the time, which is out of my control entirely (including Cosmic Love, the comedic triple from the head of the post). 

Some of the repeats I found I was surprised to see, "I thought that was a GF2 song..."  is there a re-apportionment process for this? I would like to de-allocate soul one from song 89...

I'm extremely glad that I put in the work. The playlists are long, varied, delicious, and carry an incredible history of feelings, relationship, and more. Listening to them (an ongoing process) is healing old wounds. 

A technical remark: The push for migration from Hangouts to Google Chat became abundantly clear after looking at the backend data storage. Hangouts data storage was workable, but clunky, and probably really slow at scale, given how nested it was. It was a nightmare to parse at a glance. Google chat is minimally nested, clear, and can be debugged and diagnosed at a glance. It's probably a lot faster at scale. 

(Anywhat)

Now I can send that new song to some future girlfriend, and she can be assured that it's not Deja Vu. And I've shared enough code snippets that if you know a touch of Python, you can too.

Your Obedient, 
-Ian Hogan, PhD

Sunday, September 17, 2023

Rocket 88

Dear Blog,

Today I finished a years long endeavor to cycle through all 88 counties of Ohio. I woke up in Noble county, in a tent in the rain. I rode back to my car, and drove to Coshocton for the final lap. Stats for the weekend, 5 counties, 100 miles, 7:35 riding time, top speed 71.83kph. 


If I was British, I would probably say, "I'm quite pleased with that." But I'm American so I'm going to say

BITCH, I'm a fucking LEGEND. Come at me bro! What you got, 10000 kilometers of stop signs, hairpin turns, 11 percent grades, gravel and pot-holes, assholes in trucks, bad signage? I'll grind over all your washed out coal towns, your downed trees, your 1500 sparkling creeks, past 25000 cornfields, 32000 sycamores, 35000000 ticks and mosquitos. I'll eat your headwinds for a snack without slowing down. Fuck your unleashed dogs.

In terms of cycling counties, this has been my best year to date. I biked in 20 new counties, and repeated an additional 11 (Cuyahoga, Erie, Huron, Lorain, Miami, Clark, Montgomery, Greene, Warren, Clinton, and Preble). 

How long did the whole project take? Well, in years, I started when I was eight years old, so 29 years. If we count the shortest time since I've done all 88 including repeats, then I've biked all 88 in the last 10 years. In hours? I didn't track, but several hundred. A typical county would take 2-6 hours to cycle across, so 4*88=352. Several of them I did much faster. 

So I'll take some time now, and revel in a win. But also, the only way this works, is if the journey is the win. So, I've been winning this whole time. It's a beautiful state. Every county has something unique to itself. I never could have guessed at so many of the things I've seen. Every view, every picture of sparkling streams, every surprising weasel or musk-rat or blue-fish, every warm breeze and relief of a cloud on a hot day.  It's been so fun, so pleasant, so calming, and I would do it again, and again.  

And also, I am what I am. I'm forever seeking the next goal, so, Indiana, here I come. 


I have biked around Indianapolis two different times, with my cousin Kathryn each time. So much white to paint-bucket fill. I'm excited. 

Very excited. 

Let's go,

Ian Hogan, PhD

Monday, September 4, 2023

Elf Mix 2

 Dear Blog,

I made a compilation CD many years ago, when I was approximately 19 years old. The only thing written on the disk is the title Elf Mix 2, in scrawling red marker. I've recreated the mix as Spotify and YouTube playlists, depending the reader's preference. Also, here is the song list: 

Miserlou - Dick Dale
Fire - Jimi Hendrix
Mr. Brightside - The Killers
Drain You - Nirvana
Say It Ain't So - Weezer
The Man Who Sold The World - David Bowie (Nirvana Unplugged Version)
Have You Ever - The Offspring
Jeremy - Pearl Jam
Within You Without You - The Beatles
Romeo's Seance - The Juliette Letters
Black Angel's Death Song - The Velvet Underground
I Fought Piranhas - The White Stripes
I Can't Quit You Baby - Led Zeppelin
Daze and Confused - Led Zeppelin
Warmth Of The Sun - The Beach Boys
Dueling Banjos - Eric Weissberg (famously heard in Deliverance)

I have two observations. First, I'm quite a consumer of music. I listen to multiple genres of music every day, usually several hours per day, ranging from baroque, electronic, bluegrass, classical guitar, traditional and modern folk, acapella jazz, barbershop, indie pop, hard rock, blues, jazz piano/trio, musical theater and some others. I have been heard to say that some music is 'good' and other music 'not great.' I wouldn't identify as a music snob, but I'm sure at least a few people have considered me one. 

Also, I've noticed that many people my age and older, Millennials and Generation X, they are often very self-conscious of their young adult and late adolescent selves. They hide their journals, their drawings, their love letters, pictures of their hair. 

Somewhere between these two observations, one might expect me to have great distaste for my late teenage mix tape, to poo-poo it as adolescent pop punk bullshit. But no, it's amazing. Every song on it is fantastic. I would say its only flaw is that it's almost all Up tunes -- that is, I didn't take it down a notch until the second to last song, perhaps except for Within You Without You at track 9. I can give myself grace to have missed that subtle and important point in making a good mix-tape, on my second ever. 

Teenagers know quite a lot. They feel quite a lot. It's all real, and their ability to express it is truly something to be respected. As we age, we ought pay more attention to the youth, especially if it is our own teenage selves. Everyone, love your youthful constructs. Read the journal, show the drawings to friends. Listen to your old crush songs, and old breakup songs, and old dance like your hip doesn't hurt all the time yet songs. 

Your Obedient,
-Ian Hogan, PhD

Thursday, August 17, 2023

Oh, They're All Sad

 Dear Blog,

The title is a quote of someone I thought was a friend, in reference to Faulkner books. I use it today in reference to my last blog entry, 'So 2020 was a rough year'. I've said to people recently, or started to, 'it's been a rough year' but I have to stop, because it's been a rough several years. Or, can I even think of the last year that wasn't some kind of disease ridden shit-storm? 

This blog only goes back to 2007. Before that, I was a late adolescent, which I didn't fare super well in that endeavor. I was deeply depressed and on track to commit suicide more likely than not, until 2007. I guess that 2008 was pretty good, started at Central. I remember being very stressed about making grades. I was in very poor health and physical shape, and a minority as one of only 2-3 white people any given day, certainly the only white person in my whole dorm. I don't mean to say it was all bad. I think overall, 2008 was a good year. 

2009, Was ok, I guess? I also retrospectively think that was the year I probably could have seen the writing on the wall and never gotten engaged to the person I would later divorce. But really, no, I had no chance of seeing that far, and didn't have the tools to read the writing on the wall whatsoever. It was a fun year. I'm going to judge that as the last good one for a long time after. 

2010, Kicked out of the college of education, the end of a years-long pursuit of being a high-school teacher. 

2011, Married (yay!) started graduate school, realized I was under-prepared, realized I might flunk out, screamed and cried and studied all at the same time in December and sought therapy for the first time as an adult. 

2012, Cancer. 

2013, Serious relationship issues, started at Kent, and struggled since I didn't get full stipend, again under constant stress that my ability to pass exams was between me (us, at the time) and financial ruin. Starting with no social network, but only the second time. It wasn't that tiresome yet.

2014, Juniper was born in June, and that's good, but no parent will ever tell you that the first six months does not constitute a rough year. I studied for qualifying exams with a newborn in the house. I took one of those qualifying exams with the flu. I had fever, chills, and diarrhea, but if I didn't take and pass that exam, I wouldn't get my stipend. 

2015, Nothing jumps out at me. I guess it was pretty ok. Maybe that's really the last not rough year. 

2016, Vivian quit school, plunging us into poverty, and Donald Trump was elected president. 

2017, I wrote a whole blog about that catastrophe. 

2018, Mental illness, complex relationships (read, extra-marital), believing I'd found and experienced god, and then realizing... it wasn't real. Realized I was not going to make it at my job, and would have to give up on teaching at a college. A ten year ambition and endeavor. 

2019, Separated from my wife, quit my singing group, quit my career. Started dating after 11 years. I didn't like dating. I never liked dating. I always just wanted to get to the stable relationship part. In a lot of ways, things were a lot better for me. But it was still a rough year. 

2020, Australia caught on fire. Remember that?

2021, More Covid, separating from my partner who I owned a house with, getting back together, having a strained relationship, getting pretty paltry raises even though I was advancing rapidly and a key member of teams at work.

2022, Serious problem drinking, trying and failing to get a new job, primary cohabitated relationship extremely strained, financial struggle. Wondering how I had been making good money for years and still was completely broke, all the time. 

2023, so far, I've joined AA, and started a new job at twice the pay, permanently separated from my partner of 3.5 years, and found myself at 37 years old, pretty much broke, my name stuck on a mortgage I can't get out of, single, and on a diet to lose 30 pounds of self-pity weight I put on last year. I've biked through 15 new counties this year, with only 5 left to go. It's just inevitable now. If my legs were cut off, I could do one of those hand-pedaled ones. I just have to not die for a few more weeks.

I had a plan. This wasn't it. Teaching job, wife, kids, cats, mortgage, dual income, burn the mortgage stay in one place til I die. I lived on Hazelwood avenue for 11 years. The longest I've lived anywhere since is 3 years. 

I'm enjoying being alone, to an extent. For the first time since I was maybe 15, I am actually ok with being alone. And I'm also looking forward to casually dating, later, when I'm ready. Being alone affords tremendous freedom. Today, for instance, I could have done anything, no responsibilities. I considered spicy Indian food, going someplace new. I did try to go someplace new, but when I got there, I realized that I had already been once. Huffman metropark. 30k round trip bike-ride, very windy. For the evening, I ended up staying in, and inventing onion chipotle dip, and made a breakfast burrito for dinner with four sausages and Taco Bell baja sauce. I also took time to blog, played go and was sure I'd lost by a good amount til the score said I was up by 1.5 (actually was super duper fun, that). I played guitar on my porch in the rain. I'm pretty good, you know. 

No one hears. The windows are closed, air conditioners are on. 

I'm deeply depressed. I dream idly of working til I can retire, get a catamaran and a barrel of margarita and just drift away. For so many years, I thought along the lines of Camus. Why shouldn't Sisyphus be happy? The way is the goal, from striving comes the real-ness of the feeling of success. These are the ways I thought. And now, I'm busy, I eat spicy, fatty things, and they taste good, and then they are gone, and I am staring at an empty plate. When I had everything, I had an empty plate. When I thought I was finally full, I was wrong, and it was an illusion. I was a junky, and people lied to me. I don't trust anyone, but at least I'm sober.

I'm like a castaway. I've made a pretty nice drum-kit from coconuts and washed up bottles, bics and netting. I play it sometimes. And sometimes I don't bother. 

I've been on Duolingo for a couple months here. The rust is coming off my German. Das Leben ist ja kla wirklich Änderung. Es ist beide das beste, und ganz schlecht. Ich denke auf Deutsch, manchmal, und ich spreche, mit mir selbst. Weil es gibt kein Mann ander zu hören. Und das is der Problem.

Mit freundlichen Grüßen,

-Ian Hogan, PhD