Jozzo

joined 1 year ago
 

Designers can create stunning designs, interactive prototypes, and design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast.

Designed for developers

Penpot was built to serve both designers and developers and create a fluid design-code process. You have the choice to enjoy real-time collaboration or play "solo".

Inspect mode

Work with ready-to-use code and make your workflow easy and fast. The inspect tab gives instant access to SVG, CSS and HTML code.

Self host your own instance

Provide your team or organization with a completely owned collaborative design tool. Use Penpot's cloud service or deploy your own Penpot server.

Integrations

Penpot offers integration into the development toolchain, thanks to its support for webhooks and an API accessible through access tokens.

Self hosting instructions (via docker) can be found here: https://help.penpot.app/technical-guide/getting-started/#install-with-docker

[–] [email protected] 18 points 3 weeks ago

Or maybe they have the ability to make you weaker

 

The goal of Fireshare is to provide a very simple and easy way for you to share any videos you have through a unique link.

Demo website: https://v.fireshare.net

 

[–] [email protected] 1 points 1 month ago (1 children)

Yep it's not near finished. This is one of those projects that's sat in my "keep an eye on it" bookmarks for a good while, I figured I'd post it to get some attention on it, because it does look very promising.

 

Spacebar is a free, opensource selfhostable discord-compatible chat, voice and video platform.

  • Discord-compatible (Use all your custom clients/bots with minimal changes)
  • Selfhostable (Server)
  • Open Source (GitHub Organization)
  • Configurable (Configure every aspect and limits to your needs)
  • Decentralized (no abuse of power and doesn't have a single point of failure)
  • Extendable (secure and cross-platform plugin system)
  • Themeable (cross-platform theme system with design editor)
  • Secure (publicly audited and hosted FOSS software for transparent foundation in terms of security)
[–] [email protected] 6 points 3 months ago

Note that the attacker needs to already have access to your Microsoft 365 account to do any of this. Fuck copilot and all, but this isn't something they couldn't achieve before.

[–] [email protected] 7 points 3 months ago

Love how the free spot is "no conclave update" lol

[–] [email protected] 38 points 3 months ago (8 children)

Got hit with this in the middle of work. We only have one customer using CrowdStrike, and only staff PCs, no infrastructure. But this one is REAL bad, caused by turning your PC on, and cannot be patched - each affected PC needs to be manually fixed. Would not be surprised to see Linux usage go up after this.

[–] [email protected] 17 points 3 months ago (9 children)

One attendee and the shooter are dead

 

On June 29, 2024, at 6:30 P.M. Pacific Time, Roll20 learned that an administrative account was compromised. By 7:30 P.M. Pacific Time, we acted to ensure that all unauthorized access was blocked, and we began the process of investigating the incident to determine the scope.

Following our investigation, we learned that the unauthorized third-party had access to administrative tools, which may have resulted in the exposure of personal information, such as your: first and last name, email address, last known IP address, and the last 4 digits of your credit card (solely if you had a stored payment with us).

Notably, the compromised administrative tooling did not expose your password or your full payment information, such as your address or credit card number.

While we have no reason to believe that your personal information has been misused, we are notifying you out of an abundance of caution.

We take your privacy and security very seriously, and we deeply regret that this incident occurred. We will be implementing an action plan to further enhance the security of our administrative tools going forward.

If you have questions, or if you would like to view a copy of your account data that the third party may have had access to, please reach out to us at https://help.roll20.net and create a support ticket with the subject line “Incident Data Request” and we will be happy to assist you.

Here are some resources containing good best practices for protecting your information online which we recommend: https://consumer.ftc.gov/online-security

[–] [email protected] 6 points 4 months ago

It depends entirely on the company you work for. Even then, I wouldn't exactly describe the work as "chill"

[–] [email protected] 2 points 4 months ago

I patched together some version of this using nested dictionaries:

var abilities: Dictionary = {
	AbilityData.Trigger.BEFORE_ATTACK : {},
	AbilityData.Trigger.ON_ATTACK : {},
	AbilityData.Trigger.ON_HIT : {},
	AbilityData.Trigger.ON_KILL : {},
	AbilityData.Trigger.ON_DEATH : {},
	AbilityData.Trigger.ON_JUMP : {},
	AbilityData.Trigger.PASSIVE : {}
}

with each value being another key:value pair of { "ability_id": <ability-node> } so I can keep a reference to the Ability node and use dictionary functions like .has() to check if a character has a specific ability:

func has_ability(ability_data: AbilityData) -> bool:
	if abilities[ability_data.trigger_type].has(ability_data.id):
		return true
	return false

Then when a trigger fires, it calls this (I omitted the return code):

// Activates all abilities with the specified trigger type. Returns an array containing each ability that was activated this way.
//trigger_type is an enum
//data is just a resource containing things like position, target, ability owner, etc
func trigger(trigger_type: AbilityData.Trigger, data: AbilityActivationData) -> Array[Ability]:
	var abilities_to_activate: Dictionary = abilities.get(trigger_type)
	
	// Loops through the list of Ability nodes.
	for ability in abilities_to_activate.values():
		ability.activate(data)
		abilities_activated.append(ability)

This seems to work, but it still gives me that tickling sensation that it could be a little cleaner.

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

I think I understand...

Instead of the player iterating through and calling all of its abilities, the ability just connects directly to whichever signal it needs on the player?

My current setup is to add each Ability as a node to the player, so right now it follows the "call down, signal up" adage that I hear everyone say. What would be a good way to implment the other way? I assume I should rework my current setup otherwise it'd be "signal down, signal up"?

 

For character abilities that have a certain trigger condition, eg. "OnAttack", "OnJump", "OnDamaged" etc..

Currently each of these triggers is a signal. When a signal fires, the character loops through all of its abilities and activates each one with that specific condition, so it just runs an if statement for every ability, regardless of whether it has that condition or not:

if ability.trigger_condition == Triggers.OnAttack:
  ability.activate()

My issue is that this could get a little unscalable with many characters on-screen each having many abilities of their own. A character could have 1 OnDamaged ability and 19 OnAttack abilities, but when an "OnDamaged" signal is received, it will still loop through all 19 OnAttack abilities.

Any advice on this is appreciated, thank you all.

[–] [email protected] 2 points 5 months ago (1 children)

Win11 doesn't let you past setup if you dont have an internet connection.

[–] [email protected] 2 points 6 months ago

Epic, I generated a film summary for fun:

Spoiler Warning (Assassin Ninja Cows 2)"Assassin Ninja Cows 2" is an action-comedy film starring Seth Green as the lead character, alongside a herd of cow-ninjas. The story revolves around a group of dairy cows who have been trained in the art of ninjitsu by their master, Sensei Moo. In this sequel, the cows face their most dangerous mission yet, as they must protect their farm from a ruthless group of assassins known as the Black Udder.

The plot follows the cow-ninjas as they work together to outsmart the Black Udder, utilizing their stealth, agility, and teamwork to create a series of elaborate and hilarious schemes. The cow-ninjas must use their unique skills to defend their home and fellow farm animals.

As the story unfolds, Seth Green's character, a witty and resourceful city cow, takes on a leadership role, employing his intelligence and quick thinking to guide the cow-ninjas through various obstacles and challenges. Along the way, the audience is treated to a blend of action-packed fight scenes, slapstick humor, and heartwarming moments of camaraderie among the farm animals.

In the end, the cow-ninjas successfully defeat the Black Udder and save their farm from destruction, proving that teamwork and determination can overcome even the most formidable foes. "Assassin Ninja Cows 2" is a lighthearted, family-friendly film that combines humor and action to create an entertaining and engaging experience for all ages.

 

Wanted some opinions on ways to set up triggering "on-kill" effects. In short: The player can have abilities that trigger effects whenever they shoot and kill an enemy. I'm also looking to extend abilities to enemies as well, so can't just hardcode a player reference.

Currently I'm doing it like this:

  • Enemy signals that it died -> the bullet receives this and signals that it killed Enemy -> the player's weapon receives this and signals that it's bullet killed Enemy -> the player receives this and triggers it's on-kill abilities.

It simultaneously feels like a good way to go about it but also a long mess. The other option I've considered is:

  • Each bullet has a reference to it's owner (eg. player). When an enemy dies to a bullet, it looks to the bullet's owner reference and tells it to trigger it's on-kill effects.

This way is a lot simpler to write, but is error prone eg. In cases where the bullet's owner is killed while their attack is mid-air.

Thank you all!

 

Figured I'd share this project as I don't see many that know about it! (Only available for Windows)

view more: next ›