#and you had to run a bunch of different snippets of code to get all the information and then put it all together
Explore tagged Tumblr posts
Text
not to brag about being good at my job but I’ve now developed two separate tools for debugging entirely on my own within my company entirely from scratch without help and A. it makes my job so much fucking easier and B. my boss is thinks im incredible just because im too lazy to want to write the same bits of code over and over just for debugging purposes
#unimportant thoughts#one i wrote 2-3 months ago#but i upgraded it this week to add in even more#and its just. perfect now.#given an id from any of the programs we built and run in our company#i instantaneously return everything about it#its name; what it does; what type of program it is; what server its run on; when it runs; where it connects; the parameters needed to#connect to wherever it connects; whether the program is currently turned on; the last 10 times the program ran; how many minutes each of#those runs took; how many files each of those runs created; whether those runs were successful; code snippets you can copy paste and run in#another window to look at the files created by each of those runs; the files created by the most recent run; thise file names; those file s#sizes; what types of files they are; whether theyre encrypted#how theyre encrypted#all of that and MORE#most of the information was already there but it took fucking 20 minutes to get all the information you needed#and you had to run a bunch of different snippets of code to get all the information and then put it all together#and now you can just fucking pop in the id of the program and .02 of a second later all the information is on your screen#AND IT MAKES MY LIFE SO MUCH EASIER#so. so. so. much. easier.#and then this week I wrote another program so I can compare runtimes of two different runs of the same program together based on how we stor#runtime data in our database#csuse i was tired of going back and forth manually between to different runs to compare#so now i have a program that just takes the ids of two different runs and compares them#doesnt even matter if the checkpoints are different I programmed it to figure out the order automatically and plug in any missing holes#finds the differences in runtime automatically and flags the biggest differences#and I can even customize how much of a difference I care about or to hide things I don’t care about
12 notes
·
View notes
Text
please. stay. i want you, i need you, oh god



don’t take these beautiful things that i’ve got
beautiful things; vernon x reader
nah nothing just me listening to this song, eating peanut butter cups and thinking about how peanut butter cup-coded vernon is. oh the irony.
edit: i really do need to start clearing out my drafts…so here’s a bunch of hansol vernon chwe snippets that never made it to my google docs but the last one was a little too crazy to post by itself. whether these are related or not is up to you! pls forgive my silly notes i didn’t edit any of this lmao
wc: 618
mlist — 🎧 saranghey❕ryn’s playlist — @maestro-net
—
“god, i am not your strongest soldier.”
hansol has heard you say this more than once. he’s not entirely sure what it means, but you’ve said this multiple times randomly within the past few hours. it’s only when the two of you are sitting in the middle of an empty parking lot, sharing a box of strawberries (with a side of peanut butter cups for you and chocolate coated wafers for him) that he realizes what your words actually mean.
—
BEACH EPISODE RAHHH
the last rays of sunlight hitting your skin, causing you to glow as if you were made of dewdrops and dusk
tide pools and hermit crabs and beach volleyball and surfboards and getting thrown around by the waves
vernon down bad frfr
sunscreen smeared across your cheeks. he leans over to rub it in, only for you to dodge his attempts playfully
you teach him how to gently place his fingers in between sea urchin spines, and he smiles softly when he feels the prickly creature hug him
—
he’s so ‘say you won’t let go’ coded omfgggg
—
“it reminded me of you.”
he feels his heart break.
—
and god, if you aren’t the most beautiful thing he’s seen all day.
—
“why would i want anyone else when i already have you?”
“it’s always been you. always.”
and so you kiss him
or smth idfk
—
“do you love me?”
his heart cracks.
“why would you ask that?” he says this in whispered pain, but even then, his voice breaks. and he feels the cracks spread, bit by bit, until his heart might as well be shattered glass.
“i…”
you pause, and look at him with eyes so broken that he wonders if you’ll ever be whole again.
“sometimes i feel like you don’t love me as much as i love you.
and would he understand, really?
does he understand what it feels like to love a person so much that it’s not even love anymore, but instead feels like your entire being is connected to his? does he understand that being without him isn’t just missing him, but an ache that runs so deep you feel it in your bones?
does he understand how much he means to you?
but do you understand?
how terrified he is of losing you, because being without you is a concept so foreign to him that he doesn’t think he’d be able to live without you? how he doesn’t understand how a person so unimaginably perfect, so you could ever be with him?
do you understand the kind of person he’d be without you?
“don’t you ever say that. you don’t understand the kind of person i’d be if i lost you.”
and he leans his forehead against yours, so gently that you wonder if he realizes that you’re still here, that you aren’t made of glass, that you won’t leave him. and the look in his eyes is the look of someone who is so unimaginably terrified that it scares you that the two of you could be so dependent on each other yet so sure that you’re about to lose the other.
“marry me.”
he flicks his eyes from yours to your lips to your eyes again so fast that you wonder if you imagined it.
“don’t say that. don’t say that if you don’t mean it.” his words come out in a jumbled rush, and the look in his eyes is pleading and desperate.
you swipe your thumb against his cheek gently, wiping away a tear that he didn’t even know was there.
“i meant every word that i just said.”
(and the switch up from loser to lover goes crazyyyyyy)
—
i need these beautiful things that i've got
—
a/n: if this had a title then it would be ‘the time(s) that different vernons across the multiverse realized he loved them and also the times he realized they loved him back’ but mannnn that’s too long 😭 i ain’t doin all that
taglist: @sousydive @dreamingofpcy @junplusone — wanna join my taglist?
#maestro-net#wooahoe writes❕#chwe vernon#vernon#hansol vernon chwe#chwe hansol#vernon x reader#vernon x you#chwe hansol x reader#chwe hansol x you#hansol x reader#hansol x you#choi hansol#hansol vernon chwe x reader#hansol vernon chwe x you#seventeen vernon#seventeen vernon x reader#seventeen vernon x you#🎧 saranghey! — dory’s playlist
62 notes
·
View notes
Note
quick question: do you by chance know if dame aylin's "child of the moonmaiden" feature is a combat only feature?



Quick answer: No, it's a passive ability and it's visible most of the time on her character sheet regardless of combat. Here's a couple of example screenshots.
Long answer below, because I had some fun digging into the implementation of her immortality a bit more.
So, Child of the Moonmaiden is visible as a passive when you examine Aylin whenever she has (a specific one of!) her resurrection statuses enabled - which is not all the time, but again isn't tied to combat. You can take a look at how it gets handled in various game scripts here, as well as search for other objects or statuses or absolutely anything of interest. Aylin's immortality stuff can get a bit convoluted to track, though. What you want to be on the lookout for are mainly these three things:
1. GLO_NIGHTSONG_RESURRECTION aka "Moonmaiden's Reconstitution" which is a Status that does nothing by itself, and instead works by giving Aylin a Passive ability, which then applies some effects to her,
2. SHA_NightsongResurrection aka "Child of the Moonmaiden" which is that Passive. It alters Aylin's reaction to being downed by replacing the "normal" DOWNED status everyone gets with GLO_NIGHTSONGRESURRECTION_DOWNED - this implements the downed behaviour you've probably seen her do, and that she might get stuck in if in Myrkul's anti-healing bone chill aura: she's auto-stabilised instead of killed if she hits 0 HP, and when her next turn starts she attempts to regain 1 HP and then has her move and bonus actions if she succeeds. The spell Death Ward is implemented in a very, very similar way to this, by changing a character's default downed status to a special DEATH_WARD_DOWNED status. For reference, this is what that spell is described to do: "Protect a creature from death. The next time damage would reduce it to 0 Hit Points, it remains conscious with 1 Hit Point left." Sounds familiar, no?
3. GLO_NIGHTSONGRESURRECTION aka "Nightsong Soars Eternal" which is a Status that doesn't give any permanent passives (so you won't see it just hanging around on her character sheet like you will CotM), but instead has a short duration, and immediately runs a "Resurrect()" call on Aylin when it expires.
Having done a bit of scripting for the game myself now, I'm finding it easier to make sense of all of these than when I made this post. Still, this is me reverse engineering stuff and if anyone has any corrections or additions, I'd welcome them!
So, about Child of the Moonmaiden/Moonmaiden's Reconstitution, because you don't have one without the other, and about Nightsong Soars Eternal, which resurrects Aylin in a slightly different way and gets applied to her only ever if she's "died".
Aylin doesn't have CotM before you free her, even though she will always resurrect here unless you specifically kill her in the cutscene with Shadowheart and the spear:

How so? Most of the time, if you see Aylin pop up even though she has no CotM passive visible, it means Nightsong Soars Eternal was applied to her. But first, how does the game even apply statuses to characters (or anything, really)? And when does Aylin get CotM?
To apply a Status to a character you execute this call somewhere within your code: ApplyStatus([target character], [status to apply], [duration of status], [force of status - this is an override for resistances and the like and is not super relevant here], [source of status]).
A note in advance, whenever you see this great big unwieldy string of characters: S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b -> [happy Isobel voice] This is Aylin!
Here's an example of a bit of code that handles Aylin's resurrection and which includes this call. This is a snippet included in the big script that handles the assault on Moonrise Towers at the end of Act 2, but something similar to this appears in several different places and, while there are a bunch of other bits and pieces and failsafes and helpers, this is in general how the game ensures Aylin doesn't stay dead:
IF DB_Dead((CHARACTER)S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b) AND DB_GlobalFlag(MOO_Assault_State_InProgress_0f3a8f5d-7402-4220-bebb-d4b21d3db08d) AND HasActiveStatus(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b, "SHA_SHARSPEAR_MORTALWOUND", 0) AND GetFaction(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b, _Faction) THEN PROC_SetRelationToPlayers(_Faction, 100); ApplyStatus(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b, "GLO_NIGHTSONGRESURRECTION", 6.0, 0, S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b);
What this essentially translates to is the following:
IF Aylin is in the database of currently dead characters (nooooo) AND the Moonrise assault is in progress AND Aylin having been permakilled by Shar's spear in the Shadowfell is FALSE (aka zero) AND we were able to correctly fetch data about Aylin's faction/approval THEN set this approval so she is an ally to the player (shows up as green, affected by friendly spells etc.) and give her the "Nightsong Soars Eternal" status lasting for 6 seconds.
She is both the target and the source of this effect, as there isn't anyone else casting it on her. Once the 6 seconds (aka one standard D&D combat round) have passed, the status will expire, and whatever is in its "OnRemoveFunctors" part will happen - and that is a simple Resurrect(100, 10) call. The numbers there mean Aylin is immediately resurrected with a 100% chance and at 10% of her max HP (as opposed to CotM's 1 HP). This usually results in her being at 9HP if this happens.
So there you have it, a friendly Aylin will pop right back up. The Ketheric/Myrkul boss fight in the mindflayer colony has a very similar snippet, for instance. But an important thing to note is that IF Aylin has CotM active aka visible when you examine her, that one will always kick in first. As many people asking for help salvaging their Honour Mode runs after aggroing Aylin in camp will tell you, combat against Aylin if she has CotM literally cannot end. She will keep getting up with 1 HP (she does not state that she didn't hear any bell, but she does loudly exclaim HO! I HAVE RETURNED! and I love her for it). The variant using Nightsong Soars Eternal has her actually leave combat for a bit, so if she's your only enemy, this will usually make combat end and let you exit turn-based mode, plus it makes her non-hostile approval-wise. (And of course, all of these things can bug out in a bunch of different ways.)
This is what it looks like in camp without CotM (sorry, Aylin).
Moving on, there is another way of calling this same function, and that is ApplyStatus([status], [chance of applying status], [duration of status]). A nice example of this appears in a very relevant-to-our-interests code related to the Soul Cage - both in the Shadowfell and in the mindflayer colony. The bit, in particular, that goes like this:
OnRemoveFunctors ApplyStatus(GLO_NIGHTSONG_RESURRECTION, 100, -1);
Just like above, "OnRemoveFunctors" defines what happens when the Soul Cage is removed from Aylin (no matter how this was achieved). So as soon as Aylin's free of the Soul Cage, she's given her Moonmaiden's Reconstitution/Child of the Moonmaiden variant resurrection with a 100% chance and a duration of -1, which means it has no chance of failure and it lasts until it is explicitly removed by some other bit of code. Again, this happens both when you free her in her prison, and when you free her in the colony after she's been recaptured - from that moment on, she has CotM until something removes it.
What's one prominent place this status explicitly gets removed? Why, Ramazith's Tower, and it happens when combat starts regardless of allegiances, as seen here in the script that handles Sorcerous Sundries:
//Tracking final combat IF DB_Is_InCombat(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b,_CombatGUID) AND DB_Is_InCombat(S_LOW_Lorroakan_a9d4b71d-b0ef-429e-8210-6dc8be986ee9,_CombatGUID) AND QRY_OnlyOnce("LOW_SorcerousSundries_StartFinalConfrontationCombat") THEN RemoveStatus(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b,"GLO_NIGHTSONG_RESURRECTION");
Fairly simple, right? If Aylin is in combat, and if Lorroakan is in combat, and the final confrontation has begun, remove the resurrection status from Aylin. Why? As mentioned above, CotM means any combat against Aylin very literally never ends, so siding against her would be an unwinnable scenario. There is also a fail state in which she gets downed after you've sided with her and you flee from combat against Lorroakan - if you return, you'll see he's captured her. Why doesn't she resurrect using Nightsong Soars Eternal? That whole implementation of checking if she's dead is not present in the Sorcerous Sundries script at all. So if downed in the tower, Aylin will stay dead until one of two things happens: you've betrayed her and you leave and return, upon which she will be caged again and swearing her vengeance against you, OR you've sided with her and the combat ends. Then she'll pop back up for her backbreaker cutscene, and it will be via this custom bit of scripting:
IF DB_LOW_SorcerousSundries_FinalConfrontationCombatEnded(1) AND DB_Defeated(S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b) AND DB_GlobalFlag((FLAG)LOW_Lorroakan_State_IsPermadefeated_2c446081-2f24-49c4-84d9-b8f64a3d3098) AND NOT DB_GlobalFlag((FLAG)LOW_SorcerousSundries_State_PlayersSideWithLorroakan_24c45d86-9027-48cc-afdd-3e6bac7d5425) AND QRY_OnlyOnce("LOW_SorcerousSundries_NightsongGetsUpAfterCombat") THEN PROC_CharacterFullRestore((CHARACTER)S_GLO_Nightsong_6c55edb0-901b-4ba4-b9e8-3475a8392d9b);
If the combat is over, Aylin is down, Lorroakan is dead and the player didn't side with Lorroakan, get Aylin up and do a "full restore" of her.
This makes way for some of the most delightful of checks in a segment of code marked as "//REGION Nightsong going to WWE Lorroakan":
PROC PROC_LOW_SorcerousSundries_HandleNightsongVictory() AND QRY_SorcerousSundries_NightsongCanSmashLorro() QRY_SorcerousSundries_LorroakanBodySmashable() QRY_OnlyOnce("LOW_SorcerousSundries_NightsongSmash")
The many branching variants handled here were actually really interesting to see, from who is alive at the end of the fight and who the player sided with to whether Isobel is still alive and whether Lorroakan's corpse has a head.
There's also a Patch 3 fix for older savegames, addressing a bug that I remember being fairly common, where Aylin would just not ever resurrect after the wizard tower and sometimes wouldn't ever come back to camp. It basically looks at your save, just checks a couple flags and triggers Nightsong Soars Eternal on Aylin if she is for whatever reason still in the "dead characters database" even though you sided with her against the wizard (and didn't kill her in the Shadowfell, of course).
Just in case anyone missed me dying on my hill, by the way, none of this has anything to do with her "breaking her oath" or "losing her mother's favour" or anything of the sort, because none of that happens at all.
I also love the straightforwardness of some of her behaviour parameters and the comments:
Act2_GLO_Nightsong AI Archetype USING melee_smart //Focus harder on Keth MULTIPLIER_TARGET_PREFERRED 4.50 //Care less about killing the minions - MULTIPLIER_KILL_ENEMY -0.20 //To stop her from overvaluing shoves on the necromites - MULTIPLIER_FALL_DAMAGE_ENEMY 0.2
To wrap this all up, thank you for your attention, hope you enjoyed or found any of this at all interesting. Here's a very sad fact I discovered today:
Boooo. Let her rock out.
#oathkeeper replies to things#bg3#baldur's gate 3#dame aylin#long post#osiris scripting#i mean is that even a tag... i don't know#datamine#we have fun here
15 notes
·
View notes
Text
(repost of a tag game, original post was getting really long)
Ten questions to ask a mutual
Instructions: prev asks ten questions and you answer them, then ask ten new ones and tag ten people to keep the chain going! I’ll go first
Tagged by @rock-n-macabre
Do you think Severen survived the end of Near Dark and he's probably just chewing on roadkill somewhere until he gets his strength back? I think he's the most likely to have survived; there's so much emphasis on daylight, direct daylight being the only thing that can kill them, that his death seemed...an odd way to go out permanently. Personally, I like to lean on 'they'll all be fine eventually, it just won't be a very fun recovery, plus transfusions don't work like that and Mae and Caleb are still vampires.'
Weirdest song you get stuck in your head? A rotating mix of atrocious pop music; sometimes it's just snippets of whatever I've been listening to recently. Right now I have "Father" by the Misfits stuck in my head.
What is an item you wish would become a fad? Common sense; selfishly I do wish goth would go mainstream again like it did for two minutes in 2014ish, just to make it easier to find dark makeup.
If you had to live in an era, what would you choose? None in the past; I think it'd be fun to visit, but between health concerns and other factors I really wouldn't want to move someplace else. If i HAD to....just like. A couple decades earlier, I guess?
Fav genre of music? Most of what I listen to falls under the rock umbrella.
Fav past time? Writing, reading, I'm bad at it but also like painting. My favorite time-wasting activities outside of my house are wandering art museums and this really nice botanical garden I'm lucky to live near. I don't consider it a time-waster because it's my therapy, but I spend a LOT of time at the National Aquarium too (not exactly local, but not a horrible drive).
Gators or Crocs? like...the animals? Crocodiles are one of my favorite animals, but I love everything crocodilia. I have a bunch of tiny alligators and crocs on my desk at work, and another that lives on top of the radio in my car.
Possums or Armadillos? the latter for the novelty; we have a lot of possums around here so I'm used to seeing them.
Tacos or Burritos? tacos
(whew almost there...Im reaching for Qs) - Best Bill Paxton movie? EVIL. oh man. oh no. Don't make me do this, as I blog on a Near Dark blog, with a word doc for a fanfic open, in my red/white/black flannel shirt, whlie drinking out of my Aliens coffee mug. I'm not making choosing one. My favorite role of his is definitely Severen though.
Okay for my ten I'm going to be entirely self-serving and try to get some meta and head-canon conversation going on in the tags again:
Thoughts on Eric Red's idea for a Near Dark sequel? (Mae and Caleb's adult, human, daughter has a run in with "kin" of the Hookers.)
Top five movies with vampires?
If YOU were going to pitch a sequel (time machine back to 1987, or else a book/comic/etc) what would you say?
Favorite scene that isn't the bar scene?
We know (canon) that Mae was turned around 1982, Jesse around the Civil War, and (kiiiiiinda canon?) Severen in Tombstone in the late 19th century. When/where do you think Diamondback and Homer were from?
Do you think if Caleb got over his selectively applied human moral code that he would have made an okay vampire, eventually?
Severen: ace/aro spec, or no?
Any scenes that were changed from script to film, or otherwise cut that you wish made it into the movie/were done differently?
What would have happened if Loy and Sarah were at literally any other motel that night?
Aside from her god-awful taste in boys, what's your opinion on Mae?
taggging @rock-n-macabre again, @hex6rcist, @mrsvansickle04, @babieswrld, @ltofoceania, @lupinedreaming, @lektricfergus @tragantia, @osmanthusoolong, and @starfolk7 who is actually normal about this movie but whom I made sit down and watch it, as I have done and continue to do every time I find out one of my friends has never seen it.
And anyone else who wants to join in.
10 notes
·
View notes
Text
So because of @animeomegas writing some soft Dabi, I have some slight brain rot. So here are some snippets of a bunch of different prompts that I got from this generator. I might expand some of them later, but no promises <3
GN!Reader who's also in the LOV and who is very lovesick and chaotic
CW: lots of cursing, one on two innuendos, one slightly angsty prompt where you imply you and Dabi are gonna kill someone but that's to be expected
Alpha breaking into Dabi's room through their window.
Dabi loved you. Did he admit that as often as he probably should? No, but he still did. However, that didn't mean he didn't also think you were the strangest person on the planet.
"Why are you coming through my window? I have a semi-functional door right there." He gestures over to the busted door that Kurogiri had yet to fix.
"I was on the roof. Easier to just come in this way." You shimmy your way through the window and grin when you make it through.
"Why were you on the roof? It's 11 am, people can see you."
"Nobody ever looks up. And I was bird-watching."
He looks at you incredulously. "Is that code that you were looking for Hawks?"
"No. I was actually bird-watching."
"...That's it, I want a refund."
"You can't return me, asshole."
Alpha traveling long distances just to see Dabi.
"I'm back!" You yell, running into his bedroom with a stupid grin.
"...Weren't you in America like an hour ago?"
"Irrelevant, I missed you." You hug him closely and pepper kisses on his face.
"How the fuck did you get back so fast?" He pushes your face away from his.
"The power of love."
"That's bullshit and you know it. You can't break reality and claim love let you do it."
Dabi and Alpha remembering their first kiss… and they have very different takes on it.
"It was our first mission together. We were arguing about what we should be doing, and next thing I know he was kissing me."
"It was a heat-of-the-moment kind of thing."
"It's the hottest thing he's ever done."
"I was threatening to kill them before we did it."
"That made it hotter."
"It was a mistake. They never left me alone after that."
"Aw, love you too."
Dabi gets into a heated argument with someone. Dabi begins threatening them, so Alpha picks up Dabi and carries/drags them out of the room before anyone gets hurt.
Sometimes Dabi and Shigaraki can get a little heated. Literally, in this instance. You can practically feel the heat radiating from your boyfriend across the room and you know he's seconds away from blowing his fuse.
So, you do what you would rationally do in this situation.
When you lift Dabi into you arms, he freezes and you can practically see the gears working in his brain to understand what's happening. You pay him no mind and continue to walk to your shared bedroom.
"Wh- put me down, asshole!"
"Nope."
"Fuck you."
"I mean, if that's what you want."
Dabi hogs all the blankets and Alpha gets cold so they cling tightly to Dabi for warmth.
"You are a walking furnace, why the fuck do you need this many blankets?" you yell in frustration, desperately trying to untangle one from the horde that Dabi has collected.
Wrapped snuggly in his favorite blanket, he flashes you a shit-eating grin. "I still get cold. You don't want me to suffer, do you?"
"I call fucking bullshit. You push me off the bed because being near me is too hot for you."
"I have never done that. I am innocent."
"You're a lot of things, but innocent ain't one."
You finally manage to wiggle one blanket free, but before you even realize what's happening, Dabi manages to snatch it back and add it back into the horde.
You growl in frustration and try again.
Alpha holding Dabi's hands when they are shaking.
Your hands encase his and you meet his eyes.
"Deep breaths."
He closes his eyes and takes a deep, shaky breath. When he opens them again, rage still burns like a forest fire.
"I want him dead. He fucking deserves it."
"I know, and I agree. But you can't let him get in your head like this."
"I don't want to care so much." His twisted expression makes it clear to you the internal battle he's fighting.
"He hurt you. It's natural that you care. But I promise you, we'll put him in the fucking ground."
He chuckles humorlessly and he almost smiles. "Yeah. I'd like that."
Dabi having to comfort Alpha because Alpha just encountered a very large, unpleasant bug outside that scared them.
He was trying so hard not to laugh, but you could tell he's barely holding it in. He pats your back with his fist covering his growing smile.
"There there, it's okay."
You pout and glare at him. "It was a huntsman spider! It was fucking massive!"
His loose hold on his self-control is broken with your comment, and he bursts out laughing.
"Y/N, feared villain across the whole of Japan, spooked by a bug."
"You're a fucking asshole."
"Yeah, but you love it," he grins.
51 notes
·
View notes
Text
Charity Majors, CTO & Co-Founder at Honeycomb – Interview Series
New Post has been published on https://thedigitalinsider.com/charity-majors-cto-co-founder-at-honeycomb-interview-series/
Charity Majors, CTO & Co-Founder at Honeycomb – Interview Series
Charity is an ops engineer and accidental startup founder at Honeycomb. Before this she worked at Parse, Facebook, and Linden Lab on infrastructure and developer tools, and always seemed to wind up running the databases. She is the co-author of O’Reilly’s Database Reliability Engineering, and loves free speech, free software, and single malt scotch.
You were the Production Engineering Manager at Facebook (Now Meta) for over 2 years, what were some of your highlights from this period and what are some of your key takeaways from this experience?
I worked on Parse, which was a backend for mobile apps, sort of like Heroku for mobile. I had never been interested in working at a big company, but we were acquired by Facebook. One of my key takeaways was that acquisitions are really, really hard, even in the very best of circumstances. The advice I always give other founders now is this: if you’re going to be acquired, make sure you have an executive sponsor, and think really hard about whether you have strategic alignment. Facebook acquired Instagram not long before acquiring Parse, and the Instagram acquisition was hardly bells and roses, but it was ultimately very successful because they did have strategic alignment and a strong sponsor.
I didn’t have an easy time at Facebook, but I am very grateful for the time I spent there; I don’t know that I could have started a company without the lessons I learned about organizational structure, management, strategy, etc. It also lent me a pedigree that made me attractive to VCs, none of whom had given me the time of day until that point. I’m a little cranky about this, but I’ll still take it.
Could you share the genesis story behind launching Honeycomb?
Definitely. From an architectural perspective, Parse was ahead of its time — we were using microservices before there were microservices, we had a massively sharded data layer, and as a platform serving over a million mobile apps, we had a lot of really complicated multi-tenancy problems. Our customers were developers, and they were constantly writing and uploading arbitrary code snippets and new queries of, shall we say, “varying quality” — and we just had to take it all in and make it work, somehow.
We were on the vanguard of a bunch of changes that have since gone mainstream. It used to be that most architectures were pretty simple, and they would fail repeatedly in predictable ways. You typically had a web layer, an application, and a database, and most of the complexity was bound up in your application code. So you would write monitoring checks to watch for those failures, and construct static dashboards for your metrics and monitoring data.
This industry has seen an explosion in architectural complexity over the past 10 years. We blew up the monolith, so now you have anywhere from several services to thousands of application microservices. Polyglot persistence is the norm; instead of “the database” it’s normal to have many different storage types as well as horizontal sharding, layers of caching, db-per-microservice, queueing, and more. On top of that you’ve got server-side hosted containers, third-party services and platforms, serverless code, block storage, and more.
The hard part used to be debugging your code; now, the hard part is figuring out where in the system the code is that you need to debug. Instead of failing repeatedly in predictable ways, it’s more likely the case that every single time you get paged, it’s about something you’ve never seen before and may never see again.
That’s the state we were in at Parse, on Facebook. Every day the entire platform was going down, and every time it was something different and new; a different app hitting the top 10 on iTunes, a different developer uploading a bad query.
Debugging these problems from scratch is insanely hard. With logs and metrics, you basically have to know what you’re looking for before you can find it. But we started feeding some data sets into a FB tool called Scuba, which let us slice and dice on arbitrary dimensions and high cardinality data in real time, and the amount of time it took us to identify and resolve these problems from scratch dropped like a rock, like from hours to…minutes? seconds? It wasn’t even an engineering problem anymore, it was a support problem. You could just follow the trail of breadcrumbs to the answer every time, clicky click click.
It was mind-blowing. This massive source of uncertainty and toil and unhappy customers and 2 am pages just … went away. It wasn’t until Christine and I left Facebook that it dawned on us just how much it had transformed the way we interacted with software. The idea of going back to the bad old days of monitoring checks and dashboards was just unthinkable.
But at the time, we honestly thought this was going to be a niche solution — that it solved a problem other massive multitenant platforms might have. It wasn’t until we had been building for almost a year that we started to realize that, oh wow, this is actually becoming an everyone problem.
For readers who are unfamiliar, what specifically is an observability platform and how does it differ from traditional monitoring and metrics?
Traditional monitoring famously has three pillars: metrics, logs and traces. You usually need to buy many tools to get your needs met: logging, tracing, APM, RUM, dashboarding, visualization, etc. Each of these is optimized for a different use case in a different format. As an engineer, you sit in the middle of these, trying to make sense of all of them. You skim through dashboards looking for visual patterns, you copy-paste IDs around from logs to traces and back. It’s very reactive and piecemeal, and typically you refer to these tools when you have a problem — they’re designed to help you operate your code and find bugs and errors.
Modern observability has a single source of truth; arbitrarily wide structured log events. From these events you can derive your metrics, dashboards, and logs. You can visualize them over time as a trace, you can slice and dice, you can zoom in to individual requests and out to the long view. Because everything’s connected, you don’t have to jump around from tool to tool, guessing or relying on intuition. Modern observability isn’t just about how you operate your systems, it’s about how you develop your code. It’s the substrate that allows you to hook up powerful, tight feedback loops that help you ship lots of value to users swiftly, with confidence, and find problems before your users do.
You’re known for believing that observability offers a single source of truth in engineering environments. How does AI integrate into this vision, and what are its benefits and challenges in this context?
Observability is like putting your glasses on before you go hurtling down the freeway. Test-driven development (TDD) revolutionized software in the early 2000s, but TDD has been losing efficacy the more complexity is located in our systems instead of just our software. Increasingly, if you want to get the benefits associated with TDD, you actually need to instrument your code and perform something akin to observability-driven development, or ODD, where you instrument as you go, deploy fast, then look at your code in production through the lens of the instrumentation you just wrote and ask yourself: “is it doing what I expected it to do, and does anything else look … weird?”
Tests alone aren’t enough to confirm that your code is doing what it’s supposed to do. You don’t know that until you’ve watched it bake in production, with real users on real infrastructure.
This kind of development — that includes production in fast feedback loops — is (somewhat counterintuitively) much faster, easier and simpler than relying on tests and slower deploy cycles. Once developers have tried working that way, they’re famously unwilling to go back to the slow, old way of doing things.
What excites me about AI is that when you’re developing with LLMs, you have to develop in production. The only way you can derive a set of tests is by first validating your code in production and working backwards. I think that writing software backed by LLMs will be as common a skill as writing software backed by MySQL or Postgres in a few years, and my hope is that this drags engineers kicking and screaming into a better way of life.
You’ve raised concerns about mounting technical debt due to the AI revolution. Could you elaborate on the types of technical debts AI can introduce and how Honeycomb helps in managing or mitigating these debts?
I’m concerned about both technical debt and, perhaps more importantly, organizational debt. One of the worst kinds of tech debt is when you have software that isn’t well understood by anyone. Which means that any time you have to extend or change that code, or debug or fix it, somebody has to do the hard work of learning it.
And if you put code into production that nobody understands, there’s a very good chance that it wasn’t written to be understandable. Good code is written to be easy to read and understand and extend. It uses conventions and patterns, it uses consistent naming and modularization, it strikes a balance between DRY and other considerations. The quality of code is inseparable from how easy it is for people to interact with it. If we just start tossing code into production because it compiles or passes tests, we’re creating a massive iceberg of future technical problems for ourselves.
If you’ve decided to ship code that nobody understands, Honeycomb can’t help with that. But if you do care about shipping clean, iterable software, instrumentation and observability are absolutely essential to that effort. Instrumentation is like documentation plus real-time state reporting. Instrumentation is the only way you can truly confirm that your software is doing what you expect it to do, and behaving the way your users expect it to behave.
How does Honeycomb utilize AI to improve the efficiency and effectiveness of engineering teams?
Our engineers use AI a lot internally, especially CoPilot. Our more junior engineers report using ChatGPT every day to answer questions and help them understand the software they’re building. Our more senior engineers say it’s great for generating software that would be very tedious or annoying to write, like when you have a giant YAML file to fill out. It’s also useful for generating snippets of code in languages you don’t usually use, or from API documentation. Like, you can generate some really great, usable examples of stuff using the AWS SDKs and APIs, since it was trained on repos that have real usage of that code.
However, any time you let AI generate your code, you have to step through it line by line to ensure it’s doing the right thing, because it absolutely will hallucinate garbage on the regular.
Could you provide examples of how AI-powered features like your query assistant or Slack integration enhance team collaboration?
Yeah, for sure. Our query assistant is a great example. Using query builders is complicated and hard, even for power users. If you have hundreds or thousands of dimensions in your telemetry, you can’t always remember offhand what the most valuable ones are called. And even power users forget the details of how to generate certain kinds of graphs.
So our query assistant lets you ask questions using natural language. Like, “what are the slowest endpoints?”, or “what happened after my last deploy?” and it generates a query and drops you into it. Most people find it difficult to compose a new query from scratch and easy to tweak an existing one, so it gives you a leg up.
Honeycomb promises faster resolution of incidents. Can you describe how the integration of logs, metrics, and traces into a unified data type aids in quicker debugging and problem resolution?
Everything is connected. You don’t have to guess. Instead of eyeballing that this dashboard looks like it’s the same shape as that dashboard, or guessing that this spike in your metrics must be the same as this spike in your logs based on time stamps….instead, the data is all connected. You don’t have to guess, you can just ask.
Data is made valuable by context. The last generation of tooling worked by stripping away all of the context at write time; once you’ve discarded the context, you can never get it back again.
Also: with logs and metrics, you have to know what you’re looking for before you can find it. That’s not true of modern observability. You don’t have to know anything, or search for anything.
When you’re storing this rich contextual data, you can do things with it that feel like magic. We have a tool called BubbleUp, where you can draw a bubble around anything you think is weird or might be interesting, and we compute all the dimensions inside the bubble vs outside the bubble, the baseline, and sort and diff them. So you’re like “this bubble is weird” and we immediately tell you, “it’s different in xyz ways”. SO much of debugging boils down to “here’s a thing I care about, but why do I care about it?” When you can immediately identify that it’s different because these requests are coming from Android devices, with this particular build ID, using this language pack, in this region, with this app id, with a large payload … by now you probably know exactly what is wrong and why.
It’s not just about the unified data, either — although that is a huge part of it. It’s also about how effortlessly we handle high cardinality data, like unique IDs, shopping cart IDs, app IDs, first/last names, etc. The last generation of tooling cannot handle rich data like that, which is kind of unbelievable when you think about it, because rich, high cardinality data is the most valuable and identifying data of all.
How does improving observability translate into better business outcomes?
This is one of the other big shifts from the past generation to the new generation of observability tooling. In the past, systems, application, and business data were all siloed away from each other into different tools. This is absurd — every interesting question you want to ask about modern systems has elements of all three.
Observability isn’t just about bugs, or downtime, or outages. It’s about ensuring that we’re working on the right things, that our users are having a great experience, that we are achieving the business outcomes we’re aiming for. It’s about building value, not just operating. If you can’t see where you’re going, you’re not able to move very swiftly and you can’t course correct very fast. The more visibility you have into what your users are doing with your code, the better and stronger an engineer you can be.
Where do you see the future of observability heading, especially concerning AI developments?
Observability is increasingly about enabling teams to hook up tight, fast feedback loops, so they can develop swiftly, with confidence, in production, and waste less time and energy.
It’s about connecting the dots between business outcomes and technological methods.
And it’s about ensuring that we understand the software we’re putting out into the world. As software and systems get ever more complex, and especially as AI is increasingly in the mix, it’s more important than ever that we hold ourselves accountable to a human standard of understanding and manageability.
From an observability perspective, we are going to see increasing levels of sophistication in the data pipeline — using machine learning and sophisticated sampling techniques to balance value vs cost, to keep as much detail as possible about outlier events and important events and store summaries of the rest as cheaply as possible.
AI vendors are making lots of overheated claims about how they can understand your software better than you can, or how they can process the data and tell your humans what actions to take. From everything I have seen, this is an expensive pipe dream. False positives are incredibly costly. There is no substitute for understanding your systems and your data. AI can help your engineers with this! But it cannot replace your engineers.
Thank you for the great interview, readers who wish to learn more should visit Honeycomb.
#acquisitions#Advice#ai#AI-powered#android#API#APIs#APM#app#apps#author#AWS#Best Of#bugs#Building#Business#change#Charity#chatGPT#code#Collaboration#complexity#Containers#course#CTO#dashboard#data#data pipeline#Database#databases
0 notes
Text
Does doing magic in a(n urban) fantasy setting count as "superpowers"? If so, then the Empty Names main cast already has them.
Lacuna:
So, in-universe, the particular approach that Lacuna takes to magic could technically be done by anyone with the proper knowledge and resources, but we'll go ahead and count it as a "superpower" anyway. In Empty Names doing magic can be broadly split into "spells" and "rituals," with the primary difference being how long they take to cast and who can do them. In this case, spells only take a few quick words and/or hand gestures, rarely take more than a second or two to produce an effect, and can only be cast by mages (e.g. witches, wizards, and other "real" magic users). Rituals involve some combination of drawing out a bunch of glyphs/speaking an incantation/making use of some manner of material component, can take anywhere from several minutes to several days to cast depending on complexity, and can be done by basically anyone that knows magic exists. Lacuna's whole thing is doing rituals through computers and phones with AI assistance to speed them up and re-combine them in novel ways.
Part of the idea behind all this for Lacuna was to sort of use her as a way to explore the idea of treating learning magic like a programming language. In this case, a bit literally with her writing and adjusting the algorithms and such for her assistive AI as she goes and less literally as she tries to grasp and different pieces of how things work and combine them. And, much like programming, she's often doing the magic ritual equivalent of grabbing a bunch of code snippets off Stack Exchange that sound sort of similar to what she wants, running them, getting a bunch of compile errors (or even worse, runtime errors), and then trying to go back and reverse engineer them to fit her existing project without exploding.
Also, the idea of having a bunch of spells/rituals saved on your phone that you can just pull out like an app or pre-recorded video just seems cool to me.
On top of all that, this all works well with her long term goal/arc of trying to figure out a way to do something that is both difficult in the setting's magic system and personally meaningful to her (making herself a new body for trans reasons) and doing it in a way that she has to try and fail and iterate in stages as time goes on. And then also doing it all in the messiest, most mangled, roundabout way possible that causes any properly trained magic user to look at her self-taught and semi-AI-generated rituals and enchantments to go "How does that even function without collapsing on itself or exploding and how are you not dead already?"
Ashan:
Providing contrast to Lacuna, Ashan Glassheart is a "properly trained" wizard who's been honing his craft for most of his life under mentorship and with full knowledge of theory and tradition to the point where his spellcasting blurs the line between art and science.
When coming up with what Ashan's style of magic actually was though, I had a few parameters in mind:
Specialized so that he mostly does variations on a single theme.
Capable of nonlethal subdual in a fight.
Physical and flashy in its casting.
And then a random name generator spat out the name Glassheart and it clicked for me that his primary thing would be conjuring up force fields that look like glass and he would "paint" them into existence with a combination of bodily gestures and brushstroke-like movements with his wand for more precise or intricate work.
Also the real reason Empty Names exists is because of the online discourse about Bridgette from Guilty Gear being confirmed as canonically trans and some fans feeling like they had lost out on the positive representation of "male character that presents feminine but is still confident/secure in his masculinity" (or so I interpreted). This got me on the thought experiment of "What if a story had both, and they were cool with each other? And then what if we also genderbent it so that there was also a transmasc guy and a masculine-presenting woman? And the five-man-band trope is cool, so let's make the leader genderfluid, allowing things to still be symmetrical while also an odd number and increasing the gender fuckery even further?" Then I decided to make it an urban fantasy monster-of-the-week thing as a means of having situations to put these people in. This then led to the concept association pipeline of femme-presenting cis guy -> often gets mistaken for a woman -> wears a dress -> wizard robes and dresses can look real similar if you make them animé enough -> Ashan's a wizard now.
Eris:
Eris is the one with the closes thing to a traditional superpower with superhuman strength, durability, and healing. This mostly owes itself to how heavily I was leaning on the "five-man band" trope in my initial character brainstorming and Eris getting assigned the role there of "The Big Guy/Powerhouse". It's also an excuse to have a character who can get thrashed around a lot and not die.
It also makes a nice character trait parallel of her on the surface having the most simple and straightforward powerset in the same way that everyone around her tends to view her as the simple and straightforward big dumb meatshield, but then underneath the metaphorical hood, that strength/durability/regeneration is the result of several different aspects of the setting's magic system interacting in a very particular way in the same way that she's got her own internal complexities and is low-key the smartest person in the room most of the time.
Additionally, I've always liked the trope of "character who's usually pretty chill but gets way too into it whenever a fight breaks out, and the way the setting's magic system works lends itself well to simultaneously making having her be like that be partially responsible for the powerset she has and adds in the narrative drama of "if she ever lets herself go too much with that she runs the risk of turning into some kind of monster."
Also, I had just finished watching Dorohedoro around the time I was doing my initial planning, and Noi was my favorite character in that.
Sullivan:
If Eris is "The Big Guy/Powerhouse" and Road is "The Hero/Leader", then Sullivan Bridgewood is "The Lancer" (meanwhile Lacuna and Ashan are off blurring the line about which one qualifies as "The Heart" and "The Smart Guy"), and giving him an archetypical rogue skillset with all the knives and sneaking around seemed to fit the narrative role of "guy who is technically on the team but is always going off on his own while acting as a foil to the Leader."
But sneaking around and loving knives isn't a superpower, and the idea of Sullivan having any kind of powers actually came late in his conceptual development.
I knew early on that I wanted him to be rich enough to be the one bankrolling the whole operation (and by extension, let me handwave the question of how the party is paying for all their fun toys), but I wasn't sure where that money would come from. Early ideas included being good at gambling and/or owning casinos with questionable legal connections. There was a little bit of Jack Noir/Spades Slick of Homestuck in his narrative DNA.
And then similar to how random name generation gave me Glassheart, which then influenced Ashan's magic, that random generation gave me the name Bridgewood, and things started falling into place. The first idea here was him being some manner of off-world nobility whose family name came from the forest they watched over that was capable of connecting to other worlds.
But somewhere in the process a certain line from Team Four Star's Hellsing Ultimate Abridged got stuck in my head:
"My boss is a woman, I was a chick in the forties, I hate everyone equally, and there's no one alive who could comprehend my sexual preference."
This line had a truly inordinate amount of influence on the direction Sullivan's character ultimately took, and from it the sorceress Carnette Bridgewood came to be. Now Sullivan had money because he married into it (and took on his wife's last name in the process). And with Sullivan being... well, Sullivan, that marriage started out as a business exchange, in which Sullivan would get the money and prestige that came with the Brigewood family name and Carnette would get a conversation partner who wasn't terrified of her and a willing subject for her mad science/magic experiments. And Sullivan now being a sorcerous test subject gave me free reign to indulge my love of Lovecraftian body horror powers.
And thus Sullivan went from being "trained assassin who like knives and is good at sneaking" to "trained assassin who likes knives and is good at sneaking and also has a bunch of writhing black tentacles under his skin that let him warp space and stitch his body back together from the inside whenever he's injured." (He's actually even less physically human than that, but that gets into spoiler territory.)
Road:
I've always had a fascination with the idea of a person not fully existing.
Blorbo Blursday #7
If you character had superpowers, what would they be and why? If your character ALREADY has powers, why did you choose those powers?
TAGLIST (DM to be +/-) @interroblog @muumysworld @afusiek @the-ravens-requiem @sender-paulson @everthewip @bluberimufim @amaiguri @akiwitch @thetruearchmagos @autumnalwalker @gracehosborn @cljordan-imperium @aether-wasteland-s @saintedseraph @deanwax @berristrawberri @owlbearwrites @the-down-upside-finch @stridingwriter @dandelion-jester @johnmurphysgirl @ghostsofchernobyl @alexsidereus @innocenthedgehog @unmellowyellowfellow @oh-no-another-idea @druidx @ibuprofen-exe @shay-creates @aquadestinyswriting
@loopyhoopywrites @n1ghtcrwler @writingonmymind @wardenred @void-botanist @dyrewrites @sm-writes-chaos @iishmael @romances-not-tragedies @inscrutable-shadow @athenswrites @uraniumwriting @pigeonwhumps @stesierra @bittersqxtch @imslowlydisintegrating @harleyacoincidence @keysandopenmind @pga-books @halleyuhm @wordswrittenbynight @worldsfromhoney @imaslothandsowhat @i-am-the-doctor @callahanscorner
@iamwritehere @hannahholowach46 @frenchbullpigs @informedimagining @anyablackwood @lili-loves-whump @laffy-taffy-creations @downtoithaca @rayesworld @susurrus-mxfluffy @kyuponstories @themswritinwords @valentinerose529 @365runesoftheamalgamations @guessillcallitart
#blorbo blursday#blorbsday#writeblr#writers on tumblr#ocs#writing process#my ocs#empty names#tag game
16 notes
·
View notes
Text
Twine Sugarcube 101
AKA, all you need to make a Twine game (I swear to god)
I’ve seen a lot of people go “Twine is too complicated for me :(” and give up before they’ve even started. And that makes me sad, partly because they’re giving up on a really cool hobby, and also because that’s false! It’s absolutely not too complicated for you!
I think the problem is that people look up Twine, see the documentation, and go “There’s way too much there! I can’t learn all that!” Well guess what- you shouldn’t learn all that, at least not yet. As a beginner you can skip pretty much all of this:
(Ignore <<linkappend>> too, forgot to crop that one out)
That’s a lot more manageable, right? Below the cut, I’ll let you know how to use all those remaining important things to make your story! Warning- it’s quite long! You might want to read it in sections! And while I’ll try to keep it entertaining, it’s also a coding tutorial, so... y’know. Might not be the most exciting read if you aren’t trying to learn Twine.
Welcome to below the cut!
First off, make sure your story format is set to Sugarcube 2. On the right side of the home screen (with all your stories), click format and choose the one labeled “Sugarcube 2.x.x” then open a new story with the green button! Here’s what you’ll see and what it all means:
Passages are all like individual web pages that you navigate between to play the game. When they’re linked together they’ll be shown like this:
Anything you write in a passage will just be shown on screen as plain text, no code required! But if you want to make anything more than just one passage with a bunch of text, you’ll have to link passages together with...
Links!
A link is composed of two parts- the text you see on screen, and the name of the passage you’re attaching it to. These are enclosed in [[double square brackets]], with a vertical bar | or a little arrow -> between them. If you want to show the passage name instead of alternative text, you can just put the passage name in square brackets alone! So this in the editor:
[[Visible text|Passage name]]
[[Visible text->Passage name]]
[[Passage name]]
Will look like this in the story:
Visible text
Visible text
Passage name
And all of them will lead to the passage labeled “Passage name.” You don’t even need to create the passage- when Twine sees that you’ve linked to a passage that doesn’t exist, it’ll add that passage for you.
That’s all you need to know! Technically, all you need to do to make a Twine story is add those fancy links between passages. If you add your awesome writing skills, that story will be super cool!
...but you want to do some fancy shit, right? Well let me introduce you to the next step up in complexity,
Variables!
“Variable” is a fun, code-y way to say “a bit of information that can change.” You could say they... vary.
Variables are useful for keeping track of information. If the player chooses to be blonde instead of a redhead, you might want to bring that up again- but you probably don’t want to write an entirely separate story based on that choice, right? So instead you save that information as a variable.
In Twine, variables are written as words with a $ in front of them. So my hair colour variable might be “$hairColour.” If you just write the variable out without any code, Twine will print the information you put into the variable. So if $hairColour is set to “blonde,” this...
She had $hairColour hair.
Will become...
She had blonde hair.
The value in a variable can be a boolean (ie. true or false), a number, or a string (like “blonde” or “any other string of characters”). They can also be fancy stuff like arrays, but we won’t be touching on that.
You can use variables to keep track of a lot of things! For instance...
How much money the player has
Whether a player has a key
What the player’s name is
I keep mentioning the value of a variable or “setting” it, but how do you do that? Well, one way is to add it to a link. If you want a link to set hair colour to blonde, for instance, you could write [[Blonde|Next passage][$hairColour to “blonde”]]. Clicking on that link would forward the player to “Next passage” and set the value of $hairColour to “blonde.”
There is a better way of doing it, however, but we’ll need to talk about...
Macros!
A macro is a snippet of code that runs when you put a special code word inside these <<spiky boys>>. You can write your own macros with JavaScript if you’re smart, find them on the internet if you’re even more smart, or just use the ones that come built in with Sugarcube.
The ones we’ll be talking about, and the ones that are the most important for most Twine games, are <<set>>, <<if>>, and <<link>>.
<<set>>
The <<set>> macro allows you to, you guessed it, assign a value to a variable. For instance, if you want to set $hairColour to blonde... well, that’s all you need to do! It’s just:
<<set $hairColour to “blonde”>>
It’s important to remember with the <<set>> macro that strings (collections of different characters) require quotation marks around them to show the code that it isn’t a number or a true/false value. If you put quotes around a number and try to do math with that variable, you’ll get a big ol’ error message.
If you’re using numbers, you can also use JavaScript operators in place of “to.” Each one will perform a calculation on the variable if that variable is a number, and then replace the variable with the result. If you want to add $5 to the player’s $money, you could use this:
<<set $money += 5>>
The “+=“ will add the number on the right to the variable on the left. “-=“ will do the same for subtraction, “*=“ for multiplication, and “/=“ for division. Easy enough, just don’t forget the = sign after the usual symbol!
By default, the <<set>> macro will be executed as soon as the page it’s on loads. Sometimes that’s useful, but sometimes you would rather the player click a link that sets a variable- like if they choose a hair colour. You might also want the same link to set multiple variables, like subtracting money and giving them an item when they use a shop. How do we do that?
<<link>>
The <<link>> macro is also pretty simple. All it does is create a link, and when that link it pressed it executes whatever is inside of it. Here we’ll be using it with <<set>>, but you can use it with all kinds of different macros and even nest some of them to do really complicated stuff!
As an example, we want the player to click “buy key,” give the player the key, and subtract $5 from their money. Here’s how we do it:
<<link “Buy key”>>
<<set $key to true>>
<<set $money -= 5>>
<</link>>
The text the player will click is in quotation marks, and after all of the macros we need to execute we have to close off the code by adding <</link>>. Easy, right?
But other than printing them on the screen, what can you actually use those variables for? Well, for that we’ll be using...
<<if>>
The <<if>> macro is my favourite, hands down, because it’s an easy way of accomplishing hard stuff. Simply put, <<if>> will check if the thing you asked about is true, and if it is, it will do whatever you put inside of it.
Here’s a simple example:
<<if $key is true>>
[[Use the key|Progress]]
<</if>>
Whatever is inside the <<if>> macro will be executed if the “if” statement is true. In this case, the link “Use the key” will be printed on the screen only if the player has the key. This also applies to code- if you put a <<set>> macro inside, that macro would only set a variable if the player has the key.
Now here’s a more complicated example, to show everything the <<if>> macro is capable of. Here we also want to check if they’ve already opened the door, and display alternate text if they have no key and the door is locked.
<<if $key is true>>
[[Use the key|Progress]]
<<elseif $doorOpen is true>>
[[Walk through|Progress]]
<<else>>
You need to find a key.
<</if>>
I’ll break it down line by line to tell you what each thing does.
<<if $key is true>>
This line is the only necessary one- it checks whether $key has been set to true. You can check for any value that a variable can be, like a number, true/false, or a string. You can also check for other things with this macro- for instance, “isnot” will check that the variable isn’t equal to the value on the right. “gt” or “lt” will check if the variable is greater/lesser than the value on the right, and “gte” or “lte” will check if it is greater than or equal to the value.
<<elseif $doorOpen is true>>
This line allows us to check for something else within the same <<if>> macro. Once the game has checked the original <<if>> and found that it is false, it will move on to checking each <<elseif>> until it finds one that is true. You can have as many <<elseif>>s as you need, and they can check the same variable or different variables, but only the first true one will be executed! And, of course, you can’t use <<elseif>> on its own- it’s stuck to the <<if>> macro!
<<else>>
This line is the last resort- if the original <<if>> and any <<elseif>>s have all been false, the game will execute whatever is after <<else>>. Because of this, there can only be one <<else>> line within any <<if>> macro! If you don’t have an <<else>>, nothing at all will be executed, so whether you include one depends on the situation.
<</if>>
This closes off the <<if>> macro. Nothing special, but very important! Put it after the last piece of code or bit of text you want the macro to control.
Phew. That’s it! That’s all I wanted to show you!
Now, HOMEWORK!
Okay, not homework, just practice. Here are some things you can try building to practice all these tools and get comfortable with how they work!
A store system with different items for different amounts of money
A character creation screen, followed by a description of your character (with variables!)
A puzzle that requires you to choose the right answer to proceed
If you have any trouble, need to ask any questions, or if something in this tutorial wasn’t clear to you, please let me know- you can DM me or send me an ask anytime and I’m happy to answer any Twine questions you have. I hope this was of use to you, and have fun making games <3
#told you i was making a tutorial!#not crosshollow#tutorial#game dev#twine game#twine#interactive fiction#gamedev
2K notes
·
View notes
Note
Elfangor/Loren fic prompt (no need to go Full Universe, a snippet is fine!): Tobias & the kids are sent back to 1983 via Sario Rip just long enough for him to meet his parents.
you asked for a snippet, a snippet is what you're getting, lol
"This mall is totally screwy," Rachel said, sitting back down beside Tobias and glancing around the food court. "There's a Chess King, and a Contempo Casuals?"
"Yeah, so what?" Marco asked, putting both his elbows on the table. "What does that tell us?"
"It tells us that we're back in time," Rachel said. "Seriously back in time, you know?"
"I mean, I think the Cretaceous, or the Battle of Agincourt, probably counts as 'seriously' back in time," Jake said. "What's the big deal about the stores, anyway?"
"It means it's the 80s," Cassie said unexpectedly, and everyone looked at her, surprised. "What?"
"How do you know what year it is?" Jake asked at the same time that Rachel said "Obviously it's the 80s."
"There's a Software Etc.?" Cassie said, jerking a thumb over her shoulder. "They got rid of those in '94, didn't they?"
"And there's an Orange Julius," Tobias said. "I thought those were only through Dairy Queen."
"What is an Orange Julius?" Ax asked. "Is it edible?"
"Yeah, if you really like OJ," Marco told him. "Okay, so it's the 80s. What does that mean for us?"
"It means we've gotta be careful," Jake said, bringing his voice down. "Really careful. Like, is this still our mall, the one in town?"
"Yeah," Rachel said. "The layout is the same even though the stores are different, and the food court tables are the same too, look."
"I don't know what that says about our food court," Marco cut in, eyeing the formica dubiously, "but I don't like it."
"Oh, come on, it's obviously been cleaned," Rachel said. "I mean. I think it has."
All eyes turned to the tabletop. Silence reigned, all six of them staring at the table, until finally Cassie shook her head with a sound of disgust.
"This is disgusting," she said. "You're all being disgusting. I'm gonna be thinking about this forever, thank you Marco."
"A pleasure to be of service to you," he quipped, grinning. "I think we should - !"
"Shut up," Jake said, waving his hand suddenly, cutting off the chatter. "Everybody, shut up, and listen."
"What?" Marco asked. "Somebody asking why there's a bunch of barefoot kids running around in bike shorts?"
The glare Jake sent him made him shut up, and the six of them clustered together, glancing over their shoulders.
"Okay, so what's so special about color graphics?" an unfamiliar voice asked. "It's not like you need color to do things like code, or type, or even play games."
Tobias turned around in his seat, zeroing in on the source of the sound. A woman, maybe twenty years old, was sitting a few tables over from them. She had long blonde hair that waved in the way he knew meant hours of careful hairspray and curling iron offensive maneuvers, and she was wearing a loose-fitting T-shirt tucked into peg-rolled jeans that were a shade of blue he knew Rachel was going to hate. It was her voice they'd heard.
Across from her, shoving mozzarella sticks into his mouth as fast as Ax would usually eat a cinnamon bun, was a tall, sandy-haired man who even Tobias had to admit was almost too handsome, rugged and chiseled in that underwear-model way that kind of crossed the line back into beautiful. He swallowed at least two of them at once and answered her.
"What's special is that colorized computer displays are over a thousand years old," he said, leaning forward and taking her hands. "And I'm tired of dealing with obsolete equipment. I already have to pretend like I care about the latest updates from IBM at work, why should I have an Apple II that runs slower than molasses?"
"I don't know," the woman answered, leaning forward to match him, grinning at him. "Maybe I like it when you curse at circuit boards." She slid one of her hands out of his, reached up, and dabbed at something on his chin. "You had marinara sauce on your face."
Something sparked between them when they smiled at each other, something electric that ran through the air. It half-escaped Tobias, but somehow what little he did catch pushed him to put his arm around Rachel while he watched.
"Color graphics are over a thousand years old?" Marco stage-whispered, looking from Ax to Jake to Ax again. "What the hell?"
The man dipped his head down, quicker than lighting, and licked up the sauce from the woman's finger. She burst into a shriek of laughter, almost pulling away from him, but he grabbed her wrist with his other hand and levered his weight onto his elbows, leaning in to kiss her.
<Stop teasing me,> he said, without using words, and Tobias thought his heart was going to hammer itself out of his ribcage. Everyone else was flinching, staring at each other across the table, open-mouthed and wide-eyed; he slumped down out of his chair onto the floor, cracking his head against the linoleum.
He knew that voice.
"Tobias?" Rachel cried as the chair slid back with a screech. "Are you okay?"
He ignored her and rolled onto his stomach, crawling out between the metal legs of the chair, staggering up to his feet and lurching across the food court to the pair of seemingly-human lovers.
"You..." he began, staring at the woman and the man as they jerked apart and looked up at him, fully aware of the fact that he sounded like a crazy person. "You're - you're Alan Fangor, aren't you?"
"... yeah...?" the man said, sounding guarded. There was something in his eyes that spoke of sharp edges.
"I - fuck, shit, fucking hell - I know you," Tobias said. He was hanging on to the edge of the table like his life depended on it, and his eyes were so full of tears already that everything was a brightly colored blur.
"Alan," the woman - mother, he realized, my fucking mother - said carefully, "we should go."
"No!" Tobias answered, shaking his head. "No, please, I just - !" He sucked in air, sinking to his knees, half-certain this was some kind of trap and he was seconds away from death, or else that he'd never left that damnable room with Taylor and her torture device. He shook his head, trying to look up at what he thought was probably his father. Whatever happens, if we snap back, if this is some Time Matrix bullshit, if this is the Ellimist - just let me say this, just let me hear them -
"Elfangor," he said, dropping his voice to a near-whisper. "Elfangor-Sirinial-Shamtul." His voice lilted as he spoke; Aximili had taught him the counterintuitive pronuciation as it was said aloud. "I know you." He blinked, and for a moment the tears were clear, and he was staring at his father's human face.
"I'm your son," he said. "From - from the future. 1998. I'm your fucking kid."
81 notes
·
View notes
Text
Falling for you ( Falling from Grace ) Jungkook x OC
Summary : Friends with benefits? Or maybe Enemies who just happen to fuck? Areum and Jungkook love driving each other crazy, but also can’t keep their hands off each other.
Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 Chapter 6
Chapter 7
Author’s Note : This isn’t a chapter update. Just a snippet of how they met ;)
Two Years Ago ~ How they met.
“So, first day at work?” My sister gave me a bright, vibrant grin as she watched me shimmy into my slacks , struggling to yank the skin tight fabric up my legs.
I was half tempted to just choose something a little less form fitting but, Jung Hoseok, my soon to be boss was a hot piece of ass and I wanted to make an impression.
The kind of impression that would end in me , under him , horizontally. And him well, inside me preferably. God , he looked so hot in those fitted suits of his , dark hair falling into his face . That sharp as a blade jawline and that beautiful damn smile. He was so humble and friendly, which meant that he had a gorgeous daddy dick and knew exactly how to use it.
My sister, so attuned to my thinking , read my mind like a book.
“Don’t even think about sleeping with your boss again. That's how you got fired the last time remember?” She said sharply.
I rolled my eyes.
“I quit. Because he lied about being divorced. There’s a difference.”
“Still Hobi is a stickler for rules , don’t do anything stupid.” She warned.
I grinned a bit.
My perfect, holier than thou sister would never understand the thrill of good sex, I thought . And one look at Hoseok told me that he had bomb dick game. And men didn’t really care about rules when they saw my ass in this particular pair of pants. It was a theory tested and proven.
“Its not stupid to want to ride a gorgeous man into the sunset. It’s the only fairytale ending I believe in “ I said loftily.
“Well, I’m only looking out for you , Areum. I am incredibly proud of you for landing this job. Jeon Inc., is one of the biggest conglomerates in our country. You did well.” She looked annoyingly bright and cheerful for someone who had actually got up at the ass crack of dawn to make me breakfast and had then driven half way across Seoul to deliver it at my apartment.
I loved her with my whole entire heart but my sister had a tendency to sometimes treat me like I was still five years old.
Which I loved, most of the time.
But not when I was already running late for the first day of work.
“unnie, i love you but you need to go suck Seokjin’s dick and leave me alone.” I grinned wide at her and she turned an alarming shade of red.
“Areum!!!!!”
~~~~~~~~~~~~~~~~~~~~~~~~~
“So, you’ve familiarized yourself with all the Office policies, right?” Hoseok narrowed his eyes at me and I groaned.
“Yes.” i muttered, morose.
“Yes?”
“Yes sir.” I groaned. God, he made me want to kneel down and suck his dick but also made me want to knee him in said dick, at the same damn time.
“Especially the clause on interpersonal relationships in the office and the dress code.”
I gritted my teeth.
Ugh, no amount of daddy dick was worth putting up with being talked to like an errant school girl ,
“Yes, sir.”
“Good. Now, we have a well stocked wardrobe department in the fifth floor. I would suggest you go change into a more suitable pair of work pants “ He waved his hand, dismissing me and I turned around, trudging back to my desk.
So much for nailing the boss.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I was a little awed that the company had a bunch of things for the employees . Things I’d never heard of before. There was an actual ‘nap’ room where you could take a twenty five minute nap , once a day. A wardrobe department for when you needed to change your clothes and a whole garden out in the terrace for team meetings that were informal.
Apparently, the entire set up had been designed by the younger Jeon kid, Jeon Jungkook. The whole thing was patented in his name and he was also a super talented digital artist, evident in the bazillion gorgeous murals mounted all over the office, all of them signed with a beautifully scripted “JK”.
I hadn’t met him yet but he was apparently incredibly smart, incredibly handsome and also the biggest man-whore in the entirety of Seoul.
Which fair enough. i didn’t begrudge good men the right to pussy. And if he was getting so much of it, he was probably good at what he did. That was cool.
What wasn’t cool, was him apparently leaving his cum stained fucking pants in the closet in the Women’s section . The same closet i had dug into five minutes ago looking for appropriate clothes , only to have my hands met with a damp, sticky white mess that clung to my fingers like ...well like cum.
“What the fuck....!!!” I screeched in disbelief, stumbling back and landing hard on my ass, shaking my hand in despair like that could get rid of the grossly disgusting mess that now coated my digits.
Completely out of it, I wiped the mess on my blouse of all thing, realizing a split second too late , what a bad idea that was.
“Oh, gross!!” I sobbed out in disbelief .
“You alright, angel?”
The words came from right behind me and i whirled around, surprised.
I got the wind knocked out of me as i stared at the fine , fine specimen standing in front of me. ‘
it was a face that looked like it was straight out of the most luxurious fashion magazines in the world. Beautiful ebony black hair that fell into deep, almond shaped doe eyes. Eyes that fairly glittered with mischief. He had a nice strong nose and a beautifully red pair of lips , quirked up in a wide smile.
“You alright?” His voice was perfect, not too deep but with a masculine cadence to it.
He was completely shirtless, grinning like it was going out of style, as he pulled on pants over his gloriously muscled thighs. I watched him carefully tuck his underwear in, before buttoning the pair of jeans up.
He was tall, just a little shy of six feet and had the body of Adonis, with broad shoulders, beautiful pecs and drool worthy abs that tapered to a ridiculously tiny waist.
I stared down at my hands and his eyes followed mine.
“Oh, my bad. I thought that was the closet for the used clothes.” He grinned unrepentant.
it took me a second to realize that it was his cum.
I was covered in his cum.
“What?!” I hissed in disbelief , staring at him in pure horror.
He held his hands up.
“This is not my fault. The girl told me she’d swallow every drop of it and then choked half way through-”
“Oh my fucking God...” I groaned in disgust.
“Although I’m not complaining now... Wouldn’t have met you if it weren’t for her... What’s your name, pretty?”
I stared at him, slightly slack jawed.
What kind of a man whore-
I froze.
No way. It can’t be.
“Jeon Jung Kook.” I said drily.
His eyes widened.
“Well now you have the advantage ....i don’t know your name.” He pouted.
“You should be in a cage.” I snapped, turning back to grab the nearest skirt. I moved to leave but he stepped in my way, blocking the path with both hands held up.
“What are you doing?” I narrowed my eyes at him.
Jungkook chuckled.
“Come on baby..Don’t be mad.. Its just a little bit of cum. Granted you did not get the pleasure of getting it out of me yourself but that can easily be remedied if you just-”
“You will not have a dick to cum out of , if you don’t move right now.” i warned him.
Jugkook’s eyes widened at that.
“Um... you do realize who I am?” He smirked.
“A man whore with bad taste in hook-ups? A girl who can’t even swallow? Really Jeon, how desperate were you ?” I smiled.
His eyes danced at that.
“ Not as desperate as I am now.... Go out with me.”
I laughed, shaking my head.
“Not happening. Get out of my way.”
Jungkook let out an actual groan at that but he moved aside nonetheless.
“What??..come on, please , angel, just one date.....”
I shook my head.
“ I’ll send you the bill for my dry cleaning Jeon.” I flipped him off before stalking right out of the room.
“Gonna make you fall in love with me, new girl.” He called out from behind me.
I scoffed at that.
Yeah right.
Author’s Note : I had to write their first meeting okay???? I’ll update tomorrow or the day after .
@veronawrites
@ladyartemesia
@jincentvangogh
@unicornbabylover
@ggukkieland
@yoongisdragon
@aamxxrii
@brooky95
@apollukee
@taesgalore
65 notes
·
View notes
Note
Hello! I’ve been asking a bunch of people to do this request because I want to see everyone’s different headcanons. How would the MLQC boys react to MC being a single mother? She never told them she has a 7yr son because they never thought to ask and we’ll call him Liam instead of “her son”. So they found out when Liam ran to her. MC is still young since Liam was born from unfortunate events like rape (she loves her son to death). How would the guys try to bond with Liam?
Trigger warning: ask centers around rape
🍷 Victor 🍷
He never would have imagined you were a single mother, let alone to a seven-year old. You were really good at hiding it!
It’s likely he overheard a snippet of a phone call when trying to approach you about work. A tiny little ‘love you mommy!’ on the phone during a break he didn’t know you were taking
Is kind of blown away you can strike the work-life balance and avoid being so consumed. Victor, himself, is bad at balancing intimate relationships outside of work so you mystify him
Gets super curious about this kid and slyly devises some work event that it’d be okay to bring them to
Realizes it’s a bad idea when he’s overwhelmed with the sheer amount of people--and kids--he has to greet, but likes that your kid was pretty quiet (shy) and sat at a table with you
He was playing with the big, fancy cloth napkins and Victor decided to fold one up in a semi-complicated design next to his
You introduce the two and it starts as Victor showing him how to fold napkins and teaching him about food
Casually drops Souvenir having a ‘Little Chefs day’ and encourages you to bring him
Victor can’t be the one running the class (obviously) so Mr. Mills does it and he helps grab all the stuff to make mac n’ cheese
Your son follows along, gets messy, and corrects Victor on how much cheese mac n’ cheese ACTUALLY needs. (“You want it to be really good! The best, like angels singing in your mouth, and that means lots of cheese!”)
Victor’s stomach hurts from all the cheese, but the whole thing was amusing
He’s suddenly ‘in the neighborhood’ a lot, and comes to sit with you and your son
When you have to collaborate with him on work, Victor insists you bring him so you don’t waste money on a babysitter. (”There’s two of us and one of him, it can’t be that hard.”)
Eventually learns the truth after the two of you have grown much closer and takes a deep, personal interest in making sure Liam never has that awful person for a father figure
“Just because” trips to places the three of you would like
Is basically your boyfriend/the dad figure but won’t own up to it unless super pissed off or being challenged in public. Will admit to it more when you’re married.
📢 Gavin 📢
Kind of dense about it. Had suspicions but no proof, and when he saw you two side by side, you picking him up to hug him, the similarities were PRETTY OBVIOUS
Birdcop felt kinda dumb
Becomes hyperfocused after that. When did this happen? A SEVEN YEAR OLD?! He never would’ve guessed!
Is worried the kid will be the total opposite of him--not super active, hates loud noises, etc--but is glad he can break the ice by showing him a cop car or his motorcycle
Answers all the typically excited job questions as best he can
Conveniently shows up at a school fitness day as a supervisor or some safety tie-in with the police department
Is happy to see him being nice to the other students and participates a little but mostly watches with you on the sidelines
Doesn’t ask you some of his questions since there’s other people nearby, but invites you two to ‘a little place’ he was going to afterwards
One dinner date turns into a few more, and Gavin is grasping at straws trying to invite you to stuff just to hang out. He’s got a soft spot for the kid and he sees his eyes light up and Gavin just can’t.
They turn into weekend buddies--fun at the park, movies, the whole nine yards!
He realizes this dynamic is getting pretty serious when your kid invites him to an award night at school. It’s just you two and Gavin is embarrassed but soooo proud! His heart is fluttering!
You tell him the truth about Liam’s conception and Gavin can only HOPE the guy is already dead. Boy is MAD. The news reported some wind issues for the next few hours, even into the next day.
Probably has a dark circle of people and MAKES SURE the guy doesn’t cause you any problems and stays FAR AWAY.
Focuses on being a good figure in Liam’s life.
The type to go ‘I know that kid’ and cheer him on at school functions. He’s got a distant older brother/aloof but warm personality so the transition to dad is going to be natural and hard to see.
🔬 Lucien 🔬
Probably figured it out before you ever told him. Considered that he’s a cousin/nephew or the kid happens to look somewhat like you (features can be common, etc.) but his gut says otherwise
Now that he thinks about it, he’s seen the kid off in the background when he dropped by your house sometimes. He just assumed you were babysitting a neighbor child.
When the two of you come to see him, holding hands, he knows. You’d run back to Lucien’s house and picked something up for him while he was stuck in a lecture.
Is too nosy for his own good--no matter how subtle--and offers to treat you for the errand. Whatever your kid wanted, he picked.
Lucien’s a people-watcher and found your kid’s table manners pretty interesting and he was pleased to note he wasn’t overly loud.
Their interests didn’t perfectly line up but Lucien’s absolutely voracious when it comes to learning and reading, so he had SOMETHING to say about Liam’s likes. Didn’t mind learning more from your excited, scatterbrained kid. It’s always funny to see people so passionate.
If he likes to sketch, Lucien could probably turn a sketch into a tiny robot or something. That puts him high on Liam’s list!
If he’s a more active/outdoor child, Lucien will invite the two of you along on a less-serious version of field research
Lucien can somehow always find the most interesting but less public city events, so it makes it fun and mysterious to tag along
Volunteers to babysit him when you’re super busy
They swap books and Lucien seems to have extra movie tickets lately
You guys drive to the Research Center to check on him one night when his experiment runs late and Lucien knows that this is a thing. You guys are a thing now. You’ve shown him that dedication and he’ll give it back two-fold (at least).
When he realizes no father figure’s coming in to make a fuss, Lucien has several theories. Finally inquires over a cup of tea, late at night when Liam’s asleep.
“Although certainly not ideal, Liam’s proof that good things can come out of a bad situation.”
He’s pretty vigilant about renewing any court-based paperwork that involves keeping the father away. Would probably kill him to really get him out of the picture, but has too many ideas and would rather not bother. The ultimate victory would be yours and Liam’s success, and he’ll invest in that instead.
🎤 Kiro 🎤
You and Liam were out buying groceries and running errands on your day off. Kiro was out (in disguise) trying to follow the diet his nutritionist set up...plus a few bag of chips
The two of you ran into each other at a booth giving away free samples. Kiro ABSOLUTELY can never turn down samples because they’re too small to matter and they’re usually junk food.
He says hello vaguely, as always, but when the kid says ‘Mommy, who’s that?’ Kiro absolutely loses it with disbelief and excitement
You rush him back to your house before he can blow his cover and the media gets the wrong idea
Kiro’s naturally a big kid at heart, and with his charming Evol, it won’t be hard for him to connect. Not that he’d use it.
If he gets too excited, it’ll happen accidentally.
He’s used to kids being excited to meet him so it’s a pretty easy introduction.
They talk superheroes, food, and all kinds of things!
If your kid’s not a big singer or dancer, Kiro’s more than happy to show him how to play the guitar or drums the next time you hang out. Kind of regrets that last one. But hey, he’s happy! That counts for something!
These two TOTALLY have a system where Liam brings him ‘contraband’ food when you visit and he HAS to take it because it would be rude to refuse a fan’s gift. Savin is not pleased.
Liam starts to understand that Kiro’s really busy or can’t go outside a lot/has to be private, so when the three of you hang out you usually bingewatch stuff or play video games. There’s always waaay too much takeout, but it’s delicious!
If you go to Kiro’s place, he probably installs a little fake sports hoop so they can play indoor games
Sometimes drops little coded messages in live vids (”And a special hello to my main man L!”) he loves it because it drives the internet absolutely nuts with trying to figure out who it is
He’ll casually arrange phone calls/voice messages from any of your son’s favorite TV characters/actors and make it seem like a ‘no biggie’ kind of thing. Kid super loves him then!
Not 100% what Kiro was aiming for--just trying to do something nice--but he’ll take it!
When he bothers to share any good news with Kiro, that’s when he knows he’s in the circle. You guys are close now.
When Kiro’s out supporting bands of designing a new stage line up, he likes your son’s input and will probably add a few of his favorite bands just so he has a reason to come.
It’s an unlikely family, but it’s a happy one. A happy one that is guarded to the teeth and Kiro has no qualms about bulldozing that disgusting excuse of a human in court.
May or may not put out a hit as Key. He’s a master hacker and could get rid of traces pretty easily
119 notes
·
View notes
Photo
Diamond◈Hex Devlog #2 Spaghetti
◈ TL;DR ◈
Added moving platforms.
Coded the basis for pushing blocks around with more flexibility.
Not that much new art, but some!
◈ If it’s stupid but it works... ◈
I finally have moving platforms, although I don’t think my code is in its best state right now. My game is just a retro style platformer, but I get the feeling that if a lower end PC were to run it, it would struggle at times just because of how unoptimized my code is, even tho as of right now I’m not doing anything particularly tasking. I’ll look into optimizing some of what I’ve done, but my priority this week was just to get it working, and work it does! One thing that is missing tho, is that you don’t carry any of the momentum that the moving platforms give you so the instant you jump off one, no matter how fast you are moving, you come to a screeching halt. It’s not the worst thing in the world but it can be kinda jarring in some ocasions.
◈ Hold me and don’t let go ◈
So with moving platforms, came another coding challenge. Imagine you put an iceblock in a swing, and then you stand on top of that iceblock. You’d expect to move alongside the swing, but the way my code works, that wasn’t the case. I had to add a bunch of little snippets to make sure that objects in the world moved when it made intuitive sense. Every game has its rules, and you can slowly figure them out by playing, so I’m hoping that the way things are right now, people can just get a sense of what you can and can’t do over time, but that remains to be seen.
◈ Who even tied those trunks? ◈
So I do a lot of research about aesthetics in games, specially platformers, just because I like to steal a lot, and one of the most recurring themes I see in platformer jungles is some kind of civilization that is native-american coded. You usually get like old aztec-like pyramids, and Indiana Jones traps, and I can see why that can be so attractive, it adds so many gameplay possibilities when you include some man made structures in an otherwise regular jungle. And that’s a trope that to my own dismay, I don’t want to use. The first area is called the Twisted Forest, it’s a dangerous laberynth of trees and nature that no one dares explore. It’s supposed to be a place where nature just expands to it’s most self indulgent form, and well that doesn’t really jive with a civilization. So I’m (very very) slowly trying to come up with fun gameplay ideas that can adapt to a place where even the flowers pose a threat. That scary atmosphere may not be super obvious in the gameplay gifs I’ve shared so far, but that’s in part because th upper parts of the forest are a lot nicer, and the deeper and deeper you go, that’s when things get spooooky. Hopefully, at least.
◈ How did we do this week? ◈
It wasn’t the best, I still have a lot of animations pending, but I’m happy with what I got done. Particularly those swinging vines, I spent so much time tweaking tiny numbers to get them to look just right. Like for real, you have no idea the impact that the difference between 0.51 and 0.52 has in the way they sway.
◈ Next week’s goals ◈
I want to get some more environment art and enemies done. I think having the same forest tiles week after week can get a bit boring.
◈ May the Moon share her blessing with you all! ◈
17 notes
·
View notes
Text
RECENT NEWS, RESOURCES & STUDIES, June 28 2020
Welcome to my latest summary of recent ecommerce news, resources & studies including search, analytics, content marketing, social media & Etsy! This covers articles, podcasts, videos and infographics I came across since the late May report, although some may be older than that.
I am currently working on Etsy search testing and a few new blog posts and pages for my website, so it may be a few more weeks before I get a new report out. In the meantime, if you have an questions, comments or suggestions, please contact me here or on my website.
TOP NEWS & ARTICLES
Ecommerce sales are way up, but so are many costs, and delays in shipping are part of the problem. “...many of our merchants start preparing mid-year for peak-season volume, holidays. We’ve seen many merchants hitting and even exceeding their normal Black Friday and Cyber Monday volumes consistently through April, forcing them to adapt quickly for greater capacity.” UPS is charging high-volume customers a surcharge based on how much more they are shipping compared to normal times, and also for an increase in oversized packages.
Mail delivery is still slow in many countries. Canada Post hit an all-time delivery record with 2.1 million parcels on May 19, but may finally be getting caught up. [article in French] Shipping between countries can also be substantially delayed, in part due to the lack of air traffic right now. USPS is using sea transport for packages to some European countries. And USPS rates are going up for international shipping in July, due to the new Universal Postal Union deal. "Anyone who is a bulk shipper, your rates are going up".
A reminder that the US economy isn't suddenly going to stabilize in the fall; it’s likely to crash. The US is now officially in a recession. Many people are not going to have money for a lot of discretionary spending. Furthermore, some categories of items will likely drop in price due to company closures, supply chain issues and bankruptcies. That will increase competition at the same time there are fewer buyers for many types of items. Ecommerce sales in the US are projected to rise 18% this year, but it won’t be enough to make up for the loss of brick & mortar retail sales. “The apparel and accessories category is typically the second-largest in e-commerce, for example, but will only grow 8.6% as consumers shift spending away from discretionary, non-essential purchases.” Retail in the US is expected to be down more than 10% in 2020.
ETSY NEWS
Etsy has released an addition to the iOS app that will allow shoppers to use augmented reality to see wall art on their home’s walls. The Verge was critical of how long it took for Etsy to catch up with the competition, and the fact that it is not available for Android yet. TechCrunch went into more detail.
As mentioned last time, you can now add short, no-audio videos to your listings. Etsy is so big on this, they are offering listing credits and ad credits to sellers who upload 5 or more videos by July 6. As always, make sure you read the legal policies before you participate in this offer.
The Etsy Design Awards are back, with submissions due by July 15th. Note that they are only open to 38 countries, for some reason. There is a forum discussion thread with tips, and a podcast [audio & transcript] with previous winners.
If you sell any items for kids, you will find this trending items article from Etsy useful. Searches including “kid,” “child,” or “baby” didn’t go up as much in April as one might have expected, given the pandemic shopping bump, but puzzles were popular. They include some search terms: for example, there was a “250% YoY increase in searches on Etsy containing “jump rope” in April. Also, “while school may look different this fall, we’re already seeing an increase for school-related searches compared to the same time last year.”
Face mask seller ZhenLinen was interviewed on NPR [text and audio] about mask selling, and was even asked about the offsite ads fees near the end. They sold 31,000 masks while their event-supply business was in pandemic limbo; most of those sales were through Etsy. The good news articles about mask sales, & suggesting Etsy as a source of masks, are continuing, although some do mention slow delivery times and even undelivered orders. By the way, if any mask sellers are looking for new places to sell, Facebook finally caught up and is now allowing mask sales, ads and other promotions.
According to analysis of Etsy’s API data, May 2020 was Etsy’s best month ever. Remember that the API data misses things like sales of multiples, so it is not the most accurate source, but I don’t have any reason to doubt the statement is true.
Etsy stock went over $100 for the first time, before dropping as the rest of the market went down.
You have probably already seen Etsy’s statement on race issues after the recent murder in the US. “That’s why today we are announcing donations of $500,000 to the Equal Justice Initiative and $500,000 to Borealis Philanthropy’s Black-Led Movement Fund, as well as matching employee donations. We encourage our community to join us in supporting these important organizations. Etsy is built on a belief that communities have the power to change the status quo. Change is hard-fought, and we are committed to this fight.“
If you have your real name on your Etsy account, don’t attract any attention from the police.
SEO: GOOGLE & OTHER SEARCH ENGINES
If you don’t really understand what algorithms are and how they work for search engines, you will want to get caught up here. Key to understanding: “An algorithm is not a formula.”
This is a bit advanced, but it’s a good explanation of how to figure out searcher intent in Google results, and then fulfill it with new content. [video, transcript, and downloadable form]
Linking from one page on your website to another can be an important part of SEO. It can also help you get more page views, if you link to new pages from your most popular pages. Creating internal site links on the same page through a table of contents [advanced, coding info] can even get you more links in Google search results.
Speed on mobile devices is also a big part of SEO as well as conversions. “a 0.1 second improvement in site speed resulted in Retail conversions increases of 8.4% and average order value increases of 9.2%.”
Bing made changes to its backlink tool, including the ability to see your competition’s backlinks. The option is part of Bing’s Webmaster tools, & allows you to analyze “similar sites”. Their Webmaster Tools now can also analyze your site for SEO errors.
A former Google employee is starting a new search engine, called Neeva.
Some SEOs recommend removing “low-quality” pages from your site to improve your overall rankings, but low-quality doesn’t necessarily mean pages that few people visit [text & video]. And short posts are not necessarily “low-quality”. If your page is mostly duplicate content, it is like low quality, but just repeating a few lines on each page is not duplicate content.
Google missed a few episodes of its Google search news YouTube post during the pandemic, but they were back on May 26 with an update. They’ve also finally released their webspam report for 2019. “we observed that more than 25 Billion pages we discover each day are spammy.”
Advanced content [video with multi-language subtitles, & text summary in English]: Google, JavaScript, & links.
Shopify sites have built-in blogs,and those blogs can help you get sales through SEO. And while we are on Shopify SEO, here is some advice on fixing technical SEO issues on Shopify sites. [the second is advanced content unless you know some coding]
While having an author page isn’t a requirement on any news/blog site, it might be a good idea anyway [text and video]. Content that is useful for readers is ultimately good for your site’s SEO.
Here is a history of Google’s PageRank, and what it still does for ranking.
Did the Google May core update really mess up organic search relevance? Some people think so. [I had noticed the Wikipedia drop but thought it was just for a particular search.] There may be more ranking updates underway right now.
Google plans on introducing user experience as part of the ranking algorithm, although it won’t happen before next year, and we will get 6 months warning. Search Engine Land lists the following elements: “whether the page loads quickly, if it’s mobile-friendly, runs on HTTPS, the presence of intrusive ads and if content jumps around as the page loads.” They add a bunch of technical advice, and the tools to follow up on it.
Do you find SEO confusing? Don’t worry - even the pros working for big companies make huge errors.
(CONTENT) MARKETING & SOCIAL MEDIA (includes blogging & emails)
Updated infographic with the common social media image sizes used today. (Several of these get published yearly, because there are always changes.)
Is blogging still relevant? [TL;DR - yes] And if you want to write more interactive posts, here are some tools for that.
Video app TikTok made a lot of money in April, but is seeing competition from a new short video app called Zynn, which allows users to make money by watching videos and bringing in new users. However, Zynn has already been removed from Google Play store amid accusations of content theft. Instagram has a challenger called “Reels”, and even YouTube wants some of that TikTok traffic, so they are introducing 15 second videos. Meanwhile, TikTok is coming under closer scrutiny for its invasive tracking.
Every social network apparently needs to have their own version of Stories these days, so Pinterest has introduced a new version of Story Pins in the US. “Unlike Stories on other platforms, which are often self-focused snippets from someone’s life, Pinterest Stories Pins are designed as clickable content focused on sharing ideas. For example, Story Pins could offer a step-by-step guide to cooking a recipe or creating a craft project. A Story Pin could also offer ideas around how to reorganize your home office, keeping the kids entertained, beauty tutorials and more.”
Google appears to be imitating Pinterest with their new release, called “Keen”. You add items yourself but Google then attempts to find more things you are interested in, using AI.
If you are looking for some new tools to help with Instagram, Social Media Today compiled a list of 5 recent ones. They include image processing, templates, and analytics.
Twitter is beta-testing the ability to tweet sound files directly from the platform, instead of embedding links to other sites. The article notes that these may be more difficult to moderate than text tweets would be.
Two of the three parts of this article cover local businesses, but the middle part has some promotional ideas that mostly involve content marketing & social media. Nothing groundbreaking, but a decent list if you are looking for new free ways to advertise.
ONLINE ADVERTISING (SEARCH ENGINES, SOCIAL MEDIA, & OTHERS)
Semi-advanced - how to improve your Google Ads optimization score.
GCLID is short for “Google Click Identifier” to help track ads and conversions. You can learn more here. [Understanding this is useful for both your own ad campaigns and understanding other ads, such as the Etsy Offsite Ads program.)
Money coming in from social media video ads has increased from the lows in April. Facebook ads have improved the most.
New advertisers on Instagram will not necessarily have to link their accounts to Facebook any more. It may be linked to a campaign to “stop hate for profit” that calls for people to stop buying Facebook & Instagram ads during July, and which has attracted several big players such as Unilever and Verizon. Some companies are leaving all social media ads, or are extending the Facebook boycott until the end of the year. But as the first article points out, Zuckerberg’s complete control of voting means he can’t be turfed by a board just to protect profit, so a short boycott may not be the best way to get change.
Facebook published a new explanation of how ads work on the platform.
STATS, DATA, OTHER TRACKING
For people who are new to Google Analytics: here are some things you should be tracking, as well as these, and some tips on finding source info for SEO work. If you want to improve your customers’ experience with the site, check out these tips. [There is some crossover between the 4 articles, but I think that those of you trying to learn more detailed examples of how GA works will find everything useful.]
What is a “session” in Google Analytics? This article includes screenshots & tips on changing their length.
You can get great keyword data from the Google Search Console - here’s how.
ECOMMERCE NEWS, IDEAS, TRENDS
Online shopping has received a huge boost from the pandemic lockdowns, and big online marketplaces are now competing for new small businesses to fill the growing demand. Walmart outsold eBay in May, for the first time ever. Things are slowing down a bit, though: “buy-online-pick-up-in-store (BOPIS) had begun to “plateau.” BOPIS growth in May was 195% year over year, which was down from its April peak of more than 200%.”
Amazon is being criticized for allowing many prohibited items to be sold on the site, even through “fulfilled by Amazon”, so the items are stored in its warehouses. “Graham did not respond directly to many of our specific questions, including how many of the banned items that The Markup found had been sold, why the company had not noticed some of them for months, why some were listed as Amazon’s Choice, and why many were stored in Amazon’s warehouses for shipment. He did not respond at all to questions about why Amazon itself had offered banned items for sale. Most of the banned listings we reported to Amazon have been removed, although at least three have popped back up.” [emphasis added]
Amazon is now offering multi-channel fulfillment in the US; you don’t even need to use Fulfillment by Amazon to sign up. They’ve also introduced lines of credit for sellers, through a partnership with Goldman Sachs.
eBay is rallying sellers to object to a proposed Louisiana law that would force marketplace sites to verify the identities of higher-volume sellers in the state. The law was passed anyway, and takes effect July 1. Here are the highlights of the new law.
Now-fired eBay employees harassed and stalked the EcommerceBytes owner and her husband for months after eBay’s CEO at the time said eBay needed to “take down” the site & its owner.
Walmart now has ThredUp as one of its third-party sellers on the Walmart website. They sell second-hand clothing and accessories for women & kids, often famous labels. Sales are all online but buyers will be able to return things to Walmart stores.
Walmart has also partnered with Shopify, allowing small businesses to list directly on Walmart’s website through Shopify. This appears to be a limited initiative, as they only plan on including 1200 Shopify sellers by the end of 2020. Most analysts think this is a plan to compete with Amazon more directly.
In addition to its existing website, Target is now offering items on Instagram Checkout.
Shopify has been getting great media coverage lately, including this article suggesting them as an alternative to Amazon third-party selling, once the new “Shop” app gets some traction.
BigCommerce has introduced drag-and-drop design tools for its website builder.
Square has begun using rolling reserves to reduce its risk with some sellers. “In one instance, Legal Knock, a company that builds websites for law firms, told the Times that it never had a customer demand a refund for their work and yet Square kept $4,000 in reserve in May. Sean Weber, the owner, said he had trouble contacting the company and wasn't satisfied with its explanation. He even said Square blocked him on Twitter.”
Upcoming PayPal changes for US users include seller protection for some digital items, and not necessarily requiring buyers to return items to win a significantly not as described case. Remember that many PayPal changes start with the US and then expand to other countries; Canadian changes are here.
BUSINESS & CONSUMER STUDIES, STATS & REPORTS; SOCIOLOGY & PSYCHOLOGY, CUSTOMER SERVICE
When thinking about customer returns, remember that a lower-than-average return rate is not necessarily your top goal. “You may ask, “why would a merchant want to increase returns?” It’s because they’re using returns as a growth driver. They’ve figured out, for their respective businesses, that a higher rate of returns actually nets out to an increase in sales and repeat purchasing. So much so, that the overall uptick in business far outweighs the increased costs of more frequent returns.”
Consumers are reading reviews more than ever, but half of this study’s respondents said that “‘too many companies’ are creating fake reviews online.”
Many people are tired of the “things are different” ads that have predominated, & want to see more ads showing people getting back to normal. “The U.S., U.K. and the Netherlands are primed for a jump in fashion purchases, with significant percentages of consumers in those countries planning clothing purchases in the next 30 days. The finding suggests that fashion marketers may increase their marketing efforts to reach consumers who are ready to buy apparel as lockdowns are lifted.”
We don’t know what the holiday shopping season will look like this year, so ecommerce businesses should be planning for many different scenarios.
Here’s an interesting overview of how some searches changed in the first few months of the pandemic. [infographic] And some of the shopping changes people made, especially Gen Z, may be permanent. “...younger consumers are shifting their habits faster than their older counterparts.” That report also states that “33% of these consumers have increased their online spending, for a net increase of 6%, versus 23% of consumers in older generations, or a net increase of 1%.”
Here’s more on the second-hand clothing trend that is hitting its boom years. “According to the report, secondhand goods are expected to make up 17% of a person’s share of closet space by 2029, up from just 3% in 2009.” Gen Z is a big user of Depop, which has a lot of altered and enhanced vintage clothing available.
MISCELLANEOUS
This article has inspired me to completely redo my website’s About page. Not yet, of course, but some day soon…
Speaking of websites, here’s a good list of dos & don’ts for a contact form.
eBay may be probing your computer when you visit, and that is not always legal.
Free Zoom accounts can’t set up encrypted calls/meetings, because “the firm wants to keep this feature away from free users to work with law enforcement in case of the app’s misuse.”
Finally in privacy news, Google is being sued for still tracking you in various ways when you use Chrome’s incognito mode.
#etsynews#search engine optimization#analytics#content marketing#customer service#ecommercetips#social media news
1 note
·
View note
Text
I’m trying to kick myself into some level of production and the easiest way is to read over the weird snippets of Gage and Gamma’s story!! ✨ I always like writing out their interactions and I still like this bit a bunch. I really should finish up the whole story. :’l
The last gatorclaw dropped to the ground with a crunching thud. The small metal hub shattered from its weight behind Gage and Gamma hopped off with an astonishing amount of grace.
And then, once safety set in his bones, all the emotions left Gage at once.
"You can’t be fuckin’ human,” Gage laughed, almost hysterically as excitement flooded out throughout his body. He let out another hardy laugh, hand covering part of his face, because god damn! Three gatorclaws, three of them! They should've been dead, dead, gone and halfway on their way to eaten. It was unreal.
Did he know how to pick them, or what!
Gamma just shook his head though as he made his way over, wiping the blood off his knife. Gage imagined a soft smile on his face. It looked great like everything else in this moment.
"You know what," he said quickly when Gamma offered him his hand, tugging him back up to his feet. Pain rung out from the wound though, and Gage flopped right back down. He was too hopped up on adrenaline anyways. His body left like rubber and like a live wire all at the same time. It was probably why he was rambling so much, so hard. But, who cared! They were fuckin' alive! "I'm gonna buy you that stupid knife from Kathleen! Right when she gets back from the Commonwealth, it's yours!"
"That thing's like a good ten thousand caps, Gage." Gamma almost snorted, kneeling down and fishing around in their bag.
"It's, fuckin', yours." He said again, stronger and he reached down to force Gamma's attention up. He didn't care if this idiot never wanted to see the world with his own free eyes, Gage was making a promise, internal and eternal here and now, under the hazy light of the moon and the thick scent of copper in the air: he'd follow this idiot to the Glowing Sea and back if he asked.
No one, no one else in this entire fucked up world could inspire Gage to feel like that. He didn't just feel it. In the moment, he knew that Gamma had his back in a way no one else ever had. He just took on three fuckin' Gatorclaws to save Gage's ass! Anyone else would've run. Anyone else should've run, it was the smarter plan but, God. He didn't.
He could kiss him, honestly, shitty mask and all.
But under his hands, Gamma stilled. Or rather, he was still. Unlike Gage, he wasn't shaking. He wasn't riding a high and such a simple, small thing stuck out in his frantic excited mind like the realization of pure trust he felt for this boy.
Anyone else would be Gage, they're be reacting. They'd be screaming in joy, they'd be shaking in terror, hell, maybe they'd just be puking their guts out just because over such a goddamn impressive feat. They'd be bragging! Something! Anything!
But, no. Under his hands, Gamma was still and the world seemed like it shuddered to a complete stop as Gage realized this was par for the course for him. Did he ever really react? Not after fights, he always were cool, calm and collected, from Colter to now. The words of his from before reran over his mind, and a sinking horror arose in him.
You can’t be fuckin’ human.
Sitting in a old marsh in a reactive hellscape at night, Gage held Gamma's face in his hands, staring at the boy as an realization dawned on him. The thick smell of blood from the gatorclaws filled the air around them, and it was starting to feel suffocating.
"Gage, this is lovely and all, being caressed like I'm a damn schoolgirl..." Gamma started, probably glancing back now to look through their supplies. There was a new rustle between them. "Buuuut, I gotta get a stim for ya." The cut on his leg was severe, but. You know.
Gamma wasn’t human.
"...you okay, Porter?"
"You're not human," he said slowly, then pulled back his hands like the kid was acid. He felt numb, he felt worse than numb. The high from before straight collided back into the earth with the same force of the last gatorclaw. It shook him to his core.
It, it was the only explanation he had. It made sense! He'd heard all the fuckin' stories about the Institute as he roamed around the Commonwealth, the Institute and their synths. He'd heard the rumors of what happened at University Point, raised to ground and not a soul alive to tell the tale of what had happened. They came in the middle of the night and replaced you like you never were.
Only this time, Gage willingly let one of them in. He said 'do this one thing and I'll get you in the keys to our fuckin' kingdom'. Of course he killed Colter! That's why he didn't bloody take Gage's fuckin' advice! He was a fuckin' synth, what chance did Colter even have?
Beneath him, Gamma only tilted his head up a bit, shoulders lax as he stopped the search for that stimpak. "Cool, ya finally realized it. Now, can I-"
Which, ultimately, was the wrong answer for Gage. He grabbed the rifle laying by him quick and bashed it into the side of Gamma's head. And he couldn't really lie, it felt good catching that kid off guard for once because he railed back, hard.
"What in the loving fuck!?" He swore, pressing a hand to the spot that Gage hit. The moonlight wasn't strong to see if he drew any blood, and the gatorclaws' mask the scent of anything new.
"You're not human," was really his only defense. Rifles weren't great at close range and he still aimed it at the Boss.
"Yeah, no fuckin' shit, Sherlock," Gamma swore again, still pressing his hand against his head, still not motioning to arm himself any. Like Gage wasn't actually a threat even with a gun trained on him. What bullshit.
"You're a synth," Gage glared, weighing out his options in his head. Wrong option, apparently, because Gamma just grabbed the end of the gun, forcing it violently to the left as he leveled himself with Gage. And yeah, up close, he could see he indeed draw blood.
"Excuse you?! I didn't go through three years of intensive Hell to be called just a synth. I'm a fuckin' Courser, get it right," he snapped, letting go the gun in a snap. Swearing under breath again, he just pushed Gage's leg aside, purposefully putting the most pressure on the wound (Gage assumed) before grabbing their supply bag.
"What's even the difference? You're still Institute tech." Because Gage didn't need to be an Egghead to know the best kind-of synth was a dead one. There was nothing good about them. Gamma though, just snorted as he rooted through their bag a good few feet away from Gage. Enough of a distance to not get hit with the butt of a rifle, not enough to not get shot by one. He really didn't think Gage would shoot, did he?
"The difference is those three dead Gatorclaws," he said, "That mind you, I fuckin' killed so you wouldn't end up in their digestive tract. So, you know, you're welcome. I'm so getting that knife now too."
"I'm not buying you shit."
"Yes. Yes, you are," Gamma said in an odd mixture of overly sweet and utterly ice cold. Gage heard the quiet thud on the bag hitting the ground, and looked up towards the fake. The stimpak was well in hand, Gamma expertly applying it to his temple with a little hiss. "You're buying it because, this," he waved his hand around his forehead, "was a shit thank you."
And now, I'm going to make to you suffer wasn't said aloud but Gage heard loud and clear all the same. Like he was the wrong here. Like he was the one who had been lying for the past two months.
Like he was the one who tricked him into trusting him. It was fuckin' Connor all over again. It was just like Colter too. He didn't see what he needed to see until it was too late and now, look when he was: once again at the mercy of the cold unfeeling universe.
Fuck. He'd even laugh when Gage jokingly lamented how the Institute hadn't tried replacing him yet, because, you know, he was Important, he was worth replacing. That stupid little fucker.
"I didn't pretend to be human," Gage shot back as Gamma, slowly, closed the distance between them.
"Who's pretending," was his only response before he jabbed the rest of the stimpak into Gage's leg. He hissed at the sudden intrusion, feeling the skin rapidly react to the drug as it coursed throughout his system. It was always a goddamn weird feeling, watching skin healed over the span of seconds instead weeks. Even weirder was to feel it happen. "Because it ain't me. I never claimed to be human."
"You never said you weren't either." And to that Gamma just looked up at Gage again. The faint outlines of his eyes popped out even in the darkness, forever too sharp for the expression of 'are you serious right now' Gamma had. Well, that was one mystery solved, he guessed.
"I killed Colter, a dumb idiot in decked out raider gear, with my bare hands." He noted. "I took down an infestation of bloodworms, an entire Park of hostile robots, and how many gatorclaws now? With what else, but basically a kitchen knife?" Gamma laughed quietly, but the sharp focus in the outlines in his eyes didn't flicker even for a moment. At least Gage knew why he found it so unnerving all the other times he saw it: it was utterly unhuman.
"Do you really think," Gamma continued, softly, slowly and surely for Gage, just letting the point really sink home, "a know-nothing human could do that? Or that a synth could? Please, Gage. Use your head. It's good for something other than caps, you know?" Reaching out, Gamma placed a hand gently on Gage's shoulder and looked him square in the eye.
"You knew it. You just didn't want to accept it." And with that, Gamma pushed himself back up his feet. "I'm gonna go get that stupid code and then we're going to get back to Fizztop because well, yes, I am that amazing and did, once again, totally saved your stupid life you ungrateful bastard, I'd rather not die because of your weirdo hang-ups." He said, waving his fingers in the air like it was spooky voodoo.
Gage didn't say anything in return, and Gamma took that admission of ...something because he just sighed and walked into the hub. From his seat, Gage listened to the soft sounds of fabric moving, bones hitting metal and heavy furniture being pushed around. He tried to empty his mind, tried to think rationally, if there was an rational line to be found.
He, he did know Gamma was odd. He thought he was something at first, a ghoul possibly because they were the only things he'd ever see move as fast as Gamma did. The sheer amount of distance he crossed during his fight with Colter, and so fast. He knew that's why the crowd had gasped. It wasn't that this nobody had gotten to their Overboss, it was just the pure speed of his movements.
But, when he had finally seen flesh, all those thoughts left. He still thought Gamma was odd, but there was plenty of odd people wandering around the Wasteland, odd people that did horrifying things to survive. It changed them so if there were a few motions that seemed off, a few choice words that caught Gage's attention in an off kind-of way, it never stuck.
It was, like everything else off in the Wasteland, easier to look away.
He knew, in an instant, how the Institute got away with so so much.
"By the way," Gamma said as he peeked his head out of the door. His mask was still firmly in the place, the dried blood was starting to flake away. Gage would've wiped the drying blood away himself, annoyed at the light touches that stuck to his skin. Gamma left it. Off, in a dismissible way. "You should probably move. That's an radioactive drum that on the other side of that wall."
Gage all but bolted away, Gamma cackling behind him. "Again, you're welcome!"
#Gabe Stfu#overboss gamma#i miss him and gage#they have such a fun dumb vibe together#and like one more tag#and we're good!#porter gage#fallout 4#justasnippet
11 notes
·
View notes
Text
snippet- Don’t Take That Sinner From Me
I’ve been working on this very pivotal moment for Nadya specifically and figured why not post it. x --
Even with Nadya’s help the silver bolt sticking out of my abdomen was too painful to keep moving at the pace that we were. The metal was sending agonizing waves of pain through my entire body that felt like it was burning me from the inside out, blurring my vision with every head-pounding step. I had to remove it.
“Hold on a second,” I pleaded, my voice strained in agony. “I can’t- I need to stop for a minute.”
My beat up body couldn’t wait for Nadya’s permission as I sank to the ground, leaning my back against the side of a building in the alleyway we were scurrying through. Nadya kneeled beside me, trying to assess my condition while also keeping an eye out for danger. I knew we couldn’t stop for long, but once I pulled the crossbow bolt out I should be able to move better. With a bloody, shaky hand I gripped the bolt. Ignoring the intense burning sensation to my hand from the silver, I prepared to pull it free.
Nadya yanked my hands away when she saw what I was doing and I was in too much pain to fight her off, “Jayde, you can’t take that out!”
“Nadya, you don’t understand how bad this fucking hurts.” I groaned out.
“If you pull that out right now it could kill you.” She argued.
Before I could muster the strength to argue back, a car drove up to us. Tires screeching to a stop with the headlights blaring in our direction and blocking one of our paths. Immediately through the thick fog of pain I felt fear. I couldn’t fight. I couldn’t run. I couldn’t protect either of us right now. I wanted to tell Nadya to run, but I knew she never would and that’s what filled my heart with terror.
I growled, “Fuck.”
Nadya whirled in the direction of the car, pulling my gun out from her waistband- our only gun- and pointing it at the figure who was exiting the car. She was still crouched, but positioned herself in front of me, one arm protectively out to shield me as much as possible. A small part of me loved her for it. A much bigger part wanted to beg her to leave and save herself.
“Nadya,” I whispered. She would hate me for it, but I had to try. It was all I could do. “Get out of here.” There was no answer from her. “Please-”
Too late to run. The hunter came into view. Unfortunately, I recognized him. Randall. Being one of the leading members of a faction of hunters means that he’s had it out for me for years. Looks like now he had his best chance to get what he wanted, but Nadya was in the crossfire. Their ‘hunter’s code” frowned upon killing humans, but he still had his crossbow loaded and casually pointed at her.
Randall’s low chuckle made my blood turn to ice in my veins. “You gonna get out of my way, little girl?”
“Are you going to get out of mine?” She snapped back.
“Listen, darlin’ I got a mutt to bag.” The hunter grumbled, “That dog is mine. I’m takin’ her.”
“Over my dead body.” Nadya said menacingly.
Oh, Nadya, please don’t say things like that.
While they were distracted by their bickering, I took the opportunity to reach for the bolt again. I was useless with this damn thing in me and there’s no way I would leave Nadya to deal with this by herself. Biting my lip hard enough to make it bleed so I could muffle the tortured noises I was making, I yanked the bolt out. The arrowhead ripped through my flesh, probably causing more damage than when it went in, but with the silver out of me the pain became somewhat manageable. Unfortunately there was a new problem now. A steady flow of blood started pouring from the wound. Enough to be alarming.
“You’re not gonna pull that trigger. Now you can walk away, but if you keep vexing me I’m gonna have to put a bolt in you, little girl.” Randall warned and I knew he was completely serious.
Nadya stood her ground, even though the hand holding the gun was shaking, “Call me ‘little girl’ one more time.”
Randall’s smirk grew into a triumphant smile. The hunter misinterpreted her. He thought the trembling in her hands was a sign that she couldn’t shoot him. I knew that it meant she was preparing to.
I didn’t want her to shoot him. Nadya isn’t a killer. If she killed him I didn’t know what that would do to her so it had to be me. I wanted it to be me. The problem was that I didn’t know how to get us out of this. Even with the bolt removed I was still weak, already feeling the blood loss that was making my head swim. I could tell the shot was well placed. Calling on my wolf would just make my adrenaline spike, causing me to bleed out faster. Plus, they had their weapons loaded and pointed at each other in a stalemate. The only advantage we had was that Randall didn’t think Nadya would shoot.
Randall’s amusement with Nadya had worn too thin when she still refused to stand down so he took a more proper aim against her, his finger moving towards the trigger, “Can’t say I didn’t warn you, little girl-”
I reached for Nadya to pull her out of the bolt’s path, but before I could, and before Randall could fire, the gun in Nadya’s hand went off. Her aim wasn’t perfect. The bullet just grazed the side of our attacker’s head, but his eyes went wide with shock and he involuntarily pulled the trigger of his weapon. Thankfully, the shot went wide and ricocheted off the brick to our left.
I’ve never seen Randall look baffled, but he was. He stared at Nadya completely stunned, reaching up to palm his wound. If he hadn’t yet, he definitely realized his mistake when his hand came away bloody. Randall didn’t get the chance to recover. Nadya adjusted her aim and fired again. This time striking him in his chest. Then once more. Two spots of red started growing on his chest as blood stained the front of his shirt.
The alley became eerily still for a beat. Nadya’s hand was trembling violently now. Randall was struggling through ragged, wet breaths. Even I was too shocked to think. His crossbow clattered on the ground and he sank to his knees, looking around like he didn’t know where he was. Without any last words the hunter crumpled, unmoving on the pavement.
There was a dark and heavy weight settling in my heart. Nadya just saved my life, but there were a million different outcomes I would’ve preferred instead of this one. I would’ve let him take me before having Nadya compromise herself in this way. I failed her tremendously tonight and this was something that could never be taken back.
Her back was still to me so I couldn’t see her face. I didn’t know if she regretted it. Didn’t know if this would break her. Didn’t know if she would resent me for this. All I felt was the guilt and the pain from my wound. I slowly reached for her again and placed my hand on the arm still outstretched to protect me. “Nadya-”
“Please, don’t.” Nadya pleaded sharply, finally turning to me so I could see the tears in her eyes. The pain and horror reflected there. I didn’t know if she was telling me not to touch her or not to say anything so I did both, shutting my mouth and pulling my hand back.
Blood was still seeping from between my fingers where my palm was pressed into my wound. It was enough to draw Nadya’s attention and her eyes widened, hands scrambling to put pressure on it. “I- I told you not to take it out!” she stammered through tears.
I stared at her, searching for anything that would tell me what she was feeling. Nadya seemed to push it down now that she had me to worry about. With unsteady hands she tried desperately to staunch the flow of blood. I could tell I was losing a lot. A cold sweat made me shiver. I doubt I could stand straight much less walk on my own. “I’m so sorry…” I mumbled out.
Nadya either ignored my apology or didn’t hear it. “I need to get you out of here,” She draped one of my arms around her shoulders and hoisted me up while still keeping pressure on the wound. My legs were unsteady and every step was a chore, but I did my best to move quickly in case there were any more hunters around.
I didn’t know or have the energy to care where Nadya was leading me. Thankfully we didn’t go very far. Nadya helped me into the passenger seat of Randall’s car and quickly took off her jacket. Bunching up the body, she pressed it to the bleeding wound, tightly tied the arms around my waist. Nadya took both of my hands and pushed them even harder on top of the makeshift bandage. The sudden added pressure finally forced out a whimper of pain from my throat.
“I need you to keep pressure on this, okay?” Her tear filled eyes looked into mine imploringly. When I managed a nod, Nadya hurried over to the driver’s side. A prayer of thanks left her lips at the keys still left in the ignition, relieved that she didn’t have to search the body lying on the ground for them. I was thankful for that too.
Through the pain and lightheadedness I didn’t feel the car pull away. Actually, I blinked and all of a sudden we wear tearing down some street. That couldn’t have been good. I heard a muffled voice and looked over at Nadya. She was talking to me, but my ears were roaring. I could barely understand her, barely see her through my blurred vision.
Eventually the sound of her panicked voice cleared, “Come on Jayde, please! I need you to keep putting pressure on that!” I’ve never seen her look so scared.
“I’m trying.” I said, leaning my head back on the seat. Were my arms moving? I couldn’t tell. And my eyes were so heavy. Maybe I could just close them for a minute.
“Stay awake!” Nadya yelled desperately, “Jayde, talk to me. Just keep talking to me.”
“About what?” I asked, forcing my eyes to stay open with a great effort.
“Anything. Tell me anything.”
Anything. That was such a wild concept. My mind drew a blank. I tried with every ounce of strength, but I was simply losing this battle. I couldn’t even feel the pain anymore, I was just falling.
“Jayde, stay with me! Please talk to me!” Nadya begged with a shaky voice.
More than anything I wanted to do what she asked because I didn’t want this to be it. I didn’t want Nadya to watch me die. “I’m sorry,” the last thing I remembered was whispering the words, “I can’t…”
- - -
To my great surprise, my eyes actually opened again. This time my gaze found trees reaching up into an overcast sky. The sun shining behind the thick layer of storm clouds casted the world in grey with the scent of coming rain. The surface beneath me was solid, my head padded by something soft. Maybe blankets or a sleeping bag. I figured I was lying in the bed of a truck. Was that the type of car Randall had? I was grateful not to be in a hospital. Nadya knows I hate hospitals, not to mention we’d be sitting ducks, but if I’m in bad enough shape I wouldn’t put it past her to bring me to one.
Blinking a few times, I tried to recall exactly what happened. Being shot. Randall. A gun going off. Nadya.
Once everything came back to me I felt like crying. Turning my head to search for Nadya was painful. My entire body ached. An imaginary spike was being rammed into my skull and then the pain in my abdomen returned as well, but I ignored it. I saw that I was in the bed of a truck when my eyes scanned my surroundings. Or maybe I was dead and this was some sort of purgatory.
My vision finally focused on her. Nadya was sitting next to me. She was curled in on herself, covered in dried blood, most likely mine. Silent tears fell down her cheeks and she was staring off into the trees, but her eyes were unseeing. Heartbreakingly, I realized she was deep in her own mind. Probably replaying what she did over and over. The sight of her like that finally brought tears to my eyes.
“Nadya,” I called softly, my voice hoarse.
Her eyes snapped in my direction and filled with a surprising life even though she looked exhausted. “Jayde,” she sniffled, scooting closer and leaning over me.
When Nadya’s hand rested on my cheek it just made more tears flow. I didn’t deserve her touch right now, but it was overwhelmingly comforting. The warmth from her hand soothed away any doubts telling me I was dead. Her thumb wiped away my tears while hers still fell. That didn’t seem right so I reached up with a heavy hand and saw that it was bandaged. Probably for the burns that the silver left on my skin.
The back of my finger brushed at the moisture on her cheek and I cried, “I’m sorry. I am so sorry.”
Nadya sighed, pulling my hand away and holding it in both of hers, “Please stop saying that.”
While she didn’t fully retreat from my touch, I still felt discouraged by the small amount of distance she put between us. “Are you okay?” I had to know how she was taking it, even though I was also scared to find out.
It felt like forever before she answered me in a voice that trembled enough to shake my own soul. “I uh… no. I’m not, but it doesn’t matter.” that statement felt like the bolt that had been in my gut was being driven onto my heart.
“It does.” I said.
Nadya’s eyes burned for a moment, “What do you want to hear? That I’ve been sitting here for hours, too scared to close my eyes because I didn’t know if you were going to make it? That if you didn’t pull through, then what I did was for nothing and I just-” Nadya tore her eyes away, like it was too painful to look at me and leaned her back against the cab of the truck. She let out a heavy sigh and I felt some of the fight drain out of her as she focused on my hand firmly clasped in hers. “I can’t get it out of my head.”
The guilt felt like it was crushing me, making it so it was hard to breathe. This was all my fault. I left her alone to drown in that darkness and even now I knew there was nothing I could say to make her feel better. I wouldn’t try to absolve her of guilt, she would never accept it. There’s no way I would tell her that it gets easier because I would do everything I could to make sure she wouldn’t have to do that again. She shouldn’t have had to do it in the first place. I should’ve done something- anything- differently. I should’ve been better. I…
I should’ve let that hunter take me…
It wasn’t until I saw the horrified look on Nadya’s face as her whole body froze that I realized I said that out loud. “No. No.” She muttered through clenched teeth, “Don’t you ever say something like that to me.”
I fucked up. Again. Of course I would make this worse for her. “Nadya, I didn’t mean-” I started frantically while trying to sit up, but the pain from the sudden movement made me gasp.
Nadya placed a hand on my shoulder to keep me in place and faced me again. “I may not know how to process what I did just yet, but one thing I do know is that I don’t regret it. I did it because I couldn’t let them have you. And I would rather feel the way I do right now than lose you, so don’t you dare say anything like that again.”
“Nadya…” I said her name like an apology. I guess I just couldn’t stop apologizing and that frustrated me because I didn’t know what else to do.
“I don’t want you to feel guilty.” Her tone became softer, like some of her anger faded at my expression, “What happened wasn’t your fault.”
“This isn’t about me, Nadya.” I said, annoyed that she was trying to make me feel better after what she just went through.
“Jayde, you almost died!”
“I almost die all the time!” I forced my voice to calm because raising it was making my head hurt more, “Nadya, you just killed someone-”
“Jayde.” Nadya said forcefully, “I told you, I don’t know how to process it. What I need right now is for you to not bring it up. I need time to… accept it.”
That made me feel even more helpless, but if it’s really what she needed then I had to deal with it. I would do anything for her, I just didn’t know the hardest thing would be nothing. She still looked so defeated and it was breaking my heart so before I dropped it I waited until her eyes met mine again, “We’re gonna be okay.” I suppose it was my turn to be the optimist.
Nadya grimaced and a couple more tears slid down her cheeks, but she nodded. I hoped that she believed that because for once, I did.
Another attempt to sit up proved an agonizing task, but I hated being down. I needed to see our surroundings. Needed to know where we were. Nadya didn’t try to hold me down this time. Instead she sighed and helped me sit up, leaning me against the cab like she had. We were in the woods, not too far from civilization because I caught the noise of traffic in the distance. Maybe we were off the highway.
“Where are we?” I asked, holding my abdomen until the pain calmed down somewhat. Nadya must’ve patched me up. Underneath the fabric of my shirt I could feel bandages. The fabric was stained with my dried blood, but I was pretty sure I wasn’t bleeding anymore. Hopefully my healing kicked in.
“I only made it eight miles.” Nadya mumbled.
My eyes darted in her direction even though the motion made my vision blur, “Nadya,” I gasped. How could she be that careless?
“I didn’t have a choice, Jayde.” She replied firmly, refusing her guilt, “You were unresponsive, you were bleeding everywhere. I had to stabilize you or you would’ve died.”
I wanted to tell her that I would rather die than have them catch up to us and kill her or worse, but that wasn’t the kind of thing I needed to say to her right now. Instead, I took a deep breath and forced a nod. “I thought I was dead…”
“The bolt got you pretty bad and you lost a lot of blood. The silver did a number on you too.” Nadya said, taking my hand in hers again, “Honestly, Jay, if you were human… I don’t think you would’ve come back from that.”
The look in her eyes conveyed the amount of fear and panic that she must’ve felt for however long she waited for me to wake up. She was holding onto my hand so tightly that it actually started to hurt, but I didn’t care. I held onto her just as tight. Any reassurance I could offer, I would. There was so little that I could do.
“How long have we been here?” I asked.
Nadya shrugged, “I don’t know… ten hours? Maybe more. Maybe less…”
Keeping track of time wasn’t her priority last night and I felt bad for even asking. I wiped away the remnants of my tears, knowing how fragile Nadya was right now and how solid I needed to be for her. “We should get moving. We’re pushing our luck being here right now.”
I could tell she hesitated because of my state and hers. She must’ve been absolutely drained, but we didn’t have much of a choice. Nadya gave a single nod and moved to help me exit the bed of the truck. It was a painful struggle, but it wasn’t unbearable. I’ve been in a lot more pain before in far worse circumstances so I wasn’t worried about myself.
“Where’d you get the first aid supplies?” I asked, taking a small break at the tailgate, feet dangling over the edge while I prepared myself for the daunting task of standing.
Nadya’s feet met the ground and she just barely glanced up at me, “I found them in the back of the truck.” She answered.
Oh. I should’ve known the supplies belonged to Randall. “Hey,” I said, waiting for her to look at me. I knew she didn’t want me to mention it, but this needed to be said, “Thank you. For saving me. What you did… it wasn’t for nothing.”
Staring up at me, her brown eyes became misty again, but no more tears fell. I didn’t know if that was because she was holding them back or simply didn’t have the energy to shed them anymore. “Do you think I’ll be able to live with it?” Nadya asked in quiet earnest.
Using the truck for support, I carefully lowered myself to the ground. Nadya reached to help me too. I wobbled for a moment, but my legs had a surprising steadiness. Perks of being a werewolf, I guess. “Yes, I do.” My words were sincere.
Nadya drew me into a fierce embrace, holding me up like a strong foundation and buried her face in my neck. “I don’t know what I would’ve done if I lost you.”
You would probably be a lot better off. I forced that thought away even though guilt was still heavy in my heart. “The important thing is you didn’t. You won’t.” Maybe that was an empty promise. It was already one that I was having trouble keeping, but I thought she would want to hear it right now.
Nadya pulled back to look me directly in the eyes and gently took my face in her hands, “I love you.” She said it with the depth of a firm reminder. “Don’t ever tell me to leave you again.”
It took a second for me to remember what she was talking about. That moment seemed so insignificant to me compared to what she’s going through right now, but I understood. Somehow, I found the will to smile. Despite everything she just endured because of me, Nadya still loved me. She didn’t hate me. She didn’t blame me. I couldn’t help but see it as a miracle. Once Nadya forgave herself, maybe I could forgive myself too.
“I knew better.” I told her, resting my forehead against hers and closing my eyes. Her scent was mixed with blood, sweat and tears, but it was still Nadya. And there wasn’t a single doubt in my mind. Nadya would be okay. “I love you.”
I didn’t expect her to, but she kissed me. Just a small, soft peck that meant everything. It was exactly what I needed and it felt like Nadya needed it too.
“Okay,” Nadya ran her hands over her face, composing herself as much as she could. “Let’s get moving.”
I nodded in agreement, “Okay.”
Nadya still helped me into the car, but I was mostly able to handle it on my own. Physically, I’d be back to normal in a week or two. The Lodge was the safest place for our recovery and I was eager to put as much distance between us and this area as possible. We weren’t out of the woods yet, but I actually felt optimistic about our chances.
#original characters#original writing#original story#ocs#wlw#My writing#my ocs#I battled with the pov on this one#but evidently Jayde's was the best cause as soon as Nadya pulled that trigger it was basically just ringing in her head#she was feeling too much to have a pov#Jayde is comfortable with killing and even tho she was dying she had a pretty level head abt the situation#Jayde#Nadya#Jayde pov
3 notes
·
View notes
Text
Announcing LTE Beacon for asset tracking
At Estimote we believe apps of the future won’t be downloaded to phones, computers or tablets. Developers of tomorrow will use the physical world as their canvas. Precise location of people and objects will be accessed programmatically and apps will be “installed” on places.
To make this happen we are working on an Operating System for the physical world: a software environment where developers will be able to quickly build apps for one location and run the same experience on many.
Our first product, Estimote Bluetooth Beacons launched in 2013, enabled us to locate people and their phones inside buildings. To do that, we used Bluetooth Low Energy (BLE), an emerging technology at the time. Our iconic design, easy-to-use software and simple APIs made them the most popular beacons for developers. Since then, more than 150,000 innovators, startups, agencies, and Fortune 500 companies have used them to create context-aware apps. They’ve built mobile solutions to increase workplace productivity, comply with safety regulations, and deliver other magical experiences at scale, something that simply can’t be accomplished without accurate microlocation.

New product from Estimote
Today we are proud to announce another revolutionary IoT device. Once again, we chose to leverage emerging IoT technologies (LTE M1 and NB-IoT) and have designed and productized a new device we call the “Estimote LTE Beacon.”

It’s a small, wireless beacon that can compute both its precise indoor and outdoor position. It can talk directly to the cloud and last multiple years on a battery.
Estimote LTE Beacons are designed primarily to seamlessly locate assets and vehicles when they move between indoor and outdoor environments. Their secure firmware/cloud software is crafted to provide true “proof of location” and “proof of delivery.”
Since the device is fully programmable using JavaScript, it can also support other creative use-cases — for example, it can act as a remotely managed iBeacon or a gateway used to configure other Bluetooth beacons.
Smartphone without a screen
The best way to think of this new IoT device is to imagine it as a small smartphone, but without a screen. It can last years between charges and the cost is similar to a beacon. It has cellular LTE connectivity, built-in GPS, and Bluetooth radio. And it is also possible to create and download apps that run on the LTE beacon.
LTE Beacon specification
To create this new device from Estimote we have integrated the best Internet of Things components, designing the most robust beacon the industry has ever seen. Below, you can find the full specification and tech details of the radio and other IoT components we have used.

PROCESSOR AND MEMORY
It has a low-power 32-bit ARM Cortex-M4 CPU with floating point unit (FPU) running at 64 MHz. There is 1MB flash with cache onboard and 256KB RAM supporting over-the-air (OTA) firmware updates. There is an additional ARM CryptoCell co-processor with a full AES 128-bit suite as well as a true random number generator for full entropy and asymmetric/symmetric hashing cryptographic services.
BLUETOOTH RADIO
We have integrated one of the newest 2.4 GHz radios. It fully supports the latest Bluetooth 5.0 standard including mesh networking, long range, and high data throughput. The radio could also support 802.15.4-based protocols such as Thread and ANT. There is an additional amplifier (+20 dB) for extended range of packet advertising (200m).
SATELLITE POSITIONING
The device has a low-power satellite signal receiver supporting American GPS, European Galileo, Russian GLONASS, Chinese BeiDou, and Japanese QZSS. It uses multi-constellation algorithms for fast and accurate fixes using all visible satellites.
LTE CONNECTIVITY
Cloud connectivity is possible using a low-power LTE IoT modem equipped with an ARM Cortex A7 (1.3 GHz) and supporting 5G-ready protocols such as LTE Cat-M1 and Cat-NB1. The peak data upload speed to the cloud is 375 KBps for LTE-M and 60 KBps for NB-IoT. The modem supports eDRX and PSM sleep cycles to reduce power consumption while enabling cloud-invoked communication with the device. The modem and the antenna support 15 bands (B1/B2/B3/B4/B5/B8/B12/B13/B18/B19/B20/B26/B28/B39) that cover virtually the entire world.
OTHER COMPONENTS
Lithium-Ion rechargeable battery lasting 2 years on default settings
USB-C compatible with USB 2.0 for fast charging
NFC-A programmable tag supporting NFC Type 2 and Type 4
3-axis accelerometer
Programmable push button for specific use-cases such as alerts
Programmable RGB LEDs
Temperature sensor
Integrated ultra-strong adhesive layer
Mounting hole for industrial deployments
Durable, non-toxic silicone enclosure
How does the LTE Beacon work?
This LTE-M device can be attached to an asset, e.g. a jet engine manufactured in a factory. When it moves across the production line, the LTE Beacon scans for Bluetooth beacons installed in the factory and reports its precise indoor location to the cloud. When loaded into a truck, it continues to report its outdoor position using satellite systems. It can also report key telemetry data such as temperature, vibration, and battery status.

When the jet engine arrives at a warehouse, it switches back to beacon-tracking for precise indoor positioning. And finally, when the product gets shipped to the end-customer it can automatically report a secure “proof of delivery” signal.
The above use case is just one example of how the LTE Beacon can be programmed to work. We have designed an entirely new way of adapting the device to support many Internet of Things applications.
Programmable beacon and micro apps
Our previous generation of beacons had really only one “app” installed—our embedded firmware. It exposed some of the settings such as range, compatible packets (iBeacon or Eddystone) or other parameters. But it wasn’t possible for our customers to “upload” their own software into the device.
The new Estimote LTE Beacon is different. We created a Web IDE in Estimote Cloud where you can program it using JavaScript. We’re exposing a bunch of APIs for you to use in the process: BLE scanning & advertising, sending & receiving data via LTE-M to/from Estimote Cloud, obtaining GPS coordinates, reading from on-device sensors, responding to the button press, etc.

When you’re done, Estimote Cloud will compile the code into a “micro-app,” and send the bytecode to the LTE beacon, where it starts being executed.
For example, if we want to program the LTE Beacon to use its Bluetooth radio to advertise both iBeacon and Eddystone at the same time, we can upload the micro app code below.
// Define your iBeacon packet var iBeaconPacket = ble.build.iBeacon('DE4E12E7-7E0F-4A6B-A4DD-AA837507FB20', 2000, 18); // Define your Eddystone-URL packet var EddystonePacket = ble.build.eddystoneURL('https://estimote.com'); // Start Bluetooth LE advertising ble.advertise(iBeaconPacket); ble.advertise(EddystonePacket).interval(500).power(4); ` ` Here is another example. This one will detect if the central button on the device was pressed, read the GPS <pre>` function sendPosition() { var { latitude, longitude } = location.getLastPosition(); cloud.enqueue('position-update', { lat: latitude, lon: longitude }); } io.press(io.button.MAIN, sendPosition); `</pre> ### Lambda expressions To accelerate the back-end prototyping and enable developers to quickly process the data received from the LTE device, we have also added an element of serverless architecture.  In addition to the micro app code, you can write another JavaScript snippet—this time, a function that sits in Estimote Cloud, and processes the data received from the LTE beacon. For example, if you want to create a “panic button” application which uses Twilio to send a text message whenever the button is pressed on the LTE-M device, here is an example micro app code and additional lambda expression. <pre>``io.press(io.button.MAIN, () =>; { // send an 'alert' event to Estimote Cloud cloud.enqueue('alert'); }); // Your Account Sid and Auth Token from twilio.com/console const accountSid = '…'; const authToken = '…'; const twilio = require('twilio')(accountSid, authToken); module.exports = async function(message) { // respond to the 'alert' event if (message.type === 'alert') { await twilio.messages.create({ body: 'There's been an alert…', to: '+1…', from: '+1…', }); } };
Of course our new product can be also programmed to send requests to user defined end-points in their own cloud enviroment.
IoT app templates
We call a pair of these two JavaScript snippets an “IoT Application,” and we have prepared a few templates you can choose from when adding a new IoT App in Estimote Cloud. With these templates, it will be possible to quickly turn the device into a GPS tracker, a cloud beacon, or a location-aware panic button.

There will be a separate blogpost on how the LTE Beacon can be programmed, so you can learn more about the entire process there. Stay tuned!
LTE-M device battery life
Since this LTE Beacon is fully programmable, battery life will depend on the micro app, the intensity of the radio usage, and also the external environment such as distance to base stations, type of connection (LTE Cat M1 or Narrowband IoT) and visibility of satellites.
For example, if we program the device to act as a GPS tracker and do nothing else other than send GPS coordinates to the cloud once a day, it will last approximately 2 years. However, if we want to get real-time position of an asset and receive GPS updates every few seconds, the device will last a few days at most.
The rule of thumb is that:
Bluetooth advertising (iBeacon/Eddystone) consumes the least power
Scanning for Bluetooth devices consumes significantly more energy
Processing satellite signals is even more power-hungry
And finally scanning and sending data over the LTE-M and Narrowband networks drains the battery the most. Note that it is still a fraction of the energy needed for cloud communication using classic voice or data sent over 3G
As part of our Cloud-based IDE, we are working on a battery usage profiler, so we will be able to help developers predict the battery consumption of their apps.
Estimote LTE Beacon also has a USB-C port and a rechargeable battery built-in, so it can be powered or recharged when necessary for applications that require a constant cloud connection or GPS/Bluetooth scanning.
Pricing and availability
We are shipping LTE Beacons as Developer Kits. Each box will include two devices and the total cost will be $129 + shipping. We can ship anywhere in the world.
Since the LTE Beacons have active data plans and talk to the LTE networks of our telecommunication partners as well as use our cloud services, there will be an additional subscription fee. For the beacons in the dev kit, it will be $2 per device per month, and the first 3 months are free. The devices can be still used and programmed without an active subscription, but the cloud connectivity won’t be possible.
PoC and Pilots
If you also need assistance building your first IoT apps using our Web IDE and APIs we are always more than happy to help. Shoot us a note at:

3 notes
·
View notes