Janet Jackson - Design of a Decade 1986/1996

Rising to #3, Design of a Decade 1986/1996 is a greatest-hits album of Janet Jackson.

When it comes to the music, I don't care about it. I've heard a few of the songs before, likely contemporaneously, and also since 1995. Janet Jackson had been a big star for years, so of course I've heard some of her music. It's solid pop music, I concede, but it's not for me.

What I find more interesting is the name of the album: Design of a Decade 1986/1996, what does that even mean? I do not believe that Janet Jackson planned (designed) a whole decade of music, recorded it, with the target of a greatest hits collection. Also, the title is factually wrong! The album was released in early October 1995, nearly three months before 1996 even started. 1986 to 1995 represents ten years (aka a decade, count it out). Putting 1996 in the title is both illegitimate and numerically incorrect. The only thing it has is alliteration, which isn't much (lots of words start with the same letter as other words). It's a stupid name. Stupid!

My verdict: This album can be left to the dustbin of history.


Green Day - Insomniac

After last week's album, some Green Day is very welcomed. Coming off their smash hit Dookie, Insomniac was return to harder, less poppy punk music. Debuting at #2, it never reached #1 and didn't sell anywhere near as well as Dookie (although few albums do).

I don't know why but I haven't listened to Insomniac that much over the years. I do like punk music, and listening to it now it's in my wheelhouse of musical taste. I think I'll add it to my rotation and I'll try to revisit it more often. This is a win and why I do this project. I suggest that you check out Insomniac, too!


Mariah Carey - Daydream

Sigh, it's another Mariah Carey album. I'm pretty sure this is the third Mariah Carey album I've done. This is gonna hurt.

Rocketing to #1 upon release, Daydream had three singles reach number one on the US Billboard Hot 100 list. Because of the popularity of the songs off this album, I certainly recall hearing them on the radio.

I don't miss hearing the songs as frequently on the radio, and I didn't appreciate hearing them again. I get that Mariah Carey is very popular and successful, but I will be happy to never review one of her albums again. It's not for me.


AC/DC - Ballbreaker

Ballbreaker by AC/DC debuted at #4 on the album sales chart.

There's nothing particularly special about this album. None of the songs are amazing, the lead track Hard as a Rock was the best performing single and only hit #33 in the US. That being said, none of the songs are terrible, which across a whole album is somewhat unusual. That's probably because the band had over 20 years of experience.

As far as it goes, the market agrees with me. Next week the album drops to #9, then #12, and so on. This is a common pattern with older, established acts on the charts. They sell well to start but there's no long tail of people discovering them keeping the album sales high.

If you're into AC/DC, check it out, but don't expect much.


Tim McGraw - All I Want

Debuting at #4, All I Want is the second Tim McGraw album I've reviewed. I closed my previous review with the sentence "Finally, I will not be listening to this album again," and I have stuck to that promise.

In a very real sense, All I Want is really no different than Not A Moment Too Soon. The second line of the first song is "Finally own a car that doesn't break down on the freeway." He wasn't pushing any musical boundaries with this release. He had a formula that worked well 17 months prior, and he stuck to it. I'll begrudgingly admit that the biggest hit off the album, I Like It, I Love It, is good fun.

Overall, my opinion of this hasn't changed, and like before, I will not be listening to this album again.


Red Hot Chili Peppers - One Hot Minute

It's been a while since I reviewed an album by any artist(s) I actually like, therefore reviewing a Red Hot Chili Peppers album is a big relief. As of this writing they are #8 in my rankings of listens by artist.

One Hot Minute (the #4 album this week) was released four years after RHCP's best album, Blood Sugar Sex Magik, which was always going to be a tough act to follow. One Hot Minute has never been my favorite RCHP album. It isn't bad at all, but compared to Blood Sugar Sex Magik it was always going to pale. Interestingly, the internet ranks One Hot Minute all over the place, from worst, to fourth, and spots in between. I'm not knowledgeable enough about the RHCP corpus of work to say where One Hot Minute fits.

There were a few decent hits off of the album, including Warped, My Friends, and Aeroplane, all of which I remember hearing contemporaneously on the radio, and sometimes still do on "classic rock" stations (a thought that makes me feel old!).

This album is probably worth your time, as are all RHCP albums.


Silverchair - Frogstomp

I think there is only one song off of this week's #9 album by Silverchair that I've heard before. Tomorrow off of Frogstomp got a decent amount of airplay when it came out. The rest of the album seemed new to me, and my last.fm history pretty much confirms it.

Silverchair definitely rode the tails of the Grunge wave, and they did a good enough job of it to sell a couple million copies of Frogstomp. I don't think that I will increase my Silverchair consumption a great deal, but perhaps I'll think it more often when I'm in the mood for some Grunge. You might consider the same!


A Polars Memory Leak Trick

I am a big proponent of Polars for data analysis. It combines the ease of Python with the speed of Rust. In many cases it allows working with very large datasets very convenient. I have even written about it before on this blog.

Despite the nice things I wrote above about Polars above, it is still a work in progress. One big issue it has is less than ideal memory management when working with very large dataframes as discussed in this ticket on github. I have seen similar issues with Polars, where for no explicable reason it will run my machine out of memory. Below is a simplified example of a situation that I have run into this problem.

This example is in the middle of a processing pipeline. I have created a set of Parquet files in which I am including an ff column because I want to be able to filter on it. The entire set of Parquet files in dirname would not fit in memory, but a subset will, and I can process these subsets separately and combine the reduced dataframes at the end to achieve the same result. The distribution of values in ff is very even, meaning that each subset uses very closely the same amount of memory. Because ff is in the Parquet files, Polars can use predicate pushdown to filter on ff at the read step, meaning that the full dataset is never read into memory.

Indeed, the first few loops of this process work quite well. The filtered subsets fit into memory, and reduced dataframes are calculated. However, eventually Polars stops managing memory correctly and things go bad, and the machine runs out of memory.

import polars as pl

data = pl.scan_parquet(dirname)

reduced = []

# this will eventually run out of memory
for ff in range(N):
    print("doing", ff)
    # note that data is untouched each cycle
    data1 = data.filter(pl.col("ff") == ff)
    # Do some various LazyFrame manipulations on data1; we don't call
    # .collect() until below
    reduced.append(data1.collect())

reduced_data = pl.concat(reduced)

If the situation is amenable, there is a way around this. By running the Polars steps in a subprocess using multiprocessing, we can force Polars to free memory after each cycle by shutting down the process that runs Polars every cycle. Of course, there is a little bit of additional overhead here. Starting the subprocess takes a little time, as does re-scanning the directory of files in scan_parquet(). There is also some cost in un/pickling the reduced dataframe between the main process and the Polars subprocess. But if the data is large enough to resort to chunking like this, these extra costs are rounding errors, and are not worth worrying about.

from multiprocessing import Process, Queue, set_start_method

def worker(dirname, ff, out_q):
    data = pl.scan_parquet(dirname)
    data = data.filter(pl.col("ff") == ff)
    # Do some various LazyFrame manipulations on data; we don't call
    # .collect() until below
    out_q.put(data.collect())

if __name__ == "__main__":
    set_start_method("spawn")

    out_q = Queue()

    # this works to completion
    for ff in range(N):
        print("doing", ff)
        p = Process(target=worker, args=(dirname, ff, out_q), daemon=True)
        p.start()
        reduced.append(out_q.get())
        p.join()

    reduced_data = pl.concat(reduced)

I think this trick very simply illustrates the way that Polars is currently mismanaging memory. The two examples above are doing the same basic thing, but one works and the other doesn't. In fact, if I run the two methods above and watch memory use in real time, the two methods have similar behavior for some number of cycles. The memory use goes up and down as the filtered data is processed and cleaned up each cycle. This indicates that Polars can do memory management correctly, but for some reason after too many cycles, Polars stops freeing memory. In the github ticket linked above, it's suggested that a fix might have a performance cost. Hopefully something can be done about this that both prevents the memory leak and doesn't cost too much in performance. For now, this trick can be useful in the right situations.


Junior M.A.F.I.A. - Conspiracy

It's been a busy week, and I am five days late on this review. Luckily I don't have much to say about this week's #8 album. Apparently there were a couple hits off of Conspiracy by Junior M.A.F.I.A., but listening to the album didn't jog any memories. I am not disappointed because I didn't find the album terribly entertaining. I cannot endorse listening to this album, and I will never listen to it again.


No Album This Week

There are two albums in the top 10 this week that I have not reviewed. At #4 is a compilation album The Show: The Soundtrack, and at #10 Games Rednecks Play by Jeff Foxworthy. I can find neither of them on any streaming service.

The Show was a documentary about hip-hop, and the album features on the order of 20 artists. Likely due to various byzantine licensing issues with so many artists, putting the soundtrack on a streaming service would be next to impossible.

Games Rednecks Play is a comedy album, and comedy has had many licensing issues with the online music streaming services. It's not surprising that I can't find it.

Because I want to review only popular albums from 30 years ago, I don't drop below the top ten. Therefore, I have nothing to review this week.


Dangerous Minds Soundtrack

If you were alive in 1995, you heard the song Gangsta's Paradise everywhere. The popularity of this song propelled the soundtrack to the movie Dangerous Minds to #1. The song made Coolio's career, although playing Kwanzaa-bot on Futurama was pretty great, too. I'm fairly certain I have never seen the movie Dangerous Minds, but I have heard Gangsta's Paradise many, many times.

None of the other songs on the album amount to much. I guarantee that you would not recognize any of the non-Coolio artists on the album. Gin & Juice by DeVanté is far, far inferior to the Gin and Juice by Snoop Dogg you're thinking of. A Message For Your Mind by Rappin' 4-Tay samples I Want You Back by The Jackson 5 and completely misses the mark, somehow having none of the joyous energy of the original song. The final song (which I suspect was played during the closing credits), This Is The Life, is a non sequitur. It's a ballad by two white women who were part of Prince's The Revolution band. There's nothing wrong with being female, white, or working with Prince, but none of those things match anyone nor anything that came previously on the album.

In summary, the album is defined by and entirely worth the value of Gangsta's Paradise, and the rest is worth forgetting.

Finally, check out this episode of Last Week Tonight with John Oliver from a few weeks ago. It's about law enforcement gang databases, and a connection to Gangsta's Paradise comes out of left field.


Alanis Morissette - Jagged Little Pill

Rising steadily in the charts, the #3 album this week will hit #1 in a few weeks. I'm not sure I have ever listened to the entirety of Jagged Little Pill by Alanis Morissette; certainly not since I started tracking plays on last.fm. I have, of course, heard all the big hits off the album, of which there are many. Jagged Little Pill was huge when it came out and You Oughta Know was everywhere on the radio in 1995 and 1996. The non-ironies in Ironic have been pointed out for decades. The album might have contributed to the English language. It's possible that the term "Friends with Benefits" originated in Head over Feet.

It's hard to form any new opinions about this album because the singles were so ubiquitous. They were earworms then, and they are earworms now. There's no harm in listening to the album, short of a Friends marathon, it's one of the best ways to transport yourself back to (or get a small taste of if you're too young) the mid-90s.


Raekown - Only Built 4 Cuban Linx...

The #4 album this week is the solo debut of Raekwon, a founding member of Wu-Tang Clan. Like the last album I reviewed by a Wu-Tang Clan member, my summary is that while I recognize that Only Built 4 Cuban Linx... is an important and well-regarded rap album, it's not my preference. I will almost certainly never listen to it again.


A Ride In The Life

I used to do a photography project I called "A Day In The Life," where I would take photos all throughout a single day of what I did and where I went. Photos of everyday things like buildings, street scenes, people, and the like. I haven't done one in quite a long time, mostly because my days now include my children, and I don't want to plaster them all over the internet.

I ride with a GPS cyclocomputer that I've configured to record a lap every kilometer, which includes an alerting beep and a brief status screen that shows me how long I took to ride that kilometer. I started doing this when I lived in San Diego because there was a section of rolling road in Rancho Santa Fe that I would challenge myself to maintain 30 kph (or greater) on. Instead of doing mental arithmetic while hypoxic, the cyclocomputer did the math for me.

I decided to combine these two things into a "Ride In The Life," where I would take a photo of the road ahead of me every kilometer when my GPS beeped. Well, not every kilometer precisely, only when I felt safe to pull out my phone and take a picture. I didn't take any photos while descending at high speed, and if cars were passing me closely, I delayed the photo until I felt safe. The ride was one week ago and it was into the mountains west of Boulder; here is the GPS trace. I'm not sure how interesting this is, but since I went through the effort to take dozens of photos, I'm seeing it through to post them here. I hope you find them interesting!


Bone Thugs-N-Harmony - E. 1999 Eternal

I'm a few days late on this review. Oh well!

There's only one song off the #1 album this week worth listening to: 1st of Tha Month. It's one of the songs I play to wake up anyone who needs waking up. My last.fm play history has only one play after 10am, and it was when I listened to this album for 30 Years On. It's fun that even after 30 years the overall last.fm play history for the song shows a spike in plays at the beginning of each month:

1st of Tha Month play chart

My advice is to ignore the album, but 1st of Tha Month is forever.