<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DIGI Byte</title>
    <description>The latest articles on DEV Community by DIGI Byte (@digimbyte).</description>
    <link>https://dev.to/digimbyte</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F803726%2F2f5c64c7-ab14-4937-a0cd-f43f72f21c53.png</url>
      <title>DEV Community: DIGI Byte</title>
      <link>https://dev.to/digimbyte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/digimbyte"/>
    <language>en</language>
    <item>
      <title>Recovered Journal of Elias Vane</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Tue, 21 Apr 2026 02:26:02 +0000</pubDate>
      <link>https://dev.to/huntz/recovered-journal-of-elias-vane-3agk</link>
      <guid>https://dev.to/huntz/recovered-journal-of-elias-vane-3agk</guid>
      <description>&lt;h3&gt;
  
  
  Bureau Summary
&lt;/h3&gt;

&lt;p&gt;These pages were recovered in 1873 from a wash shelter beyond the Mercer rail cut after a takedown order was carried out against the hostile later catalogued as &lt;strong&gt;The Lantern Saint&lt;/strong&gt;, one of the &lt;strong&gt;Crowned&lt;/strong&gt;. The leaves below are arranged in the order in which they appear to have been written.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 11, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I begin this account because I know the signs and have no confidence that I shall remain fit to speak for myself much longer.&lt;/p&gt;

&lt;p&gt;If the pages are found, let them be read as a journal and not corrected into sermon or bureau notice. Men who came late to the matter have a taste for smoothing it. They like a single cause, a single blame, and a clean moral at the end. There has never been any such neatness in this business.&lt;/p&gt;

&lt;p&gt;I was born in 1848 in a refinery town west of the rail cut. My father hauled sealed cases for a syndicate contractor. My mother kept the chapel books and washed the cloths for Reverend Hale. We lived above the lower ditch. In wet weather the yard took a green sheen at the edges and the roots in the cellar would not keep.&lt;/p&gt;

&lt;p&gt;When I was a boy the common name was &lt;strong&gt;saintfire&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That was the household name. Women used it over the sick. Men used it when they wished to sound grateful. Small portions were kept in glass vessels on mantles and in wall niches. Mothers tied filings of it in cloth and hung them about a child’s neck. Some churches put it behind colored panes so that the room would shine pale and the congregation might say the earth itself bore witness.&lt;/p&gt;

&lt;p&gt;The learned men called it &lt;strong&gt;radiant extract&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That was the ledger name and the contract name. It was painted on crates and written on invoices. Doctors, surveyors, chemists, and company men used it in their speech. Radiant extract paid wages. It was mixed into tonics, lamp compounds, preserving oils, and certain medicaments. The improving sort said the earth had kept up a gift until the proper age for its use.&lt;/p&gt;

&lt;p&gt;The men by the settling pits had another word.&lt;/p&gt;

&lt;p&gt;They called it &lt;strong&gt;rotshine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That was the honest word.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 11, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Saintfire was ordinary to us. That must be understood.&lt;/p&gt;

&lt;p&gt;No one in my childhood spoke of it as an intrusion. It belonged to daily life. Men argued over its color and strength the way they argued over iron, flour, or lamp oil. Old miners kept little shrines of it below ground and touched their hats before descending. Pilgrim women swore a weak preparation eased labor pains. Men with ruined joints rubbed saintfire oil into the swelling and said it brought them through winter.&lt;/p&gt;

&lt;p&gt;Many believed that because it came from the earth it must be good.&lt;/p&gt;

&lt;p&gt;That conceit did us as much harm as greed. People mistook burial for blessing. They thought a thing hidden in deep rock had been stored for our use. No one cared to ask whether it had been kept down for a reason.&lt;/p&gt;

&lt;p&gt;The first signs were all about us and so were treated as common annoyance. Fish came up from the creek with sores under the belly. Mules were foaled with clouded eyes that caught the lamplight. Men lost teeth too young. Nails blackened from the root. Meat kept too long in cold weather and then spoiled in an hour. Water in the lower ditches steamed in winter and laid a pale skin over the reeds.&lt;/p&gt;

&lt;p&gt;No single sign was enough to move a town.&lt;/p&gt;

&lt;p&gt;That is how a calamity passes for custom. Men accept one offense because they have already accepted the last.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 3
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 12, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The church favored saintfire while it remained a symbol and not a reckoning.&lt;/p&gt;

&lt;p&gt;Reverend Hale preached that deep things were not wicked merely for being deep. He said the Lord hid many good things from lazy men and that only an age of iron and discipline would be fit to raise them up. He kept a saintfire lantern in the vestry and let the children watch the light move through its etched glass. He called it a token that God had not withdrawn His hand from the soil.&lt;/p&gt;

&lt;p&gt;Then came Mrs. Harrow.&lt;/p&gt;

&lt;p&gt;She took fever in autumn, then swelling of one arm, then a stiffness of the mouth. A day later she appeared to rally. Half the town called it providence. I saw her in the market two days after and knew the look of her was wrong at once. Her shawl was pinned badly. Her mouth sat too still. She knew me and spoke my name, but in such a way that it felt fetched from inside my own skull rather than remembered in any human manner.&lt;/p&gt;

&lt;p&gt;That same week she bit through her husband’s cheek while he slept.&lt;/p&gt;

&lt;p&gt;They called it brain fever.&lt;/p&gt;

&lt;p&gt;The syndicate sent men, then a city doctor, then others with polished cases who did not stay to eat. They inspected homes, paid for silence, took scrapings and samples, sealed papers, and said the trouble was local. They said some lower grades of radiant extract had been cut with waste or mishandled in storage. They said the matter would be corrected.&lt;/p&gt;

&lt;p&gt;Truth was dear. Lies were cheaper and packed more readily.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 4
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 12, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By 1859 the lower wards had burial fires twice a month.&lt;/p&gt;

&lt;p&gt;By 1861 children were forbidden the settling pits whether they understood the reason or not.&lt;/p&gt;

&lt;p&gt;By 1862 men were disappearing into the east ridge clinic and returning pale, harder in manner, and marked with punctures at the throat and elbow.&lt;/p&gt;

&lt;p&gt;That was when I first heard the word &lt;strong&gt;syrum&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not in chapel. Not at table. In work talk.&lt;/p&gt;

&lt;p&gt;The report was that the bureaus and the companies had found a way to harden select men against the sickness. Ordinary people were said to be too weak for the treatment, but certain laborers, guards, and takedown men might bear it well. The old miners called it another refinement fraud. The desperate called it hope. Preachers called it trial. Chemists called it progress.&lt;/p&gt;

&lt;p&gt;The men who took it stopped falling to the common course of the sickness.&lt;/p&gt;

&lt;p&gt;That impressed everybody.&lt;/p&gt;

&lt;p&gt;What impressed few, because few wished to dwell on it, was that such men no longer looked entirely right in certain lights. Their veins darkened. Their eyes kept a catch of shine after sunset. Their sleep altered. Their temper altered. Some carried little relics of bone, wire, old medals, iron scrap, and carved wood against the skin and said such things steadied the head.&lt;/p&gt;

&lt;p&gt;Those were the first &lt;strong&gt;effigies&lt;/strong&gt;, though the word was not yet used with any order.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 5
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 13, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The town continued on.&lt;/p&gt;

&lt;p&gt;That part is often told falsely by men who came later and wanted the matter to sound more dramatic than it was. They imagine that when the plague first took hold, all common life ceased in a day. It did not. Freight still moved. Wages were still docked. Sermons were still preached. Bureau clerks still copied forms at their desks while rotshine crept through the ditches below their windows.&lt;/p&gt;

&lt;p&gt;My father died in 1864.&lt;/p&gt;

&lt;p&gt;He did not die by cave-in or furnace burst or any thing fit for broadside print. He rotted inward by degrees. His gums blackened. He sweated cold. He lost weight though he still ate. On the morning before the end he sat upright on the bed with steady hands and told my mother not to let them take him to the clinic.&lt;/p&gt;

&lt;p&gt;That was his fear at the last.&lt;/p&gt;

&lt;p&gt;Not death.&lt;/p&gt;

&lt;p&gt;Processing.&lt;/p&gt;

&lt;p&gt;We buried him ourselves beyond the line stakes. The ground was stiff and the shovel rang against stone. He came back the second night.&lt;/p&gt;

&lt;p&gt;Not dead in the common sense, nor living in the old one. I found him at the cellar door, nails torn away, lips ragged to the teeth, trying to keep himself from making a sound. That is what has remained with me longest. He was not raging then. He knew enough to fear what he was and to fear frightening us besides.&lt;/p&gt;

&lt;p&gt;My mother struck him with the axe before I could move.&lt;/p&gt;

&lt;p&gt;After that I ceased to think saintfire holy.&lt;/p&gt;

&lt;p&gt;I did not cease to live in the order it had made.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 6
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 13, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 1865 the bureau outpost was made proper, with armed men, holding pens, quarantine rooms, and a dispatch tower. They were not yet formally called Hunters, but all knew what they were for. They were men who could go into the bad districts longer than ordinary men, stand near the pits without retching blood, and put down the changed when called.&lt;/p&gt;

&lt;p&gt;The first takedowns were local in those years. A house, a cellar, a tunnel mouth, a clinic room. Once a whole family, shut together after the grandmother turned first and the others would not leave her. There is no honor in how I write of it. It was work. Hard and foul work, but work all the same. That is how men endure a thing beyond reason. They put it under duty and give it a number.&lt;/p&gt;

&lt;p&gt;I took the syrum in the first months of 1866.&lt;/p&gt;

&lt;p&gt;Not out of belief.&lt;/p&gt;

&lt;p&gt;There was nowhere else left to stand.&lt;/p&gt;

&lt;p&gt;My mother was gone by then, taken in a fever bloom that stripped her speech and left her staring at the wall as though she heard movement within it. On the fourth night she spoke my name in my father’s voice. I left the room and called for the bureau surgeon. I did not return.&lt;/p&gt;

&lt;p&gt;The syrum burned through me. What I recall most is not pain but sharpening. Smell altered first. Then heat. Then distance. I could hear a man’s tread through timber and tell by scent whether a ditch carried common water or rotshine runoff. Afterward the shine in the pits no longer turned my stomach. I could remain near a fresh turn longer than ordinary men before fear took hold.&lt;/p&gt;

&lt;p&gt;That was the bargain.&lt;/p&gt;

&lt;p&gt;The bureaus did not cure men. They selected for tolerance.&lt;/p&gt;

&lt;p&gt;We were not saved. We were made serviceable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 7
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 14, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By then the church had split. Reverend Hale held that saintfire was still a grace, only abused by greed and over-refined by fools. Others said the glow was a false light, an old buried lure, a thing kept below by Providence until man in vanity cut it loose. The chapel windows were broken in a night fight and one deacon lost an eye. He later joined a takedown line and died in a grain store.&lt;/p&gt;

&lt;p&gt;There were no clean parties left. Only differing forms of compromise.&lt;/p&gt;

&lt;p&gt;Then came 1867.&lt;/p&gt;

&lt;p&gt;Men who write public histories like to put a single cause to it. One breach. One rail spill. One refinery blast. One flood opening a burial trench. Such accounts are neat and easy to print. They are false in their neatness. The cataclysm was not a spark. It was the year all the soaked cloth took fire.&lt;/p&gt;

&lt;p&gt;Outbreaks broke across districts too quickly to hide. Holding cells failed. The east ridge clinic burned with patients still within. Wagons of radiant extract overturned on the wash road and spilled into the basin that drained two worker quarters. A sermon procession in the lower ward turned violent before it reached chapel square. Graveyards that had held uneasy dead for months gave way after hard rain.&lt;/p&gt;

&lt;p&gt;And through all of it the glow remained fair to the eye.&lt;/p&gt;

&lt;p&gt;That undid many men. Had it been foul from the first, fewer would have trusted it. But saintfire shone through smoke. Rotshine glimmered in gutters and wheel ruts. Radiant extract lit broken glass and wet rail with a beauty that made fools kneel to it even after it had taken their kin.&lt;/p&gt;

&lt;p&gt;The first official takedowns were called that summer, though the labor itself was older than the word.&lt;/p&gt;

&lt;p&gt;That year the title &lt;strong&gt;Hunter&lt;/strong&gt; became formal.&lt;/p&gt;

&lt;p&gt;The bureaus wanted a better word than culler and a prouder one than disposal hand. Hunter sounded active and fit for badges. Men will bear almost any degradation if given a title for it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 8
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 14, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We were issued marks, route papers, regular syrum loads, and approved effigies according to district need. There were kinds of them by then. Bone wards for close work. Ash charms for spoor and tracking. Iron saints for steadiness of nerve. Knotted relics for the breath in rotshine fog.&lt;/p&gt;

&lt;p&gt;None was a blessing. Each was a burden chosen for use.&lt;/p&gt;

&lt;p&gt;The common dead we came to call &lt;strong&gt;ghouls&lt;/strong&gt; after a time, though the word rose from field talk before it entered the reports. Ghouls are poor vessels. They rot fast, move badly, split at the joints, and carry only a shallow occupation. There is little wit in them, only appetite, recoil, and scraps of old habit. One sees a ghoul still trying to rake straw, pull a chain, ring a bell, or scratch at a door because the flesh remembers labor after the name is gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Elites&lt;/strong&gt; are worse because more remains. A butcher that still corners like a butcher. A guard that still checks an entrance. A preacher that still lifts his arm as if calling a crowd. Better flesh, deeper saturation, stronger occupation. Some of them learn. Those are the ones a young Hunter remembers by night.&lt;/p&gt;

&lt;p&gt;The first of the &lt;strong&gt;Crowned&lt;/strong&gt; I saw was at Mercer Refinery in the winter after the cataclysm year. It had been a Hunter named Joel Task. I knew him by the left hand, two fingertips gone from an old press accident. His body had gone wrong in a fashion the common dead never managed. There was too much of him and too much intention left in the arrangement. The jaw had split and sealed itself wider. One shoulder had overgrown into a plated mass with a dull green under the flesh. Yet he walked with Joel’s gait, and when he halted at a distance I knew he knew me.&lt;/p&gt;

&lt;p&gt;A Crowned is not merely a larger infected.&lt;/p&gt;

&lt;p&gt;A Crowned is what comes when enough memory remains to carry purpose, enough corruption remains to direct force, and enough mutation remains to make ordinary killing uncertain.&lt;/p&gt;

&lt;p&gt;Some were once Hunters.&lt;/p&gt;

&lt;p&gt;Some came out of the old clinic trials and bureau experiments.&lt;/p&gt;

&lt;p&gt;Some, I think, were always bodies apt for such use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 9
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 15, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Men ask when a Hunter becomes Crowned. They want a measure, a count of exposures, a number of marks survived, a tally of effigies borne. There is no such clean line.&lt;/p&gt;

&lt;p&gt;The syrum was never an antidote.&lt;/p&gt;

&lt;p&gt;It is a harness.&lt;/p&gt;

&lt;p&gt;It slows the common course of decay and hardens the flesh against ordinary collapse, but it does so by making the body more fit to hold a shaped corruption. A Hunter remains useful so long as what is within him can be steadied, fed, and kept in order. When that order fails, the very thing that preserved him becomes the means of his advancement into something worse.&lt;/p&gt;

&lt;p&gt;That is why some say the Crowned are fallen Hunters.&lt;/p&gt;

&lt;p&gt;They are right.&lt;/p&gt;

&lt;p&gt;That is why others say the Crowned first appeared among the failed antidote trials at the Black Clinics and east ridge works.&lt;/p&gt;

&lt;p&gt;They are right as well.&lt;/p&gt;

&lt;p&gt;The years after the cataclysm were called the Hunt Era by some, though seldom with cheer unless a paymaster stood near. Trade routes shifted. Valleys were emptied. Rotshine drains were marked with iron posts and prayer knots. Syndicates hired private lines to keep extraction moving in safer seams. Churches split into harsher doctrine. Children grew up knowing the smell of burn oil and the sound of takedown bells.&lt;/p&gt;

&lt;p&gt;I lasted longer than many.&lt;/p&gt;

&lt;p&gt;That was not virtue.&lt;/p&gt;

&lt;p&gt;Only tolerance.&lt;/p&gt;

&lt;p&gt;My field record was good enough. Clean entries. Confirmed removals. Few breaches of conduct. Better than average rotshine tolerance. Sound relic discipline. I trained six younger Hunters. Four are dead. One bloomed and was put down in a freight yard. One fled south and may yet live if the wastes did not take him.&lt;/p&gt;

&lt;p&gt;In 1872 the dreams began.&lt;/p&gt;

&lt;p&gt;Not common dreams. Ordered things. Rooms I had never entered, yet later found below old clinic floors. Voices speaking in my own cadence before I answered aloud. A sensation, repeated and exact, that my bones were being counted from outside.&lt;/p&gt;

&lt;p&gt;I told no one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 10
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 15, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That too is part of how the Crowned come about. Not by bureau deceit only. By field deceit. By private deceit. A marked man knows what comes of admitting weakness. He is benched if fortunate, processed if not, sent to annex work if worse luck follows. So when the dreams harden, when a lamp seems to lean toward him, when his reflection answers a beat too late, a practical man says nothing.&lt;/p&gt;

&lt;p&gt;Then comes withdrawal.&lt;/p&gt;

&lt;p&gt;That is the last stage in which a man still shows himself any mercy.&lt;/p&gt;

&lt;p&gt;A Hunter near the end does not remain among his squad if he has sense enough left to dread what follows. He draws off. At first from caution, then from shame, and at last because some older instinct has begun its work and urges him toward stone, timber, cellars, culverts, mine cuts, and any other place that narrows the world and puts walls between him and human company.&lt;/p&gt;

&lt;p&gt;Part of him still hopes for cure.&lt;/p&gt;

&lt;p&gt;Part hopes to be found by the common dead before the deeper change sets firm.&lt;/p&gt;

&lt;p&gt;I filed no report. I sought no surgeon. I left before dawn with my route papers, two loads of syrum, dry bread, lamp oil, one bone ward, one ash charm, and one iron saint.&lt;/p&gt;

&lt;p&gt;I came to an old wash shelter beyond the Mercer rail cut, half sunk in the bank, one room above and one below, close enough to the runoff that no family would choose to lodge there. I barred the upper door and dragged the table over the cellar hatch.&lt;/p&gt;

&lt;p&gt;I mean to keep these pages together in oilcloth when I have done.&lt;/p&gt;

&lt;p&gt;If I remain steady enough tomorrow, I shall write again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 11
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 16, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The change does not begin in frenzy.&lt;/p&gt;

&lt;p&gt;It begins in preference.&lt;/p&gt;

&lt;p&gt;Dark before daylight. Stone before open ground. Quiet before speech. Corners before doorways. A wish to crouch, to brace, to wait, to go lower. Then the back pains. The jaw works of its own accord. Teeth loosen. The hands remain cold and strong. Hearing lengthens. Smell becomes a tyranny.&lt;/p&gt;

&lt;p&gt;This is why the dens are found where they are.&lt;/p&gt;

&lt;p&gt;Not because the changed become architects. Because the turning man seeks shelter before he loses the habit of being seen.&lt;/p&gt;

&lt;p&gt;If these pages are found in such a place, remember that the den was a refuge first.&lt;/p&gt;

&lt;p&gt;I do not know how long I slept today. The lamp is lower. The ash charm cracked by noon. The iron saint grows warm against the breast toward evening. There are voices outside at times, though I do not trust myself to say whether they are in the yard or only in the boards.&lt;/p&gt;

&lt;p&gt;My appetite is wrong.&lt;/p&gt;

&lt;p&gt;My sleep is wrong.&lt;/p&gt;

&lt;p&gt;I woke standing.&lt;/p&gt;

&lt;p&gt;Twice I found the lower hatch open after barring it shut.&lt;/p&gt;

&lt;p&gt;The syrum still holds enough order for writing, but not enough for recovery. The effigies steady a man, then strain him, then begin at last to answer something besides the hand that wears them. Any Hunter who says different is either lying or newly marked.&lt;/p&gt;




&lt;h2&gt;
  
  
  Page 12
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;May 16, 1873&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let this be kept plain.&lt;/p&gt;

&lt;p&gt;Ghouls are the quick ruin.&lt;/p&gt;

&lt;p&gt;Elites are those in whom more remains.&lt;/p&gt;

&lt;p&gt;The Crowned are what becomes of marked men when plague, syrum, and held corruption come to a stronger agreement than the man can maintain.&lt;/p&gt;

&lt;p&gt;There is little mercy in that agreement.&lt;/p&gt;

&lt;p&gt;If Carter lives, or if any bureau hand that knew my line reads this, do not bring surgeons. Do not take scrapings. Do not haul what is left of me back to a clinic bench. Seal the place and burn it. If the fire takes, leave ash. If it does not, mark the ground and post iron.&lt;/p&gt;

&lt;p&gt;I shall wrap these leaves in oilcloth now and set them in the wall brace above the lower room where the damp has not yet reached.&lt;/p&gt;

&lt;p&gt;There is light in the cracks of my hands.&lt;/p&gt;

&lt;p&gt;The jaw will not rest.&lt;/p&gt;

&lt;p&gt;When the wind turns I can smell men at distance through the boards.&lt;/p&gt;

&lt;p&gt;I am going below after I have hidden these pages.&lt;/p&gt;

&lt;p&gt;If I come back up, it will not be for cure.&lt;/p&gt;

&lt;p&gt;Saintfire was the worship name.&lt;/p&gt;

&lt;p&gt;Radiant extract was the trade name.&lt;/p&gt;

&lt;p&gt;Rotshine was the honest name.&lt;/p&gt;

&lt;p&gt;The cataclysm of 1867 was the year men lost the right to say they did not know.&lt;/p&gt;

&lt;p&gt;The syrum delays. It does not pardon.&lt;/p&gt;

&lt;p&gt;The effigies burden. They do not bless.&lt;/p&gt;

&lt;p&gt;Hunters are marked men living on borrowed order.&lt;/p&gt;

&lt;p&gt;And the Crowned were men first.&lt;/p&gt;

&lt;p&gt;That is enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  Archivist’s Note
&lt;/h2&gt;

&lt;p&gt;Recovered in 1873 from a boarded wash shelter beyond the Mercer rail cut after a takedown order was carried out against the hostile later catalogued as &lt;strong&gt;The Lantern Saint&lt;/strong&gt;, one of the Crowned. The upper room contained burned bedding, spent syrum glass, broken effigy remains, and the pages above wrapped in oilcloth within a wall brace. Damage below prevented full recovery of the body site. Internal particulars agree in the main with bureau logs attributed to Hunter Elias Vane.&lt;/p&gt;

&lt;p&gt;This account bears upon a field pattern long denied in public notice. Marked Hunters near terminal loss often withdraw from town, squad, and family and are afterward found in isolated shelters, cellars, mine cuts, culverts, and abandoned works that later serve as den sites for the Crowned.&lt;/p&gt;

&lt;p&gt;The bureau maintains many things.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>writing</category>
      <category>lore</category>
    </item>
    <item>
      <title>$B Token Giveaway!</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Thu, 05 Dec 2024 01:38:28 +0000</pubDate>
      <link>https://dev.to/battlehard/b-token-giveaway-11b2</link>
      <guid>https://dev.to/battlehard/b-token-giveaway-11b2</guid>
      <description>&lt;p&gt;&lt;em&gt;🚀 Celebrate the Launch of Mainnet Contracts with $B! 🚀&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BATTLEHARD&lt;/strong&gt; is preparing the deployment of our mainnet contracts, marking a new milestone in our open-source, community-driven journey on the Neo blockchain! To celebrate, we’re giving away a shared $1000 USD worth of $B tokens between 10 passionate users who help spread the word about the amazing projects built on the Neo ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎁 Here’s What’s Up for Grabs:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;100 $B tokens (valued at just above $1 per token) for each of the top 10 users.&lt;/p&gt;

&lt;p&gt;A total of $1,000 USD worth of $B tokens will be distributed!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏆 How to Win:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Be Active: Quote retweet &lt;a href="https://x.com/BATTLE__HARD/status/1864147057956802750" rel="noopener noreferrer"&gt;this tweet&lt;/a&gt; and promote any project built on the Neo blockchain.&lt;/p&gt;

&lt;p&gt;Engage: The winners will be selected based on the most exposure/engagement your retweet generates (likes, comments, and shares).&lt;/p&gt;

&lt;p&gt;Get Creative: Shine a spotlight on your favorite Neo project – it could be $TTM, $FTW, $HD, $FRANK, $B, $FLM or any other you love.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📅 Timeline:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start Date: December 4th, 2024&lt;/p&gt;

&lt;p&gt;End Date: Winners will be announced after December 24th, 2024.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔥 What to Tweet:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Craft your own voice!, highlighting your favorite Neo project!&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
“Thank you @dahongfei for creating a space for @N3_FTW_NETWORK @NEOnewstoday @coz_official @NeoN3_Community. Let’s unleash our roar for $NEO projects like $TTM, $FTW, and $B! #GETREADY ”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💪 Why Participate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is your chance to:&lt;/p&gt;

&lt;p&gt;Showcase your favorite Neo projects to the world.&lt;/p&gt;

&lt;p&gt;Get rewarded for your support.&lt;/p&gt;

&lt;p&gt;Be part of an exciting community milestone!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Open-Source and Transparent Development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BATTLEHARD is committed to transparency and community-driven growth. Check out our code and contribute to our journey:&lt;br&gt;
&lt;a href="https://github.com/battlehard" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don’t miss this opportunity to celebrate with us, amplify your voice, and win $B tokens! Let’s make this a roaring success together.&lt;/p&gt;

&lt;p&gt;$NEO #BattleHard #OpenSource #CryptoGiveaway&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>startup</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Bread in a Jar</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Mon, 27 May 2024 02:40:17 +0000</pubDate>
      <link>https://dev.to/firebaseme/bread-in-a-jar-3nah</link>
      <guid>https://dev.to/firebaseme/bread-in-a-jar-3nah</guid>
      <description>&lt;h1&gt;
  
  
  Bread in a Jar: Understanding the Concept
&lt;/h1&gt;

&lt;p&gt;In the world of technology and programming, there's a humorous and enlightening concept known as "duck programming." This idea involves explaining your code or problem to a rubber duck, and in doing so, often revealing the solution to yourself. Similarly, there's a new concept called "bread in a jar" that addresses a common issue faced by many tech enthusiasts and developers. This concept illustrates the scenario where one understands individual components (A and B) or knows how to execute specific tasks but struggles with their correct implementation or integration, often reversing the intended order or logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Concept Explained
&lt;/h2&gt;

&lt;p&gt;Imagine you have a jar labeled "peanut butter," but instead of containing peanut butter, it's filled with slices of bread. Each slice of bread represents a piece of knowledge or a skill you possess. Instead of spreading peanut butter on bread to make a sandwich, you've put bread inside the peanut butter jar. While the components are related, their implementation is incorrect, leading to confusion and inefficiency.&lt;/p&gt;

&lt;p&gt;This analogy reflects the experience of many developers: you know how to write functions, understand databases, or use APIs, but integrating these components into a cohesive and functional system can be challenging. This mismatch often results from a lack of understanding of the overall system architecture or the interdependencies between different parts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples in Programming
&lt;/h2&gt;

&lt;p&gt;Let's explore some examples in programming, particularly using Firebase services, to illustrate this concept further.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Firebase Authentication and Firestore
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understanding A and B&lt;/strong&gt;: You know how to implement Firebase Authentication to allow users to sign in and how to set up Firestore to store user data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Breakdown&lt;/strong&gt;: You might try to store user data in Firestore before the user is authenticated, leading to issues where data is not properly linked to the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Ensure that the user is authenticated first, then use the unique user ID (UID) provided by Firebase Authentication as a key in Firestore to store and retrieve user-specific data. This ensures that each user's data is securely linked to their account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;onAuthStateChanged&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userDocRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;firestore&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;userDocRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;displayName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// additional user data&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Firebase Cloud Functions and Firestore
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understanding A and B&lt;/strong&gt;: You can write Firebase Cloud Functions to perform backend logic and know how to read/write data in Firestore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Breakdown&lt;/strong&gt;: You might write Cloud Functions that attempt to modify Firestore data directly without considering the event-driven nature of Cloud Functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Use Firestore triggers in your Cloud Functions to listen for specific events (e.g., document creation, update, deletion) and execute the corresponding logic. This approach ensures that your backend logic runs automatically in response to changes in your database.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;functions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;firebase-functions&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;admin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;firebase-admin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;admin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onUserCreate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;functions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firestore&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;document&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;users/{userId}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;onCreate&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;snap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;snap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;// Perform actions based on the new user data&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;New user created:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Firebase Hosting and Firestore Security Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understanding A and B&lt;/strong&gt;: You know how to deploy a web app using Firebase Hosting and set up Firestore Security Rules to protect your data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Breakdown&lt;/strong&gt;: You might configure Security Rules that are too restrictive or too lenient, either blocking legitimate access or allowing unauthorized access. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Learn how to use Firestore Security Rules to define fine-grained access controls based on user authentication status and custom claims. By combining Hosting and Security Rules, you can ensure that your web app serves content securely and only to authorized users.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="nx"&gt;cloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firestore&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;databases&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;database&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="sr"&gt;/documents &lt;/span&gt;&lt;span class="err"&gt;{
&lt;/span&gt;    &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;allow&lt;/span&gt; &lt;span class="nx"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uid&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example Conversation: Bread in a Jar Problem
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Firebase is not working. Help!"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "Alright, did you add your Firebase credentials in the HTML?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Yep, they’re there."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "Did you import and initialize Firebase in your JS?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Is that important?"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Firebase config&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;firebaseConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-api-key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;authDomain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-auth-domain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-project-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;storageBucket&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-storage-bucket&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messagingSenderId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-messaging-sender-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;appId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-app-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="c1"&gt;// Initialize Firebase&lt;/span&gt;
&lt;span class="nx"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initializeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;firebaseConfig&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Got it. I missed that part."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "Classic bread-in-a-jar move. Did you set up Firestore too?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Nope. What’s that?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "It's your database. Add this after initializing Firebase:"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;firebase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;firestore&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Okay, added. Anything else?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "Check your Firestore security rules. Sometimes they’re too tight. Here’s a basic one:"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;service&lt;/span&gt; &lt;span class="nx"&gt;cloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;firestore&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;databases&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;database&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="sr"&gt;/documents &lt;/span&gt;&lt;span class="err"&gt;{
&lt;/span&gt;    &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="o"&gt;=**&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;allow&lt;/span&gt; &lt;span class="nx"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dev 1&lt;/strong&gt;: "Thanks! I was totally putting bread in the peanut butter jar."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev 2&lt;/strong&gt;: "No worries. Now spread that peanut butter properly. Let me know if you get stuck again!"&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>debugging</category>
      <category>learning</category>
    </item>
    <item>
      <title>Navigating the Complexities of Firebase App Check and Hosting Channels: A Developer's Odyssey</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Mon, 08 Apr 2024 21:26:27 +0000</pubDate>
      <link>https://dev.to/firebaseme/navigating-the-complexities-of-firebase-app-check-and-hosting-channels-a-developers-odyssey-3mpk</link>
      <guid>https://dev.to/firebaseme/navigating-the-complexities-of-firebase-app-check-and-hosting-channels-a-developers-odyssey-3mpk</guid>
      <description>&lt;p&gt;In the dynamic realm of web application development, the integration of security measures with hosting solutions often presents a labyrinth of technical challenges. This narrative becomes particularly intricate when discussing the integration of Firebase App Check with Firebase Hosting channels, especially within the ambit of deploying secure and isolated preview environments. The dialogue between developers qb1t and Greg Fenton, along with inputs from DIGI, unveils the nuanced obstacles and the strenuous journey towards a viable solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq723nx9t8836tygm96bg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq723nx9t8836tygm96bg.png" alt="Image description" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Genesis of the Problem
&lt;/h2&gt;

&lt;p&gt;The journey begins with qb1t's quest to implement Firebase Hosting channels alongside Firebase App Check in a manner that ensures robust security. Firebase Hosting offers a streamlined platform for hosting web app content, boasting fast performance and secure delivery. Concurrently, Firebase App Check acts as a guardian, safeguarding Firebase resources from malicious abuse. The crux of qb1t's challenge lies in the integration of these two powerful tools under the constraint of using a custom domain, compounded by the stringent security protocols of reCAPTCHA v3.&lt;/p&gt;

&lt;h3&gt;
  
  
  An Intricate Web of Requirements
&lt;/h3&gt;

&lt;p&gt;qb1t's implementation strategy was sound—using App Check with reCAPTCHA v3 to protect database, storage, and functions, with the custom domain as the sole gatekeeper for requests. This setup should, in theory, provide a fortress of security. However, the deployment of preview channels through GitHub Actions, destined for review in the pull request phase, introduced a critical snag. These previews are relegated to the &lt;code&gt;web.app&lt;/code&gt; domain, stripping away the protective veil of the custom domain and leaving the Firebase resources vulnerable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dialogue of Discovery
&lt;/h2&gt;

&lt;p&gt;Greg Fenton's initial uncertainty about the problem's specifics quickly gave way to a deep dive into potential solutions and workarounds. The conversation evolved, exploring the feasibility of separate Firebase projects for previews and the possibility of configuring App Check to accommodate multiple domains or subdomains. Each proposed solution seemed to brush against the fundamental limitations of Firebase's hosting model or the rigid security model of App Check.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub, a Beacon of Hope?
&lt;/h3&gt;

&lt;p&gt;The discovery of a GitHub issue suggesting the possibility of preview deployment under custom subdomains sparked a momentary glimmer of hope. This lead propelled qb1t into the depths of GitHub Actions documentation, uncovering the potential to specify channel IDs for preview deployments. Yet, this path was fraught with its own set of challenges, including domain redirection issues with registrars like Namecheap and technical limitations around SSL certificates and HTTP redirections.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Resolution, or Lack Thereof
&lt;/h2&gt;

&lt;p&gt;Faced with insurmountable technical barriers and unyielding service limitations, qb1t arrived at a bifurcated strategy—deploying to two distinct Firebase-hosted sites based on the stage of the pull request. This workaround, while functional, underscores the convoluted nature of integrating tightly secured web services with flexible deployment workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reflecting on the Journey
&lt;/h3&gt;

&lt;p&gt;This odyssey through the intricacies of Firebase App Check and Hosting channels reveals several critical lessons for the broader developer community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility vs. Security&lt;/strong&gt;: The delicate balance between flexible hosting solutions and rigorous security measures can constrain developers, forcing them into complex workarounds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Power of Community&lt;/strong&gt;: The collaborative exploration of potential solutions highlights the value of community engagement in navigating technical challenges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Continuous Evolution of Web Development&lt;/strong&gt;: This narrative is a testament to the ever-evolving nature of web development, where today's solutions may not fit tomorrow's challenges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Epilogue
&lt;/h2&gt;

&lt;p&gt;As Firebase and similar platforms evolve, one hopes for advancements that address these complexities, offering more integrated, secure, and flexible solutions. The dialogue between qb1t, Greg Fenton, and DIGI serves as a beacon for developers navigating the stormy seas of modern web development, illuminating the importance of perseverance, community, and the relentless pursuit of innovation.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unveiling the Magic: How AI Powers Elemental Identification in Battle Hard's NFTs</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Tue, 23 Jan 2024 07:20:41 +0000</pubDate>
      <link>https://dev.to/battlehard/unveiling-the-magic-how-ai-powers-elemental-identification-in-battle-hards-nfts-3p0c</link>
      <guid>https://dev.to/battlehard/unveiling-the-magic-how-ai-powers-elemental-identification-in-battle-hards-nfts-3p0c</guid>
      <description>&lt;p&gt;In the enchanting realm of Battle Hard, the magic doesn't just lie in the visuals but is intricately woven into the very essence of each NFT. At the heart of this mystical experience is an advanced AI system that delves into the depths of images, identifying and binding primary, optional secondary, and aura elements to create a unique and captivating narrative for each "Battle Hardened" NFT.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Elemental Tapestry:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Battle Hard introduces a rich tapestry of elements, each seamlessly bound to a distinctive color palette:&lt;/p&gt;

&lt;p&gt;Yellow (Electric)&lt;br&gt;
Brown (Earth)&lt;br&gt;
Red (Fire)&lt;br&gt;
Pink (Thunder)&lt;br&gt;
Purple (Void)&lt;br&gt;
Black (Shadow)&lt;br&gt;
Grey (Metal)&lt;br&gt;
Blue (Water)&lt;br&gt;
Cyan (Ice)&lt;br&gt;
Teal (Wind)&lt;br&gt;
Green (Nature)&lt;br&gt;
White (Light)&lt;/p&gt;

&lt;p&gt;This elemental framework forms the core of each NFT, establishing a visual language that transcends mere aesthetics. What sets Battle Hard apart is its commitment to flexibility, allowing official projects to remap major colors to different elements or disable certain elements entirely. This empowers creators to infuse their projects with a unique identity and customize the elemental experience for their community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Magic at Work:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AI behind Battle Hard's elemental identification is a marvel in itself. Once an image undergoes evaluation, the system identifies primary, optional secondary, and aura elements, binding them to the content for future usage. This means that the elemental characteristics of each NFT remain static and uniquely tied to its visual representation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Feedback and Crowdsourced Elemental Definitions:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the spirit of community engagement, Battle Hard introduces a groundbreaking feature that allows users to provide feedback on the elemental identification system. This crowdsourcing initiative enables the Battle Hard community to collectively refine and enhance the definitions of each element. The fusion of AI-driven identification and user input ensures a dynamic and evolving understanding of elemental attributes within the Battle Hard ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bell Curve Stats and Attribute Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond the mesmerizing visuals, Battle Hard employs a sophisticated stats system. A bell curve with a ~1.27 deviation shapes the point distribution for each NFT, determining its unique attributes. These stats are not directly tied to the NFT's image meta or the AI algorithm. Instead, they are calculated and cumulative by design, adding an extra layer of depth to the NFTs' inherent characteristics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the realm of Battle Hard, the marriage of cutting-edge AI technology, vibrant elemental identities, and user-driven feedback creates an immersive and dynamic experience for NFT enthusiasts. The fusion of visuals, elements, and stats ensures that each "Battle Hardened" NFT is not just a digital collectible but a unique piece of art with a story waiting to be uncovered. As the Battle Hard community continues to evolve, so too will the magic woven into the fabric of each NFT, making every journey through the Battle Hard universe a truly enchanting experience.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ownership Validation and Compliance Assurance for Official Projects</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Tue, 23 Jan 2024 04:45:41 +0000</pubDate>
      <link>https://dev.to/battlehard/ownership-validation-and-compliance-assurance-for-official-projects-1f64</link>
      <guid>https://dev.to/battlehard/ownership-validation-and-compliance-assurance-for-official-projects-1f64</guid>
      <description>&lt;p&gt;Official projects within the Battle Hard ecosystem benefit from a dedicated web tool designed to validate ownership and introduce project definitions. This web builder tool serves as a crucial component, ensuring that project-specific criteria and compliance standards are met before NFTs are minted or updated.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Key Features:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Validation of Ownership:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Contract owners can utilize the web tool to validate their ownership of NFTs within the Battle Hard ecosystem.&lt;br&gt;
This step is essential for maintaining the integrity of the platform and ensuring that only authorized individuals have control over project-related functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Definitions and Compliance:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The web tool allows contract owners to introduce project definitions that align with their vision and objectives.&lt;br&gt;
Compliance checks are enforced through the web builder tool, ensuring that NFTs adhere to predefined standards before proceeding with minting or updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Middleware Server Integration:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A middleware server operates in tandem with the web tool, tracking blockchain activity and facilitating smart property allocation and processing.&lt;br&gt;
This hybrid solution enhances the efficiency of the validation process and provides a seamless experience for project owners.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid Solution for Robust Functionality:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The combination of the web tool and middleware server creates a hybrid solution that optimizes the validation and compliance workflow.&lt;br&gt;
This approach ensures a reliable and efficient system for project owners to manage their assets within the Battle Hard ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Empowerment and Agency:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In alignment with Battle Hard's core belief in user agency and empowerment, the ownership validation and compliance system prioritizes user control over their assets.&lt;br&gt;
Users can invoke contract functions at any time, even in the event of Battle Hard server issues. This empowers users to cancel minting/update queues and unfuse assets, ensuring that they retain control over their NFTs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resilience in Unforeseen Circumstances:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system's architecture is designed to provide resilience in unforeseen circumstances, allowing users to take action independently of Battle Hard servers.&lt;br&gt;
The ability to cancel queues and unfuse assets in real-time ensures that users maintain control over their assets, even if external factors impact the platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Ownership Validation and Compliance Assurance category within Battle Hard's ecosystem underscores the commitment to user agency and empowerment. By providing contract owners with tools to validate ownership, enforce compliance, and maintain control over their assets, Battle Hard establishes a robust and resilient framework for official projects. This category aligns seamlessly with the platform's core values, placing user control at the forefront of the NFT experience.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unleashing the Power of "Battle Hardened" NFTs: A Revolutionary Locker System</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Tue, 23 Jan 2024 04:29:26 +0000</pubDate>
      <link>https://dev.to/battlehard/unleashing-the-power-of-battle-hardened-nfts-a-revolutionary-locker-system-289k</link>
      <guid>https://dev.to/battlehard/unleashing-the-power-of-battle-hardened-nfts-a-revolutionary-locker-system-289k</guid>
      <description>&lt;p&gt;In the dynamic realm of NFTs, "Battle Hard" emerges as a game-changer, not only introducing an innovative locker system but also redefining how users interact with both old and new NFT projects. This groundbreaking initiative aims to breathe new life into forgotten NFTs, allowing them to be re-rugged within the dynamic framework of "Battle Hardened." Additionally, for new projects, it provides a universal template, offering a fresh and customizable experience for both creators and collectors alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Locker System:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At the heart of Battle Hard lies the innovative locker system, allowing users to generate trait-based lockers known as "Battle Hardened". These lockers come in three flavors, each catering to different preferences and styles. By default, the black market adopts the squads mode, allowing users to assemble any combination of four NFTs without specific requirements. &lt;/p&gt;

&lt;p&gt;The choice of flavors, including squads, evolution, and power modes, is exclusively at the discretion of the project owner should they choose to adopt the Battle Hard format. This flexibility empowers creators to tailor the NFT experience to their project's unique identity and user base.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MODE - Squads:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Any combination of four NFTs can be grouped together in a squad without the need for specific requirements between them.&lt;br&gt;
This flexibility encourages users to curate unique combinations, fostering creativity and strategic diversity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MODE - Evolution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dedicated identifiers define generations, ranging from 1 to 4.&lt;br&gt;
The evolution feature pays homage to classic gaming, creating a sense of lineage and history within the NFTs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MODE - Power:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Features a single NFT that can be infused with additional tokens, allowing it to scale in power with each infusion.&lt;br&gt;
This dynamic mirrors popular gaming mechanics like Pokemon's use of rare candy or Warframe's forma slots, providing a captivating progression system.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Soft Locking and User Agency:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The concept of 'soft locking' is a game-changer in the NFT space. Users have complete control over their lockers, enabling them to insert or remove NFTs at any time. This flexibility not only allows for easy trading between NFTs but also opens up opportunities for trait farming.&lt;/p&gt;

&lt;p&gt;Battle Hard emphasizes user agency, ensuring that NFTs can be redefined with unique traits using an AI model. This model determines the elements within each item and reports their synergy within each locked NFT, providing an interactive and dynamic experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native Token - Battle Infusion (B$):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Battle Hard introduces a native token called Battle Infusion (B$), serving as the default currency for minting hardened NFTs. However, flexibility is key, as official projects can adjust this token to suit their ecosystems. For instance, ToTheMoon Inc (TTM) utilizes $TTM tokens within the Battle Hard framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Soft Burning for Token Economy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All tokens used for minting are 'soft burnt,' providing contract owners the ability to decide the destination of these tokens upon minting. This strategic approach allows for locking tokens away, assigning them to public pools for resale, or earmarking them for future airdrops.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;With its cutting-edge locker system, Battle Hard stands at the forefront of NFT innovation. By drawing inspiration from beloved franchises and introducing novel concepts like 'soft locking' and a native token economy, Battle Hard empowers users, providing a dynamic and customizable NFT experience. The project's commitment to user agency and endorsement of official projects make it a promising player in the ever-expanding NFT landscape.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Battle Hardened's Spooktacular Halloween to Xmas Event Concludes</title>
      <dc:creator>DIGI Byte</dc:creator>
      <pubDate>Fri, 29 Dec 2023 23:54:04 +0000</pubDate>
      <link>https://dev.to/battlehard/battle-hardeneds-spooktacular-halloween-to-xmas-event-concludes-591f</link>
      <guid>https://dev.to/battlehard/battle-hardeneds-spooktacular-halloween-to-xmas-event-concludes-591f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Distributing 507 B Tokens to Enthusiastic Community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a festive culmination of holiday cheer, Battle Hardened, the pioneering cross-chain NFT project, has successfully wrapped up its Halloween to Xmas event, leaving participants adorned with a generous distribution of 507 B tokens. The event, designed to evoke the spirit of the season, witnessed a spirited response from the community, showcasing their creativity in a lively meme campaign within the project's Discord channel.&lt;/p&gt;

&lt;p&gt;From Halloween to Christmas, participants engaged in the festivities by contributing memes, with each submission earning them 1 B token. The promise of these tokens added an extra layer of excitement, fostering a sense of camaraderie and competition within the Battle Hardened community.&lt;/p&gt;

&lt;p&gt;On December 27th, 2023, the highly anticipated moment arrived as the Battle Hardened team distributed the well-deserved rewards. A total of 507 B tokens were shared among the participants, underscoring the project's commitment to recognizing and rewarding the active engagement of its community.&lt;/p&gt;

&lt;p&gt;"Battle Hardened Halloween to Xmas event was a tremendous success, and we are grateful for the enthusiastic participation from our community," said DIGI, the visionary behind Battle Hardened. "The creativity and energy displayed by the community during this event further fuel our passion for creating unique and engaging experiences."&lt;/p&gt;

&lt;p&gt;As Battle Hardened continues to make waves in the crypto space, this event further solidifies the project's dedication to fostering an active and vibrant community. The Halloween to Xmas event not only distributed tokens but also reinforced the bonds within the  ecosystem, setting the stage for more exciting events and developments in the future.&lt;/p&gt;

&lt;p&gt;For those eager to explore the Battle Hardened universe further, stay tuned to the project's official channels and join the community Discord. The success of the Halloween to Xmas event is just a glimpse of what Battle Hardened has in store for its passionate community as it continues to redefine the landscape of cross-chain NFT innovation.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
