Shadow

joined 2 years ago
MODERATOR OF
[–] [email protected] 1 points 9 hours ago* (last edited 9 hours ago) (1 children)

Yeah it's definitely a splurge, but if you sit at your desk for a long time it's worth it. Check used markets, the chairs are built well and last a long time. I got mine used.

[–] [email protected] 5 points 9 hours ago (3 children)

I've had the Herman Miller Embody for 4 years now and I love it. I tried their Mirra 2 and also had a Steelcase at work, but I find the Embody much more comfortable.

[–] [email protected] 2 points 1 day ago

Probably. I'm just lazy and microwave it.

[–] [email protected] 13 points 1 day ago* (last edited 1 day ago) (2 children)

Chicken fried rice. It's a few more than 5 ingredients, but it's all easy prep.

https://therecipewell.com/instant-pot-chicken-fried-rice/

The texture isn't quite right since its not actually fried, but the flavor is solid. I make double and freeze in portioned baggies.

[–] [email protected] 1 points 2 days ago

This feels more like competence porn to me. The situations are serious but everyone knows their place and just fucking handles their business.

[–] [email protected] 5 points 2 days ago

People's expectation of twitter level service doesn't match up with the reality of federation. Devs tried to make it work anyways, with predictable results.

[–] [email protected] 8 points 3 days ago (4 children)

I want to enjoy it, but I've tried multiple times and I just can't make it through.

[–] [email protected] 27 points 4 days ago (3 children)

Oracle. We weren't even a customer. We just had an ip space with a bunch of customers on it. Yhey tried to claim we needed to pay for all their virtualbox downloads since we weren't a home isp.

[–] [email protected] 19 points 4 days ago (1 children)

Yeah, feels like a child's drawing or something.

[–] [email protected] 11 points 5 days ago* (last edited 5 days ago)

Interesting, I've got some reading to do. Thanks for the links.

[–] [email protected] 16 points 5 days ago* (last edited 5 days ago) (2 children)

FYI I saw the same deadlocks on lemmy.ca when I tried to do a similar hot upgrade, which seems odd since that alter is innocuous enough.

80
submitted 5 days ago* (last edited 5 days ago) by [email protected] to c/[email protected]
 

For anyone that noticed the 30 seconds of downtime a few minutes ago, that was to upgrade us to lemmy 0.19.10.

Changes are listed here - https://join-lemmy.org/news/2025-03-19_-_Lemmy_Release_v0.19.10_and_Developer_AMA

This is not the version with breaking API changes, there should be no impact to any clients.

Enjoy!

36
RIP mcbarge (www.ctvnews.ca)
 

F

56
Magic smoke (en.wikipedia.org)
 

cross-posted from: https://lemmy.ca/post/40761824

Sorry everyone I know how much you love the attention she gives you, but I've implemented some quick and dirty filtering for private messaging.

We now have the ability to automatically mark PM's as deleted or read, depending on content inside of them. If we accidentally filter something you legitimately wanted (ie, not Nicole) please let me know.

If any other instances would like to implement this, here's the code. Note that you'll need to set your hostname at the top here for some reason I haven't exactly identified.

SET lemmy.protocol_and_hostname = 'https://lemmy.ca/';

CREATE TABLE private_message_filters (
    id SERIAL PRIMARY KEY,
    phrase TEXT NOT NULL,
    behavior VARCHAR(10) NOT NULL CHECK (behavior IN ('delete', 'mark_read'))
);

CREATE OR REPLACE FUNCTION filter_private_messages()
RETURNS trigger AS $$
DECLARE
    banned_phrase_record private_message_filters%ROWTYPE;
BEGIN
    FOR banned_phrase_record IN 
        SELECT * FROM private_message_filters
    LOOP
        IF LOWER(TRIM(NEW.content)) ILIKE '%' || LOWER(TRIM(banned_phrase_record.phrase)) || '%' THEN
            IF banned_phrase_record.behavior = 'delete' THEN
                NEW.deleted := true;
                RETURN NEW;
            ELSIF banned_phrase_record.behavior = 'mark_read' THEN
                NEW.read := true;
                RETURN NEW;
            END IF;
        END IF;
    END LOOP;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trg_filter_private_messages
AFTER INSERT ON private_message
FOR EACH ROW
EXECUTE FUNCTION filter_private_messages();

To add filter words:

insert into private_message_filters (behavior, phrase) values ('delete', 'spamtestdelete');
insert into private_message_filters (behavior, phrase) values ('mark_read', 'spamtestread');

If you want to quickly disable / enable filtering while testing:

ALTER TABLE private_message DISABLE TRIGGER trg_filter_private_messages;
ALTER TABLE private_message ENABLE TRIGGER trg_filter_private_messages;

I'll leave it up to you to figure out what phrases to filter on. MAKE SURE YOU TEST. If there's an error, private messaging could break completely. You should not get an error message from the UI while sending a message with a banned word.

Edit: I like flamingos-cant's solution here better: https://lemmy.ca/post/40761824/15209462

 

Sorry everyone I know how much you love the attention she gives you, but I've implemented some quick and dirty filtering for private messaging.

We now have the ability to automatically mark PM's as deleted or read, depending on content inside of them. If we accidentally filter something you legitimately wanted (ie, not Nicole) please let me know.

If any other instances would like to implement this, here's the code. Note that you'll need to set your hostname at the top here for some reason I haven't exactly identified.

SET lemmy.protocol_and_hostname = 'https://lemmy.ca/';

CREATE TABLE private_message_filters (
    id SERIAL PRIMARY KEY,
    phrase TEXT NOT NULL,
    behavior VARCHAR(10) NOT NULL CHECK (behavior IN ('delete', 'mark_read'))
);

CREATE OR REPLACE FUNCTION filter_private_messages()
RETURNS trigger AS $$
DECLARE
    banned_phrase_record private_message_filters%ROWTYPE;
BEGIN
    FOR banned_phrase_record IN 
        SELECT * FROM private_message_filters
    LOOP
        IF LOWER(TRIM(NEW.content)) ILIKE '%' || LOWER(TRIM(banned_phrase_record.phrase)) || '%' THEN
            IF banned_phrase_record.behavior = 'delete' THEN
                NEW.deleted := true;
                RETURN NEW;
            ELSIF banned_phrase_record.behavior = 'mark_read' THEN
                NEW.read := true;
                RETURN NEW;
            END IF;
        END IF;
    END LOOP;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER trg_filter_private_messages
AFTER INSERT ON private_message
FOR EACH ROW
EXECUTE FUNCTION filter_private_messages();

To add filter words:

insert into private_message_filters (behavior, phrase) values ('delete', 'spamtestdelete');
insert into private_message_filters (behavior, phrase) values ('mark_read', 'spamtestread');

If you want to quickly disable / enable filtering while testing:

ALTER TABLE private_message DISABLE TRIGGER trg_filter_private_messages;
ALTER TABLE private_message ENABLE TRIGGER trg_filter_private_messages;

I'll leave it up to you to figure out what phrases to filter on. MAKE SURE YOU TEST. If there's an error, private messaging could break completely. You should not get an error message from the UI while sending a message with a banned word.

 

Sorry for the downtime! Unfortunately our secondary firewall took over for some reason, and haproxy failed to properly come up.

I'll be scheduling a maintenance window in the next few days to do some further digging, so I can make sure this is fully resolved.

 

With some hacking at the database and APIs, I've put together a python script that allows backfilling of posts. I've now pulled in the most recent 50 posts of anyone that one of our users is following.

You may now bask in cats. https://pixelfed.ca/i/web/profile/797991200484212751

Hopefully that'll help it feel a little less empty!

view more: next ›