#edit: forgot to add sources. should be fixed now
Explore tagged Tumblr posts
aaron-lycant · 4 months ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
x x x | x x x | x x x
A stimboard the host made for me :] I am a dog therian (Bernese Mountain Dog, German Shepard, and Wolf or Wolfdog, as seen in the centre) and I also am a service dog.
11 notes · View notes
jackwattersdt3gameuiux · 9 months ago
Text
The Process of Making a functional Button
Tumblr media
I'm going to be demonstrating how to make a functional button with this button level three. Before anything, it will be benificial to create three child game objects to the button. To create the particle system game object as a child, right click on the button level three in the hierarchy, go effects > particle system. The other two (graphic and background (which I misspelled) are both empty game objects for the moment.
Tumblr media Tumblr media
Make the graphics, here I have made some place holder art.
Tumblr media
Now go to the graphic object, add an image component and a raycaster component. Add the idle image as the source image. Make sure you delete the image component from the parent game object.
Tumblr media
Now go to the parent object, go to the button component, and make the transition from colour tint to animation. Then click Auto Generate Animation and save it to the appropriate folder. This will create the animation controller.
Tumblr media
Select the graphic object, then go to the animator and change normal -> pressed (this means we're adding an animation when the button is pressed). Since we're adding the animation to the grahpic object, when you click add property make sure to get the size delta transform from the GRAPHIC object, not the parent object.
Tumblr media
Now, before you shorten the animation to 0:15 seconds, make sure to place the size change first. Generally, I like to place the size change at 0:15 seconds, then shorten the whole animation down to 0:15 seconds. I feel like the instant and quick response of the size changing peaking early then slowly moving back is quite satisfying. It's responsive, but not instant which is what you want (allows people to see the change in size while also not feeling delayed on click). I think just doubling the size is good enough (changing both x and y to 200), any bigger and you won't be able to see the image on screen.
Tumblr media
Next we're adding the sprite change. Add property > Graphic > Image > Sprite.
Tumblr media
Just open up the sprite property. Drag the desired image into the sequence.
Ok, the animation is finished, but you might notice that it won't actually respond to being clicked yet. That's because the background layer is interfering.
Tumblr media
Go to the background object and add an image and canvas component.
Tumblr media
Tick override sorting and make order in layer 1. I made the mistake of making it 0 here, make it 1 otherwise it might not show up.
Tumblr media
Next go to the grahpic object and it's canvas component and do the same thing except instead of 1 make it 3.
Tumblr media
Also make sure to turn off looping in the animation controller.
Tumblr media
Go back into the graphic and make sure the blocking mask is set to nothing.
Tumblr media
and I almost forgot, make sure you edit the pressed animation by clicking on the controller, opening the animator menu, and then clicking on the link for pressed. Make sure any state -> pressed has solo ticked, then untick fixed duration, and make transition duration 0.
The animation should be working smoothly now, but we don't have any particles. Time to add some.
Tumblr media
Here's my stand in merman blood particle.
Tumblr media
in your material folder make a material and name it appropriately.
Tumblr media
in the material change the rendering mode to cutout, then drag the particle image over to the albedo square and drop it.
Tumblr media
after that, change the shader to UI > Default.
Tumblr media
Now apply the material to the renderer in the particle system object render component.
Tumblr media
Next go back to the pressed animation and add property. Go Particle system > Emission Module.rate Over Time.scalar.
Tumblr media
I like to set it to about 10, though remember this should scale upwards each level to add more impact (make sure the animation starts and ends with the emission at 0, otherwise it will infinitely loop). Also back to the renderer component in the particle system object, make sure it's no.2 in layer.
next it's time for some sound effects.
Tumblr media
what I like to do is find free sound effects online and combine them together in the audio editing software audacity to create the most thematic and satisfying hit sound. Since this is a boat attack I've combined a water splash sound with a stabbing sound and a gore splat sound.
Tumblr media
next just go to the parent object and drop the appropriately named sound (saved as a .wav file for least compression) into the audio source audio clip component. Make sure your audio is quite short and immediate because the player will be constantly clicking on the button so they'll want actually hear the clip when they click (since the clip resets on every click, if it's too long there won't be enough time before the player clicks again for the sound to actually play in a satisfying way).
Here's how to set up multiple particles:
Tumblr media
Make a image of all your particles next to another horizontally.
Tumblr media
Drop it into the materials folder, then click on it. Set the sprite mode to multiple, then go to the sprite editor.
Tumblr media
In the sprite editor, go slice, gird by cell count, and C = however many particles you have, here I've got 4 so I put in 4.
Tumblr media
adjust the cell sizes using this window here. Then apply once satisfied.
Tumblr media
In the particle system object, turn on texture sheet animation.
Tumblr media
Make mode = sprites, time mode = life time, and frame over time = random between two constants.
0 notes
chibi-beaver · 4 years ago
Text
I'm in a bad batch kinda mood today and decided to write some Hunter & Omega fluff/angst!
Rating: General
Warnings: none (this is pretty wholesome)
Summary: After Hunter loses his cool with Omega, he remembers what Cut and Suu told him and tries to make things right
Tags: hurt/comfort, fluff, angst, domestic fluff, parenting, father daughter relationship
There will be Bad Batch spoilers in this so don't read if you haven't watched the latest episode (episode 4)
Honestly, I'm pretty proud of this rn 😁
Story is also attached under the cut if you wanna read it here, if you like it I'd appreciate the notes here and/or kudos on ao3 😁
Edit: I forgot to add some fic tags 😳
Omega had gotten herself into yet another jam. All they had to do was get supplies on Tatooine. It certainly wasn't the nicest planet but it was in the outer rim and for the most part, off the radar of the Empire.
All Omega had to do was stay close to Hunter as they went into Mos Espa. It was supposed to be an in and out supply run but when was any supply run in and out? He should've known that something had to happen but why did it have to happen to Omega?
She had gotten herself into the hands of yet another bounty hunter. Hadn't she learned her lesson after the encounter on Pantora? Hunter thought to himself as he ran through the sandy "streets" of Mos Espa in search of Omega.
"Wrecker, Tech, Echo! I need help finding Omega!" Hunter yelled into his comm.
"I'm on it!" Wrecker replied.
"I'm finishing the ship's repairs but I've sent Echo," Tech said.
"I thought Echo was repairing the ship with you," Hunter said.
"He was, but we're almost done," Tech replied.
Hunter was relieved that he got two of his men helping him find Omega.
Hunter tripped over his feet. The grains of sand were making his feet slide everywhere. Just when things couldn't get any worse, Hunter noticed a Tusken Raider running off with something. Upon closer look, it was his blaster.
Hunter was conflicted on what to do but he eventually ran after the Tusken Raider and tackled it to the ground before ripping the gun out of his tiny hands. Some more Tusken Raiders surrounded Hunter, weapons pointed at him. Probably stolen weapons, he thought. He looked around, looking for an out. He knew if he shot one, he'd subsequently get shot by another, which could incapacitate him, but he couldn't waste any time. If their encounter with the bounty hunter on Pantora taught him anything, he knew that they were cunning and fearless. They would do anything to keep their hands on Omega and would harm anyone who got in their way. Almost like what he would do for Omega. He just wished that she would stop getting into trouble.
Suddenly, they all ran off at the sound of something. Hunter was unsure of the source of the sound until his comm went off.
"You can thank me later, Tuskens hate Krayt Dragons," Tech said.
"How did you know I was-"
"I got my repairs done and I started watching the camera feeds around Mos Espa and noticed some Tuskens bothering you in the background of one," Tech replied.
"Now I'm glad you record the sound of every animal you've heard of," Hunter said, relief permeating his voice.
"I can see the bounty hunter!" Wrecker said into the comm.
"Transmit me your coordinates!" Hunter said.
"How do I do that!?" Wrecker asked.
"I got this, you focus on finding Omega," Tech said as he transmitted Wrecker's coordinates to Hunter and Echo.
Hunter immediately ran to them, meeting up with Echo on the way. Just as they got there, Wrecker got knocked out by Bounty Hunter who seemed to use the weapon he knocked Wrecker out with as a hat.
"I got Wrecker, go find Omega!" Echo said as he tried to help Wrecker.
Hunter obliged to what Echo said as he continued running after the bounty hunter. He was led to a dead-end street where he saw an anooba cornering Omega. Hunter took out his blaster and shot the anooba in the leg, causing him to yelp. Omega was distressed by the sound, as was the bounty hunter who retaliated by throwing his hat like a frisbee at Hunter. Hunter ducked just in time and avoided being hit by the hat. The bounty hunter then took out a weapon of his own and began shooting at Hunter with it. Hunter continued running towards the bounty hunter, to tackle him. It was successful until the anooba came back to tackle Hunter, causing him to drop his blaster.
Omega slowly made her way towards the blaster, but the anooba must have smelt her because he got off of Hunter and jumped on Omega. Hunter took the opportunity to pick up his blaster and pointed it at the bounty hunter's head, just as Echo and Wrecker arrived at the scene. Cornering the bounty hunter. He called his anooba off of Omega as he searched for a way out.
"What do you want with Omega?" Hunter asked, keeping the blaster pointed at the bounty hunter's head. He started speaking in an unknown language.
"Where's Tech when you need him?" Echo muttered as he turned on his comm but didn't say anything.
Hunter repeated the question as Omega approached Wrecker and stood behind his leg, she was trembling.
"He's trying to say that he was put off to it by an unknown client, it's just a job to him, a good-paying job at that," Tech whispered as he listened in.
The bounty hunter didn't answer the question as the anooba brought back his hat. The bounty hunter took the hat and hit Hunter with it before running to make his escape, pushing Echo and Wrecker out of the way.
"What were you thinking?!" Hunter said frustratedly to Omega.
"I-I'm sorry," Omega said.
"I thought you would've learned not to talk to strangers or touch strange animals after Pantora!" Hunter continued.
Omega said nothing in return as she stayed at Wrecker's side.
"You could've gotten yourself killed again! These situations are why I wanted to send you with Cut and Suu! So that you could be safe!" Hunter said. He saw the sad expression on Omega's face immediately after he said that. She looked like she was going to cry.
"Lay off her!" Wrecker said as he took Omega's hand and started back to the ship with Echo.
Hunter quickly began to regret what he had said. The regret kept itself on his mind as he walked back to the ship.
When he got back to the ship, Omega was in her room with the curtain closed.
"Let's get off this desert world," Tech said as he plotted a course for Idaflor. Maybe this time they would actually make it there without needing to repair the ship or to get supplies.
Hunter began to grow concerned as hours passed and Omega had still not left her room. Usually, she wouldn't stay in her room long. Her curious mind always kept her on the go, even though she had seen the inside of the ship countless times. Even if she wasn't feeling curious, she would usually leave to use the fresher. Tech looked back from the pilot's seat at Hunter
"What's wrong?" Tech asked.
"Nothing that you can fix," Hunter said, glancing at Omega's room.
"Well, that's a lie because I know a way to fix most things," Tech said.
"Yea, you can fix ships but you know about as much as I do about parenting," Hunter replied.
"Ah, it's about Omega. Hmmm, well maybe you should talk to her, perhaps discussing whatever happened might help things," Tech said.
Hunter didn't reply. Rather he sat back into his chair while Tech turned back to whatever device he was building. He remembered Tech telling him what it was but he had forgotten. As Hunter thought about what he could do, his mind went back to Cut and Suu.
"Easy, she's not a soldier."
Cut said that to him the first time he lashed out at Omega.
"You're safe, that's all that matters."
Hunter reminded himself that Omega was on the ship with them and not in the hands of that bounty hunter but at the same time, she shouldn't have touched that anooba. They didn't know the animal, it could've been diseased, or as it was in this case, connected to someone dangerous.
"Children will always find ways of getting into trouble, Hunter. It's what they do. Protecting them is what we do".
Hunter thought more about what he had said on Tatooine. Even if some of it was warranted, he shouldn't have brought up Cut and Suu. It was a bit of a sore spot for Omega, knowing that Hunter was going to pawn her off on Cut and Suu, even if he thought it was for her own good.
Hunter decided to approach Omega's room. He climbed up a couple steps of the ladder.
"Omega?" Hunter said.
"Go away!" Omega said.
"I just want to talk," Hunter said. "No yelling this time. I'm not mad." Hunter continued in a gentler tone.
"Fine," Omega said.
Hunter pulled the curtain to side slightly. She was sitting in her room with Lula held in one of her arms as she looked out the window at the whizzing of hyperspace.
Hunter sat in the small face, doing his best to fit. Wrecker clearly designed this space for someone of Omega's size. He eventually sat horizontally in the room, with one leg hanging outside of the space for his own comfort.
"You're gonna get rid of me again, aren't you?" Omega said.
"What? No. You said you wanted to be with us, I promised you that if you wanted to be with us then you will be with us."
"But I screwed up again," Omega said.
"You said it yourself once, you have a lot to learn. But so do I and I realize I was a bit too harsh today. I'm sorry."
"I can't help that I'm curious sometimes," Omega said, thinking back on how it was her who wanted to pet the anooba.
"I know, but sometimes it's better to watch from afar," Hunter said.
Omega didn't say anything in response. Rather she clutched the Lula.
"I'm not going to get rid of you. We want you here just as much as you want to be here. I'm sorry for bringing up Cut and Suu and I'm just glad you're okay," Hunter said.
To Hunter's surprise, Omega moved closer to him and put her arms around his shoulders, hugging him. Hunter was initially taken aback but he soon returned the hug. When they eventually pulled away from one another, Omega smiled.
"Now let's agree to put what happened today behind us," Hunter said.
"Ok," Omega replied.
Hunter made his way back down the ladder and extended a hand out to Omega,
"wanna come down and hang out with us or explore the ship or do whatever you want?" Hunter asked.
"Sure!" Omega said as she came out of her room and started asked Tech various questions about the ship and the controls. Hunter watched and smiled at seeing Omega feeling a bit better.
17 notes · View notes
cadomoisspokenfor · 4 years ago
Text
Legion Rewatch Notes,
Chapter 4:
Frizzytop
I theorized in episode 2 that David could see through the 4th wall, or at least into a different universe. At the start of this episode Oliver outright breaks the 4th wall. Perhaps powerful reality benders just have that capability. If David knows, and Oliver knows, then Farouk definitely knows.
“A great philosopher once wrote, ‘In times of peace, the war like man attacks himself.’ This is the route of all our problems.”
“We are the route of all our problems. Our confusion, our anger, our fear of things we don’t understand.”
If we carry those 2 quotes throughout the rest of the show, then no doubt the tragedies that happen later on are caused by a collective misunderstanding of each other. And a collective lashing out at that misunderstanding of each other.
“Violence, in other words, is ignorance.”
The most central theme of the show is empathy vs fear. I s’pose whenever there’s a conflict in the show we’re supposed to be asking whether the characters should answer with empathy or fear. Certain characters lives have revolved heavily around fear. And that informs their decision making quite a bit. This will all come up again at multiple points throughout the show.
Syd... probably can’t break the 4th wall. So maybe it’s most logical to interpret this as her inner monologue. Very Jessica Jones esque.
The same voice lines from when Syd was searching for David in episode 1 are played. I guess there go to whenever Davids lost (whether in the world or in his mind) is to transmit Syds voice calling his name in hopes he’ll hear it and come back.
Kerry can pick locks.
The concept of “bad mutants” is well established amongst the veteran summerland crew. Ptonomy’s caution about David is probably because he feels he has a selfish vibe, and that’s a well known red flag of “bad mutants.”
It should also be noted he’s partly afraid of him because he has so much trouble understanding him. His powers, which when used affectively are essentially the ability to understand where someone’s coming from, keep getting overrided by Davids.
It’s now to the point where Ptonomy is doubting his own ability to tell what’s real and what’s not real. He was pretty confident he’d always know somehow in episode 2. Now, not so much.
Ptonomy very early on is open to the idea that David both has powers and psychological issues. “He’s unstable. You try hearing voices for 10-15 years, self medicate with hard drugs and then get dumped in a looney bin.”
Ptonomy also determines that because of his instability combined with the fact he has powers, David is a bomb waiting to go off.
I suppose if we’re trying to figure out their logic with the whole “the combination of being mentally ill and having powers makes him dangerous”, and considering that their right now going over an incident where David robbed his therapist for drug money and then bashed the doctors head in when he came back, the direct concern is that David makes bad decisions and/or selfish decisions (at least), and if he were to make a bad decision regarding his powers a lot of innocent people could get very badly hurt. Or killed. Along with the worry that the voices in his head don’t exactly give him the most angelic of advice at times, and because of his powers he’s very capable of fulfilling their wills, so to speak.
Based on Olivers speech at the beginning of the episode though, it might be safe to say the overall message is instead of acting on fear they should act on empathy and help David overcome his problems instead of vilifying him for his mental illness.
Syd suggest Davids hiding his real memories behind a fake ones and Ptonomy says she going through a lot of effort just to convince herself Davids a good guy. I never really got what he meant, but I guess what he meant is that Syd’s trying to find a justifiable reason for why David would attack Dr Poole like he did when the obvious answer is just “He’s got violent tendencies.” I always just thought she was genuinely hypothesizing, ya know, trying to solve the case. Maybe she was and Ptonomy’s just mean.
“I was looking for the man I loved. Or did I just love the idea of him? The face he showed me?” Doubt springs up early. Why can none of the characters reconcile that a person can have both good and evil in them at the same time? That’s... all people, in fact.
When Kissinger ask if Amy knew David had powers Amy says, “I think so.” Amy potentially acted on fear as well, in regards to her and Davids childhood that is.
Kerry mostly only thinks of herself in relation to Cary.
Cary misses Kerry when she’s gone. Even besides the roles they fill for each other, they generally enjoy each others company. They’re quite literally as close as 2 people can be. Each one living for the sake of the other.
Davids once again surrounded by a crowd of people all yelling in his face. After they disappear though he recovers pretty fast. I guess he’s used to it.
Clockworks Podcast pointed out that the music Davids wincing at is sax heavy Jazz, which is (abstractly) the sound The Devil With Yellow Eyes makes whenever he appears. If my theory about David seeing through the 4th wall is correct, then maybe he’s actually hearing that sound whenever TDWYE is around. Alternatively, Farouk blast that in his head everytime to mess with him.
“Sorry... I forgot about your um... I had a similar- proclivity? Malady? I forget the word- what’s the word? I’ve been here a long time.”
If the previous paragraphs are right, Oliver’s probably implying he was also affected by a mental parasite at some point. It might’ve even been what stranded him in the astral plane.
From Davids perspective he skipped over the entire second half of Chapter 3.
Oliver is essentially explaining the plot of the show to David and the audience before it’s even been unfurled.
“You have an unquiet mind, so you war with yourself, like a dog trying to chew off its own tail.”
David’s still in a very pessimistic guilt ridden place at this point in the story. That’s probably the internal war Oliver’s talking about.
... why can’t Oliver leave the astral plane again? If he did have his own mental parasite, it seems long gone by now. If he just can’t find his way back, then how does he do it in Chapter 7?
Syd calls non-mutants “normals.”
“We were the ghost in a haunted house.” ~Syd, Chapter 4
“You think ghost like living in a haunted house?” ~Syd, Chapter 12
Why does Syd keep hallucinating The Angriest Boy? Or is that just visual metaphor?
Ptonomy’s a very, “Get the job done and look classy while doing it” sorta guy.
“To fight and conquer in all our battles is not supreme excellence; supreme excellence consists in breaking the enemy's resistance without fighting.” ~Sun Tzu, Ptonomy
Is the above quote perhaps relevant to the shows message during other conflicts throughout the series? Could it be subtly implying all the characters should always look for non-violent ways to defeat their enemies? I.e. not just a classy line from Ptonomy, but a statement of themes within the show.
The food David, Philly, and Dr Poole are having in Philly’s memories is cherry pie.
In Philly’s memory David says, “I don’t keep a lot of stuff.” And Philly comments that there’s no evidence David had a past. At least among the things David owns at that point. I know Farouk edited a lot of Davids memories, but why did David himself get rid of so much physical stuff? Syd said the reason he broke into Dr Pooles that day was to destroy their taped conversations. What’s compelling him to erase himself from existence? Is it as simple as “Farouk”? It seems like on a deeper level David doesn’t want anyone to know too much about him. Everyone’s only allowed to know what he tells them. His way of feeling in control I guess.
Philly did the classic “I can fix him” when she started dating David.
Philly implies David going off his medication and keeping bad company is what caused the downfall of their relationship. And subsequently his life, probably.
Despite everything, Philly still feels sympathetic towards David.
“Whoever altered Davids memory-“ Ptonomy very early on humors the idea that Davids being acted on by a 3rd party.
The longer Kerry is away from Cary, the more antsy she is for a fight. She’s not supposed to have to sit through all this “boring stuff.”
Ptonomy left after he got the info on Pooles location from Philly. He probably wanted to get the rest of the information from the source. Ironically, they probably woulda gotten closer to the real answer if he’d just looked a bit longer.
Sys proudly says “Yes” when “Dr Poole” ask if she’s in love with David.
It never really comes up again, but Kerry and Cary are physically linked. Maybe even psychologically. When one of them gets hurt, or even exerts their body a lot, the other can feel it, even if their own body doesn’t take on the actual damage. This is still true even if they’re miles apart.
Syds definitely portrayed as the hero at the end of this scene.
“All those years of practice-“ A part of David always knew he had powers. I wonder, did he practice a little in secret? Or is he saying he was at Summerland for years? That doesn’t really add up. But then... what does he mean by years?
Lenny encourages David to get angry so that his powers will strengthen enough for them to overpower the astral plane. Sort of... cheating his way out. David will later achieve more feats of strength through honing his emotions. Like many heroes, his level of power is intrinsically linked to his emotional state.
Very directly here, Davids violence is caused by ignorance. He doesn’t know Syd switched bodies with Walter and is trying to escape.
3 notes · View notes
magi-labyrinthofmagicwiki · 5 years ago
Note
Heya, is there any tutorial/standard to make a page to? I'd gladly help out with this, but I have no idea how to make pages
Hi! Thanks so much for asking! This is a long post, so get ready!
To make a page, you can either click the new page button or a red link
Tumblr media Tumblr media
Next, you’ll enter the name of the page. Note: If you clicked a red link, the name will already be entered for you.
Tumblr media
You’ll be taken to a blank page. While it’s best to work in Source Mode, as a beginner it will be easier for you to use the Visual Editor, which is what will pop up. (note that once the code gets too complex on a page, the visual editor won’t work) The first thing we’ll want to add is a template. Click the “insert” button to view the menu, then click “templates.”
Tumblr media
We want to add the WIP Template. This will add a cute little picture and box that lets people know that the page is a work in progress. It also puts the WIP category on it so that it’s easier to find. If you were editing in source mode, all you would have to write is {{WIP}}.
Tumblr media
No need to enter anything here. It’s all set up for you.
Tumblr media
Now that you have the WIP put in there, you can add an infobox. The infobox makes key information easy to find. The catch is, sometimes entries in it involve a bit of coding. Click insert>infobox. This is what will open.
Tumblr media Tumblr media
(Note: I had to take a screenshot of the text above because some of the code wasn’t showing. I completely overlooked that typo and now Grammarly has it underlined in red to shame me for perpetuity.)
Tumblr media
Since I already had the picture uploaded, all I had to do was search for it. But! I should have given it a better name when uploading it so that when I searched for “south sea monsters” it would pop up. A better file name would have been South_Sea_Monsters.png
Tumblr media
I filled out everything I know here, so it’s time to click Apply Changes again.
Tumblr media
Our page is starting to look pretty!
Tumblr media
This is how it looks in the source editor
Tumblr media
It’s good to check in there to learn how the coding works. Some things can only be done with the source editor and with coding, like anime and manga tabs for the infobox pictures. Next, we add the main text.
Tumblr media
Bolding and creating headlines can be done using the formatting bar like you would in a word processor. Adding sources is easy too. With your cursor at the end of the relevant sentence, click Insert>Reference
Tumblr media
You’ll get a little box that looks like this:
Tumblr media
When adding sources, it’s important to be sure to note if you’re referring to AoS or someone will look in the main series and they won’t find what they’re looking for! The chapter (Night) is the most important information to include, but please include the page and volume information if you have it.
Tumblr media Tumblr media
Now the page is set up!
Tumblr media
This is what it looks like in the Source Editor. As you can see, the coding is pretty easy to pick up.
Tumblr media
It can be a good idea to check similar pages to see what headings and formats they have. Now, you have the bare bones of a page! At this point, it’s a good idea to save. You can always go back and edit some more!
Tumblr media
Leaving a summary is nice because it lets others know what you changed.
Tumblr media
That’s a nice page! But, if you’re like me, you forgot something…
Tumblr media
The categories! As I said earlier, the WIP category makes it easy to find pages that need work, but it can also help keep the wiki organized in other ways. You’ll find the Add category button at the bottom of the page. You can check similar pages to see what kinds of categories they have, but in this case, we haven’t made any similar pages. I’m going to put them in the Kingdom of Sindria category because they’re common there. If I’m messing up, I suppose someone can always fix it later ^^; Mistakes aren’t a big deal.
Tumblr media Tumblr media
Go ahead and click that save button! That was a lot of work! Do you have to do all that?
NO!
This is our Sindrian War page.
Tumblr media
It’s nowhere near finished, but the page is at least a little bit set up, so it makes things easier for someone else later. If you want to just make the page and write a few sentences, that’s fine.
For more help, you can go to this page or join the discord. My ask box is also open, so feel free!
6 notes · View notes
prorevenge · 6 years ago
Text
A Dish Best Served Code
I have a friend who likes to role-play online but doesn't know how to code - for the purpose of this story, I'll call her Blue. Around a week ago, she contacted me saying that she wanted to start up a new site and then handed me this list of jobs that needed to be done without ever asking me to help or whether I had the time to do any of it (note that she knows I'm currently a full time student and I'm right in the middle of my coursework period at the moment).
Right now this is all I can think of off the top of my head. We'll need a new header pic for you to add too but I have to find one first:
Add a skin
Fix add acount feature
Add/set up Discord
Add Ratios
Fix member groups and add emoticons
Add Quick Links
Add Custom Field Content to profiles
Figure out how to put those sub forum boxes in there
For those of you who don't know, this was pretty much building the entire site for her except for the main forums where the roleplaying would take place - I had adamantly refused to do those because I knew how long they would take.
So, I thought this was a little presumptuous of her to think that I just had the time to drop everything and do whatever she needed but, hey, we'd known each other for something like three years and I used to role-play with her, so I thought it wouldn't hurt to help her out just a bit. Besides, all the jobs on that list were very easy things that I could do in about ten minutes each at most.
Unfortunately, Blue decided to recruit a group of other people who I'd never met before to help her out. Where she and I were listed as site owners, the rest of them were listed as general admins, with two of them being moderators. No biggie: they can stick to their jobs and I can do mine. Didn't happen. These girls were horrible. I have no idea where she'd found them or what their relationship was but they stormed in like they owned the place, throwing their opinions about and editing bits of the site coding that I'd been working on in ways that, ultimately, totally messed everything up. I asked them to stop, they kept doing it. This went on for a while.
I'll be the first to admit that I have a short temper. But I put up with this for a couple of days and just tried to make general requests that they stop undoing my work. These were jobs that should have taken me just under an hour and a half to finish and yet was taking days because they continued to change things. I was messaging Blue separately and asking her to tell them to stop because she was supposed to be head of the staff team. She didn't do anything and, eventually, things started to get heated between myself and these four girls.
I would have thought Blue would side with me. I was wrong.
Instead, she basically told me to stop picking fights with them and to shut up and do my job. She then made two of the other girls moderators on Discord and gave them the highest permissions, something which they later used to continuously remove me from my staff position and making my job infinitely harder. I was starting to feel constantly targeted and it was seeping into the work I actually had to do for university. I ended up staying up all night three nights in a row, trapped in endless arguments with those other staff members and Blue herself. I was exhausted and stressed out, and my intention was to finish the jobs and then leave them alone. I probably should have left earlier on but given the history I had with Blue, I thought I might as well be nice enough to do this for her because I knew she was excited for her role-play.
The final straw came over the stupidest thing. She forgot to close a <u> tag somewhere. I fixed it, I reminded everyone to make sure to close their tags. Simple stuff, right? I would have thought people who were allegedly helping to build a site would know how to handle such basic things. I was suddenly bombarded by DMs from Blue telling me that she hadn't done anything wrong and if there was an error then to "fucking show me how it's supposed to go". I tried to explain, repeatedly, what the issue was and how to fix it and, in return, she began to argue that she wasn't doing anything wrong, despite there being obvious coding issues. Things got heated. I cracked. I was done.
https://i.imgur.com/Rb4DQ3X.png
https://i.imgur.com/QGtr3zq.png
After I'd tendered my resignation from ever helping her out again, she hadn't yet figured to remove my staff permissions on the site or on the Discord server so, while she was otherwise preoccupied flailing over suddenly being blocked and not knowing how to code anything else, I quietly went into the code I'd set up for her and removed one ; and one } and all the comments in that code which might have helped them figure out how to solve any future problems. (Lucky for me the control panel didn't update to changes in the site's css).
Then I sat back and watched the panic in their staff Discord when parts of their site stopped looking all pretty and started looking like this:
https://i.imgur.com/65wBT3T.png
https://i.imgur.com/VBYcLue.png
They removed me from the Discord a short while after that and ip banned me from the site (because I guess they don't know I can just use a proxy). But I'm enjoying watching them panic as they try to figure out what I did. Jokes on them for having a guest-accessible Discord server right on the main page of their site.
Moral of the story, I guess, is don't mess with the only person on your site who knows how to code anything.
TL;DR: An Illiterate Pineapple asks me to help her code her site; treats me like shit; gets her code fucked with.
(source) story by (/u/aalyoshka)
246 notes · View notes
stresslitzia · 6 years ago
Text
Mini art tutorial!
Hi! I’m currently drawing some characters of mine, so I want to show you guys how my art process runs! This tutorial works in both FireAlpaca and Paint Tool Sai, and I’ll explain how it translates. The post will be long, so click on below!
For those who just want to see the finished product, here you are!
Tumblr media
Alright! So, first, I try to think of some references I already have for the character. For these, I’m translating images done on bases into images of my own. Furthermore, these images go from animal to human!
Tumblr media
So right now, this is her ‘reference.’ Mostly. Base credits to Starwuff on DeviantART, by the way! That links directly to the base
Now, how... how do you translate the above image into a HUMAN?
It’s simple, really. Even if you’re... uh... bad at people.
Step one, think about the character. What are they like? Is there a pose that suits them? Can you not think of one, but you can think of a character who acts or looks like them? Yes?
Great!
Look up references for THAT character. Wiki, HD images, etc. For Lena, I go to @kingdomheartsinhd and look for images of Kairi. That search turns up this image:
Tumblr media
(you can find that here)
Now, this image absolutely SCREAMS Lena at me. Especially the face. I love that expression. So I copy it, and paste it into FireAlpaca, onto a 6x8 inch canvas(6inch wide, 8inch tall), then transform it to the proper scale.
I’d show this part, but I’ve already sketched over it. Obviously, that’s the next step! Figure out where things go, what does what, and sketch away!
Tumblr media
Don’t mind the off look of everything, it gets fixed. I use a pencil brush to sketch in FireAlpaca, but a 70% opacity colored pen brush works just as well for PTS. I recommend coloring smaller details differently, like how the right hand is pink to show that it needs more detail, how the ears and tail are blue to show that they don’t need as much.
After doing that, move on to working on the outfit. Open a new layer(you can see layer3 there, that’s where you’ll be sketching the outfit). Like with the body, everything should be sketched a different color!
Tumblr media
The main body sketch is still there, but greatly reduced. Next, on the same layer or separate, I’d draw the hairstyle. I recommend doing this twice so you have an idea of what fits the character, especially if you’ve never drawn them before. I’ve drawn her before on paper, so I’ve already got a firm idea. This is also, in her case, a perfect time to draw in the facial details.
Tumblr media
Yes I am aware her right eye is missing. This brings us to linework! Drag everything up to 100% opacity and switch to whatever tool you use best! If you use FireAlpaca, I recommend pen, and if you’re on PTS, just use a linework layer. Make a layer for your lines above everything, set your brush to 100% black and about 18 pixels,0% min width, and get to work!
Tumblr media
Lines always look weird on my drawings. It’s the outfits, I swear. Anyway, on FireAlpaca, you can use the wand tool to select things. Tolerance should be between 10 and 25(mine’s at 21). I can’t recall if you can do the same on PTS or not, but oh well. While we’re here, go look for the flesh cloud! You’ll need the flesh cloud! You’re on Tumblr anyway. Go find it. Just select everything you don’t want colored, flip it, and fill the whole thing on a new layer, then lock it.
You’ll want to start with the most detailed part of the design. Here’s what it looks like right now.
Tumblr media
((Side note: If you’re like me and leave shirt designs for last, but love graphic tees and self-reflection, use the brush select tool to safely pattern your shirts, or whatever else you like! Scatter brushes are also great!))
Tumblr media
Gradients also work well with the select tool...
Tumblr media
And it’s not just clothing I use the gradient tool for, either...
Tumblr media
This was done with two layers, one set to overlay and merged down. It was also edited to make it a bit more opaque.
Tumblr media
This is the final color pattern. Now, these pieces.... they have shading. Minimal shading is necessary, but more shading = more depth to the image, making the pose look better. Take a very light grey and shade it! I usually shade with the light source from the right.
I forgot to screenshot the process, oops! But you’ll take a light grey, a dark grey, and another light grey. Use the first two to shade, the third to light. Copy the color layer, set it to clipping and overlay, then put them above a multiply(shading) and add(lighting, I think Luminescence works for Sai) layer. Then merge them together and set them to clip again.
Tumblr media
Now sign the piece, maybe name the character, and save the image. I recommend both a layered file and a PNG, for obvious reasons!
And...
Tumblr media
Voila!
In review, sketch with a pencil, have an idea, make it look halfway decent through time and effort. This took me about six hours.
1 note · View note
beandump · 3 years ago
Note
Hi I'm so so glad you write ids for your art!! Would you consider putting them in the original post (and above the captions) to make them more accessible though? Putting ids in reblogs gives people the chance to ignore them when reblogging, and that makes the post as a whole less accessible. Also, this is just friendly advice, but adding humorous lines (like the "I'd steal it too" sentence of the comic with starfire's picolas cage shirt) isn't the best for ids, since they're supposed to be objective descriptions that provide equal access to people. That kind of comment is funny and totally fine to add on your own post, just hopefully not in your ids in the future! Thansk for listening, have a great day!
Hello!! Thanks so much for your message! I’ve been trying to keep up with doing IDs for my own stuff (since I can objectively describe my stuff more accurately than someone else lol) but I do admittedly get behind (the URGE to post art 3x a day so strong). The reason I have been doing so in reblogs on my main instead of on the original post is because I draw and use tumblr exclusively on mobile (phone app, draw on iPad, editing drafts from the app on the website a bitch bc sometimes entire paragraphs just DISAPPEAR even tho I CLICKED SAVE) and a read more isn’t an available option in the app. :/ amd my desc end up loooong bc I am anything but short winded and tend to post multiple drawings on one post or entire comics. so I typically do the IDs in big reblog groups when I can (unless the desc will be super short and doesn’t need a read more - come to think of it I have a few I should have added that to but I forgot, seeing privilege smh). I think I can do alt text on mobile, but I know that’s not a good option for screen readers. I figured reblogs would be okay since there are plenty of blogs already dedicated to reblogging and IDing undescribed posts, but I understand that that may make it harder for those using screen readers to find the ID version. HMMMMMM I WILL HAVE TO FIGURE IT OUT. Would editing the original post be better? So one can just click the source if they find a reblog without it? I always figured it was harder that way but now that I think about it that may be better, but there would still be versions out there without the ID. Aaaaaaa! Y’all please let me know here or @beansprean if you can do read more on mobile and I’m missing it somehow djdjdjdj that would fix all my problems
Do I just need to start making shorter descriptions?? Impossible, look how long I’ve been talking already.
(I have gotten the opposite reaction regarding adding lil ID-exclusive jokes before! would love to hear from more ppl who use a screen reader if that is more fun or just distracting, I’m sure there are differing opinions lol)
1 note · View note
hydrus · 8 years ago
Text
Version 278
youtube
windows
zip
exe
os x
app
tar.gz
linux
tar.gz
source
tar.gz
I had a good week. I fixed some bugs and added a whole bunch of new little ui options.
fixes
Tumblr changed their 'raw' url CDN this week, which broke the hydrus downloader. I have fixed it, and all existing urls in the database and your file import caches will be converted on update to the new format! Let me know if you run into any more trouble.
APNG imports are also fixed. The recent decompression bomb stuff was accidentally breaking them.
misc ui stuff
Many little ui things got small improvements this week. Highlights are:
The 'file import status' button now has a right-click menu that lets you retry failures and clear out large queues.
'open selection in a new page' now preserves file order.
Tags imported/exported via neighbouring .txt files are correctly censored and sibling collapsed.
Manage tags, parents, and siblings will let you know if you try to cancel them with uncommited changes.
The duplicates page's big database jobs now occur in simpler modal popups.
research vote
Just a little vote here. I am mostly just interested, but it will likely affect some future ui design for selecting how tags are parsed.
I am interested in how people choose which namespaces to parse. Please vote here:
(After making this, I discovered there is a vote map in the results. If you have a problem with that, please vote as a reply here or in the 8ch thread. I will turn this map off in future votes.)
http://www.poll-maker.com/poll1913502x04824a01-51
full list
fixed the tumblr raw url converter to now point to the data.tumblr.com domain
added a hardcoded ssl verify exception for data.tumblr.com, which has an incorrectly defined ssl cert (at least for public-facing interactions), wew
all existing db urls and file import cache urls for media.tumblr.com will be updated to data.tumblr.com on update! (everything _should_ just magically work again)
fixed apng import, which the decompressionbomb detection code was not handling correctly
collapsed the different instatiations of the 'file import status' button down to one class
the file import status button now has a right-click menu that supports 'retry failures' and 'delete processed', if applicable
misc import status cache cleanup and refactoring
you can now edit or completely turn off the [404] and [DEAD] thread watcher page name prefixes under options->downloading
thread watchers should more reliably keep 404 status
'open selection in a new page' now preserves file order!
'view this file's duplicates' now sorts the files!
options->gui now has an option to change how often 'last session' is saved
'last session' will no longer autosave to the database if there are no changes
tags exported to neighbouring .txt files are now correctly sibling-collapsed
tags imported or exported via neighbouring .txt files are now correctly tag censored
the manage tags dialog will now protest with a yes/no dialog if you attempt to cancel it with uncommitted changes
the manage parents and siblings dialogs will now protest with a yes/no on an ok event if there are 'uncommitted' pairs in the lower boxes (e.g. if you forgot to click the 'add' button)
fixed an issue that would sometimes stop old sessions from loading properly
the duplicates page now does its maintenance jobs in modal popups!
attempting to apply a duplicate status to more than 100 pairs now throws up a warning yes/no dialog
the manage urls dialog now has copy/paste buttons
added a (somewhat debug) option to disable the mouse hide&anchor behaviour on slow Windows canvas drags to options->media
added a 'regen all phashes' command to the database regen menu
the disk cache options in help now have a help button to explain good values for ssd vs hdd
the edit bandwidth rules dialog now uses the new listctrl
merged the old and new login managers
misc login work
misc refactoring
misc cleanup
next week
I moved the login system a little forward this week. The main object is now a good unified stub that happens to also do some hardcoded Hentai Foundry and Pixiv stuff, so I am ready to start making it do new things. I think I will try to move hydrus repository 'login' to it this week, and also have hydrus connections use the new networking engine in the same step. If that goes well, I believe I will be able to completely delete all the old networking code.
It would be nice to catch up on EXIF file rotation as well, and perhaps some not-dissimilar weird dimension ratio stuff that is causing some stretched videos.
3 notes · View notes
thelithiumcat · 8 years ago
Text
How I use YNAB for flexible time management
watchkeyphone said: whoah, how do you use YNAB for time? I just reactivated mine and I've been setting up categories and stuff (for money that is!), I'd be interested in an infodump about how you use it overall if you feel like sharing! (feel free to answer privately or publicly)
Okay so the basic idea is that I set up a separate budget (alongside my money one) in which I created an account called Time and into Time I set up a regular incoming payment of 24 units of money (£, $, whatever suits you!). 
Major Categories
I then organised my categories a bit like normal YNAB, except Quality of Life is now at the top. The major category groups are:
Quality of Life (looking after myself)
Immediate Obligations (work)
True Expenses (housework, admin, distractions - infrequent but inevitable)
Just for Fun (relaxing and fun for morale)
These follow the YNAB principles of 1) order by priority and 2) be realistic.
Minor Categories
Then I set up some minor categories, which (as with normal YNAB) took some experimentation to figure out what works for me. I currently have:
Quality of Life
Food
Sleep
Rest / Podcast Dark Time
Shower
Social Time
Fitness
Immediate Obligations (for my current project - my dissertation)
Primary sources
Scholarship
Discussing Project (more important than you think)
Writing Up
Organisation
Bibliography Management
Meeting with Supervisor
True Expenses (where sperge comes in)
Distractions
Recovery
Admin
Household Tasks
Reconciliation (for when I can’t remember what I did)
Transportation
Health
Stuff I Forgot To Budget For (still an important category, if hardly ever needed if you’re budgeting correctly)
Just for Fun
Film and TV
Board Gaming
Gaming
Blogging
Day Trip
Dining Out
Budgeting Time
So each time it gets to midnight, I have 24 “pounds” to spend of time. I try to allocate time realistically. It tends to look a bit like:
Sleep - 10
Rest - 2
Shower - 0.50
Social time - 2
5-6 hours split between relevant work categories (tomorrow will be something like Organisation - 4 and Writing Up - 2)
Distractions - 1
Household Tasks - 0.25
Film and TV - 2
Board Gaming - 1
Gaming - 1
That won’t add up to 24 but it’s just to give you an idea of the most common categories I use and how I weight them. I try to be realistic about what I’ll need. Also, I find balancing my time out like this makes me feel less intimidated about doing my work. If I do find the time allocated intimidating, sometimes I leave some time in ‘To Be Budgeted’ and then allocate it to work categories after I reach my short-term goal of 2 hours or something like that.
Transferring Time
Like normal YNAB, I move things around between these categories depending on what I actually do end up spending my time on (often there’s an extra hour in sleep accounting for extra time spent waking up or winding down for sleep, for example).  So I’ll spend 9-11 hours on sleep, maybe 2.5 hours on social time and only 1 hour on Film/TV/Youtube. Just like normal YNAB, it works because it is flexible.
I find I generally stick to the kinds of times I set myself, so in that way it’s really useful for setting out my intentions for my day, and reminding me of them during the day. I’m less likely to worry about spending an extra hour on Film/TV because I still have enough hours left in the day for my work time. The only thing which matters is that I get to it during that day. 
The mobile app is really useful for quickly transferring time between categories. YNAB is especially good for this because it’s designed for you to allocate all of your resources and then move those finite resources between purposes. 
Net Worth = Remaining Time
Now here comes the sneaky bit - I use my ‘net worth’ as a measure of how many hours remain unaccounted for, and match it to the remaining hours in the day. So if it’s 8pm, my net worth should be £4.00. I update it every half hour to two hours or so, so it’s not too hard to estimate (or even time exactly if I’m using my phone’s timer) how much time I’ve spent and remember what I did, because it’s recent. I also think more consciously about how I spend (or budget) my time, so I have plans in mind.
Inputting Transactions of Time
Each thing you do is inputted as a transaction of time. So if I spend half an hour typing out this blog post, I will put:
Amount: 0.50
Payee: Tumblr
Category: Blogging
Account: Time
Date: [leave unchanged]
Repeat: never
Remember to clear it, or you’ll have a really irritating uncleared balance which will take ages to go fix!
Time Conversion Table
When inputting transactions of time, you have to transfer units in base 60 to units in base 10, but it’s not too hard. 
15 minutes is £0.25
20 minutes is £0.33
30 minutes is £0.50 (I use this most often)
40 minutes is £0.66
45 minutes is £0.75
1 hour is £1.00
It’s harder to work out 10 minutes but I figure it’s around £0.16. But I hardly ever need it so I don’t worry too much.
The Mobile App
I manage this basically entirely on my phone. Partly, it looks weird in the desktop version because I’m so used to using the time one on my phone. Also because this is something where the mobile app is really in a league of its own - helping me keep track of things in real time, on the go.
I keep meaning to get around to look at the reports on the desktop version so I can see how I’ve been spending my time, but mostly I can see it because of how much I’ve budgeted for each activity.
Downsides
Not many, really. The only two are in relation to the actual money budget. I look at it less often, and sometimes I accidentally clear an uncleared payment due to muscle memory of inputting time transactions! But I still look at it every day, and the mistakes are pretty infrequent.
Upsides
Many. Mostly, I’ve always wanted something where I could allocate time, but not have to constantly be manually editing. On a written diary or day plan, this would be a nightmare. Lots of crossing out, repeated attempts at prioritising by numbering, etc. This stays neat and lets me set out my intentions without forcing me to have time awareness which I do not have. It also allows me to be flexible for how my day goes with sperge (unexpected 2 hour distraction or recovery period, etc.) which is incredibly important. I feel less guilty for taking the time to look after myself, and I can see for myself how necessary it is for me to allocate the honest amount of time to recovery, sleep, etc. I’ll still have time for the important things later, even if I have to use up time now.
10 notes · View notes
1ff · 8 years ago
Text
Advice for people struggling with selves-doubt (Am I multiple?)
This is in response to a question/rant/plea someone put to me, but I decided not to respond directly, or even @ them because my response broaches on some really messy territory and I didn’t want to add to their crisis by bringing syscourse to their personal blog. I also wanted to make a response on my own blog because I think it’s a crisis that a lot of multiples go through and I hope that our experiences can be helpful.
First of all: to anyone suffering through doubts, confusion, conflicting symptoms, conflicting perspectives and opinions, skeptical professionals, and angry gatekeepers: I don’t even have words to express my sympathy. It’s bad enough trying to figure out whether you are “actually” multiple without having to deal with everyone else’s hangups. Dozens of virtual *hugs* to you all.
In the end, please remember: anyone who comes to you and claims to be an expert should be treated with a grain of salt. Even psych professionals and other multiples. Even the “official” textbooks. Trust me, I’ve read dozens of them, and they don’t even agree with each other. The DID experts like to act as though there is a well-defined, broadly agreed-on model for multiplicity, but when you start to pick it apart you discover that there is no united, scientific consensus. It’s contradictory and goes through fads. Do not let them tell you the parameters of who you are allowed to be.
We were lucky to have discovered a broader idea of multiplicity early on. Reading about endogenic and spiritual systems allowed us to discover each other first, without having to deal with trauma right away. We were a mostly-mapped, selves-aware, and internally-introduced system well before we ever talked to a psych professional about it. Along the way, in the process of meeting and understanding each other, things started to crop up that pointed to trauma. Nobody could really say exactly what it was; it was more like a giant gaping hole in the past that was the shape of something nasty. Some system members were intentionally keeping secrets about it. Some members were missing memories about it.
Like almost every single traumagenic system I’ve ever met or read about, we all said “well, obviously there was some kind of trauma, but it wasn’t bad enough to explain how we became us.” After all, consider that we are a largish group (several dozen) with our fair share of members specifically dedicated to hiding memories, physically protecting us, dealing with fallout, dealing with anger, hiding emotions, etc, etc. We experience dissociation to varying degrees pretty much continuously 24/7. We look like a system that’s been to hell and back, but “obviously” we haven’t. So we assumed.
There’s three problems with that assumption, though:
#1. Different people experience trauma differently. The outcome (in terms of system size and nature) is not directly correlated to the kind or degree of trauma they endured. Remember, some people go through horrible trauma and don’t even become systems at all.
#2. The entire point of being multiple, in the DID model, is to produce at least one member of the system who is completely or mostly oblivious to ever having gone through trauma. They all have someone who can say “I can’t be multiple, I barely went through anything bad.”
#3. I know this will make a lot of people very angry, but I still stand firmly by the idea that there are multiples who didn’t become multiple through trauma.
Now, in regards to the crisis you are facing: I really, honestly do sympathize. I know how badly this can mess with your mind, both intellectually and physically. We have sketchbooks and journals full of diagrams and system maps and angry rants reflecting our process of trying to come to that answer. Nobody can tell you that you are or aren’t multiple. As comforting as it can seem for a psychiatrist to write down that diagnosis on a clipboard, that doesn’t really resolve it. Psychiatrists can be wrong, and this disorder is highly contested. There will always be another psychiatrist ready to cross that diagnosis out. And sadly, there are many psychiatrists who are all too willing to make that diagnosis without enough evidence.
When our group faced that crisis personally, it led to a big mess. It was like an internal civil war. Day after day of shouting and fighting, then weeks in complete silence as the arguing moved further down. We ended up re-traumatizing ourselves, and as a result the main front (Ian) fissioned off a new member (me, One. I was named after a crisis over whether we were One or many).
I’ve seen other groups sort of fade away, becoming “less multiple,” until finally realizing that they had sort of invented the whole thing. It does happen. Some people either invent a system for themselves through an overactive imagination, or experience some temporary low-level dissociation of identity that later resolves. I think it’s important to note that people who go through this tend to fade away within a few weeks. (And I bear absolutely no judgement against them, or consider them to be infringing on a culture or a disorder. Sometimes self-discovery is messy.)
I also believe firmly that there are median systems, both endogenic and OSDD. Some go through phases of being more or less present. Some don’t experience amnesia or aren’t fully separated. This is legitimate in my eyes and not infringing on anyone else.
The point, in the bigger picture, is this: Don’t let anybody else tell you who or what you are. Don’t let anyone else decide what boundaries you’re allowed to exist within. Take advice from diverse sources. Do your own research. Be prepared to accept yourself/ves regardless of what you discover. Take your time. Find peace. Don’t constantly obsess over the question: find hobbies and pastimes that give you catharsis and distraction. Consider other diagnoses and explanations that might explain things. It will take time, and will be difficult, so be careful with yourself/ves.
In the end, you won’t really find an answer to the question “Am I multiple?” There is no kind of test in the world (yet) that can answer that conclusively. Instead, eventually you will come to a conclusion like “It would only make sense to assume that this is how I/we are” or “Living like this is turning out to be healthier for me/us, so I/we will continue under this assumption.” And I promise that coming to this conclusion is a lot more satisfying than it sounds.
-One Faraday
Edit: Sorry, huge gigantic post, forgot to cut it. Fixed.
157 notes · View notes
iyarpage · 7 years ago
Text
Git Catastrophes and Tips to Avoid Them
In this post, I'd like to highlight some git features that might be less used/known, but can end up saving your @$$ when things go south in the codebase. Fortunately, it is really hard to irrevocably mess something up with git, as long as you have the .git hidden folder in your project intact!
Let’s discuss...
amending,
reverting multiple commits (or even merges),
and proper housekeeping.
Git Amend & Force-Push Shenanigans
Sometimes you end up in a situation when you need to amend a commit to add further changes to it, either because you forgot some important things, or due to company git policies.
$ git commit --amend --no-edit
Amending is usually simple, but if you aren’t careful, it can be a source of some headache, as this operation alters the git history. If you amend a commit that has already been pushed to the remote, you may only use force-push – git push -f – to submit your changes. This way you can potentially edit other peoples' work, and even push directly to a branch, skipping pull request and code review.
Let me share my horror-story about amending:
At one evening, I was sitting in the office completely alone, as all of my colleagues left for home already. We did some code reviews before, where I changed branches back-and-forth and kind of lost track of where I have ended up. I un-stashed my changes with git stash apply to continue with an important fix I was working on for the next day. I had a commit already on my fix branch pushed to the remote, and we had a policy to only submit one commit to pull-request, so I was looking at a history rewrite already. As it was pretty late and I was eager to head home, I chose to just amend the commit to what I assumed was my other commit and force push it to origin. But it turned out I was on our development branch, so I amended the last successfully merged commit on it. I sat there scratching my head for a while.
How can one fix such a mistake, and have the merge commit restored?
It turns out it's not that complicated as it may sound at first. First of all, we should forget about git log - it does not contain enough information for us to go with, and check the git reflog instead. It will tell us what happened exactly in our local repo:
$ ~/ git reflog # d0d4939 (HEAD -> master) HEAD@{0}: commit (amend): This is a very important feature # d1b3026 (feature/very-important-feature) HEAD@{1}: merge feature/very-important-feature: Fast-forward 85da11f (fix/minor-fix-to-cool-feature) HEAD@{2}: checkout: moving from feature/very-important-feature to master d1b3026 (feature/very-important-feature) HEAD@{3}: commit: This is a very important feature 85da11f (fix/minor-fix-to-cool-feature) HEAD@{4}: checkout: moving from master to feature/very-important-feature 85da11f (fix/minor-fix-to-cool-feature) HEAD@{5}: merge fix/minor-fix-to-cool-feature: Fast-forward 2d87747 (feature/my-cool-feature) HEAD@{6}: checkout: moving from fix/minor-fix-to-cool-feature to master 85da11f (fix/minor-fix-to-cool-feature) HEAD@{7}: commit: Resolved this minor issue with the coolest feature ever 2d87747 (feature/my-cool-feature) HEAD@{8}: checkout: moving from master to fix/minor-fix-to-cool-feature 2d87747 (feature/my-cool-feature) HEAD@{9}: merge feature/my-cool-feature: Fast-forward adbfc15 HEAD@{10}: checkout: moving from feature/my-cool-feature to master 2d87747 (feature/my-cool-feature) HEAD@{11}: commit: Implemented this great feature to my app adbfc15 HEAD@{12}: checkout: moving from master to feature/my-cool-feature adbfc15 HEAD@{13}: commit (initial): initial commit
The reflog contains way more useful information than git log. A new entry is created whenever a branch update happens, including branch changes, merges, resets, and commits, even tagging amends and using the stash. We can thus pick where to go back easily:
$ ~/ git reset --soft d1b3026
d1b3026 is the short hash reference to the state before the amend happened. I chose soft reset, to preserve the changes I made, as I would like to commit them later properly to my fix branch. Instead of the hash, I could have also used the head position (HEAD@{1}) and the result would have been the same. Soft reset allows me to keep the changes staged for commit, a minor convenience compared to the default mixed mode, which retains changes as un-staged, so I'd have to git add <file names> them again. Hard reset would have done me no good of course, as that discards all the changes.
Now we can just git stash the changes, force-push the restored history to the remote, switch to the fix branch to un-stash and commit the changes.
Reverting multiple git commits, including merges
It’s story time again!
One of my colleagues discovered that there was an issue with a rather important feature on his project the other day. He quickly ruled out trivial things like typos and such, and as time was tight, extensive digging in the code was not really an option. The last commit known to be clean was created quite some time ago, and everything has been pushed to the remote already. This meant that the other developers probably already had the faulty piece of code checked out. Fortunately, most of our work was separate from the other teams, but we wanted to make sure we resolve the situation as painless as possible. We took a look at our options.
Using git reset HEAD@{34} could take care of the problem for us - it points the HEAD to the commit we specified and discards or keeps the changes since then as desired, but it would also alter the git history by actually removing the commits. History changes would then result in a mismatch with the remote, meaning we could only use force-push when submitting. Force pushing to the working branch is rather rude, and such an alteration would probably have caused a bunch of conflicts and some confusion for the other team.
We settled on reverting the suspected commits instead. When reverting, git creates a new commit undoing the original commit's changes, and then we can add it to the history. This keeps the normal flow and usually results in fewer conflicts when another contributor pulls the code later. Reverting is pretty straightforward in itself. We had to choose whether to create separate revert commits for each commit by simply calling git revert <hash>, or keep the changes they introduced as un-staged by adding the --no-commit option and commit them later. Should you go with the latter, be aware that you will probably have to resolve some conflicts along the way, as git can have difficulties merging the reverse changes! We tried --no-commit first, but it turned out to be quite ugly, so after a git revert --abort, I opted for the separate commit for each reverse option.
Dealing with merge commits
We soon hit another issue - there were merge commits nestled in-between 'regular' commits. The problem with these, as it turned out, is that git doesn't know which branch to follow backwards.
$ git revert 1586b43..4767fcd error: Commit 32f2e08 is a merge but no -m option was given. fatal: revert failed
To deal with this, we need to call git revert -m 1 32f2e08, where -m 1 specifies the parent number of the branch to take, but if you try to use this with a range of commits, git will assume that the first commit in the range is the merge commit. Parent number 1 belongs to the branch into which the other one - with parent number 2 - has been merged. This wasn't optimal for us, since in our case, the merge commits were scattered across the branch. You also need to be aware that the side branch cannot be re-merged after reverting its merge commit. This applies to all of the commits of the merged branch. If you later decide you will need those changes, after all, you could revert the previous revert commit, or just move the changes to a different branch and re-commit them. Generally, you should avoid the need for such an operation if possible.
This doesn't sound very pleasant now, does it? What could be the least painful way to solve our issue then?
Unfortunately, there is no interactive revert in git yet, where one could specify the whole range to be reverted and have it prompt for merge revert decisions. This way, we decided to go with calling revert with ranges of commits up to before a merge commit, revert the merge commit separately, and then reverted the next range until the next merge, then repeat, something like this:
# First range of commits to revert $ git revert 1586b43..e33f9a0 # A merge commit $ git revert 32f2e08 -m 1 # Next commit range $ git revert 04e4703..4767fcd # Next revert commit $ git revert 58a1c10 -m 1
This turned out to be the easiest way to get the job done, while keeping the git history and hopefully the sanity of the other development team intact.
Git Built In Housekeeping
Git keeps all its references organized in a simple key-value database, called the object database. Whenever a branch update happens, git stores the changes in the object db. For example file revisions, using the hash of the changes as the key. These change objects can get relatively large in active repositories as the time goes on, but usually, older references are rarely used.
Something that is quite useful for dealing with an expanding object database is git's built-in housekeeping tool, the git gc command. Running it regularly will enable you to save some disk space, by compressing these objects - like the mentioned file revisions as well, which usually take up most of the disk space, and also commits and trees. If you call git gc --prune, you can remove orphaned objects, but they are removed permanently, and cannot be restored later. You can check what could potentially be removed when garbage collection is run using git fsck --unreachable beforehand to make sure you're okay with the results.
It doesn't matter if you have just a few repos cloned locally, or a lot, large ones or small, it can save you a surprising amount of space if you've been working on them for some time. I'd encourage you to run it on your local repositories on a regular basis, and occasionally supply the --aggressive option to initiate a slower but more thorough cleanup.
More tips to git good
If you work with git on a daily basis and haven't come across it yet, I recommend checking out Scott Chacon's presentation, available on youtube. It covers the inner workings of git in detail, and is definitely worth your time.
Git Catastrophes and Tips to Avoid Them published first on https://medium.com/@koresol
0 notes
hydrus · 5 years ago
Text
Version 399
youtube
windows
zip
exe
macOS
app
linux
tar.gz
source
tar.gz
I had a great week tidying up smaller issues before my vacation.
all small items this week
You can now clear a file's 'viewing stats' back to zero from their right-click menus. I expect to add an edit panel here in future. Also, I fixed an issue where duplicate filters were still counting viewing time even when set in the options not to.
When I plugged the new shortcuts system's mouse code into the media viewer last week, it accidentally worked too well--even clicks were being propagated from the hover windows to the media viewer! This meant that simple hover window clicks were triggering filter actions. It is fixed, and now only keyboard shortcuts will propagate. There are also some mouse wheel propagation fixes here, so if you wheel over the taglist, it shouldn't send a wheel (i.e. previous/next media) event up once you hit the end of the list, but if you wheel over some hover window greyspace, it should.
File delete and undelete are now completely plugged into the shortcut system, with the formerly hardcoded delete key and shift+delete key moved to the 'media' shortcut set by default. Same for the media viewer's zoom_in and zoom_out and ctrl+mouse wheel, under the 'media viewer - all' set. Feel free to remap them.
The new tag autocomplete options under services->tag display and search now allow you to also search namespaces with a flat 'namespace:', no asterisk. The logic here is improved as well, with the 'ser'->'series:metroid' search type automatically assuming the 'namespace:' and 'namespace:*' options, with the checkboxes updating each other.
I fixed an issue created by the recent page layout improvements where the first page of a session load would have a preview window about twenty pixels too tall, which for some users' workflows was leading to slowly growing preview windows as they normally used and restarted the program. A related issue with pages nested inside 'page of pages' having too-short preview windows is also fixed. This issue may happen once more, but after one more restart, the client will fix the relevant option here.
If you have had some normal-looking files fail to import, with 'malformed' as the reason, but turning off the decompression bomb check allowed them, this issue is now fixed. The decomp bomb test was itself throwing an error in this case, which is now caught and ignored. I have also made the decomp bomb test more lax, and default off for new users--this thing has always caught more false positives than true, so I am now making it more an option for users who need it due to memory limitations than a safeguard for all.
advanced parsing changes
The HTML and JSON parsing formulae can now do negative indexing. So, if you need to select the '2nd <a> tag from the end of the list', you can now set -2 as the index to select. Also, the JSON formula can now index on JSON Objects (the key->value dictionaries), although due to technical limitations the list of keys is sorted before indexing, rather than selecting the data as-is in the JSON document.
Furthermore, JSON formulae that are set to get strings no longer pull a 'null' value as the (python) string 'None'. These entries are now ignored.
I fixed an annoying issue when hitting ok on 'fixed string' String Matches. When I made the widgets hide and not overwrite the 'example string' input last week, I forgot to update the ok validation code. This is now fixed.
full list
improvements:
the media viewer and thumbnail _right-click->manage_ menus now have a _viewing stats->clear_ action, which does a straight-up delete of all viewing stats record for the selected files. 'edit' will be added to this menu in future
extended the tag autocomplete options with a checkbox to allow 'namespace:' to match all tags, without the explicit asterisk
tag autocomplete options now permit namespace searches if the 'search namespaces into full tags' option is set
the tag autocomplete options panel now disables and checks the namespace checkboxes when one option overrules another
cleaned up some tag search logic to recognise and deal with 'namespace:' as a query
added some more unit tests for tag autocomplete options
the html and json parsing formulae now support negative indexing, to select the nth last item from a list
extended the '1 -> "1st"' ordinal string conversion code to deal with negative indices
the 'hide tag' taglist menu actions are now wrapped in yes/no dialogs
reduced the activation-to-click-accept time that the shortcuts handler uses to ignore activating clicks from 100ms to 17ms
clicking the media viewer's top hover window's zoom buttons now forces the 'media viewer center' zoom centerpoint, so if you have the mouse centerpoint set, it won't zoom around the button where you are clicking!
added a simple 8chan.moe watcher to the defaults, all users will get it on update
the default bandwidth rules for download pages, subs, and watchers are now more liberal. only new users will get these. various improvements to db and ui update pipeline mean the enforced breaks are less needed
when a manage tags dialog moves to another media, if it has a 'recent tags' suggestion list with a selection, the selection now resets to the top item in the list
the mpv player now tracks when a video is fully loaded and only reports seek bar info and allows seeks when this is so (this should fix some seekbar errors on broken/slow-loading vids)
added 'undelete_file' to media shortcut commands
file delete and undelete are no longer hardcoded in the media viewer and media thumbnail grid. these actions are now handled entirely in the media shortcut set, and added to all clients by default (this defaults to (shift +) delete key, and also backspace on macos, so likely no changes)
ctrl+mouse wheel is no longer hardcoded to zoom in the media browser. these actions are now handled entirely in the 'all' media viewer shortcut set (this defaults to ctrl+wheel or +/-, so likely no changes)
deleted some old shortcut processing code
tightened up some update timers to better halt work while the client is minimised to system tray. this _may_ improve some users' restore hanging issues
as Qt is happier than wx about making pages on a non-visible client, subscriptions and various url import operations are now permitted to create pages while the client is minimised to taskbar or system tray. if this applies to your situation, please let me know how you get on here, as this may relieve some restore hanging as the pending new-file jobs are no longer queued up
.
fixes:
clicks on hover window greyspace should no longer propagate up to the media viewer. this was causing weird archive/delete filter actions
mouse scroll on hover window taglist should no longer propagate up to the media viewer when the taglist has no more to scroll in that direction
fixed an issue that meant preview windows were initialising about twenty pixels too short for the first page loaded in a session, and also pages created within nested page of pages. also cleaned up some logic for unusual situations like hidden preview windows. one more cycle of closing and reopening the client will fix the option value here
cleaned and unified some page sash setting code, also improving the 'hide preview window' option reliability for advanced actions
fixed a bug that meant file viewtime was still being recorded on the duplicate filter when the special exception option was off
reduced some file viewtime manager overhead
fixed an issue with database repair code when local_tags_cache is missing
fixed an issue updating a very old db not recognising that local_tags_cache does not yet exist for proper reason and then trying to repair it before update code runs
fixed the annoying issue introduced in the recent string match overhaul where a 'fixed character' string match edit panel would not want to ok if the (now hidden) example string input did not have the same fixed char data. it now validates no matter what is in the hidden input
potentially important parsing fix: JSON parsing, when set to get strings, no longer converts a 'null' value to 'None'
the JSON parsing formula now allows you to select the nth indexed item of an Object (a JSON key->value dictionary). due to technical limitations, it alphabetises the keys, not selecting them as-is in the JSON itself
images that do not load in PIL no longer cause mime exceptions if they are run through the decompression bomb check
.
misc:
boosted the values of the decompression bomb check anyway, to reduce false positives. it generally now has a problem with images with a bmp > 1GB memory
by default, new file import options now start with decompression bombs allowed. this option is being reduced to a stopgap for users with less memory
'MimeException' is renamed to 'UnsupportedFileException'
added 'DamagedOrUnusualFileException' to handle normally supported files that cannot be parsed or loaded
'SizeException' is split into 'TagSizeException' and 'FileSizeException'
improved some file exception inheritance
removed the 'experimental' label from sub-gallery page url type in parsing system
updated some advanced help regarding bad files
misc help updates
updated cloudscraper to 1.2.40
next week
I am taking next week off. Normally I'd be shitposting E3, but instead I think I am going to finally get around to listening to the Ring Cycle through and giving Kingdom Come - Deliverance a go.
v400 will therefore be on the 10th of June. I hope to have the final part of the subscription data overhaul done, which will mean subscriptions load in less than a second, reducing how much data it needs to read and write and ultimately be more accessible for the Client API and things like right-click->add this query to subscription "blahbooru artists".
Thanks everyone!
1 note · View note