Concrete

Mar. 5th, 2026 05:37 am
varidog: (Default)
We now have concrete on the floor. That has to cure for a few days.

Now that I have concrete, I was able to begin moving things back into the storage room. In this case, I moved two shelves that were blocking the door to the bike area. I can now access that way again.

There's still lots to shuffle about, but I'm also tuckered. I'm coming out of the coldish thingie, but I only worked half a day.

The contractor will glue down the floor on Friday or Monday, depending on his schedule.
varidog: (Default)
I rode my bike into work. When I came out, it was covered in snow. I hadn't expected that. The snow was supposed to come in later.

The clouds had looked like rain, so I had left a bag over the seat, which made everything easier. Getting home was no trouble as I took the metro, then the paths were clear. 
varidog: (Default)
Alexithymia is a word for not knowing what your emotions are; difficulty in identifying them. Yes, there's a word for that.

Out of curiosity, I took an simple assessment and found myself about average, so nothing of note. I also didn't quite understand the questions, which meant that I guessed at the answers.

Quite a few times in my life, I realized that certain feelings were emotions, and connecting those things together. It's certainly something that I've gone through. Yet, I also don't think that I can't identify things. Yet, I also feel like my range of emotion juggling is not as wide as other people's.

What's hardest to understand is "Externally Oriented Thinking." I'm trying to grasp the concept behind that, but only getting so far. I may, in fact, do that, but I can't tell so easily.

None of this is certain. It's a rabbit hole for the moment.

When trying to make sense of something, I drop over to Reddit and read the threads of people who do associate with that and discover what, if anything, resonates. I'll poke at this for a few days or weeks and see if there's anything surprising.

So far, this doesn't seem like me. The on-the-ground experiences don't quite match mine. I think that I'm truly at the average level, just muddling through like everyone else.
varidog: (Default)
In good news, the bike paths were mostly clear of snow in the morning. The bridges were still icy, as were a few other places. However, on the ride home, the bridges were now clear, and there were now distinct paths through the remaining icy areas.

Yeah. It was nice to pedal there and back again.

In bad news, there EVEN MORE SNOW on the horizon. Eff a truck. 
varidog: (Default)
The paths have been icy for a long time, and they were just about clear when it snowed again. Yesterday, I was a tad unsure. When it comes to black ice, riding can go bad fast.

Today, it's above freezing, and has been so all night, so I'll be pedaling for the metro.

I am so tired of the bus. I am so tired of waiting for the bus.

Meanwhile, I'm thinking of getting myself a new bike this year. My current idea is to get a Cannondale Quick 6, or maybe a Quick 5. I'd prefer a steel bike, but those cost enough that I'm not 100% convinced. Still, holding out for what I want could be cheaper. Even better, finding something that I want to modify would also be good.
varidog: (Default)
We've hit the low end of this winter's storm. The news says 3 inches, but I'm dubious. Other places got far more, but not here.

It's a nice bust, though, even if modest. The snow's nice to look at while being quite approachable, giving everything that round and soft quality.

As snows go, I could look at it forever. 
varidog: (Default)
There was a deer in the yard for much of yesterday, just chilling and occasionally browsing, what little there was to browse. I think that it like the bare patch of plain grass, which wasn't snow or ice at all.

Luna (our new-to-us cat) was in a state for much of the day. Whether she was worried or excited is hard to determine. She kept getting us and bringing us to the window.

Even when the deer was gone, she brought us to the window. Yes, the deer had left and wasn't there anymore. 
varidog: (Default)
After a week under freezing, we're finally hitting a day above freezing.

I'm still hacking away at the snow, making the sidewalks better. This helps me to appreciate how much work we get from the sun. Normally, cleanup is far easier because we've literally got the sun melting everything away.

Because of the two centimeters of sleet, colloquially called snowcrete, a portmanteau of snow and concrete, we've got ice blocks everywhere. It feels like we're in Antarctica. We even have vast mounds of this stuff in the cul-de-sac and on the street corners. The kids are climbing them like mountains. (Yay, kids.) Some folks are even decorating with them.

Around the metro station, they finally cleared the curbs along the street, exposing some parking places, and clearing out the bus stop for my bus. The rest of the bus stops aren't so lucky.

My friend's wife slipped on the ice and broke her arm. One of my primary strategies has been creating a safe walkway, and doing that so that I selfishly don't fall down and break my own arm.

The neighborhood cats are all out, and all look to have survived this cold snap, even this year's kittens, the black pair, who are about nine months old now.

I look forward to a day above freezing before the next cold snap rolls in.
varidog: (Default)
My snow shovel has been a survivor. I bought it because it was less big than other snow shoves, which is good because we often get wet or heavy snow. That thing wound up being a survivor. I believe that it shoveled me out of both Snowzilla and Snowmageddon. This tool has served me well.

The crack down the blade has pushed down to the tip, and now the shovel has lost integrity. I'm going to hit the crack with polymer glue and hope for the best. The prognosis is fair but not certain.

Luna

Jan. 5th, 2026 02:48 pm
varidog: (Default)
We've adopted a new cat and we're doing new cat things. Her name is Luna, 12 years old, and her previous people had to rehome her. Their toddler is allergic.

Luna is now learning to live with us, and we are learning to live with her.

Is this what an ordinary cat is like? After Squirrel, all cats will seem easy.
varidog: (Default)
We rung in the new year by baking cookies. Otherwise, it was a quiet night.

I have no idea what my theme for this year will be.  
varidog: (Default)
I grossed about $36 this year on selling my books. That's all profit.

I published a book, The Last Portal Home. I've complete multiple drafts of Tarragon, which I hope to push out by the end of winter.

I made some motion on Google Play. Never Trust a Pariah is the only title that moves. I did something right with that one.
varidog: (Default)
Some big changes happened this year in life.

This was the final year of high school for the offspring. This was my last spring of waking up, readying the car, and hustling the kid out the door.

This was also the year of shoving the kid out the door and off to school. That made for a big change in the house. It was just the two of us, and it felt like we were newlyweds again. We've done more casual dating and hanging out than we have in a long time.

We lost Squirrel the cat at the end of may, and since then, there's been no replacement pet. That was another huge change. I'm no longer living in reactive fear of the door opening and closing, never knowing what's demands are coming at me. That's one less thing to keep track of.

Jenny lost her job in May, and since then, has been working a volunteer gig to bring her non-profit skills back up. I would appreciate her getting a position that pays, and so would she. That's why we're starting this way, to get her back onto the networks, and get her skills modernized.

In August, my car got stolen for a joyride. We got it back the same day, but repairing the steering column was quite a bit. Thank you, insurance. We now keep my car in the driveway with my wife's car behind it. I also now keep a club on the steering wheel. That won't stop a determined thief, but it will stop a lazy one.

Two nephews, Cole and Corey, got married, one back in May and the other just after this upcoming Christmas.

We spent more time watching films. We've instituted a film night, first on Tuesdays, and now on Thursdays.

I'm reading to my wife more, which helps my reading skills, and she advises me on my novels. It's been working out. We'll tend to also look at puppies and kittens on Reddit.

We finished our Ben Tausing crossword book, and now we're subscribing to his crossword venture to continue the joy. We've been doing Ben crosswords since the City Paper days.

Jen's mom moved from a living in a solo apartment into living in a memory care situation. Adjusting her meds has greatly helped her alertness. We downsized her place and got her moved over. I repainted her art deco end table for her. It looks fabulous.
varidog: (Default)
This year in bicycling, I wore out.

In January, it snowed enough that the paths weren't safe, so I took the bus and the metro for a month.

With a return to office in March, making pedaling five days a week, like it or not, I began pedaling full time, and I found this exhausting. I soon switched to interleaving metro days with pedaling days. That helped.

We considered an ebike back in May, but with my job highly uncertain, it was cheaper to take the metro. In fact, I could ride the metro for five years, part time, before equaling the cost of an ebike.

I took to riding my 26 inch wheel bike more, because it had an overall less-bumpy ride because of its big tires.

In September, I put the drop bars back onto my road bike, and I've been relearning how to use it. I'm still not convinced on drop bars. The right brifter had troubles, so I replaced them with Microshift brifters. I'm still sorting out that mess. Generally, I'm not using my road bike to reach the metro, and my mountain bike to pedal longer distances.

I may yet go back to handlebars and friction shifters on the road bike. That was a very nice combo. The main thing holding me back is the sunk cost of the new brifters.

I've only ridden into work once with brifters, and this time around, I was better at it, because my core strength is far better than it was years ago. However, my hands don't fully like drop bars.
varidog: (Default)
The year in music lessened. The number of LP's that I acquired via thrifting has dwindled. It's still there, but just less. I'm even running into less folk. In general, I'm recording the LPs, then they sit there as I ignore them. Eventually, I get the ripping done.

I moved from Windows to Linux. I'd been off Linux for a while. PipeWire gave me fits and I don't know why, so I was on ALS for a while, but I've recently gone back to PipeWire.

I purchased a pair of open eared BluTooth earbuds for work (Anker Soundcore Aerofit v1, half-off, closeout, $50), and that's helped my restlessness. They hold a charge all day, sound reasonable, connect to multiple devices, and give me listening pleasure. I'm mostly listening to Soma FM, with channels focusing on 80's synth, bossa nova, hip 60's, indie pop, and space age jazz. Because work had a high level of political stress, I needed something in my ears.

My big purchase were my Bowers and Wilkins 704 Series 2 speakers, for only $350. That was an unrepeatable occurrence, as I walked into a thrift store in a wealthy county and there they were.

I rebuilt a pair of speakers, reclaiming the drivers, creating a pair of cube speakers. I put those, a small amp, and a small sub, into the living room, and now they're the living room speakers. More importantly, they're the Christmas jukebox.

I wore out a needle on my turntable. I bought another LP Gear Carbon Black. I don't play well kept records, so I re-chose a needle for challenging conditions. It's good enough for who it's for.

With fewer records to buy, and eyes that kept getting irritated, I turned my gaze onto DVDs and BluRays. I purchased the entire run of Studio Ghibli films (to date), and then went on a hunting spree, finding all sorts of wonderful films for $1 (and sometimes less). I've watched more films this year than I've watched in a decade. I've paid extra attention to well known or critically acclaimed films that I've never seen. I've worked hard to escape my usual genres.

I'm also watching films to feed my head with varied sorts of stories, which I hope will inform my novel writing.

Halfway through the year, I stopped watching Twitch. Many of my favorite DJs and pianists were showing up irregularly (life happened to them), and then one morning, I woke up and I was done. In August, I went cold turkey, spending my time on video instead. That coincided with me dropping almost every Discord group that they ran, which was easy because I'd never integrated with Discord very well.

My eyes needed the break. After five months of film and less playing, they don't get irritated as easily anymore, but they still annoy me.

I donated to WMGSO, the Washington Metropolitan Gamer Symphony Orchestra. I didn't make any live concerts, but I've sat in on their livestreams. They're the one exception that I made to Twitch. 
varidog: (Default)
This is how I'm converting Livejournal/Dreamwidth CSV exports to HTML using PHP.

Could it be better? Sure. Please make it better. In its current form, it can convert 20 years of data in about 5 seconds. You download your data on your own, then run this script against the directory.

I tried using XML files, but the entries were missing breaks, meaning that the converted entries turned into undifferentiated blocks of text. Rather than continue development for a worse result, I abandoned that approach. 

<?PHP
 
//--------------------------------------------------------
// Global Variables - destined for INI file
//--------------------------------------------------------
 
$_INI['JournalBasePath'] = '/Documents/Dreamwidth';
$_INI['JournalCSVPath'] = $_INI['JournalBasePath'] . '/CSV';
$_INI['JournalHTMLPath'] = $_INI['JournalBasePath'] . '/HTMLPHP';
$_INI['JournalID'] = 'yourid';
$_INI['JournalSite'] = 'dreamwidth.org';
$_INI['JournalBaseURL'] = 'https://' . $_INI['JournalID'] . '.' . $_INI['JournalSite'];
$_INI['JournalDateFormat'] = 'l, F d, Y h:i A';


 //--------------------------------------------------------
// Retrieve CSV File List
//--------------------------------------------------------
 
$CSV_List = scandir($_INI['JournalCSVPath'], SCANDIR_SORT_ASCENDING);
 
 
//--------------------------------------------------------
// Process the File List
//--------------------------------------------------------
 
 
foreach ($CSV_List as $CSV) {
 
If (preg_match('/.csv/', $CSV) ) {
Convert_CSV($CSV, $_INI);
}
 
}
 
//--------------------------------------------------------
// Function - Convert the CSV into an HTLM Document
//--------------------------------------------------------
 
Function Convert_CSV ($CSV, $_INI) {
 
//
// Set Input and Output Files
//
$CSV_In = $_INI['JournalCSVPath'] . '/' . $CSV;
$HTML_Out = $_INI['JournalHTMLPath'] . '/' . preg_replace('/.csv/', '.html', $CSV);
echo $CSV_In . "\n";
 
 
 
//
// Iterate Through Each File
//
if (($handle = fopen($CSV_In, "r")) !== FALSE) {
$Post = fgetcsv($handle, 0, ",");
//
// Define Header
//
$HTML_Header = '
<!DOCTYPE html>
<html>
<head>    
<meta charset="UTF-8">    
<title>' . str_replace('.csv','',$CSV) . '</title>
</head>
<body>
';
//
// Define Footer
//
$HTML_Footer = '
</body>
</html>
';
//
// Write HEADER to FILE
//
file_put_contents($HTML_Out, $HTML_Header, LOCK_EX);
//
// Write H1 to FILE
//
$H1 = '<h1>' . str_replace('.csv','',$CSV) . '</h1>' . "\n";
file_put_contents($HTML_Out, $H1, FILE_APPEND | LOCK_EX);
//
// Iterate throught the CSV
// Write each Row to FILE
//
while (($Post = fgetcsv($handle, 0, ",")) !== FALSE) {
$HTML = Convert_Entry($Post, $_INI);
file_put_contents($HTML_Out, $HTML, FILE_APPEND | LOCK_EX);
}
//
// Write the Footert to FILE
//
file_put_contents($HTML_Out, $HTML_Footer, FILE_APPEND | LOCK_EX);
fclose($handle);
}
}
 
//--------------------------------------------------------
// Function - Convert an entry into HTML
//--------------------------------------------------------
 
Function Convert_Entry ($Post, $_INI) {
 
/*
0 = itemid
1 = eventtime
2 = logtime
3 = subject
4 = event (body of post)
5 = security
6 = allowmask
7 = current_music
8 = current_mood
*/
//
// ID
//
$ItemID = '<p><strong>ItemID:</strong> ' . $Post[0] . '</P>' . "\n";
//
// Date
//
$Date = strtotime($Post[1]);
$Formatted_Date = date($_INI['JournalDateFormat'], $Date) . "\n"; 
$EventTime = '<p><strong>Date:</strong> ' . $Formatted_Date . '</P>' . "\n";
//
// Entry TITLE
//
If (strlen($Post[3]) == 0) { 
$Post[3] = $Post[1]; 
}
$Subject = '<h2>' . $Post[3] . '</h2>' . "\n";
//
// Body of Post
//
$Body = $Post[4] . "\n";
//
// Security
//
$Security = '<p><strong>Security:</strong> ' . $Post[5] . '</P>' . "\n";
//
// URL to Original Post
//
$URL = $_INI['JournalBaseURL'] . '/' . $Post[0] . '.html';
$HREF = '<a href="' . $URL . '">' . $URL . '</a>';
$WebLink = '<p><strong>Entry:</strong> ' . $HREF . '<p>' . "\n";
//
// Current Music (if present)
//
If (strlen($Post[7]) > 0) {
$CurrentMusic = '<p><strong>Current Music: </strong> '. $Post[7] . '</p>' . "\n";
} else {
$CurrentMusic = NULL;
}
//
// Current Mood (if present)
//
If (strlen($Post[8]) > 0) {
$CurrentMood = '<p><strong>Current Mood: </strong> ' . $Post[8] . '</p>' . "\n";
} else {
$CurrentMood = NULL;
}
//
// Tweak the formatting to favor word processors.
// Verified against LibreOffice Writer
//
// Sometimes there are newlines and no breaks. Early cutting and pasting was unpredictable.
$Body = str_replace("\n", "<br />\n", $Body);
// Change line breaks into paragraph breaks. Word processors need this to format paragraphs correctly.
    $Body = str_replace('<br />', '</p>', $Body); 
$Body = str_replace('<br>', '</p>', $Body);  
 
// Non-breaking space don't play nice with word processors
$Body = str_replace('&nbsp;', ' ', $Body);
// These tags won't display because they aren't HTML tags
// <user site="livejournal.com" user="somebody"> 
//
$Body = preg_replace('/<user site=".*?" user="(.*?)">/','<u>${1}</u>', $Body);
//
// Removing Centering and Fonts Size values, both of which could get stuck on
// It would be better to close these things, but that would take work.
// 
//
// Unmatched center tags cause run-on issues.
//
If (preg_match('/<center>/', $Body)) {
If (! preg_match ('/<\/center>/', $Body) ) {
$Body = preg_replace('/<center>/', '', $Body);
}
}
 
//
// Fixed fonts size cause problems in word processors
//
If (preg_match('/<font size=/', $Body)) {
$fontsize = '/<font size.*?>/';
$Body = preg_replace($fontsize,'', $Body);
}
//
// Return the Entry
//
return $Subject . $EventTime . $ItemID . $CurrentMood . $CurrentMusic . $WebLink . $Body;
 
}
 
 
?>
 
Page generated Mar. 6th, 2026 06:03 pm
Powered by Dreamwidth Studios