Stuff posted in this site by me.

I want a multiuser Amarok database, is what I want

Alright, so when I’m getting on my bike I usually just load up spotify on my phone, get to the “Songs” section of the app then hit “Shuffle Play”.

This is when the problem starts.

Over the past few months I’ve noticed the service will just give me recycled playlistss that happen to include:

  • The latest songs I’ve liked within the past thirty days.
  • A few songs that I’ve played a lot over the past three months.
  • One or two full albums that I like whole but fuck it, throw them in there see what happens.
  • The same exact playlist that was previously listened to within the past 24 hours because hey he might be tired and not notice.

The thing is I do notice. I don’t want to listen to mere rehashes of what I’ve listened to before; if I really wanted that I would go just go listen to Pandora or regular FM radio. Just tonight I got the very same playlist I listened to twelve hours ago.

There are reasons for this, I’m sure. Maybe the processing power for random playlist seeds for millions of users is too computationally intensive to actually provide a profit to the company, as it does make money from actual playlists curated by humans; could be their devs are lazy assholes, like most developers I’ve met; could be the company just doesn’t care, as it happens with most companies that are on public stock markets. Could also be the CEO just wants everyones sucking his dick.

I don’t know.

All I know is it annoys me and I’m looking to avoid this problem in the future. But I don’t know if any companies will actually safeguard my personal data should they go public, go get hacked, or worse— go bankrupt.

GM was very good at telling me I did not belong

Over time I was told a few things at the last job I had:

  1. “You’re an intense person. You may have trouble here.” This happened right during my hiring interview.
  2. “Maybe you just don’t fit in.”
  3. “You’re perceived as a dishonest person.”
  4. “I think you’re insubordinate as an employee because you don’t talk.”

Given those circumstances I thought it best to leave. I should have timed it better cos now I’m going to have a hell of a time actually making rent.

Abortion sometimes is necessary

Because of the nature of the abortion fight in the country, let me say this plainly: what happened to me was not the clinic’s fault. It was not the doctor’s fault. It was not his staff’s fault. There was no error of medical judgment or medical practice. It is the fault of forty years of pushing abortion care out of hospitals and stigmatizing and marginalizing women and care providers to the point where only four doctors in the United States are foolish enough to risk getting shot point-blank every day on their way to work to provide late-term abortions. It is the fault of legislators terrorizing physicians with spurious investigations instead of funding abortion research and finding ways to make the procedure safer. It is the fault of giving extremist, hateful, radicalizing discourse equal airtime with scientific fact and medical expertise. What would it look like, if we truly funded women’s healthcare? I wish I knew.

Source: Rivers Of Babylon: The Story Of A Third-Trimester Abortion – The Rumpus.net

Sometimes it isn’t anyone’s fault but there are people who want to blame someone, so they turn to the mother. “She’s the one to blame!”, they say.

They’re wrong. And they cannot be allowed to win.

Sometimes I can cook things

In an effort to be more social I am going to be cooking once a week for my friend Trista. This past weekend we tried it out for the first time and other than some hiccups with the shopping, everything turned out pretty awesome. I did all of the cooking while she just… hung out in the kitchen while I did my thing.

I wasn’t exactly willing to just wing it, as is my wont. I actually did my homework and perused my current favorite source of recipes: Christopher Kimball’s Milk Street Magazine. This yielded two recipes:

  • Indian-Spiced Spinach with Tomatoes and Dill
  • Cape Malay Chicken Curry

Now, because of Trista’s dietary restrictions I did have to alter the curry recipe and took out the chicken, adding more of everything else because curry is good even without meat in it.

The spinach with tomatoes and dill ended up looking like this:
Indian-Spiced Spinach with Tomatoes and Dill

It was fucking delicious. Next time I make it I’m going to get some salmon to go with it.

As for the curry,
Cape Malay Vegetarian Curry

The mint garnish was the best part.

And… no, I’m not going to post the recipes. You can probably find something better Somewhere Out in the Internet, or go purchase a subscription to Milk Magazine, it’s worth it.

Next week I’m going to do shakshuka cos I’m working later in the evening, so we’ll have to get together in the morning to get this going. I should do Bloody Marys too, omfgatos!

Biking is THE fucking best

Bikes may still look roughly the same, but looks can be deceiving.

Source: How bicycles have changed in the last 25 years | Ars Technica

Linking to this as I look at my Trek 2018 FX2 I bought after my trusty Gary Fisher was stolen from my apartment building’s basement; by the looks of it one of the tenants is a motherfucking thief as signs have gone up about parts and bikes being stolen.

Oh right, back to the subject at hand… I remember bikes 25 years ago looked very different from what they look like now. Wondering what bikes are going to look 25 years from now.

Biked while listening to The River, by KT Tunstall. Makes it easier.

Alright so tonight after work I decided I wanted a fancy drink because I’m looking at working 34 days straight an’ shit. So I went out after working at FOHjob. Hit up [fancy basement bar] and had a couple of fancy drinks and was feeling good but they have a 0100 bar close. Closed out my tab, then went up the block to [breakfast to beer] joint cos why not?

Big mistake.

I get there, sit down, and order a Tito’s and soda. Then strike a conversation with the gal next to me. She bides me to sit next to her, I oblige. Start drinking, she immediately wants to make out.

I’m all for making out but at least let me get yer bloody name, girl. She’s not that young, I’m thinking she’s in her 50s so she’s been around the block a few times. Yet here she is, hitting up a perfect stranger for some hot PDA.

So we make out until bar close (which at 0200 is okay-ish. I’m thinking MN should move to 0300).

During this entire exchange of salivary gland fluids I didn’t volunteer my name, nor did she. I got called adorable, cute, smart, intelligent, adorable (again) and what was it I did again? (server bitch at FOHjob). Every time I’d try to answer she’d try to shut me up with her lips.

I’m okay with that. I love making out. But I also like knowing who I am making out with. Kept trying to make conversation, to no avail; she would not have it. I close our tab (I paid for her drinks too, thankfully she hadn’t drunk that much) and start walking to her place, with frequent stops for warming up, as it were. She kept saying she lived three blocks from the bar and did not try to get an Uber right from the get go so I thought we were good.

We get to her place and then she says “I’m not comfortable with you.”

Wait, what?

I’m confused. You’re giving me all the signals but… fine, whatever. Yes, I am disappointed because I would like to touch someone and I would like to be touched. Fine. FINE. FINE.

So I bid her goodnight as she’s walking up the stairs to her door. Then she realizes she’s too drunk to find her keys, walks down the stairs and opens her garage. Last I saw of her was her smile as the garage door closed.

Well, okay. That was… disappointing, to say the least.

I made my way back to my bike, biked to my place and now here I am typing this up at three in the bloody morning as a lesson to myself to not trust any random women hitting me up at the bar:

Elle the Enabler
@nullrend Your past self saved your future self. Smart.
3:05am · 11 Nov 2018 · Twitter for iPhone

Maybe she’s right. I just didn’t want to spend the night alone, is all.

Also, fuck you, Mozilla.

Since Mozilla discontinued the ability of extensions to make modifications to the UI the customization ability of Firefox has gone to shit. Hence tricks like (this)[https://github.com/andreicristianpetcu/UserChrome-Tweaks] and (this)[https://github.com/Aris-t2/CustomCSSforFx] that kick back to how you’d have to do it back in the Phoenix/Firebird days.

Fuck I’m old.

Anyway I’m using the following in userChrome.css to get:

  • Tabs under the navigation/address bar
  • Multi-row tabs. No more fucking scrolling side to side. Who came up with that? It’s bloody stupid.
  • A prettier look in general
  • Makes you feel like you’re using a real browser instead of a toy browser like Chrome.

Firefox menu, navigation, and tab bars

I grabbed a couple things from the links above and made the tab bar a bit narrower. but other than that no changes. If you need to learn how to make this all work visit (this link)[https://www.userchrome.org/what-is-userchrome-css.html].

Here’s the CSS code:

/* Firefox Quantum userChrome.css tweaks ************************************************/ /* Github: https://github.com/aris-t2/customcssforfx ************************************/ /****************************************************************************************/ :root { --colored_menubar_background_image: linear-gradient(#f9f9fa,#f9f9fa); --general_toolbar_color_toolbars: linear-gradient(#f9f9fa,#f9f9fa); --general_toolbar_color_navbar: linear-gradient(#f9f9fa,#f9f9fa); --tabs_toolbar_color_tabs_not_on_top: linear-gradient(#f9f9fa,#f9f9fa); --tabs_toolbar_border-tnot_normal_mode_size: 1px; --tabs_toolbar_border-tnot_normal_mode: var(--tabs-border-color); --classic_squared_tabs_tab_text_color: black; --classic_squared_tabs_new_tab_icon_color: black; --classic_squared_tabs_tab_text_shadow: transparent; --tab-min-height_tnot: 32px; } :root[uidensity=compact] { --tab-min-height_tnot: 25px; } :root[uidensity=touch] { --tab-min-height_tnot: 40px; } /* tabs toolbar adjustment */ #main-window[tabsintitlebar] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #TabsToolbar { -moz-padding-start: 2px !important; } #main-window[tabsintitlebar] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar:-moz-lwtheme, #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar:-moz-lwtheme, #main-window[uidensity=compact][tabsintitlebar] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar:-moz-lwtheme, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar:-moz-lwtheme, #TabsToolbar:-moz-lwtheme, #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[sizemode="maximized"] #TabsToolbar, #main-window[tabsintitlebar]:not([style*='--lwt-header-image']):-moz-lwtheme #navigator-toolbox #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"]:not([style*='--lwt-header-image']):-moz-lwtheme #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar]:not([style*='--lwt-header-image']):-moz-lwtheme #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"]:not([style*='--lwt-header-image']):-moz-lwtheme #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[tabsintitlebar]:not([style*='--lwt-header-image']):-moz-lwtheme #TabsToolbar { -moz-padding-start: 0px !important; } #main-window[tabsintitlebar][sizemode="normal"]:not([sizemode="fullscreen"]) #TabsToolbar { margin-top: 0px !important; } #main-window[tabsintitlebar][sizemode="normal"][chromehidden~="menubar"] #TabsToolbar, #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"][chromehidden~="menubar"] #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive] + #TabsToolbar { padding-top: 0px !important; } #main-window[tabsintitlebar] #toolbar-menubar[autohide="true"]:not([inactive="true"]) ~ #TabsToolbar, #main-window[tabsintitlebar] #toolbar-menubar[autohide="false"] ~ #TabsToolbar{ margin-top: 0px !important; } /* tab title in titlebar support */ #main-window[tabsintitlebar][sizemode="normal"] #navigator-toolbox #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="normal"] #navigator-toolbox #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"] #navigator-toolbox #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #navigator-toolbox #TabsToolbar, #main-window[tabsintitlebar][sizemode="normal"] #navigator-toolbox #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="normal"] #navigator-toolbox #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[tabsintitlebar][sizemode="maximized"] #navigator-toolbox #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar, #main-window[uidensity=compact][tabsintitlebar][sizemode="maximized"] #navigator-toolbox #toolbar-menubar[autohide="true"][inactive="true"] ~ #TabsToolbar{ margin-top: 0px !important; } /* titlebar button support */ #main-window[tabsintitlebar] #toolbar-menubar[autohide="true"][inactive="true"] ~ #nav-bar{ margin-top: 2px !important; } /* fix for application/hamburger button in titlebar */ #main-window[tabsintitlebar][sizemode="fullscreen"] #toolbar-menubar[autohide="true"][inactive="true"] ~ #nav-bar #PanelUI-button { visibility: collapse !important; } #main-window[inDOMFullscreen="true"] #TabsToolbar { opacity: 0 !important; } /* tab height */ #tabbrowser-tabs, #tabbrowser-tabs > .tabbrowser-arrowscrollbox, .tabbrowser-tabs[positionpinnedtabs] > .tabbrowser-tab[pinned] { min-height: var(--tab-min-height_tnot) !important; } /* toolbar order (start) ************************************/ #print-preview-toolbar, #printedit-toolbar, #titlebar { -moz-box-ordinal-group: 0 !important; } #navigator-toolbox #toolbar-menubar { -moz-box-ordinal-group: 1 !important; } /* navigation toolbar */ #navigator-toolbox #nav-bar { -moz-box-ordinal-group: 2 !important; } /* bookmarks toolbar */ #navigator-toolbox #PersonalToolbar { -moz-box-ordinal-group: 3 !important; } /* 3rd party toolbars */ #navigator-toolbox toolbar { -moz-box-ordinal-group: 10 !important; } /* tabs toolbar */ #navigator-toolbox #TabsToolbar { -moz-box-ordinal-group: 100 !important; } /* toolbar order (end) **************************************/ /* toolbar colors */ #main-window:not([tabsintitlebar]) #toolbar-menubar:not(:-moz-lwtheme) { background-image: var(--colored_menubar_background_image) !important; border: 0px !important; margin-bottom: -1px !important; } #nav-bar:not(:-moz-lwtheme) { -moz-appearance: none !important; background: var(--general_toolbar_color_navbar, inherit) !important; } toolbar:not(#TabsToolbar):not(#toolbar-menubar):not(#nav-bar):not(:-moz-lwtheme) { -moz-appearance: none !important; background: var(--general_toolbar_color_toolbars, inherit) !important; } #TabsToolbar:not(:-moz-lwtheme){ -moz-appearance: none !important; background-image: var(--tabs_toolbar_color_tabs_not_on_top) !important; } /* remove color overlay for lw-themes */ #main-window[style*='--lwt-header-image'] :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar):-moz-lwtheme{ background: unset !important; } /* adjust compact themes background color */ #main-window:not([style*='--lwt-header-image']) #TabsToolbar:-moz-lwtheme { -moz-appearance: none !important; background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)) !important; } #main-window:not(:-moz-lwtheme) #TabsToolbar :-moz-any(.tabs-newtab-button,.scrollbutton-up,.scrollbutton-down), #main-window:not(:-moz-lwtheme) #TabsToolbar > toolbarbutton, #main-window:not([style*='--lwt-header-image']):-moz-lwtheme:-moz-lwtheme-darktext #TabsToolbar :-moz-any(.tabs-newtab-button,.scrollbutton-up,.scrollbutton-down), #main-window:not([style*='--lwt-header-image']):-moz-lwtheme:-moz-lwtheme-darktext #TabsToolbar > toolbarbutton { fill: var(--classic_squared_tabs_new_tab_icon_color) !important; color: var(--classic_squared_tabs_new_tab_icon_color) !important; } /* toolbar borders */ #main-window #navigator-toolbox::after { opacity: 0 !important; } #TabsToolbar{ margin-bottom: 0px !important; border-bottom: 1px solid #5f7181 !important; } #main-window[sizemode="normal"] #navigator-toolbox :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar) { border-left: var(--tabs_toolbar_border-tnot_normal_mode_size) solid var(--tabs_toolbar_border-tnot_normal_mode) !important; border-right: var(--tabs_toolbar_border-tnot_normal_mode_size) solid var(--tabs_toolbar_border-tnot_normal_mode) !important; background-clip: padding-box !important; } #main-window[sizemode="maximized"] #navigator-toolbox :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar) { border-left: 0px !important; border-right: 0px !important; } #main-window[style*='--lwt-header-image'][sizemode="normal"] #navigator-toolbox :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar):-moz-lwtheme, #main-window[style*='--lwt-header-image'][sizemode="maximized"] #navigator-toolbox :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar):-moz-lwtheme { border-top: 0px !important; border-left: 0px !important; border-right: 0px !important; } #main-window:not([style*='--lwt-header-image']):-moz-lwtheme-brighttext #TabsToolbar:-moz-lwtheme { border-bottom: 1px solid #323234 !important; } #main-window:not([style*='--lwt-header-image']):-moz-lwtheme:-moz-lwtheme-brighttext #TabsToolbar:-moz-lwtheme { border-bottom: 1px solid #323234 !important; } #main-window:not([sizemode="fullscreen"])[tabsintitlebar] #TabsToolbar{ -moz-margin-end: 0px !important; } #main-window[tabsintitlebar] #TabsToolbar .titlebar-placeholder{ visibility: collapse !important; } #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"] { margin-top: 21px !important; } #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] { margin-top: 20px !important; } #tabbrowser-tabs .tab-drop-indicator { margin-bottom: 0px !important; } #PersonalToolbar:-moz-lwtheme, #nav-bar:-moz-lwtheme { background-image: none !important; box-shadow: none !important; border-top: none !important; border-bottom: none !important; } /* remove tab fog */ #TabsToolbar:not(:-moz-lwtheme), #TabsToolbar:not(:-moz-lwtheme)::before, #TabsToolbar:not(:-moz-lwtheme)::after { box-shadow: unset !important; } /* remove 'dragging tab' margin/padding nonsense */ #TabsToolbar[movingtab] { padding-bottom: unset !important; } #TabsToolbar[movingtab] > .tabbrowser-tabs { padding-bottom: unset !important; margin-bottom: unset !important; } #TabsToolbar[movingtab] + #nav-bar { margin-top: unset !important; } /* scroll buttons */ #TabsToolbar:not(:-moz-lwtheme) #alltabs-button, #TabsToolbar:not(:-moz-lwtheme) .tabbrowser-arrowscrollbox > .scrollbutton-up, #TabsToolbar:not(:-moz-lwtheme) .tabbrowser-arrowscrollbox > .scrollbutton-down { fill: black !important; } /* Fx58+ titlebar placeholders */ #TabsToolbar .titlebar-placeholder[type="pre-tabs"], #TabsToolbar .titlebar-placeholder[type="post-tabs"]{ display: none !important; } @media (-moz-os-version: windows-win10) { #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar[autohide="true"][inactive="true"] { margin-top: 30px !important; } #main-window[tabsintitlebar][sizemode="maximized"] #toolbar-menubar[autohide="true"][inactive="true"] { margin-top: 30px !important; } } @media (-moz-windows-classic) { /* tweaks for Windows Classic theme */ #nav-bar:not(:-moz-lwtheme), #PersonalToolbar:not(:-moz-lwtheme), #main-window:not([tabsintitlebar]) #TabsToolbar:not(:-moz-lwtheme) { border-left: unset !important; border-right: unset !important; background: unset !important; } #main-window[sizemode="normal"] #navigator-toolbox :-moz-any(#nav-bar,#PersonalToolbar,#TabsToolbar) { border-left: 0px !important; border-right: 0px !important; } #main-window:not([tabsintitlebar]) #toolbar-menubar:not(:-moz-lwtheme) { background: unset !important; box-shadow: unset !important; border-bottom: unset !important; } #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #navigator-toolbox, #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #nav-bar, #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #navigator-toolbox::before, #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #nav-bar::before, #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #navigator-toolbox::after, #main-window:not([tabsintitlebar]):not(:-moz-lwtheme) #nav-bar::after { background: unset !important; box-shadow: unset !important; border: unset !important; border-image: unset !important; } #main-window:not([tabsintitlebar]) toolbar:not(#TabsToolbar):not(#toolbar-menubar):not(#nav-bar):not(:-moz-lwtheme) { background: unset !important; } } /* tab text colors */ #TabsToolbar:not(:-moz-lwtheme) .tabbrowser-tab { color: var(--classic_squared_tabs_tab_text_color) !important; text-shadow: 1px 1px 1px var(--classic_squared_tabs_tab_text_shadow) !important; } /* fix Windows 7s default tab background (remove dark purple bg color)*/ @media (-moz-os-version: windows-win7) { @media (-moz-windows-default-theme) { .tabbrowser-tab:not([selected]):not(:hover):not(:-moz-lwtheme) { background-color: #e3e4e6 !important; } .tabbrowser-tab:not([selected]):hover:not(:-moz-lwtheme) { background-color: #cccdcf !important; } } } /* Firefox Quantum userChrome.css tweaks ************************************************/ /* Github: https://github.com/aris-t2/customcssforfx ************************************/ /****************************************************************************************/ /****************************************************************************************/ /* multirow / multiple tab lines - modified for CustomCSSforFx **************************/ /* all credits go to the original author: ***********************************************/ /* https://www.reddit.com/r/FirefoxCSS/comments/7dclp7/multirow_tabs_in_ff57/ ***********/ /****************************************************************************************/ :root { --tabs-lines: 3; /* 3 rows, increase for more */ --tab_min_width_mlt: 120px; --tab_max_width_mlt: 200px; --tab-min-height_mlt: var(--tab-min-height,25px); /* set own value here, if used without configuration files */ } .tabbrowser-tab[fadein]:not([pinned]) { flex-grow: 1; min-width: var(--tab_min_width_mlt) !important; max-width: var(--tab_max_width_mlt) !important; } .tabbrowser-tab,.tab-background { min-height: var(--tab-min-height_mlt); } .tabs-newtab-button { vertical-align: bottom !important; height: var(--tab-min-height_mlt); margin-bottom: -1px !important; } .tab-stack { width: 100%; } /* fix tab position */ #tabbrowser-tabs, #tabbrowser-tabs > .tabbrowser-arrowscrollbox { min-height: var(--tab-min-height_mlt) !important; } :root[uidensity=touch] .tabbrowser-tab:not([pinned]) .tab-content .close-icon { padding-top: 0px !important; padding-bottom: 0px !important; } /**/ #tabbrowser-tabs .scrollbox-innerbox { display: flex; flex-wrap: wrap; overflow-x: collapse !important; overflow-y: auto !important; min-height: var(--tab-min-height_mlt); max-height: calc( var(--tabs-lines) * var(--tab-min-height_mlt) ) !important; } #tabbrowser-tabs .arrowscrollbox-scrollbox { overflow-x: collapse; overflow: visible; display: block; } #tabbrowser-tabs .scrollbutton-up, #tabbrowser-tabs .scrollbutton-down, #TabsToolbar #alltabs-button, .tabbrowser-tab:not([fadein]){ display: none; } #main-window[tabsintitlebar] #tabbrowser-tabs { -moz-window-dragging: no-drag !important; } .tabbrowser-arrowscrollbox > .arrowscrollbox-overflow-start-indicator:not([collapsed]), .tabbrowser-arrowscrollbox > .arrowscrollbox-overflow-end-indicator:not([collapsed]) { opacity: 0 !important; } #tabbrowser-tabs * { overflow-x: none !important; } #main-window[customizing] #tabbrowser-tabs .scrollbox-innerbox { display: block !important; } #tabbrowser-tabs .scrollbox-innerbox { -moz-padding-end: 4px !important; } #TabsToolbar[currentset^="tabbrowser-tabs,new-tab-button"] #tabbrowser-tabs .scrollbox-innerbox { -moz-padding-end: 0px !important; } /* remove crap set by Firefox 58+ */ .tabbrowser-tab::after, .tabbrowser-tab::before { border-left: unset !important; border-image: unset !important; border-image-slice: unset !important; border: 0 !important; } #TabsToolbar .titlebar-placeholder[type="pre-tabs"], #TabsToolbar .titlebar-placeholder[type="post-tabs"]{ opacity: 0 !important; }

Goddamnit, Amazon

Source: Gordon’s Notes: Amazon reviews now unreliable – negative reviews filtered (Anker example)

I thought I was running into isolated issues as I rarely have to give negative reviews but knowing there is systemic bias in the reviews available makes all of those reviews useless to me. I’ll probably end up having to make use of the return policy much more often now.

Where else might we see this? It makes shopping online that much harder knowing the website you’re shopping at is actively fucking with your perception of it.

Should’ve gone elsewhere

Writing this at the bar as the boss sits on the spot two places to my left. Wish I were fucking joking but I en’t.

Given past… Situations I have faced with her it makes it difficult to find a common social point that won’t get me in trouble with her at work even if the events happen outside of work.

Service industry blues, am I right.

Let’s Encrypt Renewal

Yeah yeah, SSL certificates expired like what, a month and a half ago? Anyway, I needed to renew it but it attached a bunch of domains to the certificate on this host and I needed to start over. There are a bunch of options but the most straighforward for me was to just delete everything and start over. So, in the shell:

# cp /etc/letsencrypt /etc/letsencrypt.backup -r
# rm -rf /etc/letsencrypt/live
# rm -rf /etc/letsencrypt/archive
# rm -rf /etc/letsencrypt/renewal/YOURCERTIFICATEDOMAIN.conf
# certbot certonly

At this point it’ll ask you for webroot an’ stuff so just answer the questions and nobody gets hurt. These instructions work for Apache but I’m using NginX, so then you have to edit the configuration for the site(s) in /etc/nginx/sites-available/. There will be a couple lines going like:

ssl_certificate /etc/letsencrypt/live/OLDCERTIFICATEDOMAIN/fullchain.pem; # managed by Certbot
ssl_certificate /etc/letsencrypt/archive/OLDCERTIFICATEDOMAIN/fullchain.pem; # managed by Certbot

Just update them to point to the most current certification location, then restart NginX with service nginx restart

Ugh, doubles. My personal scourge.

Due to scheduling vagaries at my two jobs I end up working doubles three times a week at the least. And not just regular doubles, but “clopenings”; that is, when you close the night and then open the next day. Never any fun to be had during those days… Specially in the weekends.

I work brunch.


Sooo I guess I’m back on my bullshit

I just picked up another full-time job at a kitchen in downtown. Went and staged today and by the end of it got offered the job. I took it.

That means I now have FOHjob, in which I’m just a wait assistant with nary a chance of moving up the chain; and BOHjob, in which I’m supposed to show up at ungodly hours of the morning and… Do kitchen stuff? I’m not even sure what I’m going to be doing yet.

loud sigh

My issue is going to be scheduling. Oftentimes I end up closing at FOHjob, which will cut into my sleeping time and increases the risk I’ll be late to BOHjob. It’s not a nice feeling…

Never grow up, kids. It leads to situations like these.

You did good!

After two years…. it was time to retire my trusty Thinkpad T60 that I turned into a WiFi AP for my LAN. Its name is blackslab and it’s been with me for about 8 years now. She’s earned a nice long break.

Thinkpad T60

I had been running into a ton of issues lately:

  • There are way too many wireless networks around me. A quick look at the network selector on Windows has 11 networks in there. This was interfering with my gaming.
  • Debian is a fucking bitch to deal with these days. Systemd is polluting everything in it.
  • Network instability is a thing. After every reboot I had to manually bring the WAN interface up. It’s a thing and I just didn’t want to deal with it anymore.

So now I’m setting up FreeBSD on a small form factor PC to take its place. It’s not the cheapest when it comes to energy use but it should do the trick. In the interim I’ve got a cheap ASUS router running things since Windows ICS is so fucking unreliable; tried setting up FreeBSD through it and it was a slog.

Hopefully I’ll be able to stop banging my head against PF sometime in the next 12 hours so I can actually set the thing up as the main LAN controller.


The fear of the blank page is real, goddamnit.

Every time I open up the WP editor I forget what I was going to write about. Need to figure out a better way to get what in my head out into the screen.

Miserly in my self-improvement.

Still around.

Only scratching the surface, here.

I fucking hate my job now.

It was okay for a long, long while. Certainly less stressful than working at the biting squad but it certainly had its share of trouble.

But now all of the low lying brush-fires that consume the company are threatening my very sanity. I dread going to work so much I try to sleep as much as possible, which is the opposite of me staying up until 0300 on teh twitter derp corn or playing videogames.

Hopefully something good will pop-up soon because THIS IS SO, SO BAD.

How bad, you ask? We have clients who are literal nazi sympathizers. I asked my Pa about it and he says that technically makes me a nazi collaborator. The kicker? The boss is Jewish.

Hopefully next job I’ll actually be given a chance to move up? Either way, I’m over this place.

You get retweets turned off! And you! And YOU TOO!!!

A modest proposal to improve Twitter—and perhaps the world

Source: The Case Against Retweets – The Atlantic

I went ahead and made the change on tweetdeck, the interface I use on the desktop:

tweetdeck settings

But this doesn’t take any effect on my mobile client of choice, Talon, and it’s a total pain in the ass to go hunting down a tweet that scrolled off the screen.

Meaning I had to rethink my approach. In the next few days I’ll be disabling retweets for pretty much everyone I notice retweeting more than they actually tweet or reply to other’s tweets. Just in the time I wrote up this blog post I disabled RTs for ten people. The threshold seems to be when someone hits the RT button for more than 4 tweets out of every 10.

It’d be nice if twitter enabled an option to disable RTs globally and then you decide if you want to turn them on for someone… but this does not favor their advertising model since you’re purposely limiting the amount of viral content making it to your timeline regardless of the client you’re using.

This is probably a good thing, all in all.

The Rise and Fall of the American SRO – CityLab

The same cities that struggle to provide affordable housing today eliminated their critical-but-maligned flexible housing stock after World War II.

Source: The Rise and Fall of the American SRO – CityLab

This is important. I live by myself and I am paying over a third of my monthly income in rent and the housing situation in Minneapolis only keeps getting worse. It is likely I will not be able to afford purchasing a home within city limits for the next 10 years and landlords keep rising their rents, advancing the gentrification troubling my part of the city.

There is something quietly comforting about a bowl of miso in front of the computer while you watch life scroll by on twitter.

Rend with the words

Get rent with the words.

Such is life.

Code isn’t racist… or so you would think

I researched white supremacist groups and visited the same sites that my husband frequented. After a month of clicking on platforms that ranged from The Drudge Report to The Daily Stormer and reading about the alleged takeover of Illuminati Elite, my computer turned into a Nazi.

Up until then I hadn’t realized that my computer, like me, was ethnically Jewish. The ads that normally filtered through my Facebook feed were preoccupied with celebrity gossip, yarn sales and timely reminders from Chabad.org advising me to pre-order kosher lamb legs for Pesach.

Source: I Married A White Supremacist – Eugene Weekly

This is what constant optimization in the name of marketing does to computing systems. A never ending echo chamber that will happily keep feeding you the same things over and over as they cannot tell what is “wrong” or “right” or “uncouth” or “proper”. They can only do as they’re told.

Then there is the fact there is software that is inherently racist, misogynist and discriminating in all sorts of ways.

Home es where el maeltrom esta.

Part of the problem is that my current depression not being tied to any particular trauma
Not that I would ever wish something bad on myself or anyone But boy howdy is it easier to figure out when you can point and be like THAT IS WHY SAD

— GhostEsq via twitter

Already got this one

I guess I’ll never be cool because I’m not interested in having a Medium blog.

This site might not be much but I don’t see any service out there putting up with everything I’ve written/reblogged/reposted for over a decade.

When you pay attention to what you type on

At work I use a Thinkpad w510. It’s one of those big slabs of computing that brings you joy to use. It has ye olde scissor switch keyboard that everyone knows and loves. I hear the new chiclet style keyboard is decent… but just that, decent. This keyboard is the real deal, behold:

Thinkpad W510 Keyboard

There’s only one problem. The machine has a Nvidia Quadro FX 880M. This is a really damn nice GPU to have on a laptop and I’m thankful for it. The problem is it runs hot, uncomfortably so for the workloads that I throw at it. This means I ended up having to use an external keyboard to avoid having my left hand run a full 10° higher than the rest of my body. I ended up with this, a regular Apple iMac keyboard:

Apple iMac Keyboard

Since I’m using it on Windows I have to deal with Apples outright disregard for its hardware users on platforms that are not macOS. Now, with this said, I’ve been looking for years for a PC keyboard that has the same key feel as the stuff Apple makes plus a few things:

  • Volume control buttons.
  • Media control buttons.
  • Full set of home keys and numeric keyboard. None of that weird ultra-minimalist keyboards that make you regret using a computer.
  • A full set of F-keys
  • Macro keys would be nice to have
  • Have it be wired. Wireless sucks and it’s insecure. If it must be wireless then give people the option to use an USB cable instead.
  • USB hub.

At home I use a Corsair Gaming K55 RGB keyboard. It’s got all the goodies I outlined above minus the USB hub but it does have backlighting:

Corsair K55 RGB Gaming Keyboard

It’s a nice piece of kit. Not that loud since it uses regular plastic switches as opposed to mechanical, but you can still feel a nice clack when the keys bottom out.

So basically what I want is a flat keyboard like Apple makes but with a bunch of extra keys. Got some benefits for it:

  • Wired means you don’t have to worry about battery life.
  • Flat means you can pack it in a bag with a minimum of fuss.
  • The minimalist look will make people lose their shit.
  • The keys will still feel really nice on long typing sessions.
  • They won’t hear you typing at the coffeehouse across the street.

I’ve been looking for something like this for years, and no manufacturer has stepped up to the plate. They’re all trying to chase the look Apple has but they come up severely lacking when it comes to the functionality. This would be a keyboard for people who are not afraid of buttons on their devices— say, DIP switches on the back to emulate various settings, like the CODE keyboards do. If some Chinese upstart were to start making a device like this and not load it up with a secret keylogger it would probably do pretty well for itself.

But what do I know. After all I’m only looked at as a kitchen hand these days.